Skip to content

Commit

Permalink
Declare Python 3.13 compatibility (#1230)
Browse files Browse the repository at this point in the history
* - declare Python 3.13 compatibility

* - clean up spacing around setuptools version specifier

* - remove duplicate change log entry
  • Loading branch information
dataflake authored Oct 11, 2024
1 parent ca0d687 commit 2de73cc
Show file tree
Hide file tree
Showing 11 changed files with 148 additions and 146 deletions.
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.
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='[email protected]',
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

0 comments on commit 2de73cc

Please sign in to comment.