-
Notifications
You must be signed in to change notification settings - Fork 794
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Preparing for Python 3.8 EOL #3497
Comments
Addresses one item in vega#3497
To add some extra detail on SPEC 0 — Minimum Supported Dependencies. The recommendation there is to drop support for Endorsed By
Personally think existing
So there is precedent for this in a project most likely used with |
Last year we were bound to use jsonschema 3 as this was still used in downstream products that are utilised in teaching environments, see eg #3038 (comment). This may have changed now, but I think that the required python version of our minimum supported version of jsonschema will also define our minimum required python version. |
Thanks @mattijn for linking #3038, that helps explain some compatibility code in
On this point, I tried following the linked thread (https://community.deepnote.com/c/ask-anything/jsonschema-4-0-1) but it just redirects to (https://deepnote.com/). This seems to have been a recent change, as an While I can see argument for their educational access - this is still a proprietary, closed-source product. Maybe this has changed in the past year? Reading through their docs, the default environment uses Interestingly, there is an overlap between their requirements and SPEC 0 — Minimum Supported Dependencies with the following libraries:
I found a conda environment section that does include |
Is there any significant benefit for Altair to drop 3.9? If not, I'd like to suggest that it not be done Anecdotally, one client I have needed some pandas code optimising with as few API changes as possible, but they were stuck on Python3.8, so many of the pyarrow improvements in pandas were unavailable to them. Polars, on the other hand, still supports 3.8, so a simple solution was to just deliver them some Polars functions wrapped in the pandas API they were familiar with 😎 We could use the latest Polars version for that, no problem pandas didn't really have a choice about dropping 3.8 because it depends on NumPy. But for Polars, supporting 3.8 until its EOL wasn't much effort, and it's ended up benefitting their adoption. |
OK, it seems they are still on jsonschema version 3.2, see opengeos/leafmap#751 (comment). If that works with python 3.9 we might be able to bump too. If not, then I agree with @MarcoGorelli, than just wait. |
Thanks for the insight @MarcoGorelli
Generally speaking, I've been viewing this as an opportunity to simplify based on upstream consensus around a standard - but you do make a good point on adoption. My perspective may be skewed, since I'm writing For the Python 3.9-3.12 relevant features3.9
3.103.113.12
Based on those alone, my opinion would be that:
|
I could imagine that the advantages are larger for other more complex packages in the scientific ecosystem. For Altair, I'd also prefer if we have faster CI pipelines with less versions to test and less compatibility code but it still feels manageable to me. Thanks for compiling the features of interest for each version, this allows for a much more informed decision! Based on this, I'd also be in favour of continuing to drop support for Python versions when they reach EOL and support the remaining ones, i.e. drop support for 3.8 in the first release after October 2024. Also, there is always the chance that we exclude a user group of which we are not aware off (in addition to Deepnote users). Earlier this week, pypa/setuptools#4519 was a good example that tis can happen :) |
I would also encourage us to keep Python 3.9 support until its EOL. A strength of Vega-Altair is its light dependency tree and broad compatibility with fairly old versions of it's optional dependencies. As a user, it's great to be able to use the latest version of Altair in a large complex environment that's stuck on older versions of Python, pandas, numpy, pyarrow, etc. |
+1. At the NumFOCUS summit we talked to some of the authors of SPEC 0 and they confirmed that it's formulated too strict and they might want to adapt the wording. The original intention was that this is a guidance so you "don't feel guilty" when dropping support for older versions but if you can support more with a reasonable effort, that's great. |
@binste @jonmmease I think my comment should have been clearer. I'm happy with the decision to not adopt SPEC 0, especially after looking more closely at how My aim was to collect more concrete examples like those mentioned earlier in the thread:
I thought it could be useful to refer to in the future. |
Technically you can still endorse SPEC-0 without strictly abiding to it.. |
Only required 2 manual fixes #3497
What is your suggestion?
Based on PEP 569 and devguide official support for Python 3.8 will be ending in October 2024. At the time of writing this is 2-3 months away.
The last bump
altair
had was #3100 which was a few weeks after 3.7 EOL.I see one small (#3498), and another larger PR to come from this.
Bumping
build.requires-python
I'm not proposing doing this immediately, just to keep on the radar and present some findings.
altair/pyproject.toml
Line 35 in f2ac0a1
Also updating these two will provide autofixes/warnings for what changes are relevant
altair/pyproject.toml
Line 187 in f2ac0a1
altair/pyproject.toml
Line 405 in f2ac0a1
Related Projects
Dependencies
SPEC 0 — Minimum Supported Dependencies
Descending order by
requires-python
:pandas
numpy
ibis
scipy
ipython
geopandas
pyarrow
polars
jsonschema
Testing
Currently Python 3.9 is not part of the github test matrix:
altair/.github/workflows/build.yml
Line 10 in f2ac0a1
However I had previously added 3.9 to the hatch test matrix, providing coverage locally with
hatch test --all
:altair/pyproject.toml
Lines 139 to 140 in f2ac0a1
This one is a pretty minor fix, and could be added now - since eventually it will be the lower bound.
The text was updated successfully, but these errors were encountered: