← All drills

Build a Typed, Tested CLI Tool

What you'll be able to do

Build the kind of small, typed, tested command-line tool a working Python engineer ships — and the package every later drill in the track turns into an API, a database-backed service and a deployed product.

⌁ Access-log analysis is what GoAccess and every observability pipeline's first stage do. The typed-package-plus-CI-gate structure is the baseline for any Python service a team maintains.
Start this internship
Create an account to unlock the 11 sections, the workbench, and askThili.
Begin

Sections

1. Build a Typed, Tested CLI Tool
🔒 locked
2. Lesson 1 - Parse One Line, Typed
🔒 locked
3. Lesson 2 - Streaming, Not Slurping
🔒 locked
4. Lesson 3 - Pluggable Formats
🔒 locked
5. Lesson 4 - Validation at the Boundary
🔒 locked
6. Lesson 5 - The Analyses
🔒 locked
7. Lesson 6 - A Real CLI
🔒 locked
8. Lesson 7 - Package It
🔒 locked
9. Lesson 8 - Test It
🔒 locked
10. Lesson 9 - The Gate
🔒 locked
11. Lesson 10 - Failure Modes
🔒 locked

Dig deeper

🔗PEP 484 — Type Hints
docs
🔗PEP 544 — Protocols: Structural subtyping (static duck typing)
docs
🔗PEP 561 — Distributing and Packaging Type Information
docs
🔗Typer documentation
docs
🔗Pydantic documentation
docs
🔗Python Packaging User Guide — Writing your pyproject.toml
docs
🔗thililog — the reference implementation you build in this course
code