Project Structure & Packaging
Lay out a multi-file package with a clear entry point.
Working across files
Follow imports and change code across a small multi-file Python package.
Type Hints & Static Typing
Annotate functions and classes for clarity and static checking.
Testing with pytest
Drive a module with pytest assertions, fixtures, and parametrize.
Files, Data & Robustness
Read files with pathlib and design resilient error handling.
Real Programs & Tooling
Build a CLI, validate API data, query a database safely, and package a small project with pyproject/uv.
Building a CLI: parse and dispatch argv (argparse/typer preview)
Turn argument lists into commands with a testable dispatcher.
Validating API data at the boundary (httpx/pydantic preview)
Fetch external JSON and validate it into a typed model at the boundary.
Talking to a database from Python: sqlite3 and parameterized queries
Connect, execute, fetch and commit with sqlite3, and keep every value out of the SQL text.
Dependencies, pyproject & a mini capstone
Understand pyproject.toml/uv and extend a small, tested multi-file project.
Optional: the data track (numpy & pandas)
An optional detour for data engineering and analytics roles. Skip it if you are heading for backend or platform work.