diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b5eb4b8..52e7c9a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: '3.11' + python-version: '3.12' cache: 'pip' cache-dependency-path: 'requirements/*.txt' - name: Install dev dependencies @@ -22,7 +22,7 @@ jobs: test: strategy: matrix: - python: ['3.8', '3.9', '3.10', '3.11'] + python: ['3.9', '3.10', '3.11', '3.12', '3.13'] os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/pypi-release.yml b/.github/workflows/pypi-release.yml index 2b1dbf0..eeebb88 100644 --- a/.github/workflows/pypi-release.yml +++ b/.github/workflows/pypi-release.yml @@ -10,7 +10,7 @@ on: jobs: build_dist: name: Build source distribution - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -27,7 +27,7 @@ jobs: - name: Check metadata run: pipx run twine check dist/* publish: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest if: github.event_name == 'push' needs: [ build_dist ] steps: @@ -35,9 +35,9 @@ jobs: with: fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: "3.11" + python-version: "3.12" cache: 'pip' - name: Install build dependencies run: pip install -U setuptools wheel build diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 75ad2ef..32fde35 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,22 +1,22 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v5.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-toml - repo: https://github.com/pycqa/isort - rev: 5.13.2 + rev: 6.0.1 hooks: - id: isort args: [ "--profile", "black", "--filter-files" ] - repo: https://github.com/psf/black - rev: 24.4.2 + rev: 25.1.0 hooks: - id: black language_version: python3.11 - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.10.0 + rev: v1.16.0 hooks: - id: mypy files: ^(cloudevents/) diff --git a/CHANGELOG.md b/CHANGELOG.md index 458a1dd..4702388 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.12.0] + +### Changed + +- Dropped Python3.8 support while it has reached EOL. ([]) + ## [1.11.1] ### Fixed - Kafka `conversion` marshaller and unmarshaller typings ([#240]) +- Improved public API type annotations and fixed unit test type errors ([#248]) ## [1.11.0] @@ -293,3 +300,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#235]: https://github.com/cloudevents/sdk-python/pull/235 [#236]: https://github.com/cloudevents/sdk-python/pull/236 [#240]: https://github.com/cloudevents/sdk-python/pull/240 +[#248]: https://github.com/cloudevents/sdk-python/pull/248 diff --git a/cloudevents/__init__.py b/cloudevents/__init__.py index d332910..e97372b 100644 --- a/cloudevents/__init__.py +++ b/cloudevents/__init__.py @@ -12,4 +12,4 @@ # License for the specific language governing permissions and limitations # under the License. -__version__ = "1.11.1" +__version__ = "1.12.0" diff --git a/requirements/constraints.txt b/requirements/constraints.txt deleted file mode 100644 index 648d97e..0000000 --- a/requirements/constraints.txt +++ /dev/null @@ -1,10 +0,0 @@ -# This is a requirements constraint file, see: -# https://pip.pypa.io/en/stable/user_guide/#constraints-files - -# sanic stopped supporting 3.8 in 24.12: -# https://sanic.dev/en/release-notes/changelog.html#version-24120- -sanic<24.12.0 ; python_version == '3.8' - -# pydantic stopped supporting 3.8 in 2.11.0: -# https://github.com/pydantic/pydantic/releases/tag/v2.11.0 -pydantic<2.11.0 ; python_version == '3.8' diff --git a/requirements/mypy-constraints.txt b/requirements/mypy-constraints.txt deleted file mode 100644 index 82c5f95..0000000 --- a/requirements/mypy-constraints.txt +++ /dev/null @@ -1,9 +0,0 @@ -# This is a requirements constraint file, see: -# https://pip.pypa.io/en/stable/user_guide/#constraints-files - -# Because we run mypy in python 3.8 compatibility mode, dependencies must be -# versions that support 3.8. - -# pydantic stopped supporting 3.8 in 2.11.0: -# https://github.com/pydantic/pydantic/releases/tag/v2.11.0 -pydantic<2.11.0 diff --git a/setup.py b/setup.py index a4e4bef..f424997 100644 --- a/setup.py +++ b/setup.py @@ -65,10 +65,11 @@ def get_version(rel_path): "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Typing :: Typed", ], keywords="CloudEvents Eventing Serverless", diff --git a/tox.ini b/tox.ini index 88f0bd1..d5f1d98 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{38,39,310,311,312},lint,mypy,mypy-samples-{image,json} +envlist = py{39,310,311,312,313},lint,mypy,mypy-samples-{image,json} skipsdist = True [testenv] @@ -8,12 +8,11 @@ deps = -r{toxinidir}/requirements/test.txt -r{toxinidir}/requirements/publish.txt setenv = - PIP_CONSTRAINT={toxinidir}/requirements/constraints.txt PYTESTARGS = -v -s --tb=long --cov=cloudevents --cov-report term-missing --cov-fail-under=95 commands = pytest {env:PYTESTARGS} {posargs} [testenv:reformat] -basepython = python3.11 +basepython = python3.12 deps = black isort @@ -22,7 +21,7 @@ commands = isort cloudevents samples [testenv:lint] -basepython = python3.11 +basepython = python3.12 deps = black isort @@ -33,9 +32,7 @@ commands = flake8 cloudevents samples --ignore W503,E731 --extend-ignore E203 --max-line-length 88 [testenv:mypy] -basepython = python3.11 -setenv = - PIP_CONSTRAINT={toxinidir}/requirements/mypy-constraints.txt +basepython = python3.12 deps = -r{toxinidir}/requirements/mypy.txt # mypy needs test dependencies to check test modules @@ -43,9 +40,8 @@ deps = commands = mypy cloudevents [testenv:mypy-samples-{image,json}] -basepython = python3.11 +basepython = python3.12 setenv = - PIP_CONSTRAINT={toxinidir}/requirements/mypy-constraints.txt mypy-samples-image: SAMPLE_DIR={toxinidir}/samples/http-image-cloudevents mypy-samples-json: SAMPLE_DIR={toxinidir}/samples/http-json-cloudevents deps =