Skip to content
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
32 changes: 13 additions & 19 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:
- ["3.11", "py311"]
- ["3.12", "py312"]
- ["3.13", "py313"]
- ["3.14", "py314"]
- ["3.11", "docs"]
- ["3.11", "coverage"]
- ["3.11", "py311-datetime"]
Expand All @@ -43,33 +44,26 @@ jobs:
name: ${{ matrix.os[0] }}-${{ matrix.config[1] }}
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.config[0] }}
allow-prereleases: true
- name: Pip cache
uses: actions/cache@v4
persist-credentials: false
- name: Install uv + caching
uses: astral-sh/setup-uv@v5
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.config[0] }}-${{ hashFiles('setup.*', 'tox.ini') }}
restore-keys: |
${{ runner.os }}-pip-${{ matrix.config[0] }}-
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install tox
enable-cache: true
cache-dependency-glob: |
setup.*
tox.ini
python-version: ${{ matrix.matrix.config[0] }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Test
if: ${{ !startsWith(runner.os, 'Mac') }}
run: tox -e ${{ matrix.config[1] }}
run: uvx --with tox-uv tox -e ${{ matrix.config[1] }}
- name: Test (macOS)
if: ${{ startsWith(runner.os, 'Mac') }}
run: tox -e ${{ matrix.config[1] }}-universal2
run: uvx --with tox-uv tox -e ${{ matrix.config[1] }}-universal2
- name: Coverage
if: matrix.config[1] == 'coverage'
run: |
pip install coveralls
coveralls --service=github
uvx coveralls --service=github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6 changes: 3 additions & 3 deletions .meta.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
[meta]
template = "pure-python"
commit-id = "0833c289"
commit-id = "a0de4e93"

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

[tox]
Expand Down Expand Up @@ -47,7 +47,7 @@ testenv-additional = [
" coverage combine",
" coverage html",
" coverage report -m --fail-under=100",
"depends = py39,py310,py311,py311-datetime,py312,py313,coverage",
"depends = py39,py310,py311,py311-datetime,py312,py313,py314,coverage",
]
coverage-command = "pytest --cov=src --cov=tests --cov-report= tests {posargs}"
coverage-setenv = [
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
minimum_pre_commit_version: '3.6'
repos:
- repo: https://github.com/pycqa/isort
rev: "5.13.2"
rev: "6.0.1"
hooks:
- id: isort
- repo: https://github.com/hhatto/autopep8
Expand All @@ -21,7 +21,7 @@ repos:
hooks:
- id: teyit
- repo: https://github.com/PyCQA/flake8
rev: "7.1.1"
rev: "7.1.2"
hooks:
- id: flake8
additional_dependencies:
Expand Down
3 changes: 2 additions & 1 deletion CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ Changes
8.1 (unreleased)
----------------

- Nothing changed yet.
- Allow to use the package with Python 3.14 -- Caution: No security
audit has been done so far.


8.0 (2025-01-23)
Expand Down
16 changes: 14 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
# https://github.com/zopefoundation/meta/tree/master/config/pure-python

[build-system]
requires = ["setuptools <= 75.6.0"]
requires = [
"setuptools == 75.8.2",
"wheel",
]
build-backend = "setuptools.build_meta"

[tool.coverage.run]
Expand All @@ -15,7 +18,16 @@ fail_under = 97.3
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"]
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"
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def read(*rnames):
packages=find_packages('src'),
package_dir={'': 'src'},
install_requires=[],
python_requires=">=3.9, <3.14",
python_requires=">=3.9, <3.15",
extras_require={
'test': ['pytest', 'pytest-mock'],
'docs': ['Sphinx', 'furo'],
Expand Down
11 changes: 8 additions & 3 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ envlist =
py311
py312
py313
py314
docs
coverage
py311-datetime
Expand All @@ -19,11 +20,13 @@ envlist =
usedevelop = true
package = wheel
wheel_build_env = .pkg
pip_pre = py314: true
deps =
setuptools <= 75.6.0
setuptools == 75.8.2
datetime: DateTime
-cconstraints.txt
pytest-cov
Sphinx
setenv =
COVERAGE_FILE=.coverage.{envname}
commands =
Expand All @@ -49,7 +52,7 @@ commands =
coverage combine
coverage html
coverage report -m --fail-under=100
depends = py39,py310,py311,py311-datetime,py312,py313,coverage
depends = py39,py310,py311,py311-datetime,py312,py313,py314,coverage

[testenv:setuptools-latest]
basepython = python3
Expand All @@ -64,7 +67,8 @@ description = ensure that the distribution is ready to release
basepython = python3
skip_install = true
deps =
setuptools <= 75.6.0
setuptools == 75.8.2
wheel
twine
build
check-manifest
Expand Down Expand Up @@ -104,6 +108,7 @@ deps =
datetime: DateTime
-cconstraints.txt
pytest-cov
Sphinx
setenv =
COVERAGE_FILE=.coverage
commands =
Expand Down