Skip to content
← All tracks

Seams, Modules, Packaging and Tooling

Python

Import machinery, cycles, `__all__`, layering, build backends, lockfiles and the CI gate order.

This track is written for Python, which isn't the mode you're browsing in.

0 / 12 solved · 24 articles
  1. 1. src layout vs flat layout: the import bug you cannot see Read
  2. 2. Not solved yet. Which copy of the package wins?
  3. 3. How Python actually resolves an import Read
  4. 4. Not solved yet. What goes on sys.path first
  5. 5. __init__.py discipline and the public API surface Read
  6. 6. Not solved yet. What does this module actually export?
  7. 7. Namespace packages: when to omit __init__.py Read
  8. 8. Circular imports: diagnosis and the four real fixes Read
  9. 9. Not solved yet. Every import cycle, deterministically
  10. 10. Layered architecture: domain, application, adapters Read
  11. 11. Not solved yet. The layering contract, as a test
  12. 12. Dependency injection without a framework Read
  13. 13. Not solved yet. A rate limiter you can test without sleeping
  14. 14. The composition root Read
  15. 15. Not solved yet. Own what you create, borrow what you are given
  16. 16. Enforcing structure: import-graph fitness functions Read
  17. 17. Not solved yet. Forbidden import chains, with the route
  18. 18. Typing the seam: Protocols in signatures Read
  19. 19. pyproject.toml as the single source of truth Read
  20. 20. Version specifiers and the upper-bound argument Read
  21. 21. Not solved yet. Does this version satisfy this specifier?
  22. 22. Build backends and editable installs Read
  23. 23. Dependency groups vs extras vs requirements.txt Read
  24. 24. Not solved yet. Flattening a dependency group
  25. 25. Lockfiles and reproducible installs Read
  26. 26. Entry points, console_scripts and __main__.py Read
  27. 27. Not solved yet. Parsing an entry-point object reference
  28. 28. uv as the project workflow Read
  29. 29. Ruff: a configuration you can defend in review Read
  30. 30. Beyond --strict: optional error codes and mypy 2.0's changed defaults Read
  31. 31. A library that does not force a start method on its users Read
  32. 32. Not solved yet. Auditing a library for import-time side effects
  33. 33. The CI gate: what a real pipeline runs, in what order Read
  34. 34. Two scores, one gate Read
  35. 35. Seven mechanisms for testing structure Read
  36. 36. Version budgeting: what you may actually use Read

Check yourself

4 questions · one attempt each

These do not count toward finishing the track. They are here to catch the things that are easy to read past.

0 / 4

What does pip install -e . change compared with a normal install?

pip install .
pip install -e .
Question 1 of 4