Skip to content
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

Declare Python 3.13 compatibility #1230

Merged
merged 3 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,22 @@ jobs:
- ["macos", "macos-latest"]
config:
# [Python version, tox env]
- ["3.11", "release-check"]
- ["3.8", "py38"]
- ["3.9", "py39"]
- ["3.10", "py310"]
- ["3.11", "py311"]
- ["3.12", "py312"]
- ["3.13", "py313"]
- ["3.11", "docs"]
- ["3.11", "coverage"]
- ["3.11", "release-check"]
- ["3.8", "py38"]
- ["3.9", "py39"]
- ["3.10", "py310"]
- ["3.11", "py311"]
- ["3.12", "py312"]
- ["3.13", "py313"]
- ["3.11", "docs"]
- ["3.11", "coverage"]
exclude:
- { os: ["windows", "windows-latest"], config: ["3.11", "release-check"] }
- { os: ["windows", "windows-latest"], config: ["3.11", "docs"] }
- { os: ["windows", "windows-latest"], config: ["3.11", "coverage"] }
- { os: ["macos", "macos-latest"], config: ["3.11", "release-check"] }
- { os: ["macos", "macos-latest"], config: ["3.11", "docs"] }
- { os: ["macos", "macos-latest"], config: ["3.11", "coverage"] }
- { os: ["windows", "windows-latest"], config: ["3.11", "release-check"] }
- { os: ["windows", "windows-latest"], config: ["3.11", "docs"] }
- { os: ["windows", "windows-latest"], config: ["3.11", "coverage"] }
- { os: ["macos", "macos-latest"], config: ["3.11", "release-check"] }
- { os: ["macos", "macos-latest"], config: ["3.11", "docs"] }
- { os: ["macos", "macos-latest"], config: ["3.11", "coverage"] }

runs-on: ${{ matrix.os[1] }}
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
Expand Down
6 changes: 3 additions & 3 deletions .meta.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@
# https://github.com/zopefoundation/meta/tree/master/config/zope-product
[meta]
template = "zope-product"
commit-id = "15e6a5a9"
commit-id = "210c1a0c"

[python]
with-pypy = false
with-docs = true
with-sphinx-doctests = false
with-windows = true
with-macos = true
with-future-python = true
with-future-python = false

[coverage]
fail-under = 80
fail-under = 82

[coverage-run]
source = "src"
Expand Down
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ https://github.com/zopefoundation/Zope/blob/4.x/CHANGES.rst
5.11 (unreleased)
-----------------

- Add support for Python 3.13.

- Drop support for Python 3.7.

- Update to newest compatible versions of dependencies.
dataflake marked this conversation as resolved.
Show resolved Hide resolved
Expand Down
49 changes: 22 additions & 27 deletions constraints.txt
Original file line number Diff line number Diff line change
@@ -1,45 +1,40 @@
AccessControl==7.0
Acquisition==6.0
AccessControl==7.1
Acquisition==6.1
AuthEncoding==5.0
BTrees==6.0
BTrees==6.1
Chameleon==4.4.4; python_version == '3.8'
Chameleon==4.4.4; python_version > '3.8'
DateTime==5.5
DocumentTemplate==4.6
ExtensionClass==5.1
ExtensionClass==6.0
MultiMapping==5.0
Paste==3.10.1
PasteDeploy==3.1.0
Persistence==5.0
RestrictedPython==7.2; python_version == '3.10'
RestrictedPython==7.2; python_version == '3.11'
RestrictedPython==7.2; python_version == '3.12'
RestrictedPython==7.2; python_version == '3.8'
RestrictedPython==7.2; python_version == '3.9'
RestrictedPython==7.2a1.dev0; python_version > '3.12'
Persistence==5.1
RestrictedPython==7.4
WSGIProxy2==0.5.1
WebOb==1.8.7
WebTest==3.0.0
WebOb==1.8.8
WebTest==3.0.1
ZConfig==4.1
ZODB==6.0
Zope2==4.0
beautifulsoup4==4.12.3
cffi==1.17.0
cffi==1.17.1
multipart==0.2.5
persistent==6.0
persistent==6.1
pycparser==2.22
python-gettext==5.0
pytz==2024.1
pytz==2024.2
roman==4.2
six==1.16.0
soupsieve==2.5
transaction==4.0
soupsieve==2.6
transaction==5.0
waitress==3.0.0
z3c.pt==4.4
zExceptions==5.0
zc.lockfile==3.0.post1
zc.recipe.egg==2.0.7
zodbpickle==4.0
zodbpickle==4.1.1
zope.annotation==5.0
zope.browser==3.0
zope.browsermenu==5.0
Expand All @@ -48,7 +43,7 @@ zope.browserresource==5.1
zope.cachedescriptors==5.0
zope.component==6.0
zope.configuration==5.0.1
zope.container==6.0
zope.container==6.1
zope.contentprovider==6.0
zope.contenttype==5.1
zope.datetime==5.0.0
Expand All @@ -59,19 +54,19 @@ zope.event==5.0
zope.exceptions==5.1
zope.filerepresentation==6.0
zope.globalrequest==2.0
zope.hookable==6.0
zope.i18n==5.1
zope.i18nmessageid==6.1.0
zope.interface==6.4.post2
zope.hookable==7.0
zope.i18n==5.2
zope.i18nmessageid==7.0
zope.interface==7.1.0
zope.lifecycleevent==5.0
zope.location==5.0
zope.pagetemplate==5.1
zope.processlifetime==3.0
zope.proxy==5.3
zope.proxy==6.1
zope.ptresource==5.0
zope.publisher==7.0
zope.publisher==7.1
zope.schema==7.0.1
zope.security==7.0
zope.security==7.3
zope.sequencesort==5.0
zope.site==5.0
zope.size==5.0
Expand Down
2 changes: 1 addition & 1 deletion docs/INSTALL.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ available:

- A supported version of Python, including the development support if
installed from system-level packages. Supported versions include
**3.8** up to **3.12**.
**3.8** up to **3.13**.

- Zope needs the Python ``zlib`` module to be importable. If you are
building your own Python from source, please be sure that you have the
Expand Down
21 changes: 21 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/zope-product

[build-system]
requires = ["setuptools < 74"]
build-backend = "setuptools.build_meta"

[tool.coverage.run]
branch = true
source = ["src"]

[tool.coverage.report]
fail_under = 82
precision = 2
ignore_errors = true
show_missing = true
exclude_lines = ["pragma: no cover", "pragma: nocover", "except ImportError:", "raise NotImplementedError", "if __name__ == '__main__':", "self.fail", "raise AssertionError", "raise unittest.Skip"]

[tool.coverage.html]
directory = "parts/htmlcov"
49 changes: 22 additions & 27 deletions requirements-full.txt
Original file line number Diff line number Diff line change
@@ -1,46 +1,41 @@
-e git+https://github.com/zopefoundation/Zope.git@master#egg=Zope
AccessControl==7.0
Acquisition==6.0
AccessControl==7.1
Acquisition==6.1
AuthEncoding==5.0
BTrees==6.0
BTrees==6.1
Chameleon==4.4.4; python_version == '3.8'
Chameleon==4.4.4; python_version > '3.8'
DateTime==5.5
DocumentTemplate==4.6
ExtensionClass==5.1
ExtensionClass==6.0
MultiMapping==5.0
Paste==3.10.1
PasteDeploy==3.1.0
Persistence==5.0
RestrictedPython==7.2; python_version == '3.10'
RestrictedPython==7.2; python_version == '3.11'
RestrictedPython==7.2; python_version == '3.12'
RestrictedPython==7.2; python_version == '3.8'
RestrictedPython==7.2; python_version == '3.9'
RestrictedPython==7.2a1.dev0; python_version > '3.12'
Persistence==5.1
RestrictedPython==7.4
WSGIProxy2==0.5.1
WebOb==1.8.7
WebTest==3.0.0
WebOb==1.8.8
WebTest==3.0.1
ZConfig==4.1
ZODB==6.0
Zope2==4.0
beautifulsoup4==4.12.3
cffi==1.17.0
cffi==1.17.1
multipart==0.2.5
persistent==6.0
persistent==6.1
pycparser==2.22
python-gettext==5.0
pytz==2024.1
pytz==2024.2
roman==4.2
six==1.16.0
soupsieve==2.5
transaction==4.0
soupsieve==2.6
transaction==5.0
waitress==3.0.0
z3c.pt==4.4
zExceptions==5.0
zc.lockfile==3.0.post1
zc.recipe.egg==2.0.7
zodbpickle==4.0
zodbpickle==4.1.1
zope.annotation==5.0
zope.browser==3.0
zope.browsermenu==5.0
Expand All @@ -49,7 +44,7 @@ zope.browserresource==5.1
zope.cachedescriptors==5.0
zope.component==6.0
zope.configuration==5.0.1
zope.container==6.0
zope.container==6.1
zope.contentprovider==6.0
zope.contenttype==5.1
zope.datetime==5.0.0
Expand All @@ -60,19 +55,19 @@ zope.event==5.0
zope.exceptions==5.1
zope.filerepresentation==6.0
zope.globalrequest==2.0
zope.hookable==6.0
zope.i18n==5.1
zope.i18nmessageid==6.1.0
zope.interface==6.4.post2
zope.hookable==7.0
zope.i18n==5.2
zope.i18nmessageid==7.0
zope.interface==7.1.0
zope.lifecycleevent==5.0
zope.location==5.0
zope.pagetemplate==5.1
zope.processlifetime==3.0
zope.proxy==5.3
zope.proxy==6.1
zope.ptresource==5.0
zope.publisher==7.0
zope.publisher==7.1
zope.schema==7.0.1
zope.security==7.0
zope.security==7.3
zope.sequencesort==5.0
zope.site==5.0
zope.size==5.0
Expand Down
2 changes: 2 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def _read_file(filename):
author='Zope Foundation and Contributors',
author_email='zope-dev@zope.dev',
long_description="\n\n".join([README, CHANGES]),
long_description_content_type='text/x-rst',
classifiers=[
"Development Status :: 6 - Mature",
"Environment :: Web Environment",
Expand All @@ -58,6 +59,7 @@ def _read_file(filename):
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
Expand Down
49 changes: 26 additions & 23 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ deps =
universal2: MarkupSafe
universal2: zope.testrunner
setenv =
py312: VIRTUALENV_PIP=23.1.2
py312: PIP_REQUIRE_VIRTUALENV=0
commands_pre =
{envbindir}/buildout -c {toxinidir}/buildout.cfg buildout:directory={envdir} buildout:develop={toxinidir} buildout:root-directory={toxinidir}
commands =
Expand All @@ -50,12 +48,36 @@ commands =
!universal2: {envdir}/bin/alltests --layer '!Products.PluginIndexes' {posargs:-vc}
allowlist_externals = *

[testenv:setuptools-latest]
basepython = python3
deps =
git+https://github.com/pypa/setuptools.git\#egg=setuptools
zc.buildout >= 3.1
wheel > 0.37
cffi >= 1.17.0rc1
# The universal2 environment is for Python on macOS built with
# universal2 mode instead of architecture-specific. These dependencies
# must be installed separately, zc.buildout is incompatible with the
# universal2 mode and cannot install them itself.
universal2: -c {toxinidir}/constraints.txt
universal2: zope.interface
universal2: zope.security
universal2: zope.container
universal2: Persistence
universal2: Acquisition
universal2: AccessControl
universal2: zodbpickle
universal2: charset_normalizer
universal2: MarkupSafe
universal2: zope.testrunner


[testenv:release-check]
description = ensure that the distribution is ready to release
basepython = python3
skip_install = true
deps =
setuptools < 74
twine
build
check-manifest
Expand Down Expand Up @@ -95,28 +117,9 @@ allowlist_externals =
mkdir
deps =
{[testenv]deps}
coverage
coverage[toml]
commands =
mkdir -p {toxinidir}/parts/htmlcov
coverage run {envdir}/bin/alltests {posargs:-vc}
coverage html
coverage report -m --fail-under=80

[coverage:run]
branch = True
source = src

[coverage:report]
precision = 2
ignore_errors = True
exclude_lines =
pragma: no cover
pragma: nocover
except ImportError:
raise NotImplementedError
if __name__ == '__main__':
self.fail
raise AssertionError

[coverage:html]
directory = parts/htmlcov
coverage report
Loading
Loading