Lesson 1: Toolchain
9 min read·9 Sept 2026
The problem this lesson solves
You finish a project. You run pip freeze > requirements.txt and commit it. A colleague clones the repository, installs, and it works. Two months later a new hire tries the same thing and gets a TypeError deep inside a library nobody has touched.
Here is what happened. Your requirements.txt listed pandas==2.1.0, which is precise. But pandas depends on numpy, and your file either did not mention numpy or listed whatever version you happened to have at the time. When the new hire installed, the installer resolved numpy to a newer release with a behaviour change. Your direct dependency was pinned. Your dependency's dependency, called a transitive dependency, was not.