diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3600bc8..316883c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: checks: strategy: matrix: - python: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python: ["3.11", "3.12", "3.13", "3.14", "3.15"] uses: ./.github/workflows/check-python.yml with: python-version: ${{ matrix.python }} diff --git a/ci/setup_dev_environment.sh b/ci/setup_dev_environment.sh index 98afff7..0a640f9 100755 --- a/ci/setup_dev_environment.sh +++ b/ci/setup_dev_environment.sh @@ -1,5 +1,5 @@ #!/bin/bash -python3.9 -m venv ./.venv/ +python3.11 -m venv ./.venv/ . ./.venv/bin/activate pip install pip-tools diff --git a/ci/update_dependencies.sh b/ci/update_dependencies.sh index 24ac2a8..85e81e3 100755 --- a/ci/update_dependencies.sh +++ b/ci/update_dependencies.sh @@ -1,4 +1,4 @@ #!/usr/bin/env sh . .venv/bin/activate -pip-compile --extra=ws --extra=development --extra=docs --extra=testing --output-file=./dev-requirements.txt pyproject.toml +pip-compile -U --extra=ws --extra=development --extra=docs --extra=testing --output-file=./dev-requirements.txt pyproject.toml diff --git a/dev-requirements.txt b/dev-requirements.txt index 5d6349b..d2f839b 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,149 +1,159 @@ # -# This file is autogenerated by pip-compile with Python 3.9 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # pip-compile --extra=development --extra=docs --extra=testing --extra=ws --output-file=./dev-requirements.txt pyproject.toml # -alabaster==0.7.13 +alabaster==1.0.0 # via sphinx -annotated-types==0.7.0 +annotated-types==0.8.0 # via pydantic -argcomplete==3.5.3 +argcomplete==3.7.2 # via datamodel-code-generator -astroid==3.2.4 +ast-serialize==0.13.1 + # via mypy +astroid==4.3.4 # via pylint -babel==2.17.0 +babel==2.18.0 # via sphinx -black==24.8.0 +black==26.10.1 # via datamodel-code-generator -build==1.2.2.post1 +build==1.6.1 # via pip-tools -cachetools==5.5.2 +cachetools==7.2.4 # via tox -certifi==2025.1.31 - # via requests -cfgv==3.4.0 +certifi==2026.10.19 + # via + # requests + # s2-python (pyproject.toml) +cfgv==3.5.0 # via pre-commit -chardet==5.2.0 - # via tox -charset-normalizer==3.4.1 +charset-normalizer==3.5.2 # via requests -click==8.1.8 +click==8.5.0 # via # black # pip-tools colorama==0.4.6 # via tox -coverage[toml]==7.6.1 +coverage[toml]==7.17.0 # via pytest-cov -datamodel-code-generator==0.27.3 +datamodel-code-generator==0.86.0 # via s2-python (pyproject.toml) -dill==0.3.9 +dill==0.4.1 # via pylint -distlib==0.3.9 +distlib==0.4.4 # via virtualenv -docutils==0.20.1 +docutils==0.22.4 # via # sphinx # sphinx-rtd-theme # sphinx-tabs -exceptiongroup==1.3.1 - # via pytest -filelock==3.16.1 +filelock==4.2.4 # via + # python-discovery # tox # virtualenv -genson==1.3.0 +genson==1.4.0 # via datamodel-code-generator -identify==2.6.1 +identify==2.6.20 # via pre-commit -idna==3.10 +idna==3.20 # via requests -imagesize==1.4.1 +imagesize==2.0.1 # via sphinx -importlib-metadata==8.7.1 - # via - # build - # setuptools-scm - # sphinx -inflect==5.6.2 +inflect==7.6.0 # via datamodel-code-generator -iniconfig==2.0.0 +iniconfig==2.3.1 # via pytest -isort==5.13.2 +isort==8.0.1 # via # datamodel-code-generator # pylint -jinja2==3.1.5 +jaraco-functools==4.6.0 + # via inflect +jinja2==3.1.6 # via # datamodel-code-generator # sphinx -markupsafe==2.1.5 +librt==0.16.0 + # via mypy +markupsafe==3.0.4 # via jinja2 mccabe==0.7.0 # via pylint -mypy==1.14.1 +more-itertools==11.2.1 + # via + # inflect + # jaraco-functools +mypy==2.4.0 # via s2-python (pyproject.toml) -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via # black # mypy -nodeenv==1.9.1 +nodeenv==1.11.0 # via # pre-commit # pyright -packaging==24.2 +packaging==26.3 # via # black # build - # datamodel-code-generator # pyproject-api # pytest # setuptools-scm # sphinx # tox -pathspec==0.12.1 - # via black -pip-tools==7.4.1 + # vcs-versioning + # virtualenv + # wheel +pathspec==1.1.1 + # via + # black + # mypy +pip-tools==7.6.2 # via s2-python (pyproject.toml) -platformdirs==4.3.6 +platformdirs==4.13.5 # via # black # pylint # tox # virtualenv -pluggy==1.5.0 +pluggy==1.7.0 # via # pytest + # pytest-cov # tox -pre-commit==3.5.0 +pre-commit==4.7.0 # via s2-python (pyproject.toml) -pydantic==2.10.6 +pydantic==2.14.1 # via # datamodel-code-generator # s2-python (pyproject.toml) -pydantic-core==2.27.2 +pydantic-core==2.50.1 # via pydantic -pygments==2.19.1 +pygments==2.21.0 # via + # pytest # sphinx # sphinx-tabs -pylint==3.2.7 +pylint==4.1.3 # via s2-python (pyproject.toml) -pyproject-api==1.8.0 +pyproject-api==1.12.0 # via tox -pyproject-hooks==1.2.0 +pyproject-hooks==1.3.3 # via # build # pip-tools -pyright==1.1.396 +pyright==1.1.414 # via s2-python (pyproject.toml) -pytest==8.3.5 +pytest==9.1.1 # via # pytest-cov # pytest-timer # s2-python (pyproject.toml) -pytest-cov==5.0.0 +pytest-cov==7.1.0 # via pytest-cover pytest-cover==3.0.0 # via pytest-coverage @@ -151,19 +161,25 @@ pytest-coverage==0.0 # via s2-python (pyproject.toml) pytest-timer==1.0.0 # via s2-python (pyproject.toml) -pyyaml==6.0.2 +python-discovery==1.6.4 + # via + # tox + # virtualenv +pytokens==0.4.1 + # via black +pyyaml==6.0.3 # via # datamodel-code-generator # pre-commit -requests==2.32.3 +requests==2.34.2 + # via sphinx +roman-numerals==4.1.0 # via sphinx -setuptools-scm==8.3.1 +setuptools-scm==10.3.4 # via s2-python (pyproject.toml) -six==1.17.0 - # via sphinxcontrib-httpdomain -snowballstemmer==2.2.0 +snowballstemmer==3.1.1 # via sphinx -sphinx==7.1.2 +sphinx==9.0.4 # via # s2-python (pyproject.toml) # sphinx-copybutton @@ -176,68 +192,59 @@ sphinx-copybutton==0.5.2 # via s2-python (pyproject.toml) sphinx-fontawesome==0.0.6 # via s2-python (pyproject.toml) -sphinx-rtd-theme==3.0.2 +sphinx-rtd-theme==3.1.0 # via s2-python (pyproject.toml) -sphinx-tabs==3.4.7 +sphinx-tabs==3.5.0 # via s2-python (pyproject.toml) -sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-applehelp==2.0.0 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==2.0.0 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.1.0 # via sphinx -sphinxcontrib-httpdomain==1.8.1 +sphinxcontrib-httpdomain==2.2.1 # via s2-python (pyproject.toml) sphinxcontrib-jquery==4.1 # via sphinx-rtd-theme -sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-jsmath==2.0.0 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==2.0.0 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==2.0.0 # via sphinx -tomli==2.2.1 - # via - # black - # build - # coverage - # datamodel-code-generator - # mypy - # pip-tools - # pylint - # pyproject-api - # pytest - # setuptools-scm - # tox -tomlkit==0.13.2 +tomli-w==1.2.0 + # via tox +tomlkit==0.15.2 # via pylint -tox==4.24.1 +tox==4.67.1 # via s2-python (pyproject.toml) -typing-extensions==4.12.2 +typeguard==4.6.0 + # via inflect +typing-extensions==4.16.0 # via - # astroid - # black - # exceptiongroup + # datamodel-code-generator # mypy # pydantic # pydantic-core - # pylint # pyright # s2-python (pyproject.toml) - # setuptools-scm # tox -urllib3==2.2.3 + # typeguard + # typing-inspection +typing-inspection==0.4.4 + # via pydantic +urllib3==2.8.0 # via requests -virtualenv==20.29.2 +vcs-versioning==2.6.0 + # via setuptools-scm +virtualenv==21.14.13 # via # pre-commit # tox websockets==13.1 # via s2-python (pyproject.toml) -wheel==0.45.1 +wheel==0.48.0 # via pip-tools -zipp==3.23.1 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/pyproject.toml b/pyproject.toml index 337dc2e..dde2526 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ dynamic = ["version"] readme = "README.rst" license = "Apache-2.0" license-files = ["LICENSE"] -requires-python = ">=3.9, < 3.14" +requires-python = ">=3.11, < 3.16" dependencies = [ "pydantic>=2.8.2", "typing-extensions", @@ -24,6 +24,8 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", ] [tool.setuptools_scm] @@ -51,6 +53,7 @@ development = [ "pre-commit", "tox", "setuptools_scm", + "certifi>=2026.10.19", # Because of https://emudhra.we-have-a-problem.com/ ] docs = [ "sphinx", diff --git a/src/s2python/connection/async_/message_handlers.py b/src/s2python/connection/async_/message_handlers.py index f904a9d..01e7e54 100644 --- a/src/s2python/connection/async_/message_handlers.py +++ b/src/s2python/connection/async_/message_handlers.py @@ -89,7 +89,8 @@ async def handle_event( await handler(connection, event, send_okay.run) except PermanentConnectionError: logger.error( - "While processing message %s a permanent connection error occurred. Stopping the connection." + "While processing message %s a permanent connection error occurred. Stopping the connection.", + msg_event ) raise except Exception: diff --git a/src/s2python/message.py b/src/s2python/message.py index 0fca2be..539d347 100644 --- a/src/s2python/message.py +++ b/src/s2python/message.py @@ -78,7 +78,7 @@ Transition, ) -S2MessageWithID: TypeAlias = Union[ +S2MessageWithID: TypeAlias = Union[ # pylint: disable=invalid-name DDBCAverageDemandRateForecast, DDBCInstruction, DDBCSystemDescription,