Remove upper caps on dependencies #452
Open
+9
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What
Like many Poetry-managed projects, this package sets upper caps on dependencies both via caret (
^
) and lesser-than signs (<=
). This PR relaxes these requirements to just establishing lower bounds, not upper ones.Why
Poetry heavily believes in SemVer but many projects do not strictly follow it. For instance, pyarrow has bumped major versions eight times in the last 2 years without really making breaking changes for the vast majority of users.
Many well-regarded devs in the Python ecosystem are calling against upper-bounds in projects due to the complications it generates for end users (here's an excellent discussion on the topic from a PyPa member).
Personally, I find myself in "dependency hell" in a project where we use SQLAlchemy to interface with many kinds of databases (the area where SQLAlchemy excels, for sure). The latest dialects we're trying to support require SQLAlchemy >= 2.0, but our current
databricks-sql-connector
version of2.9.3
doesn't allow it. We also can't upgrade to the latest3.4.0
because an upper limit onpyarrow
has been set (which didn't exist before). A similar experience happens with Numpy >= 2.0.Related issues / PRs
Many versions of this issue have popped up before for this package (especially for
pyarrow
andnumpy
):#427
#55
#428
#74
#88
#432
Note
If this PR seems too ambitious, I'm happy to provide another one that only removes or, at least, bumps the upper cap for
pyarrow
andnumpy
. However, I believe removing upper caps in a general sense is the way to go. Major version bumps in Python are very frequently backwards compatible, and it's a much better experience for users to fix problems when they occur than to prevent them from upgrading (and eventually ditching your package altogether).Here's a quote in the linked article from Brett Cannon, Python Steering Council Member and packaging expert:
Or another quote from the author of the article himself: