Configuration files should be self-explanatory and maintainable by including explicit version constraints and explanatory comments for non-obvious choices. This prevents future confusion and ensures reproducible environments.
Configuration files should be self-explanatory and maintainable by including explicit version constraints and explanatory comments for non-obvious choices. This prevents future confusion and ensures reproducible environments.
For dependencies, always specify version constraints rather than leaving them open-ended:
dependencies = [
"anyio>=4.9.0", # Not just "anyio"
]
For configuration choices that might seem unusual, add comments explaining the reasoning:
[tool.ruff.lint]
select = ["ASYNC", "E", "F", "I", "PLE"]
ignore = ["ASYNC109", "E101", "E402", "E501", "F841", "E731"] # TODO: determine if adding timeouts to all the unbounded async functions is needed / worth-it so we can un-ignore ASYNC109
This practice helps future maintainers understand the rationale behind configuration decisions and makes it easier to revisit choices when requirements change.
Enter the URL of a public GitHub repository