Typorithm learning path
Python: reusable libraries and packaging
Continue after Python foundations with deliberate call signatures, closures, transparent decorators, lazy consumption, ExitStack, frozen records, sequence protocols, validated properties, structural typing, single dispatch, exception groups and structured cancellation. Then separate module and CLI boundaries, read pyproject metadata, access ZIP-backed resources, build source archives and wheels, and verify a real installed console command outside the checkout. 18 topics with six sections, small typing decisions, independent tasks, two hints and checked prepared results. Programs run in the downloadable owned Python 3.13 lab; the app offers reading and explained questions without an editor or code execution. Download the entire course explicitly for offline use.

Study with a practical destination
Use the linked lessons in order, complete the lab and explain the decisions without the reference. Select the path and depth that match your role.
Your learning path
0 of 18 lessons completed
Saved on this device
Module 1 · 1 lessons
Function signatures as a public API
Design positional-only and keyword-only boundaries, and distinguish binding errors from calculations.
Module 2 · 1 lessons
Closures, late binding and deliberate capture
Build independent callbacks without accidentally reading the last loop value.
Module 3 · 1 lessons
Decorators that preserve a callable’s interface
Forward arguments correctly while retaining metadata and access to the wrapped function.
Module 4 · 1 lessons
Lazy pipelines and measurable consumption
Distinguish the number of returned values from the number of source values actually consumed.
Module 5 · 1 lessons
Context managers and reverse cleanup with ExitStack
Own a variable number of resources and preserve cleanup when the body fails.
Module 6 · 1 lessons
Frozen records, equality and hashable field values
Separate blocked field assignment from deep immutability and valid hash keys.
Module 7 · 1 lessons
Object protocols and sequence behavior
Implement a small immutable sequence while preserving normal indexing and iteration boundaries.
Module 8 · 1 lessons
Validated properties and atomic assignment
Use a property setter to protect an invariant without corrupting the previous valid value.
Module 9 · 1 lessons
Structural typing without imaginary runtime enforcement
Define a Protocol for consumers and verify good and bad implementations with a real type checker.
Module 10 · 1 lessons
Single dispatch and subclass-specific decisions
Dispatch on the first argument while keeping boolean behavior separate from integer behavior.
Module 11 · 1 lessons
Exception groups and matching subsets
Handle known failures in a flat batch while allowing unexpected exception types to propagate.
Module 12 · 1 lessons
Structured cancellation and observable cleanup
Coordinate tasks with events, cancel waiting siblings and wait for their finally blocks.
Module 13 · 1 lessons
Importable modules and the command-line boundary
Keep reusable definitions available without accidentally running the command-line action.
Module 14 · 1 lessons
pyproject.toml: build metadata versus runtime requirements
Read project metadata without confusing build tools, runtime dependencies and optional extras.
Module 15 · 1 lessons
Package resources inside a ZIP import
Read package data without assuming every imported module lives in an ordinary directory.
Module 16 · 1 lessons
Source archives and wheels that actually contain the package
Build real distributions and inspect their metadata, resources and typed-package marker.
Module 17 · 1 lessons
Install the artifact and run outside the checkout
Verify a wheel in a clean environment with isolated imports, packaged resources and real command-line arguments.
Module 18 · 1 lessons
Capstone: a reusable report package with a verified console entry point
Deliver one small library and CLI, then verify metadata, resources, boundaries and installed behavior together.