Towards closing the gap between declaring and verifying Python dependencies
This is a repost of my original article in Siemens' blog with some formatting enhancements.
Choosing dependency declarations by the environment they constrain and pairing each with the evidence that supports it makes the support claims of Python projects deliberate and substantiated.
Python projects in the wild declare their dependencies in widely varied ways, from requirements without version specifiers through lower bounds and lower and upper bounds to pins. The variation invites two questions that often go unanswered: how were these declarations chosen, and how are they verified?