remove python 3.8 support (#10077)

fixes https://github.com/certbot/certbot/issues/10035. you can compare
this to the PR that did this for python 3.7 at
https://github.com/certbot/certbot/pull/9792

i agree with erica's comment at
https://github.com/certbot/certbot/issues/10035#issuecomment-2452212686,
but felt this PR was already getting pretty large so i did that in a
second PR at https://github.com/certbot/certbot/pull/10076
This commit is contained in:
Brad Warren
2024-12-04 14:55:20 -08:00
committed by GitHub
parent bcbc3dd484
commit 087cb4d1f4
38 changed files with 329 additions and 398 deletions
@@ -20,14 +20,11 @@ jobs:
linux-isolated:
TOXENV: 'isolated-acme,isolated-certbot,isolated-apache,isolated-cloudflare,isolated-digitalocean,isolated-dnsimple,isolated-dnsmadeeasy,isolated-gehirn,isolated-google,isolated-linode,isolated-luadns,isolated-nsone,isolated-ovh,isolated-rfc2136,isolated-route53,isolated-sakuracloud,isolated-nginx'
linux-integration-certbot-oldest:
PYTHON_VERSION: 3.8
PYTHON_VERSION: 3.9
TOXENV: integration-certbot-oldest
linux-integration-nginx-oldest:
PYTHON_VERSION: 3.8
PYTHON_VERSION: 3.9
TOXENV: integration-nginx-oldest
linux-py38-integration:
PYTHON_VERSION: 3.8
TOXENV: integration
linux-py39-integration:
PYTHON_VERSION: 3.9
TOXENV: integration
@@ -12,13 +12,13 @@ jobs:
PIP_USE_PEP517: "true"
linux-oldest:
IMAGE_NAME: ubuntu-22.04
PYTHON_VERSION: 3.8
PYTHON_VERSION: 3.9
TOXENV: oldest
linux-py38:
linux-py39:
# linux unit tests with the oldest python we support
IMAGE_NAME: ubuntu-22.04
PYTHON_VERSION: 3.8
TOXENV: py38
PYTHON_VERSION: 3.9
TOXENV: py39
linux-cover:
# linux unit+cover tests with the newest python we support
IMAGE_NAME: ubuntu-22.04
@@ -47,6 +47,6 @@ jobs:
- template: ../steps/tox-steps.yml
- job: test_sphinx_builds
pool:
vmImage: ubuntu-20.04
vmImage: ubuntu-22.04
steps:
- template: ../steps/sphinx-steps.yml
-8
View File
@@ -6,7 +6,6 @@ This module is an implementation of the `ACME protocol`_.
"""
import sys
import warnings
# This code exists to keep backwards compatibility with people using acme.jose
# before it became the standalone josepy package.
@@ -20,10 +19,3 @@ for mod in list(sys.modules):
# preserved (acme.jose.* is josepy.*)
if mod == 'josepy' or mod.startswith('josepy.'):
sys.modules['acme.' + mod.replace('josepy', 'jose', 1)] = sys.modules[mod]
if sys.version_info[:2] == (3, 8):
warnings.warn(
"Python 3.8 support will be dropped in the next planned release of "
"acme. Please upgrade your Python version.",
PendingDeprecationWarning,
) # pragma: no cover
+1 -2
View File
@@ -45,14 +45,13 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -29,7 +29,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -38,7 +38,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -33,14 +33,13 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -1
View File
@@ -1,4 +1,4 @@
FROM docker.io/python:3.8-buster
FROM docker.io/python:3.11-buster
LABEL maintainer="Brad Warren <bmw@eff.org>"
# This does not include the dependencies needed to build cryptography. See
+1 -2
View File
@@ -18,14 +18,13 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -40,7 +40,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -49,7 +49,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -40,7 +40,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -49,7 +49,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -39,7 +39,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -48,7 +48,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+5 -3
View File
@@ -7,7 +7,10 @@ from setuptools import setup
version = '3.1.0.dev0'
install_requires = [
'dnspython>=1.15.0',
# This version was chosen because it is the version packaged in RHEL 9 and Debian unstable. It
# is possible this requirement could be relaxed to allow for an even older version of dnspython
# if necessary.
'dnspython>=2.6.1',
]
if os.environ.get('SNAP_BUILD'):
@@ -38,7 +41,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +50,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -38,7 +38,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -47,7 +47,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -27,7 +27,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -36,7 +36,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+2
View File
@@ -10,6 +10,8 @@ Certbot adheres to [Semantic Versioning](https://semver.org/).
### Changed
* Python 3.8 support was removed.
* certbot-dns-rfc2136's minimum required version of dnspython is now 2.6.1.
* Updated our Docker images to be based on Alpine Linux 3.20.
* Our runtime dependency on setuptools has been dropped from all Certbot
components.
-9
View File
@@ -1,13 +1,4 @@
"""Certbot client."""
import sys
import warnings
# version number like 1.2.3a0, must have at least 2 parts, like 1.2
__version__ = '3.1.0.dev0'
if sys.version_info[:2] == (3, 8):
warnings.warn(
"Python 3.8 support will be dropped in the next planned release of "
"certbot. Please upgrade your Python version.",
PendingDeprecationWarning,
) # pragma: no cover
-4
View File
@@ -1866,10 +1866,6 @@ def main(cli_args: Optional[List[str]] = None) -> Optional[Union[str, int]]:
if config.func != plugins_cmd: # pylint: disable=comparison-with-callable
raise
if sys.version_info[:2] == (3, 8):
logger.warning("Python 3.8 support will be dropped in the next planned release "
"of Certbot - please upgrade your Python version.")
with make_displayer(config) as displayer:
display_obj.set_display(displayer)
@@ -631,10 +631,6 @@ class ReadlinkTest(unittest.TestCase):
@unittest.skipIf(POSIX_MODE, reason='Tests specific to Windows')
@mock.patch("certbot.compat.filesystem.os.readlink")
def test_normal_path_windows(self, mock_readlink):
# Python <3.8
mock_readlink.return_value = "C:\\short\\path"
assert filesystem.readlink("dummy") == "C:\\short\\path"
# Python >=3.8 (os.readlink always returns the extended form)
mock_readlink.return_value = "\\\\?\\C:\\short\\path"
assert filesystem.readlink("dummy") == "C:\\short\\path"
@@ -218,7 +218,6 @@ class PostHookTest(HookTest):
assert not self._call_with_mock_execute(self.config, []).called
assert not self._get_eventually()
@unittest.skipIf(pyver_lt(3, 8), "Python 3.8+ required for this test.")
def test_renew_env(self):
self.config.verb = "certonly"
args = self._call_with_mock_execute(self.config, ["success.org"]).call_args
@@ -308,7 +307,6 @@ class RunSavedPostHooksTest(HookTest):
mock_execute = self._call_with_mock_execute_and_eventually([], [])
mock_execute.assert_called_once_with("post-hook", self.eventually[0], env=mock.ANY)
@unittest.skipIf(pyver_lt(3, 8), "Python 3.8+ required for this test.")
def test_env(self):
self.eventually = ["foo"]
mock_execute = self._call_with_mock_execute_and_eventually(["success.org"], ["failed.org"])
+10 -25
View File
@@ -5,11 +5,9 @@ from contextlib import contextmanager
import errno
import os # pylint: disable=os-module-forbidden
import stat
import sys
from typing import Any
from typing import Dict
from typing import Generator
from typing import List
from typing import Optional
try:
@@ -370,27 +368,14 @@ def realpath(file_path: str) -> str:
"""
original_path = file_path
# Since Python 3.8, os.path.realpath also resolves symlinks on Windows.
if POSIX_MODE or sys.version_info >= (3, 8):
path = os.path.realpath(file_path)
if os.path.islink(path):
# If path returned by realpath is still a link, it means that it failed to
# resolve the symlink because of a loop.
# See realpath code: https://github.com/python/cpython/blob/master/Lib/posixpath.py
raise RuntimeError('Error, link {0} is a loop!'.format(original_path))
return path
inspected_paths: List[str] = []
while os.path.islink(file_path):
link_path = file_path
file_path = os.readlink(file_path)
if not os.path.isabs(file_path):
file_path = os.path.join(os.path.dirname(link_path), file_path)
if file_path in inspected_paths:
raise RuntimeError('Error, link {0} is a loop!'.format(original_path))
inspected_paths.append(file_path)
return os.path.abspath(file_path)
# os.path.realpath also resolves symlinks
path = os.path.realpath(file_path)
if os.path.islink(path):
# If path returned by realpath is still a link, it means that it failed to
# resolve the symlink because of a loop.
# See realpath code: https://github.com/python/cpython/blob/master/Lib/posixpath.py
raise RuntimeError('Error, link {0} is a loop!'.format(original_path))
return path
def readlink(link_path: str) -> str:
@@ -404,11 +389,11 @@ def readlink(link_path: str) -> str:
"""
path = os.readlink(link_path)
if POSIX_MODE or not path.startswith('\\\\?\\'):
if POSIX_MODE:
return path
# At this point, we know we are on Windows and that the path returned uses
# the extended form which is done for all paths in Python 3.8+
# the extended form which begins with the prefix \\?\
# Max length of a normal path is 260 characters on Windows, including the non printable
# termination character "<NUL>". The termination character is not included in Python
+1 -2
View File
@@ -99,7 +99,7 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Console',
@@ -109,7 +109,6 @@ setup(
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+1 -2
View File
@@ -9,14 +9,13 @@ setup(
author='Certbot Project',
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+5 -10
View File
@@ -11,27 +11,22 @@
# we release breaking changes.
#
# The current warnings being ignored are:
# 1) A deprecation warning is raised in dnspython==1.15.0 in the oldest tests for
# certbot-dns-rfc2136.
# 2) pytest-cov uses deprecated functionality in pytest-xdist, to be resolved by
# 1) pytest-cov uses deprecated functionality in pytest-xdist, to be resolved by
# https://github.com/pytest-dev/pytest-cov/issues/557.
# 3) requests-toolbelt<0.10.1 can cause this warning to be raised during our
# 2) requests-toolbelt<0.10.1 can cause this warning to be raised during our
# unit tests. This warning should be ignored until our (transitive)
# dependency on requests-toolbelt is removed or our pinned version can be
# updated.
# 4) Ignore DeprecationWarning for datetime.utcfromtimestamp() triggered
# 3) Ignore DeprecationWarning for datetime.utcfromtimestamp() triggered
# from dateutil. See https://github.com/dateutil/dateutil/issues/1314.
# 5) Ignoring this allows us to continue to update pyOpenSSL (one of our crypto
# 4) Ignoring this allows us to continue to update pyOpenSSL (one of our crypto
# dependencies) until https://github.com/certbot/certbot/issues/9828 is resolved.
# 6) Similarly to 6), CSR support is deprecated in pyOpenSSL since 24.2, we silence
# 5) Similarly to 6), CSR support is deprecated in pyOpenSSL since 24.2, we silence
# the warning until https://github.com/certbot/certbot/issues/9992 is resolved.
# 7) Ignore our own PendingDeprecationWarning about Python 3.8 soon to be dropped.
filterwarnings =
error
ignore:decodestring\(\) is a deprecated alias:DeprecationWarning:dns
ignore:.*rsyncdir:DeprecationWarning
ignore:'urllib3.contrib.pyopenssl:DeprecationWarning:requests_toolbelt
ignore:.*datetime.utcfromtimestamp\(\) is deprecated:DeprecationWarning:dateutil
ignore:X509Extension support in pyOpenSSL is deprecated:DeprecationWarning
ignore:CSR support in pyOpenSSL is deprecated:DeprecationWarning
ignore:Python 3.8 support will be dropped:PendingDeprecationWarning
+96 -96
View File
@@ -1,98 +1,98 @@
# This file was generated by tools/pinning/oldest/repin.sh and can be updated using
# that script.
apacheconfig==0.3.2 ; python_version >= "3.8" and python_version < "3.9"
asn1crypto==0.24.0 ; python_version >= "3.8" and python_version < "3.9"
astroid==3.2.4 ; python_version >= "3.8" and python_version < "3.9"
beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "3.9"
boto3==1.15.15 ; python_version >= "3.8" and python_version < "3.9"
botocore==1.18.15 ; python_version >= "3.8" and python_version < "3.9"
cachetools==5.5.0 ; python_version >= "3.8" and python_version < "3.9"
certifi==2024.8.30 ; python_version >= "3.8" and python_version < "3.9"
cffi==1.12.3 ; python_version >= "3.8" and python_version < "3.9"
chardet==3.0.4 ; python_version >= "3.8" and python_version < "3.9"
cloudflare==1.5.1 ; python_version >= "3.8" and python_version < "3.9"
colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.9" and sys_platform == "win32"
configargparse==1.5.3 ; python_version >= "3.8" and python_version < "3.9"
configobj==5.0.6 ; python_version >= "3.8" and python_version < "3.9"
coverage==7.6.1 ; python_version >= "3.8" and python_version < "3.9"
cryptography==3.2.1 ; python_version >= "3.8" and python_version < "3.9"
cython==0.29.37 ; python_version >= "3.8" and python_version < "3.9"
dill==0.3.9 ; python_version >= "3.8" and python_version < "3.9"
distlib==0.3.9 ; python_version >= "3.8" and python_version < "3.9"
distro==1.0.1 ; python_version >= "3.8" and python_version < "3.9"
dns-lexicon==3.15.1 ; python_version >= "3.8" and python_version < "3.9"
dnspython==1.15.0 ; python_version >= "3.8" and python_version < "3.9"
exceptiongroup==1.2.2 ; python_version >= "3.8" and python_version < "3.9"
execnet==2.1.1 ; python_version >= "3.8" and python_version < "3.9"
filelock==3.16.1 ; python_version >= "3.8" and python_version < "3.9"
funcsigs==0.4 ; python_version >= "3.8" and python_version < "3.9"
future==1.0.0 ; python_version >= "3.8" and python_version < "3.9"
google-api-python-client==1.6.5 ; python_version >= "3.8" and python_version < "3.9"
google-auth==2.16.0 ; python_version >= "3.8" and python_version < "3.9"
httplib2==0.9.2 ; python_version >= "3.8" and python_version < "3.9"
idna==2.6 ; python_version >= "3.8" and python_version < "3.9"
importlib-metadata==4.6.4 ; python_version >= "3.8" and python_version < "3.9"
importlib-resources==6.4.5 ; python_version >= "3.8" and python_version < "3.9"
iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "3.9"
ipaddress==1.0.16 ; python_version >= "3.8" and python_version < "3.9"
isort==5.13.2 ; python_version >= "3.8" and python_version < "3.9"
jmespath==0.10.0 ; python_version >= "3.8" and python_version < "3.9"
josepy==1.14.0 ; python_version >= "3.8" and python_version < "3.9"
logger==1.4 ; python_version >= "3.8" and python_version < "3.9"
mccabe==0.7.0 ; python_version >= "3.8" and python_version < "3.9"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "3.9"
mypy==1.13.0 ; python_version >= "3.8" and python_version < "3.9"
ndg-httpsclient==0.3.2 ; python_version >= "3.8" and python_version < "3.9"
oauth2client==4.1.3 ; python_version >= "3.8" and python_version < "3.9"
packaging==24.2 ; python_version >= "3.8" and python_version < "3.9"
parsedatetime==2.4 ; python_version >= "3.8" and python_version < "3.9"
pbr==1.8.0 ; python_version >= "3.8" and python_version < "3.9"
pip==24.3.1 ; python_version >= "3.8" and python_version < "3.9"
platformdirs==4.3.6 ; python_version >= "3.8" and python_version < "3.9"
pluggy==1.5.0 ; python_version >= "3.8" and python_version < "3.9"
ply==3.4 ; python_version >= "3.8" and python_version < "3.9"
py==1.11.0 ; python_version >= "3.8" and python_version < "3.9"
pyasn1-modules==0.4.1 ; python_version >= "3.8" and python_version < "3.9"
pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "3.9"
pycparser==2.14 ; python_version >= "3.8" and python_version < "3.9"
pylint==3.2.7 ; python_version >= "3.8" and python_version < "3.9"
pyopenssl==17.5.0 ; python_version >= "3.8" and python_version < "3.9"
pyotp==2.9.0 ; python_version >= "3.8" and python_version < "3.9"
pyparsing==2.2.1 ; python_version >= "3.8" and python_version < "3.9"
pyrfc3339==1.0 ; python_version >= "3.8" and python_version < "3.9"
pytest-cov==5.0.0 ; python_version >= "3.8" and python_version < "3.9"
pytest-xdist==3.6.1 ; python_version >= "3.8" and python_version < "3.9"
pytest==8.3.4 ; python_version >= "3.8" and python_version < "3.9"
python-augeas==0.5.0 ; python_version >= "3.8" and python_version < "3.9"
python-dateutil==2.9.0.post0 ; python_version >= "3.8" and python_version < "3.9"
python-digitalocean==1.11 ; python_version >= "3.8" and python_version < "3.9"
pytz==2019.3 ; python_version >= "3.8" and python_version < "3.9"
pywin32==308 ; python_version >= "3.8" and python_version < "3.9" and sys_platform == "win32"
pyyaml==6.0.2 ; python_version >= "3.8" and python_version < "3.9"
requests-file==2.1.0 ; python_version >= "3.8" and python_version < "3.9"
requests==2.20.0 ; python_version >= "3.8" and python_version < "3.9"
rsa==4.9 ; python_version >= "3.8" and python_version < "3.9"
s3transfer==0.3.7 ; python_version >= "3.8" and python_version < "3.9"
setuptools==75.3.0 ; python_version >= "3.8" and python_version < "3.9"
six==1.11.0 ; python_version >= "3.8" and python_version < "3.9"
soupsieve==2.6 ; python_version >= "3.8" and python_version < "3.9"
tldextract==5.1.2 ; python_version >= "3.8" and python_version < "3.9"
tomli==2.2.1 ; python_version >= "3.8" and python_version < "3.9"
tomlkit==0.13.2 ; python_version >= "3.8" and python_version < "3.9"
tox==1.9.2 ; python_version >= "3.8" and python_version < "3.9"
types-cryptography==3.3.23.2 ; python_version >= "3.8" and python_version < "3.9"
types-httplib2==0.22.0.20240310 ; python_version >= "3.8" and python_version < "3.9"
types-pyopenssl==23.0.0.0 ; python_version >= "3.8" and python_version < "3.9"
types-pyrfc3339==2.0.1.20241107 ; python_version >= "3.8" and python_version < "3.9"
types-python-dateutil==2.9.0.20241003 ; python_version >= "3.8" and python_version < "3.9"
types-pytz==2024.2.0.20241003 ; python_version >= "3.8" and python_version < "3.9"
types-pywin32==308.0.0.20241128 ; python_version >= "3.8" and python_version < "3.9"
types-requests==2.31.0.6 ; python_version >= "3.8" and python_version < "3.9"
types-setuptools==75.6.0.20241126 ; python_version >= "3.8" and python_version < "3.9"
types-urllib3==1.26.25.14 ; python_version >= "3.8" and python_version < "3.9"
typing-extensions==4.12.2 ; python_version >= "3.8" and python_version < "3.9"
uritemplate==3.0.1 ; python_version >= "3.8" and python_version < "3.9"
urllib3==1.24.2 ; python_version >= "3.8" and python_version < "3.9"
virtualenv==20.28.0 ; python_version >= "3.8" and python_version < "3.9"
wheel==0.45.1 ; python_version >= "3.8" and python_version < "3.9"
zipp==3.20.2 ; python_version >= "3.8" and python_version < "3.9"
apacheconfig==0.3.2 ; python_version >= "3.9" and python_version < "3.10"
asn1crypto==0.24.0 ; python_version >= "3.9" and python_version < "3.10"
astroid==3.3.5 ; python_version >= "3.9" and python_version < "3.10"
beautifulsoup4==4.12.3 ; python_version >= "3.9" and python_version < "3.10"
boto3==1.15.15 ; python_version >= "3.9" and python_version < "3.10"
botocore==1.18.15 ; python_version >= "3.9" and python_version < "3.10"
cachetools==5.5.0 ; python_version >= "3.9" and python_version < "3.10"
certifi==2024.8.30 ; python_version >= "3.9" and python_version < "3.10"
cffi==1.12.3 ; python_version >= "3.9" and python_version < "3.10"
chardet==3.0.4 ; python_version >= "3.9" and python_version < "3.10"
cloudflare==1.5.1 ; python_version >= "3.9" and python_version < "3.10"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.10" and sys_platform == "win32"
configargparse==1.5.3 ; python_version >= "3.9" and python_version < "3.10"
configobj==5.0.6 ; python_version >= "3.9" and python_version < "3.10"
coverage==7.6.8 ; python_version >= "3.9" and python_version < "3.10"
cryptography==3.2.1 ; python_version >= "3.9" and python_version < "3.10"
cython==0.29.37 ; python_version >= "3.9" and python_version < "3.10"
dill==0.3.9 ; python_version >= "3.9" and python_version < "3.10"
distlib==0.3.9 ; python_version >= "3.9" and python_version < "3.10"
distro==1.0.1 ; python_version >= "3.9" and python_version < "3.10"
dns-lexicon==3.15.1 ; python_version >= "3.9" and python_version < "3.10"
dnspython==2.6.1 ; python_version >= "3.9" and python_version < "3.10"
exceptiongroup==1.2.2 ; python_version >= "3.9" and python_version < "3.10"
execnet==2.1.1 ; python_version >= "3.9" and python_version < "3.10"
filelock==3.16.1 ; python_version >= "3.9" and python_version < "3.10"
funcsigs==0.4 ; python_version >= "3.9" and python_version < "3.10"
future==1.0.0 ; python_version >= "3.9" and python_version < "3.10"
google-api-python-client==1.6.5 ; python_version >= "3.9" and python_version < "3.10"
google-auth==2.16.0 ; python_version >= "3.9" and python_version < "3.10"
httplib2==0.9.2 ; python_version >= "3.9" and python_version < "3.10"
idna==2.6 ; python_version >= "3.9" and python_version < "3.10"
importlib-metadata==4.6.4 ; python_version >= "3.9" and python_version < "3.10"
importlib-resources==6.4.5 ; python_version >= "3.9" and python_version < "3.10"
iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "3.10"
ipaddress==1.0.16 ; python_version >= "3.9" and python_version < "3.10"
isort==5.13.2 ; python_version >= "3.9" and python_version < "3.10"
jmespath==0.10.0 ; python_version >= "3.9" and python_version < "3.10"
josepy==1.14.0 ; python_version >= "3.9" and python_version < "3.10"
logger==1.4 ; python_version >= "3.9" and python_version < "3.10"
mccabe==0.7.0 ; python_version >= "3.9" and python_version < "3.10"
mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "3.10"
mypy==1.13.0 ; python_version >= "3.9" and python_version < "3.10"
ndg-httpsclient==0.3.2 ; python_version >= "3.9" and python_version < "3.10"
oauth2client==4.1.3 ; python_version >= "3.9" and python_version < "3.10"
packaging==24.2 ; python_version >= "3.9" and python_version < "3.10"
parsedatetime==2.4 ; python_version >= "3.9" and python_version < "3.10"
pbr==1.8.0 ; python_version >= "3.9" and python_version < "3.10"
pip==24.3.1 ; python_version >= "3.9" and python_version < "3.10"
platformdirs==4.3.6 ; python_version >= "3.9" and python_version < "3.10"
pluggy==1.5.0 ; python_version >= "3.9" and python_version < "3.10"
ply==3.4 ; python_version >= "3.9" and python_version < "3.10"
py==1.11.0 ; python_version >= "3.9" and python_version < "3.10"
pyasn1-modules==0.4.1 ; python_version >= "3.9" and python_version < "3.10"
pyasn1==0.4.8 ; python_version >= "3.9" and python_version < "3.10"
pycparser==2.14 ; python_version >= "3.9" and python_version < "3.10"
pylint==3.3.2 ; python_version >= "3.9" and python_version < "3.10"
pyopenssl==17.5.0 ; python_version >= "3.9" and python_version < "3.10"
pyotp==2.9.0 ; python_version >= "3.9" and python_version < "3.10"
pyparsing==2.2.1 ; python_version >= "3.9" and python_version < "3.10"
pyrfc3339==1.0 ; python_version >= "3.9" and python_version < "3.10"
pytest-cov==6.0.0 ; python_version >= "3.9" and python_version < "3.10"
pytest-xdist==3.6.1 ; python_version >= "3.9" and python_version < "3.10"
pytest==8.3.4 ; python_version >= "3.9" and python_version < "3.10"
python-augeas==0.5.0 ; python_version >= "3.9" and python_version < "3.10"
python-dateutil==2.9.0.post0 ; python_version >= "3.9" and python_version < "3.10"
python-digitalocean==1.11 ; python_version >= "3.9" and python_version < "3.10"
pytz==2019.3 ; python_version >= "3.9" and python_version < "3.10"
pywin32==308 ; python_version >= "3.9" and python_version < "3.10" and sys_platform == "win32"
pyyaml==6.0.2 ; python_version >= "3.9" and python_version < "3.10"
requests-file==2.1.0 ; python_version >= "3.9" and python_version < "3.10"
requests==2.20.0 ; python_version >= "3.9" and python_version < "3.10"
rsa==4.9 ; python_version >= "3.9" and python_version < "3.10"
s3transfer==0.3.7 ; python_version >= "3.9" and python_version < "3.10"
setuptools==75.6.0 ; python_version >= "3.9" and python_version < "3.10"
six==1.11.0 ; python_version >= "3.9" and python_version < "3.10"
soupsieve==2.6 ; python_version >= "3.9" and python_version < "3.10"
tldextract==5.1.3 ; python_version >= "3.9" and python_version < "3.10"
tomli==2.2.1 ; python_version >= "3.9" and python_version < "3.10"
tomlkit==0.13.2 ; python_version >= "3.9" and python_version < "3.10"
tox==1.9.2 ; python_version >= "3.9" and python_version < "3.10"
types-cryptography==3.3.23.2 ; python_version >= "3.9" and python_version < "3.10"
types-httplib2==0.22.0.20240310 ; python_version >= "3.9" and python_version < "3.10"
types-pyopenssl==23.0.0.0 ; python_version >= "3.9" and python_version < "3.10"
types-pyrfc3339==2.0.1.20241107 ; python_version >= "3.9" and python_version < "3.10"
types-python-dateutil==2.9.0.20241003 ; python_version >= "3.9" and python_version < "3.10"
types-pytz==2024.2.0.20241003 ; python_version >= "3.9" and python_version < "3.10"
types-pywin32==308.0.0.20241128 ; python_version >= "3.9" and python_version < "3.10"
types-requests==2.31.0.6 ; python_version >= "3.9" and python_version < "3.10"
types-setuptools==75.6.0.20241126 ; python_version >= "3.9" and python_version < "3.10"
types-urllib3==1.26.25.14 ; python_version >= "3.9" and python_version < "3.10"
typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "3.10"
uritemplate==3.0.1 ; python_version >= "3.9" and python_version < "3.10"
urllib3==1.24.2 ; python_version >= "3.9" and python_version < "3.10"
virtualenv==20.28.0 ; python_version >= "3.9" and python_version < "3.10"
wheel==0.45.1 ; python_version >= "3.9" and python_version < "3.10"
zipp==3.21.0 ; python_version >= "3.9" and python_version < "3.10"
+1 -1
View File
@@ -6,7 +6,7 @@ authors = ["Certbot Project"]
license = "Apache License 2.0"
[tool.poetry.dependencies]
python = "^3.8"
python = "^3.9"
# workaround for: https://github.com/python-poetry/poetry-plugin-export/issues/183
urllib3 = ">=1.25.4,<1.27"
+2 -2
View File
@@ -10,7 +10,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.9 >= 3.8"
python = "<3.10 >= 3.9"
# Local dependencies
# Any local packages that have dependencies on other local packages must be
@@ -55,7 +55,7 @@ configobj = "5.0.6"
cryptography = "3.2.1"
distro = "1.0.1"
dns-lexicon = "3.15.1"
dnspython = "1.15.0"
dnspython = "2.6.1"
funcsigs = "0.4"
google-api-python-client = "1.6.5"
google-auth = "2.16.0"
+178 -181
View File
@@ -5,184 +5,181 @@
# 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.13 ; python_version >= "3.8" and python_version < "4.0"
apacheconfig==0.3.2 ; python_version >= "3.8" and python_version < "4.0"
appnope==0.1.4 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "darwin"
astroid==3.0.3 ; python_version >= "3.8" and python_version < "4.0"
asttokens==2.4.1 ; python_version >= "3.8" and python_version < "4.0"
attrs==24.2.0 ; python_version >= "3.8" and python_version < "4.0"
azure-core==1.32.0 ; python_version >= "3.8" and python_version < "4.0"
azure-devops==7.1.0b4 ; python_version >= "3.8" and python_version < "4.0"
babel==2.16.0 ; python_version >= "3.8" and python_version < "4.0"
backcall==0.2.0 ; python_version >= "3.8" and python_version < "4.0"
bcrypt==4.2.0 ; python_version >= "3.8" and python_version < "4.0"
beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4.0"
boto3==1.35.53 ; python_version >= "3.8" and python_version < "4.0"
botocore==1.35.53 ; python_version >= "3.8" and python_version < "4.0"
build==1.2.2.post1 ; python_version >= "3.8" and python_version < "4.0"
cachecontrol==0.14.0 ; python_version >= "3.8" and python_version < "4.0"
cachetools==5.5.0 ; python_version >= "3.8" and python_version < "4.0"
certifi==2024.8.30 ; python_version >= "3.8" and python_version < "4.0"
cffi==1.17.1 ; python_version >= "3.8" and python_version < "4.0"
chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0"
charset-normalizer==3.4.0 ; python_version >= "3.8" and python_version < "4.0"
cleo==2.1.0 ; python_version >= "3.8" and python_version < "4.0"
cloudflare==2.19.4 ; python_version >= "3.8" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0"
configargparse==1.7 ; python_version >= "3.8" and python_version < "4.0"
configobj==5.0.9 ; python_version >= "3.8" and python_version < "4.0"
coverage==7.6.1 ; python_version >= "3.8" and python_version < "4.0"
crashtest==0.4.1 ; python_version >= "3.8" and python_version < "4.0"
cryptography==43.0.3 ; python_version >= "3.8" and python_version < "4.0"
cython==0.29.37 ; python_version >= "3.8" and python_version < "4.0"
decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0"
deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0"
dill==0.3.9 ; python_version >= "3.8" and python_version < "4.0"
distlib==0.3.9 ; python_version >= "3.8" and python_version < "4.0"
distro==1.9.0 ; python_version >= "3.8" and python_version < "4.0"
dns-lexicon==3.18.0 ; python_version >= "3.8" and python_version < "4.0"
dnspython==2.6.1 ; python_version >= "3.8" and python_version < "4.0"
docutils==0.20.1 ; python_version >= "3.8" and python_version < "4.0"
dulwich==0.21.7 ; python_version >= "3.8" and python_version < "4.0"
exceptiongroup==1.2.2 ; python_version >= "3.8" and python_version < "3.11"
execnet==2.1.1 ; python_version >= "3.8" and python_version < "4.0"
executing==2.1.0 ; python_version >= "3.8" and python_version < "4.0"
fabric==3.2.2 ; python_version >= "3.8" and python_version < "4.0"
fastjsonschema==2.20.0 ; python_version >= "3.8" and python_version < "4.0"
filelock==3.16.1 ; python_version >= "3.8" and python_version < "4.0"
google-api-core==2.22.0 ; python_version >= "3.8" and python_version < "4.0"
google-api-python-client==2.151.0 ; python_version >= "3.8" and python_version < "4.0"
google-auth-httplib2==0.2.0 ; python_version >= "3.8" and python_version < "4.0"
google-auth==2.35.0 ; python_version >= "3.8" and python_version < "4.0"
googleapis-common-protos==1.65.0 ; python_version >= "3.8" and python_version < "4.0"
httplib2==0.22.0 ; python_version >= "3.8" and python_version < "4.0"
idna==3.10 ; python_version >= "3.8" and python_version < "4.0"
imagesize==1.4.1 ; python_version >= "3.8" and python_version < "4.0"
importlib-metadata==8.5.0 ; python_version >= "3.8" and python_version < "4.0"
importlib-resources==6.4.5 ; python_version >= "3.8" and python_version < "4.0"
iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
installer==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
invoke==2.2.0 ; python_version >= "3.8" and python_version < "4.0"
ipdb==0.13.13 ; python_version >= "3.8" and python_version < "4.0"
ipython==8.12.3 ; python_version >= "3.8" and python_version < "4.0"
isodate==0.7.2 ; python_version >= "3.8" and python_version < "4.0"
isort==5.13.2 ; python_version >= "3.8" and python_version < "4.0"
jaraco-classes==3.4.0 ; python_version >= "3.8" and python_version < "4.0"
jedi==0.19.1 ; python_version >= "3.8" and python_version < "4.0"
jeepney==0.8.0 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "linux"
jinja2==3.1.4 ; python_version >= "3.8" and python_version < "4.0"
jmespath==1.0.1 ; python_version >= "3.8" and python_version < "4.0"
josepy==1.14.0 ; python_version >= "3.8" and python_version < "4.0"
jsonlines==4.0.0 ; python_version >= "3.8" and python_version < "4.0"
jsonpickle==3.3.0 ; python_version >= "3.8" and python_version < "4.0"
keyring==24.3.1 ; python_version >= "3.8" and python_version < "4.0"
markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0"
markupsafe==2.1.5 ; python_version >= "3.8" and python_version < "4.0"
matplotlib-inline==0.1.7 ; python_version >= "3.8" and python_version < "4.0"
mccabe==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0"
more-itertools==10.5.0 ; python_version >= "3.8" and python_version < "4.0"
msgpack==1.1.0 ; python_version >= "3.8" and python_version < "4.0"
msrest==0.7.1 ; python_version >= "3.8" and python_version < "4.0"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "4.0"
mypy==1.9.0 ; python_version >= "3.8" and python_version < "4.0"
nh3==0.2.18 ; python_version >= "3.8" and python_version < "4.0"
oauthlib==3.2.2 ; python_version >= "3.8" and python_version < "4.0"
packaging==24.1 ; python_version >= "3.8" and python_version < "4.0"
paramiko==3.5.0 ; python_version >= "3.8" and python_version < "4.0"
parsedatetime==2.6 ; python_version >= "3.8" and python_version < "4.0"
parso==0.8.4 ; python_version >= "3.8" and python_version < "4.0"
pexpect==4.9.0 ; python_version >= "3.8" and python_version < "4.0"
pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "4.0"
pip==24.3.1 ; python_version >= "3.8" and python_version < "4.0"
pkginfo==1.10.0 ; python_version >= "3.8" and python_version < "4.0"
platformdirs==4.3.6 ; python_version >= "3.8" and python_version < "4.0"
pluggy==1.5.0 ; python_version >= "3.8" and python_version < "4.0"
ply==3.11 ; python_version >= "3.8" and python_version < "4.0"
poetry-core==1.9.1 ; python_version >= "3.8" and python_version < "4.0"
poetry-plugin-export==1.8.0 ; python_version >= "3.8" and python_version < "4.0"
poetry==1.8.4 ; python_version >= "3.8" and python_version < "4.0"
prompt-toolkit==3.0.48 ; python_version >= "3.8" and python_version < "4.0"
proto-plus==1.25.0 ; python_version >= "3.8" and python_version < "4.0"
protobuf==5.28.3 ; python_version >= "3.8" and python_version < "4.0"
ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
pure-eval==0.2.3 ; python_version >= "3.8" and python_version < "4.0"
pyasn1-modules==0.4.1 ; python_version >= "3.8" and python_version < "4.0"
pyasn1==0.6.1 ; python_version >= "3.8" and python_version < "4.0"
pycparser==2.22 ; python_version >= "3.8" and python_version < "4.0"
pygments==2.18.0 ; python_version >= "3.8" and python_version < "4.0"
pylint==3.0.2 ; python_version >= "3.8" and python_version < "4.0"
pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0"
pynsist==2.7 ; python_version >= "3.8" and python_version < "4.0"
pyopenssl==24.2.1 ; python_version >= "3.8" and python_version < "4.0"
pyotp==2.9.0 ; python_version >= "3.8" and python_version < "4.0"
pyparsing==3.1.4 ; python_version >= "3.8" and python_version < "4.0"
pyproject-api==1.8.0 ; python_version >= "3.8" and python_version < "4.0"
pyproject-hooks==1.2.0 ; python_version >= "3.8" and python_version < "4.0"
pyrfc3339==1.1 ; python_version >= "3.8" and python_version < "4.0"
pytest-cov==5.0.0 ; python_version >= "3.8" and python_version < "4.0"
pytest-xdist==3.6.1 ; python_version >= "3.8" and python_version < "4.0"
pytest==8.3.3 ; python_version >= "3.8" and python_version < "4.0"
python-augeas==1.1.0 ; python_version >= "3.8" and python_version < "4.0"
python-dateutil==2.9.0.post0 ; python_version >= "3.8" and python_version < "4.0"
python-digitalocean==1.17.0 ; python_version >= "3.8" and python_version < "4.0"
pytz==2024.2 ; python_version >= "3.8" and python_version < "4.0"
pywin32-ctypes==0.2.3 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32"
pywin32==308 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32"
pyyaml==6.0.2 ; python_version >= "3.8" and python_version < "4.0"
rapidfuzz==3.9.7 ; python_version >= "3.8" and python_version < "4.0"
readme-renderer==43.0 ; python_version >= "3.8" and python_version < "4.0"
requests-download==0.1.2 ; python_version >= "3.8" and python_version < "4.0"
requests-file==2.1.0 ; python_version >= "3.8" and python_version < "4.0"
requests-oauthlib==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
requests-toolbelt==1.0.0 ; python_version >= "3.8" and python_version < "4.0"
requests==2.32.3 ; python_version >= "3.8" and python_version < "4.0"
rfc3986==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
rich==13.9.3 ; python_version >= "3.8" and python_version < "4.0"
rsa==4.9 ; python_version >= "3.8" and python_version < "4"
s3transfer==0.10.3 ; python_version >= "3.8" and python_version < "4.0"
secretstorage==3.3.3 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "linux"
semantic-version==2.10.0 ; python_version >= "3.8" and python_version < "4.0"
setuptools-rust==1.10.2 ; python_version >= "3.8" and python_version < "4.0"
setuptools==75.3.0 ; python_version >= "3.8" and python_version < "4.0"
shellingham==1.5.4 ; python_version >= "3.8" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
snowballstemmer==2.2.0 ; python_version >= "3.8" and python_version < "4.0"
soupsieve==2.6 ; python_version >= "3.8" and python_version < "4.0"
sphinx-rtd-theme==3.0.1 ; python_version >= "3.8" and python_version < "4.0"
sphinx==7.1.2 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-jquery==4.1 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_version < "4.0"
stack-data==0.6.3 ; python_version >= "3.8" and python_version < "4.0"
tldextract==5.1.2 ; python_version >= "3.8" and python_version < "4.0"
tomli==2.0.2 ; python_version >= "3.8" and python_full_version <= "3.11.0a6"
tomlkit==0.13.2 ; python_version >= "3.8" and python_version < "4.0"
tox==4.23.2 ; python_version >= "3.8" and python_version < "4.0"
traitlets==5.14.3 ; python_version >= "3.8" and python_version < "4.0"
trove-classifiers==2024.10.21.16 ; python_version >= "3.8" and python_version < "4.0"
twine==5.1.1 ; python_version >= "3.8" and python_version < "4.0"
types-cffi==1.16.0.20240331 ; python_version >= "3.8" and python_version < "4.0"
types-httplib2==0.22.0.20240310 ; python_version >= "3.8" and python_version < "4.0"
types-pyopenssl==24.1.0.20240722 ; python_version >= "3.8" and python_version < "4.0"
types-pyrfc3339==1.1.1.5 ; python_version >= "3.8" and python_version < "4.0"
types-python-dateutil==2.9.0.20241003 ; python_version >= "3.8" and python_version < "4.0"
types-pytz==2024.2.0.20241003 ; python_version >= "3.8" and python_version < "4.0"
types-pywin32==308.0.0.20241029 ; python_version >= "3.8" and python_version < "4.0"
types-requests==2.31.0.6 ; python_version >= "3.8" and python_version < "4.0"
types-setuptools==75.2.0.20241025 ; python_version >= "3.8" and python_version < "4.0"
types-urllib3==1.26.25.14 ; python_version >= "3.8" and python_version < "4.0"
typing-extensions==4.12.2 ; python_version >= "3.8" and python_version < "4.0"
uritemplate==4.1.1 ; python_version >= "3.8" and python_version < "4.0"
urllib3==1.26.20 ; python_version >= "3.8" and python_version < "4.0"
virtualenv==20.27.1 ; python_version >= "3.8" and python_version < "4.0"
wcwidth==0.2.13 ; python_version >= "3.8" and python_version < "4.0"
wheel==0.44.0 ; python_version >= "3.8" and python_version < "4.0"
wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
xattr==1.1.0 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "darwin"
yarg==0.1.10 ; python_version >= "3.8" and python_version < "4.0"
zipp==3.20.2 ; python_version >= "3.8" and python_version < "4.0"
alabaster==0.7.16 ; python_version >= "3.9" and python_version < "4.0"
apacheconfig==0.3.2 ; python_version >= "3.9" and python_version < "4.0"
astroid==3.0.3 ; python_version >= "3.9" and python_version < "4.0"
asttokens==2.4.1 ; python_version >= "3.9" and python_version < "4.0"
attrs==24.2.0 ; python_version >= "3.9" and python_version < "4.0"
azure-core==1.32.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.16.0 ; python_version >= "3.9" and python_version < "4.0"
bcrypt==4.2.1 ; python_version >= "3.9" and python_version < "4.0"
beautifulsoup4==4.12.3 ; python_version >= "3.9" and python_version < "4.0"
boto3==1.35.69 ; python_version >= "3.9" and python_version < "4.0"
botocore==1.35.69 ; 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.1 ; python_version >= "3.9" and python_version < "4.0"
cachetools==5.5.0 ; python_version >= "3.9" and python_version < "4.0"
certifi==2024.8.30 ; 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.0 ; 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.6.8 ; 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" and python_version < "4.0"
cython==0.29.37 ; python_version >= "3.9" and python_version < "4.0"
decorator==5.1.1 ; python_version >= "3.9" and python_version < "4.0"
deprecated==1.2.15 ; 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.18.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.21.7 ; 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.1.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.20.0 ; python_version >= "3.9" and python_version < "4.0"
filelock==3.16.1 ; python_version >= "3.9" and python_version < "4.0"
google-api-core==2.23.0 ; python_version >= "3.9" and python_version < "4.0"
google-api-python-client==2.154.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.36.0 ; python_version >= "3.9" and python_version < "4.0"
googleapis-common-protos==1.66.0 ; python_version >= "3.9" and python_version < "4.0"
httplib2==0.22.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.5.0 ; python_version >= "3.9" and python_version < "4.0"
importlib-resources==6.4.5 ; python_version >= "3.9" and python_version < "4.0"
iniconfig==2.0.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"
ipython==8.18.1 ; python_version >= "3.9" 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"
jedi==0.19.2 ; python_version >= "3.9" and python_version < "4.0"
jeepney==0.8.0 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "linux"
jinja2==3.1.4 ; python_version >= "3.9" and python_version < "4.0"
jmespath==1.0.1 ; python_version >= "3.9" and python_version < "4.0"
josepy==1.14.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.0 ; python_version >= "3.9" and python_version < "4.0"
keyring==24.3.1 ; 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.5.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.18 ; 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.0 ; 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"
pexpect==4.9.0 ; python_version >= "3.9" and python_version < "4.0"
pip==24.3.1 ; python_version >= "3.9" and python_version < "4.0"
pkginfo==1.10.0 ; python_version >= "3.9" and python_version < "4.0"
platformdirs==4.3.6 ; 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==1.9.1 ; python_version >= "3.9" and python_version < "4.0"
poetry-plugin-export==1.8.0 ; python_version >= "3.9" and python_version < "4.0"
poetry==1.8.4 ; python_version >= "3.9" and python_version < "4.0"
prompt-toolkit==3.0.48 ; python_version >= "3.9" and python_version < "4.0"
proto-plus==1.25.0 ; python_version >= "3.9" and python_version < "4.0"
protobuf==5.28.3 ; python_version >= "3.9" and python_version < "4.0"
ptyprocess==0.7.0 ; python_version >= "3.9" and python_version < "4.0"
pure-eval==0.2.3 ; python_version >= "3.9" and python_version < "4.0"
pyasn1-modules==0.4.1 ; 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.18.0 ; python_version >= "3.9" and python_version < "4.0"
pylint==3.0.2 ; python_version >= "3.9" and python_version < "4.0"
pynacl==1.5.0 ; python_version >= "3.9" and python_version < "4.0"
pynsist==2.7 ; python_version >= "3.9" and python_version < "4.0"
pyopenssl==24.2.1 ; 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.0 ; python_version >= "3.9" and python_version < "4.0"
pyproject-api==1.8.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.0.0 ; 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.3 ; 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==2024.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==308 ; 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.10.1 ; python_version >= "3.9" and python_version < "4.0"
readme-renderer==44.0 ; python_version >= "3.9" and python_version < "4.0"
requests-download==0.1.2 ; 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==13.9.4 ; python_version >= "3.9" and python_version < "4.0"
rsa==4.9 ; python_version >= "3.9" and python_version < "4"
s3transfer==0.10.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.10.2 ; python_version >= "3.9" and python_version < "4.0"
setuptools==75.6.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.16.0 ; 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" 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.1.3 ; python_version >= "3.9" and python_version < "4.0"
tomli==2.1.0 ; python_version >= "3.9" and python_full_version <= "3.11.0a6"
tomlkit==0.13.2 ; python_version >= "3.9" and python_version < "4.0"
tox==4.23.2 ; python_version >= "3.9" and python_version < "4.0"
traitlets==5.14.3 ; python_version >= "3.9" and python_version < "4.0"
trove-classifiers==2024.10.21.16 ; python_version >= "3.9" and python_version < "4.0"
twine==5.1.1 ; python_version >= "3.9" and python_version < "4.0"
types-cffi==1.16.0.20240331 ; python_version >= "3.9" and python_version < "4.0"
types-httplib2==0.22.0.20240310 ; python_version >= "3.9" and python_version < "4.0"
types-pyopenssl==24.1.0.20240722 ; 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.20241003 ; python_version >= "3.9" and python_version < "4.0"
types-pytz==2024.2.0.20241003 ; python_version >= "3.9" and python_version < "4.0"
types-pywin32==308.0.0.20241121 ; python_version >= "3.9" and python_version < "4.0"
types-requests==2.31.0.6 ; python_version >= "3.9" and python_version < "4.0"
types-setuptools==75.5.0.20241122 ; python_version >= "3.9" and python_version < "4.0"
types-urllib3==1.26.25.14 ; python_version >= "3.9" and python_version < "4.0"
typing-extensions==4.12.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" and python_version < "4.0"
virtualenv==20.27.1 ; 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.0 ; python_version >= "3.9" and python_version < "4.0"
xattr==1.1.0 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "darwin"
yarg==0.1.10 ; python_version >= "3.9" and python_version < "4.0"
zipp==3.21.0 ; python_version >= "3.9" and python_version < "4.0"
+1 -1
View File
@@ -117,7 +117,7 @@ def _check_version(version_str):
version = (int(search.group(1)), int(search.group(2)))
if version >= (3, 8):
if version >= (3, 9):
return True
print('Incompatible python version for Certbot found: {0}'.format(version_str))
+1 -1
View File
@@ -63,7 +63,7 @@ commands = {[testenv:py]commands}
#
# This version should be kept in sync with the one declared in
# tools/pinning/oldest/pyproject.toml.
basepython = python3.8
basepython = python3.9
setenv = CERTBOT_OLDEST=1
commands = {[testenv:py]commands}
+1 -2
View File
@@ -11,14 +11,13 @@ setup(
author="Certbot Project",
author_email='certbot-dev@eff.org',
license='Apache License 2.0',
python_requires='>=3.8',
python_requires='>=3.9',
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',