Skip to content
Aabha AI Academy
Skip to reading

Python

Script Smoke Results

[
  {
    "file": "examples/00_first_run.py",
    "returncode": 0,
    "stdout": "Hello, data learner!\nPractice minutes: 15\nAfter another session: 25\n",
    "stderr": "",
    "expected_output_checks": 3
  },
  {
    "file": "examples/01_values.py",
    "returncode": 0,
    "stdout": "3 notebooks: 750 cents\nint str\nWhole hours: 1\nMinutes left: 35\nText joined: 42\nNumbers added: 6\nAvailable: True\nFloat equality: False\n",
    "stderr": "",
    "expected_output_checks": 6
  },
  {
    "file": "examples/02_control_flow.py",
    "returncode": 0,
    "stdout": "Rest session\nTotal minutes: 90\nActive sessions: 3\nPractice attempt 1\nPractice attempt 2\nPractice attempt 3\nCountdown 3\nCountdown 2\nCountdown 1\n",
    "stderr": "",
    "expected_output_checks": 4
  },
  {
    "file": "examples/03_collections.py",
    "returncode": 0,
    "stdout": "Original: [2, 4, 3]\nCopy: [2, 4, 3, 5]\nFirst two: [2, 4]\nTopic: python\nNotes: not supplied\nCounts: {'python': 2, 'data': 1, 'charts': 1}\nUnique topics: ['data', 'python']\nPoint: 3 5\n",
    "stderr": "",
    "expected_output_checks": 3
  },
  {
    "file": "examples/04_functions.py",
    "returncode": 0,
    "stdout": "Hours: 1.5\nTotal: 50\nRounded up: 2\n",
    "stderr": "",
    "expected_output_checks": 3
  },
  {
    "file": "examples/04_local_import.py",
    "returncode": 0,
    "stdout": "1.5\n",
    "stderr": "",
    "expected_output_checks": 1
  },
  {
    "file": "examples/04_scope.py",
    "returncode": 0,
    "stdout": "Quoted total: 60\nCaller price: 100\nSame explicit quote: 60\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/05_csv_export.py",
    "returncode": 0,
    "stdout": "item,count\n\"pencils, blue\",2\n\n",
    "stderr": "",
    "expected_output_checks": 2
  },
  {
    "file": "examples/05_files_errors.py",
    "returncode": 0,
    "stdout": "Accepted: [{'topic': 'python', 'minutes': 20}, {'topic': 'charts', 'minutes': 30}]\nRejected: [{'line': 3, 'raw': 'not recorded'}]\nAccepted minutes: 50\n",
    "stderr": "",
    "expected_output_checks": 2
  },
  {
    "file": "examples/05_local_files.py",
    "returncode": 0,
    "stdout": "session_summary.txt contains 180 minutes\n",
    "stderr": "",
    "expected_output_checks": 1
  },
  {
    "file": "examples/06_debug_tests.py",
    "returncode": 0,
    "stdout": "Empty-input check passed\nThree numeric checks passed\n",
    "stderr": "",
    "expected_output_checks": 2
  },
  {
    "file": "examples/06_traceback.py",
    "returncode": 0,
    "stdout": "Traceback (most recent call last):\n  File \"/workspace/shared/python-ai-data-course/examples/06_traceback.py\", line 11, in <module>\n    print(hours_from_text(raw_minutes))\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/workspace/shared/python-ai-data-course/examples/06_traceback.py\", line 6, in hours_from_text\n    minutes = int(text)\n              ^^^^^^^^^\nValueError: invalid literal for int() with base 10: 'twenty'\nThe demonstration stopped the invalid conversion; no hours were produced.\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/07_numpy.py",
    "returncode": 0,
    "stdout": "Shape: (2, 3)\nEach day's total: [60.0, 90.0]\nEach topic's total: [60.0, 50.0, 40.0]\nHours: [[0.33, 0.5, 0.17], [0.67, 0.33, 0.5]]\nAt least 30 minutes: [30.0, 40.0, 30.0]\nOriginal first value: 20.0\n",
    "stderr": "",
    "expected_output_checks": 4
  },
  {
    "file": "examples/08_inspection.py",
    "returncode": 0,
    "stdout": "Raw shape: (5, 2)\nFirst two source rows:\n      topic minutes\n0   Python       20\n1      data        \nRaw column types:\ntopic      string[python]\nminutes    string[python]\nRaw missing counts: {'topic': 0, 'minutes': 0}\nEmpty source minute strings: 1\nRows / numeric values: 5 3\nConverted missing minutes: 2\nNegative minutes: 1\nEmpty topics: 1\nValid mask: [True, False, False, False, False]\nInverse mask: [False, True, True, True, True]\nAccepted source labels: [0]\nGapped labels: [0, 3]\nSecond positional row equals label 3: True\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/08_pandas.py",
    "returncode": 0,
    "stdout": " topic  minutes\n  data       30\npython       45\nRejected rows: 1\nAccepted total: 75\n",
    "stderr": "",
    "expected_output_checks": 2
  },
  {
    "file": "examples/09_chart_limits.py",
    "returncode": 0,
    "stdout": "Subtotal: 160.00; y-axis upper bound: 168.0\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/09_charts.py",
    "returncode": 0,
    "stdout": "",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/10_bridge_duplicates.py",
    "returncode": 0,
    "stdout": "Source rows:\n  order_id units\n0      A01     2\n1      A01     2\n2     A01      3\n3      B01     4\nExact-copy extras: [False, True, False, False]\nRemaining labels: [0, 2, 3]\nConflict decisions: {0: True, 2: True, 3: False}\nDuplicate labels: [1]\nConflict source rows:\n  order_id units\n0      A01     2\n2     A01      3\nStill eligible for acceptance: [3]\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/10_bridge_fields.py",
    "returncode": 0,
    "stdout": "Digit spelling: [True, True, False, False, False, True]\nValid unit counts: [True, True, False, False, False, False]\nAccepted source tokens: ['2', '001']\nDate shape: [True, True, False, True]\nAccepted dates: ['2026-02-28']\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/10_bridge_reasons.py",
    "returncode": 0,
    "stdout": "Working labels: [0, 2, 3]\nReason labels: [0, 2, 3]\nReasons: {0: '', 2: 'invalid_units;invalid_date', 3: ''}\nUntouched source row 2: {'code': 'R2', 'date': 'not-a-date', 'units': 'unknown'}\nRejected evidence:\ncode       date   units                     reason\n  R2 not-a-date unknown invalid_units;invalid_date\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/10_bridge_structure.py",
    "returncode": 0,
    "stdout": "Structurally sound: [['R1', 'unknown']]\nR1 is a value rejection: units remain 'unknown'\nIngestion stopped: record 2: expected 2 fields, got ['extra', 'R1', '2']\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "examples/10_capstone_chart.py",
    "returncode": 0,
    "stdout": "Accepted subtotal: 66.90 fictional currency units\n",
    "stderr": "",
    "expected_output_checks": 1
  },
  {
    "file": "examples/10_capstone_data.py",
    "returncode": 0,
    "stdout": "AUDIT {'raw_rows': 16, 'duplicate_rows': 1, 'rejected_rows': 5, 'accepted_rows': 10, 'accepted_revenue_cents': 6690}\n\nACCEPTED CSV\norder_id,date,category,units,unit_price_cents,revenue_cents\nO001,2026-04-01,notebooks,3,250,750\nO002,2026-04-01,pens,10,80,800\nO003,2026-04-02,notebooks,2,250,500\nO004,2026-04-02,markers,4,150,600\nO009,2026-04-04,pens,6,80,480\nO011,2026-04-05,notebooks,5,250,1250\nO012,2026-04-06,markers,3,150,450\nO013,2026-04-06,pens,7,80,560\nO014,2026-04-07,notebooks,4,250,1000\nO015,2026-04-07,markers,2,150,300\n\n\nREJECTED CSV\norder_id,date,category,units,unit_price_cents,reason\nO005,2026-04-03,pens,,80,invalid_units\nO006,2026-04-03,markers,-2,150,invalid_units\nO007,2026-04-04,notebooks,1,unknown,invalid_price\nO008,not-a-date,pens,5,80,invalid_date\nO010,2026-04-05,,2,150,invalid_category\n\n\nDUPLICATES CSV\norder_id,date,category,units,unit_price_cents\nO004,2026-04-02,markers,4,150\n\n\nSUMMARY CSV\ncategory,units,revenue_cents\nmarkers,9,1350\nnotebooks,14,3500\npens,23,1840\n\n",
    "stderr": "",
    "expected_output_checks": 4
  },
  {
    "file": "solutions/00_first_run.py",
    "returncode": 0,
    "stdout": "Hello, Aabha learner!\n35\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/01_values.py",
    "returncode": 0,
    "stdout": "700 cents\nModule 1 checks passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/02_control_flow.py",
    "returncode": 0,
    "stdout": "Module 2 checks passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/03_collections.py",
    "returncode": 0,
    "stdout": "Module 3 checks passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/04_functions.py",
    "returncode": 0,
    "stdout": "{'count': 2, 'total': 60}\n1.0\nNegative-input check passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/05_files_errors.py",
    "returncode": 0,
    "stdout": "topic,minutes\npython,20\npython,0\n\nCSV round-trip check passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/06_debug_tests.py",
    "returncode": 0,
    "stdout": "Module 6 checks passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/07_numpy.py",
    "returncode": 0,
    "stdout": "Module 7 checks passed\nNon-square transfer checks passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/08_pandas.py",
    "returncode": 0,
    "stdout": " topic  minutes\n  data     30.0\npython     45.0\nInspection shape: (5, 2)\n      topic  minutes\n0   arrays        15\n1    tables  not yet\n2    tables        0\n3   charts        -4\n4                 20\nSource missing markers: {'topic': 0, 'minutes': 0}\nInspection transfer checks passed\n",
    "stderr": "",
    "expected_output_checks": 0
  },
  {
    "file": "solutions/09_charts.py",
    "returncode": 0,
    "stdout": "",
    "stderr": "",
    "expected_output_checks": 0
  }
]

Download this source file