-
Notifications
You must be signed in to change notification settings - Fork 101
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
Add support for Python 3.10. #988
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the Zope package itself those changes are totally fine, I'm just concerned about RestrictedPython and possible security issues.
@dataflake RestrictedPython has a very security aware release process:
So there should not be any real security issues upfront. But maybe confusion by releases that only add partial support for a Python version. So it is more about communication than security. |
I'd like to keep this PR unmerged until a final release of |
@icemac Do we really need code coverage checking on Windows? I suggest removing that, it seems a waste of GitHub Actions minutes. |
And along with it I don't see any need to test building the docs on Windows or linting there. Both those will just duplicate the tests already run on Linux. |
Co-authored-by: Jens Vagelpohl <[email protected]>
The more I think about this PR the more I am bothered by a specific aspect, especially after the discussions about roadmaps and backwards compatibility: Please do not remove Python 3.6 support here. Removing that support "feels" good because Python 3.6 is EOL soon, that is true. But that is throwing applications that use Zope 5 and Python 3.6 under the bus - for no good technical reason. Keep in mind that many Linux distributions still use Python 3.6. With the recent roadmap discussions in mind I propose a new policy: When you start a release series with a given set of supported Python versions you're free to add to that set. That's a feature and won't break anyone's setup. But you must not take away from that set of supported versions. That is only allowed for the following major release. @icemac @mauritsvanrees what do you think? |
Jens Vagelpohl wrote at 2021-10-31 01:29 -0700:
Please do not remove Python 3.6 support here.
+1
In my opinion, you could stop testing for it. But you should not
prevent installation with a corresponding `python_requires >= 3.7`.
|
Please no half measures. All versions that we claim support for must be tested. |
Jens Vagelpohl wrote at 2021-11-1 01:03 -0700:
> In my opinion, you could stop testing for it.
Please no half measures. All versions that we claim support for must be tested
It is one thing not to claim support for a specific Python version
and another thing to prevent installation for this version.
I propose to handle the Python version analogous to the versions of
other packages: document for which versions tests have been run
successfully and let users use other versions at their own risk.
To find out which Python (or Zope or Plone) versions are officially supported,
I always look at the platform classifiers on PyPI. This might be
a good way to document the officially supported Python versions.
|
Zope 5 is used by Plone 6, which we only test on Python 3.7-3.9. So from a Plone standpoint it is no problem to drop support for 3.6. Let me tell how we handled this in Plone 4:
Danger for Zope 5 is that more and more Python versions will need to be supported because we have no other reason yet to create a breaking Zope release, until one day we say it is enough. I just checked Django:
O, I could have checked the docs for that... For Plone 6, I can see us removing support for older Python versions in a minor release. We want to do a minor release once a year (which is faster than in the past) so this means we support 3 or 4 Python releases at the same time. I wonder if this idea might help: in I am probably not very clear, you can go multiple ways with this answer...
|
This all is getting a bit out of hand and is getting way too complicated. All I am asking for is reverting those changes that drop Python 3.6, including the dropped tests, and that in the future dropping Python versions should only be done in a new major release. And that we stay consistent and test all Python versions we claim to support. We don't need any version recognition magic if we just continue running the tests. |
I agree with @dataflake: If we support a version we should test it. Currently we use check-python-versions which expects that the versions allowed by I have a problem with keeping Python 3.6 support until the release of Zope 6: There is no Zope 6 on the horizon and the Python core developers will make relatively sure that supporting newer Python versions will not require to drop support for older versions. (Currently we are even able to run Python 2.7 and 3.10 in the same code base (not for Zope but for all of its dependencies).) What do you think about this idea? |
@icemac That is a good compromise. So for the moment we'll return everything to the way it was before (trove classifiers, IMHO it's perfectly fine to schedule a major release without big features in order to clean up the supported Python versions. We just need to signal very clearly how long the older Zope are supported so we have light at the end of the (support) tunnel for ourselves. |
I have changed this branch to omit any changes related to Python 3.6 and updated the wording at https://www.zope.org/developer/roadmap.html to reflect Michael's suggestion. |
@dataflake I think this PR is ready now, do you agree in merging it? |
I agree, thanks for doing the work! |
Thank you for reviewing this PR. 😃 |
To actually support Python 3.10 we need to fix and release zopefoundation/RestrictedPython#214. The current version of RestrictedPython can only be installed on Python 3.10 because
zc.buildout
ignorespython_requires
.There are some deprecation warnings (e. g. zopefoundation/ZODB#353) which could be fixed, too.
I did not yet create issues for all of them.
Open issues:
The only fixable deprecation warning is zopefoundation/ZODB#353 which is not critical, yet.
There are deprecation warnings in some C code, which are not critical yet: