-
Notifications
You must be signed in to change notification settings - Fork 233
Locking dependency versions in reqs.txt #87
Comments
@flying-sheep's plotly/dash#1992 (comment) and the article it points to describe well the philosophy we're trying to follow. We took this breakage as evidence that we were dependent too much on the internals of |
Thanks for sharing. The logic around the section "Version limits break code too" helps me gain perspective about how this can be a divisive issue: If everyone pins versions then the whole ecosystem gets rigid [or reliable/ accountable depending on who you ask] e.g. if you want to use packages A and B, but their pinned versions are incompatible, then you are stuck.
I guess I've just come to expect reliability from the word release, and don't understand how can you can indefinitely include entire libraries in a given release because they aren't guaranteed to work. |
There’s a few ways ways to guarantee reliability:
I’m afraid your notion of reliability doesn’t match the practical reality of the Python ecosystem. There are many projects who at some point thought they’re important enough to dictate pinned versions to other projects, but they were all soon humbled by the outcry of dozens of configurations they just broke. I’m happy dash doesn’t make the same mistake. |
There's a flavor of (2) that IMO doesn't get enough attention: working locally on a final application, start with only unpinned versions of your direct dependencies in something like This is more or less what the JS ecosystem does with Again, this applies only to final applications, and it works best when libraries do NOT pin their dependencies. |
Since PEP 621 exists, I’d do away with “requirements.in” and just use the There’s also other cool ideas once could get into like |
Thanks @aiqc - plotly/dash#2516 is certainly a departure for us, directly contradicting my previous statements. Perhaps you can sense my frustration at how many times this pattern has repeated 🙄 |
The package broke last week because it was incompatible with
Werkzeug==2.1.0
.So I looked at
requirements.txt
expecting to see version rules, but it's all loosey gooseyI get that you want it free floating with the latest dash, but shouldn't things be a bit more nailed down to prevent future breakage?
The text was updated successfully, but these errors were encountered: