Browse Source

test & declare compatibility with python3.14

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fabian Peter Hammerle 4 days ago
parent
commit
de2b956453
3 changed files with 9 additions and 12 deletions
  1. 7 11
      .github/workflows/python.yml
  2. 1 1
      CHANGELOG.md
  3. 1 0
      setup.py

+ 7 - 11
.github/workflows/python.yml

@@ -37,6 +37,7 @@ jobs:
         - '3.11'
         - '3.12'
         - '3.13'
+        - '3.14'
       fail-fast: false
     steps:
     - uses: actions/checkout@v7
@@ -45,22 +46,17 @@ jobs:
     - uses: actions/setup-python@v7
       with:
         python-version: ${{ matrix.python-version }}
-    # with pipenv v2023.6.26:
-    # > $ pipenv run pytest --cov="$(cat *.egg-info/top_level.txt)"
-    # . --cov-report=term-missing --cov-fail-under=100
-    # > cat: '*.egg-info/top_level.txt': No such file or directory
-    # > [...]
-    # > [...]/coverage/inorout.py:507: CoverageWarning:
-    # . Module  was never imported. (module-not-imported)
-    - run: pip install --upgrade pipenv==2023.6.18
+    # pipenv>=2025.0.0 is required for python3.14 compatibility (ast.Str was removed)
+    - run: pip install --upgrade pipenv==2025.1.3
     # by default pipenv picks the latest version in PATH
     - run: pipenv install --python "$PYTHON_VERSION" --deploy --dev
       env:
         PYTHON_VERSION: ${{ matrix.python-version }}
     - run: pipenv graph
-    - run: pipenv run pytest --cov="$(cat *.egg-info/top_level.txt)"
+    - run: echo "TOP_LEVEL=$(find . -maxdepth 2 -name __init__.py | cut -d/ -f2 | head -1)" >> "$GITHUB_ENV"
+    - run: pipenv run pytest --cov="$TOP_LEVEL"
         --cov-report=term-missing --cov-fail-under=100
-    - run: pipenv run pylint "$(cat *.egg-info/top_level.txt)"
+    - run: pipenv run pylint "$TOP_LEVEL"
     # workaround pylint reporting:
     # > E0401: Unable to import 'ical2vdir' (import-error)
     # pyproject.toml broken?
@@ -74,4 +70,4 @@ jobs:
     # > tests/resources/__init__.py:1:0: F0010: error while code parsing: Unable to load file tests/resources/__init__.py:
     # > [Errno 2] No such file or directory: 'tests/resources/__init__.py' (parse-error)
     - run: pipenv run pylint --disable=parse-error tests/*
-    - run: pipenv run mypy "$(cat *.egg-info/top_level.txt)" tests
+    - run: pipenv run mypy "$TOP_LEVEL" tests

+ 1 - 1
CHANGELOG.md

@@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 ### Added
-- declare compatibility with `python3.11`, `python3.12` & `python3.13`
+- declare compatibility with `python3.11`, `python3.12`, `python3.13` & `python3.14`
 
 ### Fixed
 - `dockerfile`: support build without git history

+ 1 - 0
setup.py

@@ -56,6 +56,7 @@ setuptools.setup(
         "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: 3.12",
         "Programming Language :: Python :: 3.13",
+        "Programming Language :: Python :: 3.14",
     ],
     entry_points={
         "console_scripts": [