diff --git a/acme/setup.py b/acme/setup.py index 214d1ba6a..a8cfff85a 100644 --- a/acme/setup.py +++ b/acme/setup.py @@ -33,7 +33,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', diff --git a/certbot-apache/setup.py b/certbot-apache/setup.py index ae2d102eb..1dc8cd7c4 100644 --- a/certbot-apache/setup.py +++ b/certbot-apache/setup.py @@ -28,7 +28,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-ci/setup.py b/certbot-ci/setup.py index 62367ef8b..c38c4100c 100644 --- a/certbot-ci/setup.py +++ b/certbot-ci/setup.py @@ -32,7 +32,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 3 - Alpha', 'Intended Audience :: Developers', diff --git a/certbot-compatibility-test/setup.py b/certbot-compatibility-test/setup.py index 9f2516b38..4eac2f9db 100644 --- a/certbot-compatibility-test/setup.py +++ b/certbot-compatibility-test/setup.py @@ -18,7 +18,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 3 - Alpha', 'Intended Audience :: Developers', diff --git a/certbot-dns-cloudflare/setup.py b/certbot-dns-cloudflare/setup.py index b7b40634c..63b9bc718 100644 --- a/certbot-dns-cloudflare/setup.py +++ b/certbot-dns-cloudflare/setup.py @@ -40,7 +40,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-digitalocean/setup.py b/certbot-dns-digitalocean/setup.py index 86de32643..c982c9478 100644 --- a/certbot-dns-digitalocean/setup.py +++ b/certbot-dns-digitalocean/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-dnsimple/setup.py b/certbot-dns-dnsimple/setup.py index ac2eb4657..be71fed67 100644 --- a/certbot-dns-dnsimple/setup.py +++ b/certbot-dns-dnsimple/setup.py @@ -40,7 +40,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-dnsmadeeasy/setup.py b/certbot-dns-dnsmadeeasy/setup.py index 9d0ede6c9..dd131d4a9 100644 --- a/certbot-dns-dnsmadeeasy/setup.py +++ b/certbot-dns-dnsmadeeasy/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-gehirn/setup.py b/certbot-dns-gehirn/setup.py index 405c57e54..ca4cf5ea9 100644 --- a/certbot-dns-gehirn/setup.py +++ b/certbot-dns-gehirn/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-google/setup.py b/certbot-dns-google/setup.py index e6372ea11..94c3c0abf 100644 --- a/certbot-dns-google/setup.py +++ b/certbot-dns-google/setup.py @@ -39,7 +39,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-linode/setup.py b/certbot-dns-linode/setup.py index f000cec6a..5209cd6e7 100644 --- a/certbot-dns-linode/setup.py +++ b/certbot-dns-linode/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-luadns/setup.py b/certbot-dns-luadns/setup.py index 40ac4349b..e9242f361 100644 --- a/certbot-dns-luadns/setup.py +++ b/certbot-dns-luadns/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-nsone/setup.py b/certbot-dns-nsone/setup.py index 13b97a6a4..b768d790c 100644 --- a/certbot-dns-nsone/setup.py +++ b/certbot-dns-nsone/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-ovh/setup.py b/certbot-dns-ovh/setup.py index 0abd4d249..789d51bf1 100644 --- a/certbot-dns-ovh/setup.py +++ b/certbot-dns-ovh/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-rfc2136/setup.py b/certbot-dns-rfc2136/setup.py index 871b32d4d..a89ff699e 100644 --- a/certbot-dns-rfc2136/setup.py +++ b/certbot-dns-rfc2136/setup.py @@ -41,7 +41,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-route53/setup.py b/certbot-dns-route53/setup.py index 020bc38f7..7f41180cc 100644 --- a/certbot-dns-route53/setup.py +++ b/certbot-dns-route53/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-dns-sakuracloud/setup.py b/certbot-dns-sakuracloud/setup.py index db3ad1513..7347fcabd 100644 --- a/certbot-dns-sakuracloud/setup.py +++ b/certbot-dns-sakuracloud/setup.py @@ -38,7 +38,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot-nginx/setup.py b/certbot-nginx/setup.py index 766f3304a..9d05d027a 100644 --- a/certbot-nginx/setup.py +++ b/certbot-nginx/setup.py @@ -27,7 +27,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', diff --git a/certbot/CHANGELOG.md b/certbot/CHANGELOG.md index 92622e8c2..144ba3b63 100644 --- a/certbot/CHANGELOG.md +++ b/certbot/CHANGELOG.md @@ -16,6 +16,9 @@ Certbot adheres to [Semantic Versioning](https://semver.org/). * Deprecated ivar `alpn_selection` from `acme.crypto_util.SSLSocket` * Deprecated parameter `alpn_protocols` from `acme.crypto_util.probe_sni` * Deprecated `acme.standalone.TLSALPN01Server` +* Dropped support for Python 3.9.0 and 3.9.1 for compatibility with newer + versions of the cryptography Python package. Python 3.9.2+ is still + supported. ### Fixed diff --git a/certbot/setup.py b/certbot/setup.py index 0f0e2da34..f253dc1d7 100644 --- a/certbot/setup.py +++ b/certbot/setup.py @@ -94,7 +94,7 @@ setup( author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Console', diff --git a/letstest/setup.py b/letstest/setup.py index a23dcdca6..aeede0003 100644 --- a/letstest/setup.py +++ b/letstest/setup.py @@ -9,7 +9,7 @@ setup( author='Certbot Project', author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.9', + python_requires='>=3.9.2', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', diff --git a/tools/oldest_constraints.txt b/tools/oldest_constraints.txt index 21609ed00..09f2676e9 100644 --- a/tools/oldest_constraints.txt +++ b/tools/oldest_constraints.txt @@ -1,96 +1,96 @@ # This file was generated by tools/pinning/oldest/repin.sh and can be updated using # that script. -apacheconfig==0.3.2 ; python_version == "3.9" -asn1crypto==0.24.0 ; python_version == "3.9" -astroid==3.3.9 ; python_version == "3.9" -attrs==25.3.0 ; python_version == "3.9" -beautifulsoup4==4.13.3 ; python_version == "3.9" -boto3==1.15.15 ; python_version == "3.9" -botocore==1.18.15 ; python_version == "3.9" -cachetools==5.5.2 ; python_version == "3.9" -certifi==2025.1.31 ; python_version == "3.9" -cffi==1.12.3 ; python_version == "3.9" -chardet==3.0.4 ; python_version == "3.9" -cloudflare==2.19.0 ; python_version == "3.9" -colorama==0.4.6 ; python_version == "3.9" and sys_platform == "win32" -configargparse==1.5.3 ; python_version == "3.9" -configobj==5.0.6 ; python_version == "3.9" -coverage==7.8.0 ; python_version == "3.9" -cryptography==43.0.0 ; python_version == "3.9" -cython==0.29.37 ; python_version == "3.9" -dill==0.3.9 ; python_version == "3.9" -distlib==0.3.9 ; python_version == "3.9" -distro==1.0.1 ; python_version == "3.9" -dns-lexicon==3.15.1 ; python_version == "3.9" -dnspython==2.6.1 ; python_version == "3.9" -exceptiongroup==1.2.2 ; python_version == "3.9" -execnet==2.1.1 ; python_version == "3.9" -filelock==3.18.0 ; python_version == "3.9" -funcsigs==0.4 ; python_version == "3.9" -future==1.0.0 ; python_version == "3.9" -google-api-python-client==1.6.5 ; python_version == "3.9" -google-auth==2.16.0 ; python_version == "3.9" -httplib2==0.9.2 ; python_version == "3.9" -idna==2.6 ; python_version == "3.9" -importlib-metadata==8.6.1 ; python_version == "3.9" -iniconfig==2.1.0 ; python_version == "3.9" -ipaddress==1.0.16 ; python_version == "3.9" -isort==6.0.1 ; python_version == "3.9" -jmespath==0.10.0 ; python_version == "3.9" -josepy==2.0.0 ; python_version == "3.9" -jsonlines==4.0.0 ; python_version == "3.9" -mccabe==0.7.0 ; python_version == "3.9" -mypy-extensions==1.0.0 ; python_version == "3.9" -mypy==1.15.0 ; python_version == "3.9" -ndg-httpsclient==0.3.2 ; python_version == "3.9" -oauth2client==4.1.3 ; python_version == "3.9" -packaging==24.2 ; python_version == "3.9" -parsedatetime==2.4 ; python_version == "3.9" -pbr==1.8.0 ; python_version == "3.9" -pip==25.0.1 ; python_version == "3.9" -platformdirs==4.3.7 ; python_version == "3.9" -pluggy==1.5.0 ; python_version == "3.9" -ply==3.4 ; python_version == "3.9" -py==1.11.0 ; python_version == "3.9" -pyasn1-modules==0.4.1 ; python_version == "3.9" -pyasn1==0.4.8 ; python_version == "3.9" -pycparser==2.14 ; python_version == "3.9" -pylint==3.3.6 ; python_version == "3.9" -pyopenssl==25.0.0 ; python_version == "3.9" -pyotp==2.9.0 ; python_version == "3.9" -pyparsing==2.4.7 ; python_version == "3.9" -pyrfc3339==1.0 ; python_version == "3.9" -pytest-cov==6.1.1 ; python_version == "3.9" -pytest-xdist==3.6.1 ; python_version == "3.9" -pytest==8.3.5 ; python_version == "3.9" -python-augeas==0.5.0 ; python_version == "3.9" -python-dateutil==2.9.0.post0 ; python_version == "3.9" -python-digitalocean==1.11 ; python_version == "3.9" -pytz==2019.3 ; python_version == "3.9" -pywin32==310 ; python_version == "3.9" and sys_platform == "win32" -pyyaml==6.0.2 ; python_version == "3.9" -requests-file==2.1.0 ; python_version == "3.9" -requests==2.20.0 ; python_version == "3.9" -rsa==4.9 ; python_version == "3.9" -s3transfer==0.3.7 ; python_version == "3.9" -setuptools==78.1.0 ; python_version == "3.9" -six==1.11.0 ; python_version == "3.9" -soupsieve==2.6 ; python_version == "3.9" -tldextract==5.2.0 ; python_version == "3.9" -tomli==2.2.1 ; python_version == "3.9" -tomlkit==0.13.2 ; python_version == "3.9" -tox==1.9.2 ; python_version == "3.9" -types-httplib2==0.22.0.20250401 ; python_version == "3.9" -types-pyrfc3339==2.0.1.20241107 ; python_version == "3.9" -types-python-dateutil==2.9.0.20241206 ; python_version == "3.9" -types-pytz==2025.2.0.20250326 ; python_version == "3.9" -types-pywin32==310.0.0.20250319 ; python_version == "3.9" -types-requests==2.31.0.6 ; python_version == "3.9" -types-setuptools==78.1.0.20250329 ; python_version == "3.9" -types-urllib3==1.26.25.14 ; python_version == "3.9" -typing-extensions==4.13.2 ; python_version == "3.9" -uritemplate==3.0.1 ; python_version == "3.9" -urllib3==1.24.2 ; python_version == "3.9" -virtualenv==20.30.0 ; python_version == "3.9" -wheel==0.45.1 ; python_version == "3.9" -zipp==3.21.0 ; python_version == "3.9" +apacheconfig==0.3.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +asn1crypto==0.24.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +astroid==3.3.9 ; python_full_version >= "3.9.2" and python_version < "3.10" +attrs==25.3.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +beautifulsoup4==4.13.4 ; python_full_version >= "3.9.2" and python_version < "3.10" +boto3==1.15.15 ; python_full_version >= "3.9.2" and python_version < "3.10" +botocore==1.18.15 ; python_full_version >= "3.9.2" and python_version < "3.10" +cachetools==5.5.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +certifi==2025.4.26 ; python_full_version >= "3.9.2" and python_version < "3.10" +cffi==1.12.3 ; python_full_version >= "3.9.2" and python_version < "3.10" +chardet==3.0.4 ; python_full_version >= "3.9.2" and python_version < "3.10" +cloudflare==2.19.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +colorama==0.4.6 ; python_full_version >= "3.9.2" and python_version < "3.10" and sys_platform == "win32" +configargparse==1.5.3 ; python_full_version >= "3.9.2" and python_version < "3.10" +configobj==5.0.6 ; python_full_version >= "3.9.2" and python_version < "3.10" +coverage==7.8.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +cryptography==43.0.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +cython==0.29.37 ; python_full_version >= "3.9.2" and python_version < "3.10" +dill==0.4.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +distlib==0.3.9 ; python_full_version >= "3.9.2" and python_version < "3.10" +distro==1.0.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +dns-lexicon==3.15.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +dnspython==2.6.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +exceptiongroup==1.2.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +execnet==2.1.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +filelock==3.18.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +funcsigs==0.4 ; python_full_version >= "3.9.2" and python_version < "3.10" +future==1.0.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +google-api-python-client==1.6.5 ; python_full_version >= "3.9.2" and python_version < "3.10" +google-auth==2.16.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +httplib2==0.9.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +idna==2.6 ; python_full_version >= "3.9.2" and python_version < "3.10" +importlib-metadata==8.7.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +iniconfig==2.1.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +ipaddress==1.0.16 ; python_full_version >= "3.9.2" and python_version < "3.10" +isort==6.0.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +jmespath==0.10.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +josepy==2.0.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +jsonlines==4.0.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +mccabe==0.7.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +mypy-extensions==1.1.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +mypy==1.15.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +ndg-httpsclient==0.3.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +oauth2client==4.1.3 ; python_full_version >= "3.9.2" and python_version < "3.10" +packaging==25.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +parsedatetime==2.4 ; python_full_version >= "3.9.2" and python_version < "3.10" +pbr==1.8.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +pip==25.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +platformdirs==4.3.7 ; python_full_version >= "3.9.2" and python_version < "3.10" +pluggy==1.5.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +ply==3.4 ; python_full_version >= "3.9.2" and python_version < "3.10" +py==1.11.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +pyasn1-modules==0.4.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +pyasn1==0.4.8 ; python_full_version >= "3.9.2" and python_version < "3.10" +pycparser==2.14 ; python_full_version >= "3.9.2" and python_version < "3.10" +pylint==3.3.6 ; python_full_version >= "3.9.2" and python_version < "3.10" +pyopenssl==25.0.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +pyotp==2.9.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +pyparsing==2.4.7 ; python_full_version >= "3.9.2" and python_version < "3.10" +pyrfc3339==1.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +pytest-cov==6.1.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +pytest-xdist==3.6.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +pytest==8.3.5 ; python_full_version >= "3.9.2" and python_version < "3.10" +python-augeas==0.5.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +python-dateutil==2.9.0.post0 ; python_full_version >= "3.9.2" and python_version < "3.10" +python-digitalocean==1.11 ; python_full_version >= "3.9.2" and python_version < "3.10" +pytz==2019.3 ; python_full_version >= "3.9.2" and python_version < "3.10" +pywin32==310 ; python_full_version >= "3.9.2" and python_version < "3.10" and sys_platform == "win32" +pyyaml==6.0.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +requests-file==2.1.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +requests==2.20.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +rsa==4.9.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +s3transfer==0.3.7 ; python_full_version >= "3.9.2" and python_version < "3.10" +setuptools==80.0.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +six==1.11.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +soupsieve==2.7 ; python_full_version >= "3.9.2" and python_version < "3.10" +tldextract==5.3.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +tomli==2.2.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +tomlkit==0.13.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +tox==1.9.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-httplib2==0.22.0.20250401 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-pyrfc3339==2.0.1.20241107 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-python-dateutil==2.9.0.20241206 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-pytz==2025.2.0.20250326 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-pywin32==310.0.0.20250429 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-requests==2.31.0.6 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-setuptools==80.0.0.20250429 ; python_full_version >= "3.9.2" and python_version < "3.10" +types-urllib3==1.26.25.14 ; python_full_version >= "3.9.2" and python_version < "3.10" +typing-extensions==4.13.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +uritemplate==3.0.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +urllib3==1.24.2 ; python_full_version >= "3.9.2" and python_version < "3.10" +virtualenv==20.30.0 ; python_full_version >= "3.9.2" and python_version < "3.10" +wheel==0.45.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +zipp==3.21.0 ; python_full_version >= "3.9.2" and python_version < "3.10" diff --git a/tools/pinning/current/pyproject.toml b/tools/pinning/current/pyproject.toml index cad342ff4..db270dab4 100644 --- a/tools/pinning/current/pyproject.toml +++ b/tools/pinning/current/pyproject.toml @@ -6,7 +6,11 @@ authors = ["Certbot Project"] license = "Apache License 2.0" [tool.poetry.dependencies] -python = "^3.9" +# python 3.9.2 is used as a lower bound here because newer versions of +# cryptography dropped support for python 3.9.0 and 3.9.1. see +# https://github.com/pyca/cryptography/pull/12045. when we drop support for +# python 3.9 altogether, this line can be changed to the simpler 'python = "^3.10"'. +python = ">=3.9.2,<4.0" # Local dependencies # Any local packages that have dependencies on other local packages must be diff --git a/tools/pinning/oldest/pyproject.toml b/tools/pinning/oldest/pyproject.toml index 7c6664767..64e06517a 100644 --- a/tools/pinning/oldest/pyproject.toml +++ b/tools/pinning/oldest/pyproject.toml @@ -18,7 +18,7 @@ license = "Apache License 2.0" [tool.poetry.dependencies] # The Python version here should be kept in sync with the one used in our # oldest tests in tox.ini. -python = "<3.10 >= 3.9" +python = "<3.10 >= 3.9.2" # Local dependencies # Any local packages that have dependencies on other local packages must be diff --git a/tools/requirements.txt b/tools/requirements.txt index 068d02258..6c228184f 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -5,197 +5,196 @@ # requirements.txt so that is scanned by GitHub. See # https://docs.github.com/en/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems # for more info. -alabaster==0.7.16 ; python_version == "3.9" +alabaster==0.7.16 ; python_full_version >= "3.9.2" and python_version < "3.10" alabaster==1.0.0 ; python_version >= "3.10" and python_version < "4.0" -anyio==4.9.0 ; python_version >= "3.9" and python_version < "4.0" -apacheconfig==0.3.2 ; python_version >= "3.9" and python_version < "4.0" -astroid==3.3.9 ; python_version >= "3.9" and python_version < "4.0" -asttokens==3.0.0 ; python_version >= "3.9" and python_version < "4.0" -attrs==25.3.0 ; python_version >= "3.9" and python_version < "4.0" -azure-core==1.33.0 ; python_version >= "3.9" and python_version < "4.0" -azure-devops==7.1.0b4 ; python_version >= "3.9" and python_version < "4.0" -babel==2.17.0 ; python_version >= "3.9" and python_version < "4.0" -backports-tarfile==1.2.0 ; python_version >= "3.9" and python_version <= "3.11" -bcrypt==4.3.0 ; python_version >= "3.9" and python_version < "4.0" -beautifulsoup4==4.13.3 ; python_version >= "3.9" and python_version < "4.0" -boto3==1.37.32 ; python_version >= "3.9" and python_version < "4.0" -botocore==1.37.32 ; python_version >= "3.9" and python_version < "4.0" -build==1.2.2.post1 ; python_version >= "3.9" and python_version < "4.0" -cachecontrol==0.14.2 ; python_version >= "3.9" and python_version < "4.0" -cachetools==5.5.2 ; python_version >= "3.9" and python_version < "4.0" -certifi==2025.1.31 ; python_version >= "3.9" and python_version < "4.0" -cffi==1.17.1 ; python_version >= "3.9" and python_version < "4.0" -chardet==5.2.0 ; python_version >= "3.9" and python_version < "4.0" -charset-normalizer==3.4.1 ; python_version >= "3.9" and python_version < "4.0" -cleo==2.1.0 ; python_version >= "3.9" and python_version < "4.0" -cloudflare==2.19.4 ; python_version >= "3.9" and python_version < "4.0" -colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0" -configargparse==1.7 ; python_version >= "3.9" and python_version < "4.0" -configobj==5.0.9 ; python_version >= "3.9" and python_version < "4.0" -coverage==7.8.0 ; python_version >= "3.9" and python_version < "4.0" -crashtest==0.4.1 ; python_version >= "3.9" and python_version < "4.0" -cryptography==43.0.3 ; python_version == "3.9" -cryptography==44.0.2 ; python_version >= "3.10" and python_version < "4.0" -cython==0.29.37 ; python_version >= "3.9" and python_version < "4.0" -decorator==5.2.1 ; python_version >= "3.9" and python_version < "4.0" -deprecated==1.2.18 ; python_version >= "3.9" and python_version < "4.0" -dill==0.3.9 ; python_version >= "3.9" and python_version < "4.0" -distlib==0.3.9 ; python_version >= "3.9" and python_version < "4.0" -distro==1.9.0 ; python_version >= "3.9" and python_version < "4.0" -dns-lexicon==3.21.0 ; python_version >= "3.9" and python_version < "4.0" -dnspython==2.7.0 ; python_version >= "3.9" and python_version < "4.0" -docutils==0.21.2 ; python_version >= "3.9" and python_version < "4.0" -dulwich==0.22.8 ; python_version >= "3.9" and python_version < "4.0" -exceptiongroup==1.2.2 ; python_version >= "3.9" and python_version < "3.11" -execnet==2.1.1 ; python_version >= "3.9" and python_version < "4.0" -executing==2.2.0 ; python_version >= "3.9" and python_version < "4.0" -fabric==3.2.2 ; python_version >= "3.9" and python_version < "4.0" -fastjsonschema==2.21.1 ; python_version >= "3.9" and python_version < "4.0" -filelock==3.18.0 ; python_version >= "3.9" and python_version < "4.0" -findpython==0.6.3 ; python_version >= "3.9" and python_version < "4.0" -google-api-core==2.24.2 ; python_version >= "3.9" and python_version < "4.0" -google-api-python-client==2.166.0 ; python_version >= "3.9" and python_version < "4.0" -google-auth-httplib2==0.2.0 ; python_version >= "3.9" and python_version < "4.0" -google-auth==2.38.0 ; python_version >= "3.9" and python_version < "4.0" -googleapis-common-protos==1.69.2 ; python_version >= "3.9" and python_version < "4.0" -h11==0.14.0 ; python_version >= "3.9" and python_version < "4.0" -httpcore==1.0.7 ; python_version >= "3.9" and python_version < "4.0" -httplib2==0.22.0 ; python_version >= "3.9" and python_version < "4.0" -httpx==0.28.1 ; python_version >= "3.9" and python_version < "4.0" -id==1.5.0 ; python_version >= "3.9" and python_version < "4.0" -idna==3.10 ; python_version >= "3.9" and python_version < "4.0" -imagesize==1.4.1 ; python_version >= "3.9" and python_version < "4.0" -importlib-metadata==8.6.1 ; python_version >= "3.9" and python_version <= "3.11" -iniconfig==2.1.0 ; python_version >= "3.9" and python_version < "4.0" -installer==0.7.0 ; python_version >= "3.9" and python_version < "4.0" -invoke==2.2.0 ; python_version >= "3.9" and python_version < "4.0" -ipdb==0.13.13 ; python_version >= "3.9" and python_version < "4.0" +anyio==4.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +apacheconfig==0.3.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +astroid==3.3.9 ; python_full_version >= "3.9.2" and python_version < "4.0" +asttokens==3.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +attrs==25.3.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +azure-core==1.33.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +azure-devops==7.1.0b4 ; python_full_version >= "3.9.2" and python_version < "4.0" +babel==2.17.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +backports-tarfile==1.2.0 ; python_full_version >= "3.9.2" and python_version < "3.12" +bcrypt==4.3.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +beautifulsoup4==4.13.4 ; python_full_version >= "3.9.2" and python_version < "4.0" +boto3==1.38.6 ; python_full_version >= "3.9.2" and python_version < "4.0" +botocore==1.38.6 ; python_full_version >= "3.9.2" and python_version < "4.0" +build==1.2.2.post1 ; python_full_version >= "3.9.2" and python_version < "4.0" +cachecontrol==0.14.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +cachetools==5.5.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +certifi==2025.4.26 ; python_full_version >= "3.9.2" and python_version < "4.0" +cffi==1.17.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +chardet==5.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +charset-normalizer==3.4.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +cleo==2.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +cloudflare==2.19.4 ; python_full_version >= "3.9.2" and python_version < "4.0" +colorama==0.4.6 ; python_full_version >= "3.9.2" and python_version < "4.0" +configargparse==1.7 ; python_full_version >= "3.9.2" and python_version < "4.0" +configobj==5.0.9 ; python_full_version >= "3.9.2" and python_version < "4.0" +coverage==7.8.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +crashtest==0.4.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +cryptography==44.0.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +cython==0.29.37 ; python_full_version >= "3.9.2" and python_version < "4.0" +decorator==5.2.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +deprecated==1.2.18 ; python_full_version >= "3.9.2" and python_version < "4.0" +dill==0.4.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +distlib==0.3.9 ; python_full_version >= "3.9.2" and python_version < "4.0" +distro==1.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +dns-lexicon==3.21.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +dnspython==2.7.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +docutils==0.21.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +dulwich==0.22.8 ; python_full_version >= "3.9.2" and python_version < "4.0" +exceptiongroup==1.2.2 ; python_full_version >= "3.9.2" and python_version <= "3.10" +execnet==2.1.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +executing==2.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +fabric==3.2.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +fastjsonschema==2.21.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +filelock==3.18.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +findpython==0.6.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +google-api-core==2.24.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +google-api-python-client==2.169.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +google-auth-httplib2==0.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +google-auth==2.39.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +googleapis-common-protos==1.70.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +h11==0.16.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +httpcore==1.0.9 ; python_full_version >= "3.9.2" and python_version < "4.0" +httplib2==0.22.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +httpx==0.28.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +id==1.5.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +idna==3.10 ; python_full_version >= "3.9.2" and python_version < "4.0" +imagesize==1.4.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +importlib-metadata==8.7.0 ; python_full_version >= "3.9.2" and python_version < "3.12" +iniconfig==2.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +installer==0.7.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +invoke==2.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +ipdb==0.13.13 ; python_full_version >= "3.9.2" and python_version < "4.0" ipython-pygments-lexers==1.1.1 ; python_version >= "3.11" and python_version < "4.0" -ipython==8.18.1 ; python_version == "3.9" -ipython==8.35.0 ; python_version == "3.10" -ipython==9.1.0 ; python_version >= "3.11" and python_version < "4.0" -isodate==0.7.2 ; python_version >= "3.9" and python_version < "4.0" -isort==5.13.2 ; python_version >= "3.9" and python_version < "4.0" -jaraco-classes==3.4.0 ; python_version >= "3.9" and python_version < "4.0" -jaraco-context==6.0.1 ; python_version >= "3.9" and python_version < "4.0" -jaraco-functools==4.1.0 ; python_version >= "3.9" and python_version < "4.0" -jedi==0.19.2 ; python_version >= "3.9" and python_version < "4.0" -jeepney==0.9.0 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "linux" -jinja2==3.1.6 ; python_version >= "3.9" and python_version < "4.0" -jmespath==1.0.1 ; python_version >= "3.9" and python_version < "4.0" -josepy==2.0.0 ; python_version >= "3.9" and python_version < "4.0" -jsonlines==4.0.0 ; python_version >= "3.9" and python_version < "4.0" -jsonpickle==4.0.5 ; python_version >= "3.9" and python_version < "4.0" -keyring==25.6.0 ; python_version >= "3.9" and python_version < "4.0" -markdown-it-py==3.0.0 ; python_version >= "3.9" and python_version < "4.0" -markupsafe==3.0.2 ; python_version >= "3.9" and python_version < "4.0" -matplotlib-inline==0.1.7 ; python_version >= "3.9" and python_version < "4.0" -mccabe==0.7.0 ; python_version >= "3.9" and python_version < "4.0" -mdurl==0.1.2 ; python_version >= "3.9" and python_version < "4.0" -more-itertools==10.6.0 ; python_version >= "3.9" and python_version < "4.0" -msgpack==1.1.0 ; python_version >= "3.9" and python_version < "4.0" -msrest==0.7.1 ; python_version >= "3.9" and python_version < "4.0" -mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "4.0" -mypy==1.9.0 ; python_version >= "3.9" and python_version < "4.0" -nh3==0.2.21 ; python_version >= "3.9" and python_version < "4.0" -oauthlib==3.2.2 ; python_version >= "3.9" and python_version < "4.0" -packaging==24.2 ; python_version >= "3.9" and python_version < "4.0" -paramiko==3.5.1 ; python_version >= "3.9" and python_version < "4.0" -parsedatetime==2.6 ; python_version >= "3.9" and python_version < "4.0" -parso==0.8.4 ; python_version >= "3.9" and python_version < "4.0" -pbs-installer==2025.4.9 ; python_version >= "3.9" and python_version < "4.0" -pexpect==4.9.0 ; python_version >= "3.9" and python_version < "4.0" and sys_platform != "win32" and sys_platform != "emscripten" or python_version == "3.9" and sys_platform != "win32" -pip==25.0.1 ; python_version >= "3.9" and python_version < "4.0" -pkginfo==1.12.1.2 ; python_version >= "3.9" and python_version < "4.0" -platformdirs==4.3.7 ; python_version >= "3.9" and python_version < "4.0" -pluggy==1.5.0 ; python_version >= "3.9" and python_version < "4.0" -ply==3.11 ; python_version >= "3.9" and python_version < "4.0" -poetry-core==2.1.2 ; python_version >= "3.9" and python_version < "4.0" -poetry-plugin-export==1.9.0 ; python_version >= "3.9" and python_version < "4.0" -poetry==2.1.2 ; python_version >= "3.9" and python_version < "4.0" -prompt-toolkit==3.0.50 ; python_version >= "3.9" and python_version < "4.0" -proto-plus==1.26.1 ; python_version >= "3.9" and python_version < "4.0" -protobuf==6.30.2 ; python_version >= "3.9" and python_version < "4.0" -ptyprocess==0.7.0 ; python_version >= "3.9" and python_version < "4.0" and sys_platform != "win32" and sys_platform != "emscripten" or python_version == "3.9" and sys_platform != "win32" -pure-eval==0.2.3 ; python_version >= "3.9" and python_version < "4.0" -pyasn1-modules==0.4.2 ; python_version >= "3.9" and python_version < "4.0" -pyasn1==0.6.1 ; python_version >= "3.9" and python_version < "4.0" -pycparser==2.22 ; python_version >= "3.9" and python_version < "4.0" -pygments==2.19.1 ; python_version >= "3.9" and python_version < "4.0" -pylint==3.3.3 ; python_version >= "3.9" and python_version < "4.0" -pynacl==1.5.0 ; python_version >= "3.9" and python_version < "4.0" -pyopenssl==25.0.0 ; python_version >= "3.9" and python_version < "4.0" -pyotp==2.9.0 ; python_version >= "3.9" and python_version < "4.0" -pyparsing==3.2.3 ; python_version >= "3.9" and python_version < "4.0" -pyproject-api==1.9.0 ; python_version >= "3.9" and python_version < "4.0" -pyproject-hooks==1.2.0 ; python_version >= "3.9" and python_version < "4.0" -pyrfc3339==2.0.1 ; python_version >= "3.9" and python_version < "4.0" -pytest-cov==6.1.1 ; python_version >= "3.9" and python_version < "4.0" -pytest-xdist==3.6.1 ; python_version >= "3.9" and python_version < "4.0" -pytest==8.3.5 ; python_version >= "3.9" and python_version < "4.0" -python-augeas==1.1.0 ; python_version >= "3.9" and python_version < "4.0" -python-dateutil==2.9.0.post0 ; python_version >= "3.9" and python_version < "4.0" -python-digitalocean==1.17.0 ; python_version >= "3.9" and python_version < "4.0" -pytz==2025.2 ; python_version >= "3.9" and python_version < "4.0" -pywin32-ctypes==0.2.3 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "win32" -pywin32==310 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "win32" -pyyaml==6.0.2 ; python_version >= "3.9" and python_version < "4.0" -rapidfuzz==3.13.0 ; python_version >= "3.9" and python_version < "4.0" -readme-renderer==44.0 ; python_version >= "3.9" and python_version < "4.0" -requests-file==2.1.0 ; python_version >= "3.9" and python_version < "4.0" -requests-oauthlib==2.0.0 ; python_version >= "3.9" and python_version < "4.0" -requests-toolbelt==1.0.0 ; python_version >= "3.9" and python_version < "4.0" -requests==2.32.3 ; python_version >= "3.9" and python_version < "4.0" -rfc3986==2.0.0 ; python_version >= "3.9" and python_version < "4.0" -rich==14.0.0 ; python_version >= "3.9" and python_version < "4.0" +ipython==8.18.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +ipython==8.36.0 ; python_version == "3.10" +ipython==9.2.0 ; python_version >= "3.11" and python_version < "4.0" +isodate==0.7.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +isort==5.13.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +jaraco-classes==3.4.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +jaraco-context==6.0.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +jaraco-functools==4.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +jedi==0.19.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +jeepney==0.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" and sys_platform == "linux" +jinja2==3.1.6 ; python_full_version >= "3.9.2" and python_version < "4.0" +jmespath==1.0.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +josepy==2.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +jsonlines==4.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +jsonpickle==4.0.5 ; python_full_version >= "3.9.2" and python_version < "4.0" +keyring==25.6.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +markdown-it-py==3.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +markupsafe==3.0.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +matplotlib-inline==0.1.7 ; python_full_version >= "3.9.2" and python_version < "4.0" +mccabe==0.7.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +mdurl==0.1.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +more-itertools==10.7.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +msgpack==1.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +msrest==0.7.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +mypy-extensions==1.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +mypy==1.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +nh3==0.2.21 ; python_full_version >= "3.9.2" and python_version < "4.0" +oauthlib==3.2.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +packaging==25.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +paramiko==3.5.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +parsedatetime==2.6 ; python_full_version >= "3.9.2" and python_version < "4.0" +parso==0.8.4 ; python_full_version >= "3.9.2" and python_version < "4.0" +pbs-installer==2025.4.9 ; python_full_version >= "3.9.2" and python_version < "4.0" +pexpect==4.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" and (sys_platform != "win32" and sys_platform != "emscripten" or python_version < "3.10") and sys_platform != "win32" +pip==25.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +pkginfo==1.12.1.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +platformdirs==4.3.7 ; python_full_version >= "3.9.2" and python_version < "4.0" +pluggy==1.5.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +ply==3.11 ; python_full_version >= "3.9.2" and python_version < "4.0" +poetry-core==2.1.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +poetry-plugin-export==1.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +poetry==2.1.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +prompt-toolkit==3.0.51 ; python_full_version >= "3.9.2" and python_version < "4.0" +proto-plus==1.26.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +protobuf==6.30.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +ptyprocess==0.7.0 ; python_full_version >= "3.9.2" and python_version < "4.0" and (sys_platform != "win32" and sys_platform != "emscripten" or python_version < "3.10") and sys_platform != "win32" +pure-eval==0.2.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyasn1-modules==0.4.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyasn1==0.6.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +pycparser==2.22 ; python_full_version >= "3.9.2" and python_version < "4.0" +pygments==2.19.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +pylint==3.3.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +pynacl==1.5.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyopenssl==25.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyotp==2.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyparsing==3.2.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyproject-api==1.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyproject-hooks==1.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +pyrfc3339==2.0.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +pytest-cov==6.1.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +pytest-xdist==3.6.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +pytest==8.3.5 ; python_full_version >= "3.9.2" and python_version < "4.0" +python-augeas==1.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +python-dateutil==2.9.0.post0 ; python_full_version >= "3.9.2" and python_version < "4.0" +python-digitalocean==1.17.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +pytz==2025.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +pywin32-ctypes==0.2.3 ; python_full_version >= "3.9.2" and python_version < "4.0" and sys_platform == "win32" +pywin32==310 ; python_full_version >= "3.9.2" and python_version < "4.0" and sys_platform == "win32" +pyyaml==6.0.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +rapidfuzz==3.13.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +readme-renderer==44.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +requests-file==2.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +requests-oauthlib==2.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +requests-toolbelt==1.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +requests==2.32.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +rfc3986==2.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +rich==14.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" roman-numerals-py==3.1.0 ; python_version >= "3.11" and python_version < "4.0" -rsa==4.9 ; python_version >= "3.9" and python_version < "4.0" -s3transfer==0.11.4 ; python_version >= "3.9" and python_version < "4.0" -secretstorage==3.3.3 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "linux" -semantic-version==2.10.0 ; python_version >= "3.9" and python_version < "4.0" -setuptools-rust==1.11.1 ; python_version >= "3.9" and python_version < "4.0" -setuptools==78.1.0 ; python_version >= "3.9" and python_version < "4.0" -shellingham==1.5.4 ; python_version >= "3.9" and python_version < "4.0" -six==1.17.0 ; python_version >= "3.9" and python_version < "4.0" -sniffio==1.3.1 ; python_version >= "3.9" and python_version < "4.0" -snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "4.0" -soupsieve==2.6 ; python_version >= "3.9" and python_version < "4.0" -sphinx-rtd-theme==3.0.2 ; python_version >= "3.9" and python_version < "4.0" -sphinx==7.4.7 ; python_version == "3.9" +rsa==4.9.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +s3transfer==0.12.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +secretstorage==3.3.3 ; python_full_version >= "3.9.2" and python_version < "4.0" and sys_platform == "linux" +semantic-version==2.10.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +setuptools-rust==1.11.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +setuptools==80.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +shellingham==1.5.4 ; python_full_version >= "3.9.2" and python_version < "4.0" +six==1.17.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +sniffio==1.3.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +snowballstemmer==2.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +soupsieve==2.7 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinx-rtd-theme==3.0.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinx==7.4.7 ; python_full_version >= "3.9.2" and python_version < "3.10" sphinx==8.1.3 ; python_version == "3.10" sphinx==8.2.3 ; python_version >= "3.11" and python_version < "4.0" -sphinxcontrib-applehelp==2.0.0 ; python_version >= "3.9" and python_version < "4.0" -sphinxcontrib-devhelp==2.0.0 ; python_version >= "3.9" and python_version < "4.0" -sphinxcontrib-htmlhelp==2.1.0 ; python_version >= "3.9" and python_version < "4.0" -sphinxcontrib-jquery==4.1 ; python_version >= "3.9" and python_version < "4.0" -sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.9" and python_version < "4.0" -sphinxcontrib-qthelp==2.0.0 ; python_version >= "3.9" and python_version < "4.0" -sphinxcontrib-serializinghtml==2.0.0 ; python_version >= "3.9" and python_version < "4.0" -stack-data==0.6.3 ; python_version >= "3.9" and python_version < "4.0" -tldextract==5.2.0 ; python_version >= "3.9" and python_version < "4.0" -tomli==2.2.1 ; python_version >= "3.9" and python_version < "3.11" -tomlkit==0.13.2 ; python_version >= "3.9" and python_version < "4.0" -tox==4.25.0 ; python_version >= "3.9" and python_version < "4.0" -traitlets==5.14.3 ; python_version >= "3.9" and python_version < "4.0" -trove-classifiers==2025.3.19.19 ; python_version >= "3.9" and python_version < "4.0" -twine==6.1.0 ; python_version >= "3.9" and python_version < "4.0" -types-httplib2==0.22.0.20250401 ; python_version >= "3.9" and python_version < "4.0" -types-pyrfc3339==2.0.1.20241107 ; python_version >= "3.9" and python_version < "4.0" -types-python-dateutil==2.9.0.20241206 ; python_version >= "3.9" and python_version < "4.0" -types-pytz==2025.2.0.20250326 ; python_version >= "3.9" and python_version < "4.0" -types-pywin32==310.0.0.20250319 ; python_version >= "3.9" and python_version < "4.0" -types-requests==2.31.0.6 ; python_version == "3.9" +sphinxcontrib-applehelp==2.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinxcontrib-devhelp==2.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinxcontrib-htmlhelp==2.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinxcontrib-jquery==4.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinxcontrib-jsmath==1.0.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinxcontrib-qthelp==2.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +sphinxcontrib-serializinghtml==2.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +stack-data==0.6.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +tldextract==5.3.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +tomli==2.2.1 ; python_full_version >= "3.9.2" and python_version <= "3.10" +tomlkit==0.13.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +tox==4.25.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +traitlets==5.14.3 ; python_full_version >= "3.9.2" and python_version < "4.0" +trove-classifiers==2025.5.1.12 ; python_full_version >= "3.9.2" and python_version < "4.0" +twine==6.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-httplib2==0.22.0.20250401 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-pyrfc3339==2.0.1.20241107 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-python-dateutil==2.9.0.20241206 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-pytz==2025.2.0.20250326 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-pywin32==310.0.0.20250429 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-requests==2.31.0.6 ; python_full_version >= "3.9.2" and python_version < "3.10" types-requests==2.32.0.20250328 ; python_version >= "3.10" and python_version < "4.0" -types-setuptools==78.1.0.20250329 ; python_version >= "3.9" and python_version < "4.0" -types-urllib3==1.26.25.14 ; python_version == "3.9" -typing-extensions==4.13.2 ; python_version >= "3.9" and python_version < "4.0" -uritemplate==4.1.1 ; python_version >= "3.9" and python_version < "4.0" -urllib3==1.26.20 ; python_version == "3.9" +types-setuptools==80.0.0.20250429 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-urllib3==1.26.25.14 ; python_full_version >= "3.9.2" and python_version < "3.10" +typing-extensions==4.13.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +uritemplate==4.1.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +urllib3==1.26.20 ; python_full_version >= "3.9.2" and python_version < "3.10" urllib3==2.4.0 ; python_version >= "3.10" and python_version < "4.0" -virtualenv==20.30.0 ; python_version >= "3.9" and python_version < "4.0" -wcwidth==0.2.13 ; python_version >= "3.9" and python_version < "4.0" -wheel==0.45.1 ; python_version >= "3.9" and python_version < "4.0" -wrapt==1.17.2 ; python_version >= "3.9" and python_version < "4.0" -xattr==1.1.4 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "darwin" -zipp==3.21.0 ; python_version >= "3.9" and python_version <= "3.11" -zstandard==0.23.0 ; python_version >= "3.9" and python_version < "4.0" +virtualenv==20.30.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +wcwidth==0.2.13 ; python_full_version >= "3.9.2" and python_version < "4.0" +wheel==0.45.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +wrapt==1.17.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +xattr==1.1.4 ; python_full_version >= "3.9.2" and python_version < "4.0" and sys_platform == "darwin" +zipp==3.21.0 ; python_full_version >= "3.9.2" and python_version < "3.12" +zstandard==0.23.0 ; python_full_version >= "3.9.2" and python_version < "4.0"