mirror of
https://github.com/certbot/certbot.git
synced 2026-01-26 07:41:33 +03:00
Drop Python 3.7 support (#9792)
* Drop Python 3.7 support * Fix lint and test * Check for venv generation * Update requirements * Update oldest constaints and compatibility tests runtime
This commit is contained in:
@@ -8,9 +8,6 @@ jobs:
|
|||||||
- group: certbot-common
|
- group: certbot-common
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
linux-py38:
|
|
||||||
PYTHON_VERSION: 3.8
|
|
||||||
TOXENV: py38
|
|
||||||
linux-py39:
|
linux-py39:
|
||||||
PYTHON_VERSION: 3.9
|
PYTHON_VERSION: 3.9
|
||||||
TOXENV: py39
|
TOXENV: py39
|
||||||
@@ -20,17 +17,13 @@ jobs:
|
|||||||
linux-isolated:
|
linux-isolated:
|
||||||
TOXENV: 'isolated-{acme,certbot,apache,cloudflare,digitalocean,dnsimple,dnsmadeeasy,gehirn,google,linode,luadns,nsone,ovh,rfc2136,route53,sakuracloud,nginx}'
|
TOXENV: 'isolated-{acme,certbot,apache,cloudflare,digitalocean,dnsimple,dnsmadeeasy,gehirn,google,linode,luadns,nsone,ovh,rfc2136,route53,sakuracloud,nginx}'
|
||||||
linux-boulder-v2-integration-certbot-oldest:
|
linux-boulder-v2-integration-certbot-oldest:
|
||||||
PYTHON_VERSION: 3.7
|
PYTHON_VERSION: 3.8
|
||||||
TOXENV: integration-certbot-oldest
|
TOXENV: integration-certbot-oldest
|
||||||
ACME_SERVER: boulder-v2
|
ACME_SERVER: boulder-v2
|
||||||
linux-boulder-v2-integration-nginx-oldest:
|
linux-boulder-v2-integration-nginx-oldest:
|
||||||
PYTHON_VERSION: 3.7
|
PYTHON_VERSION: 3.8
|
||||||
TOXENV: integration-nginx-oldest
|
TOXENV: integration-nginx-oldest
|
||||||
ACME_SERVER: boulder-v2
|
ACME_SERVER: boulder-v2
|
||||||
linux-boulder-v2-py37-integration:
|
|
||||||
PYTHON_VERSION: 3.7
|
|
||||||
TOXENV: integration
|
|
||||||
ACME_SERVER: boulder-v2
|
|
||||||
linux-boulder-v2-py38-integration:
|
linux-boulder-v2-py38-integration:
|
||||||
PYTHON_VERSION: 3.8
|
PYTHON_VERSION: 3.8
|
||||||
TOXENV: integration
|
TOXENV: integration
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ jobs:
|
|||||||
PYTHON_VERSION: 3.11
|
PYTHON_VERSION: 3.11
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
macos-py37-cover:
|
macos-py38-cover:
|
||||||
IMAGE_NAME: macOS-12
|
IMAGE_NAME: macOS-12
|
||||||
PYTHON_VERSION: 3.7
|
PYTHON_VERSION: 3.8
|
||||||
TOXENV: cover
|
TOXENV: cover
|
||||||
# As of pip 23.1.0, builds started failing on macOS unless this flag was set.
|
# As of pip 23.1.0, builds started failing on macOS unless this flag was set.
|
||||||
# See https://github.com/certbot/certbot/pull/9717#issuecomment-1610861794.
|
# See https://github.com/certbot/certbot/pull/9717#issuecomment-1610861794.
|
||||||
@@ -14,11 +14,11 @@ jobs:
|
|||||||
macos-cover:
|
macos-cover:
|
||||||
IMAGE_NAME: macOS-12
|
IMAGE_NAME: macOS-12
|
||||||
TOXENV: cover
|
TOXENV: cover
|
||||||
# See explanation under macos-py37-cover.
|
# See explanation under macos-py38-cover.
|
||||||
PIP_USE_PEP517: "true"
|
PIP_USE_PEP517: "true"
|
||||||
windows-py37:
|
windows-py38:
|
||||||
IMAGE_NAME: windows-2019
|
IMAGE_NAME: windows-2019
|
||||||
PYTHON_VERSION: 3.7
|
PYTHON_VERSION: 3.8
|
||||||
TOXENV: py-win
|
TOXENV: py-win
|
||||||
windows-py39-cover:
|
windows-py39-cover:
|
||||||
IMAGE_NAME: windows-2019
|
IMAGE_NAME: windows-2019
|
||||||
@@ -30,12 +30,12 @@ jobs:
|
|||||||
TOXENV: integration-certbot
|
TOXENV: integration-certbot
|
||||||
linux-oldest:
|
linux-oldest:
|
||||||
IMAGE_NAME: ubuntu-22.04
|
IMAGE_NAME: ubuntu-22.04
|
||||||
PYTHON_VERSION: 3.7
|
PYTHON_VERSION: 3.8
|
||||||
TOXENV: oldest
|
TOXENV: oldest
|
||||||
linux-py37:
|
linux-py38:
|
||||||
IMAGE_NAME: ubuntu-22.04
|
IMAGE_NAME: ubuntu-22.04
|
||||||
PYTHON_VERSION: 3.7
|
PYTHON_VERSION: 3.8
|
||||||
TOXENV: py37
|
TOXENV: py38
|
||||||
linux-cover:
|
linux-cover:
|
||||||
IMAGE_NAME: ubuntu-22.04
|
IMAGE_NAME: ubuntu-22.04
|
||||||
TOXENV: cover
|
TOXENV: cover
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ This module is an implementation of the `ACME protocol`_.
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
import warnings
|
|
||||||
|
|
||||||
# This code exists to keep backwards compatibility with people using acme.jose
|
# This code exists to keep backwards compatibility with people using acme.jose
|
||||||
# before it became the standalone josepy package.
|
# before it became the standalone josepy package.
|
||||||
@@ -20,10 +19,3 @@ for mod in list(sys.modules):
|
|||||||
# preserved (acme.jose.* is josepy.*)
|
# preserved (acme.jose.* is josepy.*)
|
||||||
if mod == 'josepy' or mod.startswith('josepy.'):
|
if mod == 'josepy' or mod.startswith('josepy.'):
|
||||||
sys.modules['acme.' + mod.replace('josepy', 'jose', 1)] = sys.modules[mod]
|
sys.modules['acme.' + mod.replace('josepy', 'jose', 1)] = sys.modules[mod]
|
||||||
|
|
||||||
if sys.version_info[:2] == (3, 7):
|
|
||||||
warnings.warn(
|
|
||||||
"Python 3.7 support will be dropped in the next planned release of "
|
|
||||||
"acme. Please upgrade your Python version.",
|
|
||||||
PendingDeprecationWarning,
|
|
||||||
) # pragma: no cover
|
|
||||||
|
|||||||
@@ -44,14 +44,13 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Intended Audience :: Developers',
|
'Intended Audience :: Developers',
|
||||||
'License :: OSI Approved :: Apache Software License',
|
'License :: OSI Approved :: Apache Software License',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -39,7 +39,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -32,14 +32,13 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 3 - Alpha',
|
'Development Status :: 3 - Alpha',
|
||||||
'Intended Audience :: Developers',
|
'Intended Audience :: Developers',
|
||||||
'License :: OSI Approved :: Apache Software License',
|
'License :: OSI Approved :: Apache Software License',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
FROM debian:buster
|
FROM docker.io/python:3.8-buster
|
||||||
MAINTAINER Brad Warren <bmw@eff.org>
|
LABEL maintainer="Brad Warren <bmw@eff.org>"
|
||||||
|
|
||||||
# This does not include the dependencies needed to build cryptography. See
|
# This does not include the dependencies needed to build cryptography. See
|
||||||
# https://cryptography.io/en/latest/installation/#building-cryptography-on-linux
|
# https://cryptography.io/en/latest/installation/#building-cryptography-on-linux
|
||||||
|
|||||||
@@ -18,14 +18,13 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 3 - Alpha',
|
'Development Status :: 3 - Alpha',
|
||||||
'Intended Audience :: Developers',
|
'Intended Audience :: Developers',
|
||||||
'License :: OSI Approved :: Apache Software License',
|
'License :: OSI Approved :: Apache Software License',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from unittest import mock
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
from certbot.compat import os
|
from certbot.compat import os
|
||||||
@@ -16,7 +17,7 @@ TOKEN = 'foo'
|
|||||||
class AuthenticatorTest(test_util.TempDirTestCase,
|
class AuthenticatorTest(test_util.TempDirTestCase,
|
||||||
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
||||||
|
|
||||||
LOGIN_ERROR = HTTPError('401 Client Error: Unauthorized for url: ...')
|
LOGIN_ERROR = HTTPError('401 Client Error: Unauthorized for url: ...', response=Response())
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -50,7 +50,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import sys
|
|||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
from certbot.compat import os
|
from certbot.compat import os
|
||||||
@@ -19,8 +20,8 @@ SECRET_KEY = 'bar'
|
|||||||
class AuthenticatorTest(test_util.TempDirTestCase,
|
class AuthenticatorTest(test_util.TempDirTestCase,
|
||||||
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
||||||
|
|
||||||
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.')
|
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.', response=Response())
|
||||||
LOGIN_ERROR = HTTPError(f'403 Client Error: Forbidden for url: {DOMAIN}.')
|
LOGIN_ERROR = HTTPError(f'403 Client Error: Forbidden for url: {DOMAIN}.', response=Response())
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import unittest
|
|||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
from certbot.compat import os
|
from certbot.compat import os
|
||||||
@@ -20,8 +21,8 @@ API_SECRET = 'MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw'
|
|||||||
class AuthenticatorTest(test_util.TempDirTestCase,
|
class AuthenticatorTest(test_util.TempDirTestCase,
|
||||||
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
||||||
|
|
||||||
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.')
|
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.', response=Response())
|
||||||
LOGIN_ERROR = HTTPError(f'401 Client Error: Unauthorized for url: {DOMAIN}.')
|
LOGIN_ERROR = HTTPError(f'401 Client Error: Unauthorized for url: {DOMAIN}.', response=Response())
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -49,7 +49,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import sys
|
|||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
from certbot.compat import os
|
from certbot.compat import os
|
||||||
@@ -17,7 +18,7 @@ TOKEN = 'foo'
|
|||||||
class AuthenticatorTest(test_util.TempDirTestCase,
|
class AuthenticatorTest(test_util.TempDirTestCase,
|
||||||
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
||||||
|
|
||||||
LOGIN_ERROR = HTTPError("401 Client Error: Unauthorized for url: ...")
|
LOGIN_ERROR = HTTPError("401 Client Error: Unauthorized for url: ...", response=Response())
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import sys
|
|||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
from certbot.compat import os
|
from certbot.compat import os
|
||||||
@@ -17,8 +18,8 @@ API_KEY = 'foo'
|
|||||||
class AuthenticatorTest(test_util.TempDirTestCase,
|
class AuthenticatorTest(test_util.TempDirTestCase,
|
||||||
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
||||||
|
|
||||||
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.')
|
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.', response=Response())
|
||||||
LOGIN_ERROR = HTTPError(f'401 Client Error: Unauthorized for url: {DOMAIN}.')
|
LOGIN_ERROR = HTTPError(f'401 Client Error: Unauthorized for url: {DOMAIN}.', response=Response())
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from unittest import mock
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
from certbot.compat import os
|
from certbot.compat import os
|
||||||
@@ -20,8 +21,7 @@ class AuthenticatorTest(test_util.TempDirTestCase,
|
|||||||
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
||||||
|
|
||||||
DOMAIN_NOT_FOUND = Exception('Domain example.com not found')
|
DOMAIN_NOT_FOUND = Exception('Domain example.com not found')
|
||||||
LOGIN_ERROR = HTTPError('403 Client Error: Forbidden for url: https://eu.api.ovh.com/1.0/...')
|
LOGIN_ERROR = HTTPError('403 Client Error: Forbidden for url: https://eu.api.ovh.com/1.0/...', response=Response())
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import sys
|
|||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
from certbot.compat import os
|
from certbot.compat import os
|
||||||
@@ -18,8 +19,8 @@ API_SECRET = 'MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw'
|
|||||||
class AuthenticatorTest(test_util.TempDirTestCase,
|
class AuthenticatorTest(test_util.TempDirTestCase,
|
||||||
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest):
|
||||||
|
|
||||||
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.')
|
DOMAIN_NOT_FOUND = HTTPError(f'404 Client Error: Not Found for url: {DOMAIN}.', response=Response())
|
||||||
LOGIN_ERROR = HTTPError(f'401 Client Error: Unauthorized for url: {DOMAIN}.')
|
LOGIN_ERROR = HTTPError(f'401 Client Error: Unauthorized for url: {DOMAIN}.', response=Response())
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -48,7 +48,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ from typing import Iterable
|
|||||||
from typing import Iterator
|
from typing import Iterator
|
||||||
from typing import List
|
from typing import List
|
||||||
from typing import overload
|
from typing import overload
|
||||||
|
from typing import SupportsIndex
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
from pyparsing import Combine
|
from pyparsing import Combine
|
||||||
@@ -27,9 +27,6 @@ from pyparsing import stringEnd
|
|||||||
from pyparsing import White
|
from pyparsing import White
|
||||||
from pyparsing import ZeroOrMore
|
from pyparsing import ZeroOrMore
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from typing_extensions import SupportsIndex # typing.SupportsIndex not supported on Python 3.7
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Plugins',
|
'Environment :: Plugins',
|
||||||
@@ -37,7 +37,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Certbot adheres to [Semantic Versioning](https://semver.org/).
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
*
|
* Support for Python 3.7 was removed.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,4 @@
|
|||||||
"""Certbot client."""
|
"""Certbot client."""
|
||||||
import sys
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
# version number like 1.2.3a0, must have at least 2 parts, like 1.2
|
# version number like 1.2.3a0, must have at least 2 parts, like 1.2
|
||||||
__version__ = '2.8.0.dev0'
|
__version__ = '2.8.0.dev0'
|
||||||
|
|
||||||
if sys.version_info[:2] == (3, 7):
|
|
||||||
warnings.warn(
|
|
||||||
"Python 3.7 support will be dropped in the next planned release of "
|
|
||||||
"certbot. Please upgrade your Python version.",
|
|
||||||
PendingDeprecationWarning,
|
|
||||||
) # pragma: no cover
|
|
||||||
|
|||||||
@@ -3,12 +3,9 @@ import glob
|
|||||||
from types import TracebackType
|
from types import TracebackType
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
from typing import Iterator
|
from typing import Iterator
|
||||||
|
from typing import Literal
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from typing import Type
|
from typing import Type
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
# readline module is not available on all systems
|
# readline module is not available on all systems
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -1863,10 +1863,6 @@ def main(cli_args: Optional[List[str]] = None) -> Optional[Union[str, int]]:
|
|||||||
if config.func != plugins_cmd: # pylint: disable=comparison-with-callable
|
if config.func != plugins_cmd: # pylint: disable=comparison-with-callable
|
||||||
raise
|
raise
|
||||||
|
|
||||||
if sys.version_info[:2] == (3, 7):
|
|
||||||
logger.warning("Python 3.7 support will be dropped in the next planned release "
|
|
||||||
"of Certbot - please upgrade your Python version.")
|
|
||||||
|
|
||||||
with make_displayer(config) as displayer:
|
with make_displayer(config) as displayer:
|
||||||
display_obj.set_display(displayer)
|
display_obj.set_display(displayer)
|
||||||
|
|
||||||
|
|||||||
@@ -182,9 +182,9 @@ class PluginsRegistry(Mapping):
|
|||||||
plugin_paths = plugin_paths_string.split(':') if plugin_paths_string else []
|
plugin_paths = plugin_paths_string.split(':') if plugin_paths_string else []
|
||||||
# XXX should ensure this only happens once
|
# XXX should ensure this only happens once
|
||||||
sys.path.extend(plugin_paths)
|
sys.path.extend(plugin_paths)
|
||||||
entry_points = list(importlib_metadata.entry_points(
|
entry_points = list(importlib_metadata.entry_points( # pylint: disable=unexpected-keyword-arg
|
||||||
group=constants.SETUPTOOLS_PLUGINS_ENTRY_POINT))
|
group=constants.SETUPTOOLS_PLUGINS_ENTRY_POINT))
|
||||||
old_entry_points = list(importlib_metadata.entry_points(
|
old_entry_points = list(importlib_metadata.entry_points( # pylint: disable=unexpected-keyword-arg
|
||||||
group=constants.OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT))
|
group=constants.OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT))
|
||||||
for entry_point in entry_points + old_entry_points:
|
for entry_point in entry_points + old_entry_points:
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ try:
|
|||||||
from lexicon.config import ConfigResolver
|
from lexicon.config import ConfigResolver
|
||||||
from lexicon.interfaces import Provider
|
from lexicon.interfaces import Provider
|
||||||
except ImportError: # pragma: no cover
|
except ImportError: # pragma: no cover
|
||||||
Client = None
|
Client = None # type: ignore
|
||||||
ConfigResolver = None
|
ConfigResolver = None # type: ignore
|
||||||
Provider = None
|
Provider = None # type: ignore
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -148,19 +148,18 @@ def build_lexicon_config(lexicon_provider_name: str,
|
|||||||
.. deprecated:: 2.7.0
|
.. deprecated:: 2.7.0
|
||||||
Please use certbot.plugins.dns_common_lexicon.LexiconDNSAuthenticator instead.
|
Please use certbot.plugins.dns_common_lexicon.LexiconDNSAuthenticator instead.
|
||||||
"""
|
"""
|
||||||
config: Union[ConfigResolver, Dict[str, Any]] = {'provider_name': lexicon_provider_name}
|
config_dict: Dict[str, Any] = {'provider_name': lexicon_provider_name}
|
||||||
config.update(lexicon_options)
|
config_dict.update(lexicon_options)
|
||||||
if not ConfigResolver:
|
if ConfigResolver is None:
|
||||||
# Lexicon 2.x
|
# Lexicon 2.x
|
||||||
config.update(provider_options)
|
config_dict.update(provider_options)
|
||||||
|
return config_dict
|
||||||
else:
|
else:
|
||||||
# Lexicon 3.x
|
# Lexicon 3.x
|
||||||
provider_config: Dict[str, Any] = {}
|
provider_config: Dict[str, Any] = {}
|
||||||
provider_config.update(provider_options)
|
provider_config.update(provider_options)
|
||||||
config[lexicon_provider_name] = provider_config
|
config_dict[lexicon_provider_name] = provider_config
|
||||||
config = ConfigResolver().with_dict(config).with_env()
|
return ConfigResolver().with_dict(config_dict).with_env()
|
||||||
|
|
||||||
return config
|
|
||||||
|
|
||||||
|
|
||||||
class LexiconDNSAuthenticator(dns_common.DNSAuthenticator):
|
class LexiconDNSAuthenticator(dns_common.DNSAuthenticator):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"""Base test class for DNS authenticators."""
|
"""Base test class for DNS authenticators."""
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from typing import Mapping
|
from typing import Mapping
|
||||||
from typing import TYPE_CHECKING
|
from typing import Protocol
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
import configobj
|
import configobj
|
||||||
@@ -14,12 +14,6 @@ from certbot.plugins.dns_common import DNSAuthenticator
|
|||||||
from certbot.tests import acme_util
|
from certbot.tests import acme_util
|
||||||
from certbot.tests import util as test_util
|
from certbot.tests import util as test_util
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from typing_extensions import Protocol
|
|
||||||
else:
|
|
||||||
Protocol = object
|
|
||||||
|
|
||||||
|
|
||||||
DOMAIN = 'example.com'
|
DOMAIN = 'example.com'
|
||||||
KEY = jose.JWKRSA.load(test_util.load_vector("rsa512_key.pem"))
|
KEY = jose.JWKRSA.load(test_util.load_vector("rsa512_key.pem"))
|
||||||
|
|
||||||
|
|||||||
@@ -6,13 +6,14 @@ from typing import Any
|
|||||||
from typing import cast
|
from typing import cast
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import List
|
from typing import List
|
||||||
|
from typing import Protocol
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
import josepy as jose
|
import josepy as jose
|
||||||
|
from requests import Response
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
from requests.exceptions import RequestException
|
from requests.exceptions import RequestException
|
||||||
|
|
||||||
@@ -27,18 +28,13 @@ with warnings.catch_warnings():
|
|||||||
from certbot.plugins.dns_test_common import _AuthenticatorCallableTestCase
|
from certbot.plugins.dns_test_common import _AuthenticatorCallableTestCase
|
||||||
from certbot.tests import util as test_util
|
from certbot.tests import util as test_util
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
|
||||||
from typing_extensions import Protocol
|
|
||||||
else:
|
|
||||||
Protocol = object
|
|
||||||
|
|
||||||
DOMAIN = 'example.com'
|
DOMAIN = 'example.com'
|
||||||
KEY = jose.JWKRSA.load(test_util.load_vector("rsa512_key.pem"))
|
KEY = jose.JWKRSA.load(test_util.load_vector("rsa512_key.pem"))
|
||||||
|
|
||||||
DOMAIN_NOT_FOUND = Exception('No domain found')
|
DOMAIN_NOT_FOUND = Exception('No domain found')
|
||||||
GENERIC_ERROR = RequestException
|
GENERIC_ERROR = RequestException
|
||||||
LOGIN_ERROR = HTTPError('400 Client Error: ...')
|
LOGIN_ERROR = HTTPError('400 Client Error: ...', response=Response())
|
||||||
UNKNOWN_LOGIN_ERROR = HTTPError('500 Surprise! Error: ...')
|
UNKNOWN_LOGIN_ERROR = HTTPError('500 Surprise! Error: ...', response=Response())
|
||||||
|
|
||||||
|
|
||||||
class _AuthenticatorCallableLexiconTestCase(_AuthenticatorCallableTestCase, Protocol):
|
class _AuthenticatorCallableLexiconTestCase(_AuthenticatorCallableTestCase, Protocol):
|
||||||
|
|||||||
@@ -70,8 +70,7 @@ test_extras = [
|
|||||||
'coverage',
|
'coverage',
|
||||||
'mypy',
|
'mypy',
|
||||||
'pip',
|
'pip',
|
||||||
# Our pinned version of pylint requires Python >= 3.7.2.
|
'pylint',
|
||||||
'pylint ; python_full_version >= "3.7.2"',
|
|
||||||
'pytest',
|
'pytest',
|
||||||
'pytest-cov',
|
'pytest-cov',
|
||||||
'pytest-xdist',
|
'pytest-xdist',
|
||||||
@@ -85,9 +84,6 @@ test_extras = [
|
|||||||
'types-requests',
|
'types-requests',
|
||||||
'types-setuptools',
|
'types-setuptools',
|
||||||
'types-six',
|
'types-six',
|
||||||
# typing-extensions is required to import typing.Protocol and make the mypy checks
|
|
||||||
# pass (along with pylint about non-existent objects) on Python 3.7
|
|
||||||
'typing-extensions',
|
|
||||||
'wheel',
|
'wheel',
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -103,7 +99,7 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Console',
|
'Environment :: Console',
|
||||||
@@ -113,7 +109,6 @@ setup(
|
|||||||
'Operating System :: POSIX :: Linux',
|
'Operating System :: POSIX :: Linux',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -9,14 +9,13 @@ setup(
|
|||||||
author='Certbot Project',
|
author='Certbot Project',
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Intended Audience :: Developers',
|
'Intended Audience :: Developers',
|
||||||
'License :: OSI Approved :: Apache Software License',
|
'License :: OSI Approved :: Apache Software License',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
@@ -27,12 +27,9 @@
|
|||||||
# is the latest version of that library. See
|
# is the latest version of that library. See
|
||||||
# https://github.com/sphinx-doc/sphinxcontrib-devhelp/blob/1.0.2/setup.py#L69.
|
# https://github.com/sphinx-doc/sphinxcontrib-devhelp/blob/1.0.2/setup.py#L69.
|
||||||
# 6) Ignore DeprecationWarning from using pkg_resources API
|
# 6) Ignore DeprecationWarning from using pkg_resources API
|
||||||
# 7) Ignore our own PendingDeprecationWarning about Python 3.7 soon to be dropped.
|
# 7) Ignore DeprecationWarning for datetime.utcfromtimestamp() triggered
|
||||||
# 8) Ignore DeprecationWarning for datetime.utcfromtimestamp() triggered
|
|
||||||
# when importing the pytz.tzinfo module
|
# when importing the pytz.tzinfo module
|
||||||
# https://github.com/stub42/pytz/issues/105
|
# https://github.com/stub42/pytz/issues/105
|
||||||
# 9) Boto3 is dropping support for Python 3.7 by end of 2023. Let's ignore the associated
|
|
||||||
# deprecation warning since we will also drop Python 3.7 soon.
|
|
||||||
filterwarnings =
|
filterwarnings =
|
||||||
error
|
error
|
||||||
ignore:decodestring\(\) is a deprecated alias:DeprecationWarning:dns
|
ignore:decodestring\(\) is a deprecated alias:DeprecationWarning:dns
|
||||||
@@ -41,6 +38,4 @@ filterwarnings =
|
|||||||
ignore:update_symlinks is deprecated:PendingDeprecationWarning
|
ignore:update_symlinks is deprecated:PendingDeprecationWarning
|
||||||
ignore:.*declare_namespace\(':DeprecationWarning
|
ignore:.*declare_namespace\(':DeprecationWarning
|
||||||
ignore:pkg_resources is deprecated as an API:DeprecationWarning
|
ignore:pkg_resources is deprecated as an API:DeprecationWarning
|
||||||
ignore:Python 3.7 support will be dropped:PendingDeprecationWarning
|
|
||||||
ignore:.*datetime.utcfromtimestamp\(\) is deprecated:DeprecationWarning:pytz.tzinfo
|
ignore:.*datetime.utcfromtimestamp\(\) is deprecated:DeprecationWarning:pytz.tzinfo
|
||||||
ignore:Boto3 will no longer support Python 3.7
|
|
||||||
|
|||||||
@@ -1,102 +1,98 @@
|
|||||||
# This file was generated by tools/pinning/oldest/repin.sh and can be updated using
|
# This file was generated by tools/pinning/oldest/repin.sh and can be updated using
|
||||||
# that script.
|
# that script.
|
||||||
apacheconfig==0.3.2 ; python_version >= "3.7" and python_version < "3.8"
|
apacheconfig==0.3.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
appdirs==1.4.4 ; python_version >= "3.7" and python_version < "3.8"
|
asn1crypto==0.24.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
asn1crypto==0.24.0 ; python_version >= "3.7" and python_version < "3.8"
|
astroid==3.0.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
astroid==2.15.6 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
beautifulsoup4==4.12.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
beautifulsoup4==4.12.2 ; python_version >= "3.7" and python_version < "3.8"
|
boto3==1.15.15 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
boto3==1.15.15 ; python_version >= "3.7" and python_version < "3.8"
|
botocore==1.18.15 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
botocore==1.18.15 ; python_version >= "3.7" and python_version < "3.8"
|
cachetools==5.3.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
cachetools==5.3.1 ; python_version >= "3.7" and python_version < "3.8"
|
certifi==2023.7.22 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
certifi==2023.7.22 ; python_version >= "3.7" and python_version < "3.8"
|
cffi==1.12.3 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
cffi==1.11.5 ; python_version >= "3.7" and python_version < "3.8"
|
chardet==3.0.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
chardet==3.0.4 ; python_version >= "3.7" and python_version < "3.8"
|
cloudflare==1.5.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
cloudflare==1.5.1 ; python_version >= "3.7" and python_version < "3.8"
|
colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.9" and sys_platform == "win32"
|
||||||
colorama==0.4.6 ; python_version < "3.8" and sys_platform == "win32" and python_version >= "3.7"
|
configargparse==1.5.3 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
configargparse==1.5.3 ; python_version >= "3.7" and python_version < "3.8"
|
configobj==5.0.6 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
configobj==5.0.6 ; python_version >= "3.7" and python_version < "3.8"
|
coverage==7.3.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
coverage==7.2.7 ; python_version >= "3.7" and python_version < "3.8"
|
cryptography==3.2.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
cryptography==3.2.1 ; python_version >= "3.7" and python_version < "3.8"
|
cython==0.29.36 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
cython==0.29.36 ; python_version >= "3.7" and python_version < "3.8"
|
dill==0.3.7 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
dill==0.3.7 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
distlib==0.3.7 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
distlib==0.3.7 ; python_version >= "3.7" and python_version < "3.8"
|
distro==1.0.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
distro==1.0.1 ; python_version >= "3.7" and python_version < "3.8"
|
dns-lexicon==3.14.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
dns-lexicon==3.14.1 ; python_version >= "3.7" and python_version < "3.8"
|
dnspython==1.15.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
dnspython==1.15.0 ; python_version >= "3.7" and python_version < "3.8"
|
exceptiongroup==1.1.3 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
exceptiongroup==1.1.3 ; python_version >= "3.7" and python_version < "3.8"
|
execnet==2.0.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
execnet==2.0.2 ; python_version >= "3.7" and python_version < "3.8"
|
filelock==3.12.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
filelock==3.12.2 ; python_version >= "3.7" and python_version < "3.8"
|
funcsigs==0.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
funcsigs==0.4 ; python_version >= "3.7" and python_version < "3.8"
|
future==0.18.3 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
future==0.18.3 ; python_version >= "3.7" and python_version < "3.8"
|
google-api-python-client==1.6.5 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
google-api-python-client==1.6.5 ; python_version >= "3.7" and python_version < "3.8"
|
google-auth==2.16.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
google-auth==2.16.0 ; python_version >= "3.7" and python_version < "3.8"
|
httplib2==0.9.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
httplib2==0.9.2 ; python_version >= "3.7" and python_version < "3.8"
|
idna==2.6 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
idna==2.6 ; python_version >= "3.7" and python_version < "3.8"
|
importlib-metadata==4.6.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
importlib-metadata==4.6.4 ; python_version >= "3.7" and python_version < "3.8"
|
importlib-resources==6.1.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
importlib-resources==5.12.0 ; python_version >= "3.7" and python_version < "3.8"
|
iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
iniconfig==2.0.0 ; python_version >= "3.7" and python_version < "3.8"
|
ipaddress==1.0.16 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
ipaddress==1.0.16 ; python_version >= "3.7" and python_version < "3.8"
|
isort==5.12.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
isort==5.11.5 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
jmespath==0.10.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
jmespath==0.10.0 ; python_version >= "3.7" and python_version < "3.8"
|
josepy==1.13.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
josepy==1.13.0 ; python_version >= "3.7" and python_version < "3.8"
|
logger==1.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
lazy-object-proxy==1.9.0 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
mccabe==0.7.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
logger==1.4 ; python_version >= "3.7" and python_version < "3.8"
|
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
mccabe==0.7.0 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
mypy==1.5.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
mypy-extensions==1.0.0 ; python_version >= "3.7" and python_version < "3.8"
|
ndg-httpsclient==0.3.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
mypy==1.4.1 ; python_version >= "3.7" and python_version < "3.8"
|
oauth2client==4.1.3 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
ndg-httpsclient==0.3.2 ; python_version >= "3.7" and python_version < "3.8"
|
packaging==23.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
oauth2client==4.1.3 ; python_version >= "3.7" and python_version < "3.8"
|
parsedatetime==2.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
packaging==23.1 ; python_version >= "3.7" and python_version < "3.8"
|
pbr==1.8.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
parsedatetime==2.4 ; python_version >= "3.7" and python_version < "3.8"
|
pip==23.2.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pbr==1.8.0 ; python_version >= "3.7" and python_version < "3.8"
|
platformdirs==3.11.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pip==23.2.1 ; python_version >= "3.7" and python_version < "3.8"
|
pluggy==1.3.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
platformdirs==3.10.0 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
ply==3.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pluggy==1.2.0 ; python_version >= "3.7" and python_version < "3.8"
|
py==1.11.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
ply==3.4 ; python_version >= "3.7" and python_version < "3.8"
|
pyasn1-modules==0.3.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
py==1.11.0 ; python_version >= "3.7" and python_version < "3.8"
|
pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pyasn1-modules==0.3.0 ; python_version >= "3.7" and python_version < "3.8"
|
pycparser==2.14 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pyasn1==0.4.8 ; python_version >= "3.7" and python_version < "3.8"
|
pylint==3.0.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pycparser==2.14 ; python_version >= "3.7" and python_version < "3.8"
|
pyopenssl==17.5.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pylint==2.17.5 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
pyparsing==2.2.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pyopenssl==17.5.0 ; python_version >= "3.7" and python_version < "3.8"
|
pyrfc3339==1.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pyparsing==2.2.1 ; python_version >= "3.7" and python_version < "3.8"
|
pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pyrfc3339==1.0 ; python_version >= "3.7" and python_version < "3.8"
|
pytest-xdist==3.3.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pytest-cov==4.1.0 ; python_version >= "3.7" and python_version < "3.8"
|
pytest==7.4.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pytest-xdist==3.3.1 ; python_version >= "3.7" and python_version < "3.8"
|
python-augeas==0.5.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pytest==7.4.2 ; python_version >= "3.7" and python_version < "3.8"
|
python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
python-augeas==0.5.0 ; python_version >= "3.7" and python_version < "3.8"
|
python-digitalocean==1.11 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
python-dateutil==2.8.2 ; python_version >= "3.7" and python_version < "3.8"
|
pytz==2019.3 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
python-digitalocean==1.11 ; python_version >= "3.7" and python_version < "3.8"
|
pywin32==306 ; python_version >= "3.8" and python_version < "3.9" and sys_platform == "win32"
|
||||||
pytz==2019.3 ; python_version >= "3.7" and python_version < "3.8"
|
pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pywin32==306 ; python_version >= "3.7" and python_version < "3.8" and sys_platform == "win32"
|
requests-file==1.5.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
pyyaml==6.0.1 ; python_version >= "3.7" and python_version < "3.8"
|
requests==2.20.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
requests-file==1.5.1 ; python_version >= "3.7" and python_version < "3.8"
|
rsa==4.9 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
requests==2.20.0 ; python_version >= "3.7" and python_version < "3.8"
|
s3transfer==0.3.7 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
rsa==4.9 ; python_version >= "3.7" and python_version < "3.8"
|
setuptools==41.6.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
s3transfer==0.3.7 ; python_version >= "3.7" and python_version < "3.8"
|
six==1.11.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
setuptools==41.6.0 ; python_version >= "3.7" and python_version < "3.8"
|
soupsieve==2.5 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
six==1.11.0 ; python_version >= "3.7" and python_version < "3.8"
|
tldextract==3.6.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
soupsieve==2.4.1 ; python_version >= "3.7" and python_version < "3.8"
|
tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
tldextract==3.5.0 ; python_version >= "3.7" and python_version < "3.8"
|
tomlkit==0.12.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
tomli==2.0.1 ; python_version < "3.8" and python_version >= "3.7"
|
tox==1.9.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
tomlkit==0.12.1 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
types-cryptography==3.3.23.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
tox==1.9.2 ; python_version >= "3.7" and python_version < "3.8"
|
types-httplib2==0.22.0.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
typed-ast==1.5.5 ; python_version < "3.8" and python_version >= "3.7"
|
types-pyopenssl==23.0.0.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-cryptography==3.3.23.2 ; python_version >= "3.7" and python_version < "3.8"
|
types-pyrfc3339==1.1.1.5 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-httplib2==0.22.0.2 ; python_version >= "3.7" and python_version < "3.8"
|
types-python-dateutil==2.8.19.14 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-pyopenssl==23.0.0.0 ; python_version >= "3.7" and python_version < "3.8"
|
types-pytz==2023.3.1.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-pyrfc3339==1.1.1.5 ; python_version >= "3.7" and python_version < "3.8"
|
types-pywin32==306.0.0.4 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-python-dateutil==2.8.19.14 ; python_version >= "3.7" and python_version < "3.8"
|
types-requests==2.31.0.6 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-pytz==2023.3.0.1 ; python_version >= "3.7" and python_version < "3.8"
|
types-setuptools==68.2.0.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-pywin32==306.0.0.4 ; python_version >= "3.7" and python_version < "3.8"
|
types-six==1.16.21.9 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-requests==2.31.0.2 ; python_version >= "3.7" and python_version < "3.8"
|
types-urllib3==1.26.25.14 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-setuptools==68.2.0.0 ; python_version >= "3.7" and python_version < "3.8"
|
typing-extensions==4.8.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-six==1.16.21.9 ; python_version >= "3.7" and python_version < "3.8"
|
uritemplate==3.0.1 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
types-urllib3==1.26.25.14 ; python_version >= "3.7" and python_version < "3.8"
|
urllib3==1.24.2 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
typing-extensions==4.7.1 ; python_version < "3.8" and python_version >= "3.7"
|
virtualenv==20.24.5 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
uritemplate==3.0.1 ; python_version >= "3.7" and python_version < "3.8"
|
wheel==0.33.6 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
urllib3==1.24.2 ; python_version >= "3.7" and python_version < "3.8"
|
zipp==3.17.0 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
virtualenv==20.4.7 ; python_version >= "3.7" and python_version < "3.8"
|
|
||||||
wheel==0.33.6 ; python_version >= "3.7" and python_version < "3.8"
|
|
||||||
wrapt==1.15.0 ; python_full_version >= "3.7.2" and python_version < "3.8"
|
|
||||||
zipp==3.15.0 ; python_version >= "3.7" and python_version < "3.8"
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ authors = ["Certbot Project"]
|
|||||||
license = "Apache License 2.0"
|
license = "Apache License 2.0"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.7"
|
python = "^3.8"
|
||||||
|
|
||||||
# Local dependencies
|
# Local dependencies
|
||||||
# Any local packages that have dependencies on other local packages must be
|
# Any local packages that have dependencies on other local packages must be
|
||||||
@@ -58,7 +58,7 @@ setuptools-rust = "*"
|
|||||||
#
|
#
|
||||||
# If this pinning is removed, we may still need to add a lower bound for the
|
# If this pinning is removed, we may still need to add a lower bound for the
|
||||||
# pylint version. See https://github.com/certbot/certbot/pull/9229.
|
# pylint version. See https://github.com/certbot/certbot/pull/9229.
|
||||||
pylint = { version="2.15.5", python = ">=3.7.2" }
|
pylint = "2.15.5"
|
||||||
|
|
||||||
# Bug in poetry, where still installes yanked versions from pypi (source: https://github.com/python-poetry/poetry/issues/2453)
|
# Bug in poetry, where still installes yanked versions from pypi (source: https://github.com/python-poetry/poetry/issues/2453)
|
||||||
# this version of cryptography introduced a security vulnrability.
|
# this version of cryptography introduced a security vulnrability.
|
||||||
@@ -75,6 +75,12 @@ poetry = "<1.3.0"
|
|||||||
# https://github.com/certbot/certbot/issues/9606.
|
# https://github.com/certbot/certbot/issues/9606.
|
||||||
setuptools = "<67.5.0"
|
setuptools = "<67.5.0"
|
||||||
|
|
||||||
|
# Branch 4.x of tox introduces backward incompatibility changes. The tox.ini
|
||||||
|
# file in the project must be adapted accordingly before moving out of the 3.x
|
||||||
|
# branch. Once done, the following constraint should become tox >= 4 to keep
|
||||||
|
# deterministic builds.
|
||||||
|
tox = "<4"
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ license = "Apache License 2.0"
|
|||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
# The Python version here should be kept in sync with the one used in our
|
# The Python version here should be kept in sync with the one used in our
|
||||||
# oldest tests in tox.ini.
|
# oldest tests in tox.ini.
|
||||||
python = "<3.8 >= 3.7"
|
python = "<3.9 >= 3.8"
|
||||||
|
|
||||||
# Local dependencies
|
# Local dependencies
|
||||||
# Any local packages that have dependencies on other local packages must be
|
# Any local packages that have dependencies on other local packages must be
|
||||||
@@ -48,7 +48,7 @@ apacheconfig = "0.3.2"
|
|||||||
asn1crypto = "0.24.0"
|
asn1crypto = "0.24.0"
|
||||||
boto3 = "1.15.15"
|
boto3 = "1.15.15"
|
||||||
botocore = "1.18.15"
|
botocore = "1.18.15"
|
||||||
cffi = "1.11.5"
|
cffi = "1.12.3"
|
||||||
chardet = "3.0.4"
|
chardet = "3.0.4"
|
||||||
cloudflare = "1.5.1"
|
cloudflare = "1.5.1"
|
||||||
configobj = "5.0.6"
|
configobj = "5.0.6"
|
||||||
|
|||||||
@@ -5,182 +5,187 @@
|
|||||||
# requirements.txt so that is scanned by GitHub. See
|
# 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
|
# https://docs.github.com/en/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems
|
||||||
# for more info.
|
# for more info.
|
||||||
alabaster==0.7.13 ; python_version >= "3.7" and python_version < "4.0"
|
alabaster==0.7.13 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
apacheconfig==0.3.2 ; python_version >= "3.7" and python_version < "4.0"
|
apacheconfig==0.3.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
appnope==0.1.3 ; python_version >= "3.7" and python_version < "4.0" and sys_platform == "darwin"
|
appnope==0.1.3 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "darwin"
|
||||||
astroid==2.13.5 ; python_full_version >= "3.7.2" and python_version < "4.0"
|
astroid==2.13.5 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
attrs==23.1.0 ; python_version >= "3.7" and python_version < "4.0"
|
asttokens==2.4.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
azure-core==1.29.4 ; python_version >= "3.7" and python_version < "4.0"
|
attrs==23.1.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
azure-devops==7.1.0b3 ; python_version >= "3.7" and python_version < "4.0"
|
azure-core==1.29.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
babel==2.13.0 ; python_version >= "3.7" and python_version < "4.0"
|
azure-devops==7.1.0b3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
backcall==0.2.0 ; python_version >= "3.7" and python_version < "4.0"
|
babel==2.13.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
backports-cached-property==1.0.2 ; python_version >= "3.7" and python_version < "3.8"
|
backcall==0.2.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
bcrypt==4.0.1 ; python_version >= "3.7" and python_version < "4.0"
|
bcrypt==4.0.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
beautifulsoup4==4.12.2 ; python_version >= "3.7" and python_version < "4.0"
|
beautifulsoup4==4.12.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
bleach==6.0.0 ; python_version >= "3.7" and python_version < "4.0"
|
boto3==1.28.62 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
boto3==1.28.60 ; python_version >= "3.7" and python_version < "4.0"
|
botocore==1.31.62 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
botocore==1.31.60 ; python_version >= "3.7" and python_version < "4.0"
|
cachecontrol==0.12.14 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cachecontrol==0.12.14 ; python_version >= "3.7" and python_version < "4.0"
|
cachetools==5.3.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cachetools==5.3.1 ; python_version >= "3.7" and python_version < "4.0"
|
cachy==0.3.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cachy==0.3.0 ; python_version >= "3.7" and python_version < "4.0"
|
certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
certifi==2023.7.22 ; python_version >= "3.7" and python_version < "4.0"
|
cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cffi==1.15.1 ; python_version >= "3.7" and python_version < "4.0"
|
charset-normalizer==3.3.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
charset-normalizer==3.3.0 ; python_version >= "3.7" and python_version < "4.0"
|
cleo==1.0.0a5 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cleo==1.0.0a5 ; python_version >= "3.7" and python_version < "4.0"
|
cloudflare==2.12.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cloudflare==2.12.4 ; python_version >= "3.7" and python_version < "4.0"
|
colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32" or python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows"
|
||||||
colorama==0.4.6 ; python_version < "4.0" and sys_platform == "win32" and python_version >= "3.7" or python_version >= "3.7" and python_version < "4.0" and platform_system == "Windows"
|
configargparse==1.7 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
configargparse==1.7 ; python_version >= "3.7" and python_version < "4.0"
|
configobj==5.0.8 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
configobj==5.0.8 ; python_version >= "3.7" and python_version < "4.0"
|
coverage==7.3.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
coverage==7.2.7 ; python_version >= "3.7" and python_version < "4.0"
|
crashtest==0.3.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
crashtest==0.3.1 ; python_version >= "3.7" and python_version < "4.0"
|
cryptography==41.0.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cryptography==41.0.4 ; python_version >= "3.7" and python_version < "4.0"
|
cython==0.29.36 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
cython==0.29.36 ; python_version >= "3.7" and python_version < "4.0"
|
decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
decorator==5.1.1 ; python_version >= "3.7" and python_version < "4.0"
|
deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
deprecated==1.2.14 ; python_version >= "3.7" and python_version < "4.0"
|
dill==0.3.7 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
dill==0.3.7 ; python_full_version >= "3.7.2" and python_version < "4.0"
|
distlib==0.3.7 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
distlib==0.3.7 ; python_version >= "3.7" and python_version < "4.0"
|
distro==1.8.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
distro==1.8.0 ; python_version >= "3.7" and python_version < "4.0"
|
dns-lexicon==3.15.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
dns-lexicon==3.14.1 ; python_version >= "3.7" and python_version < "4.0"
|
dnspython==2.4.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
dnspython==2.3.0 ; python_version >= "3.7" and python_version < "4.0"
|
docutils==0.18.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
docutils==0.18.1 ; python_version >= "3.7" and python_version < "4.0"
|
dulwich==0.20.50 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
dulwich==0.20.50 ; python_version >= "3.7" and python_version < "4.0"
|
exceptiongroup==1.1.3 ; python_version >= "3.8" and python_version < "3.11"
|
||||||
exceptiongroup==1.1.3 ; python_version >= "3.7" and python_version < "3.11"
|
execnet==2.0.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
execnet==2.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
executing==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
fabric==3.2.2 ; python_version >= "3.7" and python_version < "4.0"
|
fabric==3.2.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
filelock==3.12.2 ; python_version >= "3.7" and python_version < "4.0"
|
filelock==3.12.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
google-api-core==2.12.0 ; python_version >= "3.7" and python_version < "4.0"
|
google-api-core==2.12.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
google-api-python-client==2.102.0 ; python_version >= "3.7" and python_version < "4.0"
|
google-api-python-client==2.102.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
google-auth-httplib2==0.1.1 ; python_version >= "3.7" and python_version < "4.0"
|
google-auth-httplib2==0.1.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
google-auth==2.23.2 ; python_version >= "3.7" and python_version < "4.0"
|
google-auth==2.23.3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
googleapis-common-protos==1.60.0 ; python_version >= "3.7" and python_version < "4.0"
|
googleapis-common-protos==1.60.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
html5lib==1.1 ; python_version >= "3.7" and python_version < "4.0"
|
html5lib==1.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
httplib2==0.22.0 ; python_version >= "3.7" and python_version < "4.0"
|
httplib2==0.22.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
idna==3.4 ; python_version >= "3.7" and python_version < "4.0"
|
idna==3.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
imagesize==1.4.1 ; python_version >= "3.7" and python_version < "4.0"
|
imagesize==1.4.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
importlib-metadata==4.13.0 ; python_version >= "3.7" and python_version < "4.0"
|
importlib-metadata==4.13.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
importlib-resources==5.12.0 ; python_version >= "3.7" and python_version < "4.0"
|
importlib-resources==6.1.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
iniconfig==2.0.0 ; python_version >= "3.7" and python_version < "4.0"
|
iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
invoke==2.2.0 ; python_version >= "3.7" 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.7" and python_version < "4.0"
|
ipdb==0.13.13 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
ipython==7.34.0 ; python_version >= "3.7" and python_version < "4.0"
|
ipython==8.12.3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
isodate==0.6.1 ; python_version >= "3.7" and python_version < "4.0"
|
isodate==0.6.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
isort==5.11.5 ; python_full_version >= "3.7.2" and python_version < "4.0"
|
isort==5.12.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
jaraco-classes==3.2.3 ; python_version >= "3.7" and python_version < "4.0"
|
jaraco-classes==3.3.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
jedi==0.19.1 ; python_version >= "3.7" 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.7" and python_version < "4.0" and sys_platform == "linux"
|
jeepney==0.8.0 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "linux"
|
||||||
jinja2==3.1.2 ; python_version >= "3.7" and python_version < "4.0"
|
jinja2==3.1.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
jmespath==1.0.1 ; python_version >= "3.7" and python_version < "4.0"
|
jmespath==1.0.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
josepy==1.13.0 ; python_version >= "3.7" and python_version < "4.0"
|
josepy==1.13.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
jsonlines==3.1.0 ; python_version >= "3.7" and python_version < "4.0"
|
jsonlines==4.0.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
jsonpickle==3.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
jsonpickle==3.0.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
jsonschema==4.17.3 ; python_version >= "3.7" and python_version < "4.0"
|
jsonschema-specifications==2023.7.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
keyring==24.1.1 ; python_version >= "3.7" and python_version < "4.0"
|
jsonschema==4.19.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
lazy-object-proxy==1.9.0 ; python_full_version >= "3.7.2" and python_version < "4.0"
|
keyring==24.2.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
lockfile==0.12.2 ; python_version >= "3.7" and python_version < "4.0"
|
lazy-object-proxy==1.9.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
markdown-it-py==2.2.0 ; python_version >= "3.7" and python_version < "4.0"
|
lockfile==0.12.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
markupsafe==2.1.3 ; python_version >= "3.7" and python_version < "4.0"
|
markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
matplotlib-inline==0.1.6 ; python_version >= "3.7" and python_version < "4.0"
|
markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
mccabe==0.7.0 ; python_full_version >= "3.7.2" and python_version < "4.0"
|
matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
mdurl==0.1.2 ; python_version >= "3.7" and python_version < "4.0"
|
mccabe==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
more-itertools==9.1.0 ; python_version >= "3.7" and python_version < "4.0"
|
mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
msgpack==1.0.5 ; python_version >= "3.7" and python_version < "4.0"
|
more-itertools==10.1.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
msrest==0.7.1 ; python_version >= "3.7" and python_version < "4.0"
|
msgpack==1.0.7 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
mypy-extensions==1.0.0 ; python_version >= "3.7" and python_version < "4.0"
|
msrest==0.7.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
mypy==1.4.1 ; python_version >= "3.7" and python_version < "4.0"
|
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
oauthlib==3.2.2 ; python_version >= "3.7" and python_version < "4.0"
|
mypy==1.5.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
packaging==23.2 ; python_version >= "3.7" and python_version < "4.0"
|
nh3==0.2.14 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
paramiko==3.3.1 ; python_version >= "3.7" and python_version < "4.0"
|
oauthlib==3.2.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
parsedatetime==2.6 ; python_version >= "3.7" and python_version < "4.0"
|
packaging==23.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
parso==0.8.3 ; python_version >= "3.7" and python_version < "4.0"
|
paramiko==3.3.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pexpect==4.8.0 ; python_version >= "3.7" and python_version < "4.0"
|
parsedatetime==2.6 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pickleshare==0.7.5 ; python_version >= "3.7" and python_version < "4.0"
|
parso==0.8.3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pip==23.2.1 ; python_version >= "3.7" and python_version < "4.0"
|
pexpect==4.8.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pkginfo==1.9.6 ; python_version >= "3.7" and python_version < "4.0"
|
pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pkgutil-resolve-name==1.3.10 ; python_version >= "3.7" and python_version < "3.9"
|
pip==23.2.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
platformdirs==2.6.2 ; python_version < "4.0" and python_version >= "3.7"
|
pkginfo==1.9.6 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pluggy==1.2.0 ; python_version >= "3.7" and python_version < "4.0"
|
pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9"
|
||||||
ply==3.11 ; python_version >= "3.7" and python_version < "4.0"
|
platformdirs==2.6.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
poetry-core==1.3.2 ; python_version >= "3.7" and python_version < "4.0"
|
pluggy==1.3.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
poetry-plugin-export==1.2.0 ; python_version >= "3.7" and python_version < "4.0"
|
ply==3.11 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
poetry==1.2.2 ; python_version >= "3.7" and python_version < "4.0"
|
poetry-core==1.3.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
prompt-toolkit==3.0.39 ; python_version >= "3.7" and python_version < "4.0"
|
poetry-plugin-export==1.2.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
protobuf==4.24.4 ; python_version >= "3.7" and python_version < "4.0"
|
poetry==1.2.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
ptyprocess==0.7.0 ; python_version >= "3.7" and python_version < "4.0"
|
prompt-toolkit==3.0.39 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
py==1.11.0 ; python_version >= "3.7" and python_version < "4.0"
|
protobuf==4.24.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pyasn1-modules==0.3.0 ; python_version >= "3.7" and python_version < "4.0"
|
ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pyasn1==0.5.0 ; python_version >= "3.7" and python_version < "4.0"
|
pure-eval==0.2.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pycparser==2.21 ; python_version >= "3.7" and python_version < "4.0"
|
py==1.11.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pygments==2.16.1 ; python_version >= "3.7" and python_version < "4.0"
|
pyasn1-modules==0.3.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pylev==1.4.0 ; python_version >= "3.7" and python_version < "4.0"
|
pyasn1==0.5.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pylint==2.15.5 ; python_full_version >= "3.7.2" and python_version < "4.0"
|
pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pynacl==1.5.0 ; python_version >= "3.7" and python_version < "4.0"
|
pygments==2.16.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pynsist==2.7 ; python_version >= "3.7" and python_version < "4.0"
|
pylev==1.4.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pyopenssl==23.2.0 ; python_version >= "3.7" and python_version < "4.0"
|
pylint==2.15.5 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pyparsing==3.1.1 ; python_version >= "3.7" and python_version < "4.0"
|
pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pyrfc3339==1.1 ; python_version >= "3.7" and python_version < "4.0"
|
pynsist==2.7 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pyrsistent==0.19.3 ; python_version >= "3.7" and python_version < "4.0"
|
pyopenssl==23.2.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pytest-cov==4.1.0 ; python_version >= "3.7" and python_version < "4.0"
|
pyotp==2.9.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pytest-xdist==3.3.1 ; python_version >= "3.7" and python_version < "4.0"
|
pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pytest==7.4.2 ; python_version >= "3.7" and python_version < "4.0"
|
pyrfc3339==1.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
python-augeas==1.1.0 ; python_version >= "3.7" and python_version < "4.0"
|
pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
python-dateutil==2.8.2 ; python_version >= "3.7" and python_version < "4.0"
|
pytest-xdist==3.3.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
python-digitalocean==1.17.0 ; python_version >= "3.7" and python_version < "4.0"
|
pytest==7.4.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pytz==2023.3.post1 ; python_version >= "3.7" and python_version < "4.0"
|
python-augeas==1.1.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pywin32-ctypes==0.2.2 ; python_version >= "3.7" and python_version < "4.0" and sys_platform == "win32"
|
python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pywin32==306 ; python_version >= "3.7" and python_version < "4.0" and sys_platform == "win32"
|
python-digitalocean==1.17.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
pyyaml==6.0.1 ; python_version >= "3.7" and python_version < "4.0"
|
pytz==2023.3.post1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
readme-renderer==37.3 ; python_version >= "3.7" and python_version < "4.0"
|
pywin32-ctypes==0.2.2 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32"
|
||||||
requests-download==0.1.2 ; python_version >= "3.7" and python_version < "4.0"
|
pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32"
|
||||||
requests-file==1.5.1 ; python_version >= "3.7" and python_version < "4.0"
|
pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
requests-oauthlib==1.3.1 ; python_version >= "3.7" and python_version < "4.0"
|
readme-renderer==42.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
requests-toolbelt==0.9.1 ; python_version >= "3.7" and python_version < "4.0"
|
referencing==0.30.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
requests==2.31.0 ; python_version >= "3.7" and python_version < "4.0"
|
requests-download==0.1.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
rfc3986==2.0.0 ; python_version >= "3.7" and python_version < "4.0"
|
requests-file==1.5.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
rich==13.6.0 ; python_version >= "3.7" and python_version < "4.0"
|
requests-oauthlib==1.3.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
rsa==4.9 ; python_version >= "3.7" and python_version < "4"
|
requests-toolbelt==0.9.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
s3transfer==0.7.0 ; python_version >= "3.7" and python_version < "4.0"
|
requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
secretstorage==3.3.3 ; python_version >= "3.7" and python_version < "4.0" and sys_platform == "linux"
|
rfc3986==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
semantic-version==2.10.0 ; python_version >= "3.7" and python_version < "4.0"
|
rich==13.6.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
setuptools-rust==1.7.0 ; python_version >= "3.7" and python_version < "4.0"
|
rpds-py==0.10.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
setuptools==67.4.0 ; python_version >= "3.7" and python_version < "4.0"
|
rsa==4.9 ; python_version >= "3.8" and python_version < "4"
|
||||||
shellingham==1.5.3 ; python_version >= "3.7" and python_version < "4.0"
|
s3transfer==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
six==1.16.0 ; python_version >= "3.7" and python_version < "4.0"
|
secretstorage==3.3.3 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "linux"
|
||||||
snowballstemmer==2.2.0 ; python_version >= "3.7" and python_version < "4.0"
|
semantic-version==2.10.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
soupsieve==2.4.1 ; python_version >= "3.7" and python_version < "4.0"
|
setuptools-rust==1.7.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinx-rtd-theme==1.3.0 ; python_version >= "3.7" and python_version < "4.0"
|
setuptools==67.4.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinx==5.3.0 ; python_version >= "3.7" and python_version < "4.0"
|
shellingham==1.5.3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinxcontrib-applehelp==1.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
six==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
snowballstemmer==2.2.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinxcontrib-htmlhelp==2.0.0 ; python_version >= "3.7" and python_version < "4.0"
|
soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinxcontrib-jquery==4.1 ; python_version >= "3.7" and python_version < "4.0"
|
sphinx-rtd-theme==1.3.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.7" and python_version < "4.0"
|
sphinx==7.1.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.7" and python_version < "4.0"
|
sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.7" and python_version < "4.0"
|
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
tldextract==3.6.0 ; python_version >= "3.7" and python_version < "4.0"
|
sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
tomli==2.0.1 ; python_version >= "3.7" and python_full_version <= "3.11.0a6"
|
sphinxcontrib-jquery==4.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
tomlkit==0.12.1 ; python_version < "4.0" and python_version >= "3.7"
|
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
tox==3.28.0 ; python_version >= "3.7" and python_version < "4.0"
|
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
traitlets==5.9.0 ; python_version >= "3.7" and python_version < "4.0"
|
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
twine==4.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
stack-data==0.6.3 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
typed-ast==1.5.5 ; python_version < "3.8" and python_version >= "3.7"
|
tldextract==3.6.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-httplib2==0.22.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
tomli==2.0.1 ; python_version >= "3.8" and python_full_version <= "3.11.0a6"
|
||||||
types-pyopenssl==23.2.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
tomlkit==0.12.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-pyrfc3339==1.1.1.5 ; python_version >= "3.7" and python_version < "4.0"
|
tox==3.28.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-python-dateutil==2.8.19.14 ; python_version >= "3.7" and python_version < "4.0"
|
traitlets==5.11.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-pytz==2023.3.1.1 ; python_version >= "3.7" and python_version < "4.0"
|
twine==4.0.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-pywin32==306.0.0.4 ; python_version >= "3.7" and python_version < "4.0"
|
types-httplib2==0.22.0.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-requests==2.31.0.2 ; python_version >= "3.7" and python_version < "4.0"
|
types-pyopenssl==23.2.0.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-setuptools==68.2.0.0 ; python_version >= "3.7" and python_version < "4.0"
|
types-pyrfc3339==1.1.1.5 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-six==1.16.21.9 ; python_version >= "3.7" and python_version < "4.0"
|
types-python-dateutil==2.8.19.14 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
types-urllib3==1.26.25.14 ; python_version >= "3.7" and python_version < "4.0"
|
types-pytz==2023.3.1.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
typing-extensions==4.7.1 ; python_version >= "3.7" and python_version < "4.0"
|
types-pywin32==306.0.0.4 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
uritemplate==4.1.1 ; python_version >= "3.7" and python_version < "4.0"
|
types-requests==2.31.0.6 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
urllib3==1.26.17 ; python_version >= "3.7" and python_version < "4.0"
|
types-setuptools==68.2.0.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
virtualenv==20.21.1 ; python_version >= "3.7" and python_version < "4.0"
|
types-six==1.16.21.9 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
wcwidth==0.2.8 ; python_version >= "3.7" and python_version < "4.0"
|
types-urllib3==1.26.25.14 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
webencodings==0.5.1 ; python_version >= "3.7" and python_version < "4.0"
|
typing-extensions==4.8.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
wheel==0.41.2 ; python_version >= "3.7" and python_version < "4.0"
|
uritemplate==4.1.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
wrapt==1.15.0 ; python_version < "4.0" and python_version >= "3.7"
|
urllib3==1.26.17 ; python_version < "4.0" and python_version >= "3.8"
|
||||||
xattr==0.9.9 ; python_version >= "3.7" and python_version < "4.0" and sys_platform == "darwin"
|
virtualenv==20.21.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
yarg==0.1.9 ; python_version >= "3.7" and python_version < "4.0"
|
wcwidth==0.2.8 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
zipp==3.15.0 ; python_version >= "3.7" and python_version < "4.0"
|
webencodings==0.5.1 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
|
wheel==0.41.2 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
|
wrapt==1.15.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
|
xattr==0.9.9 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "darwin"
|
||||||
|
yarg==0.1.9 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
|
zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0"
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ def _check_version(version_str):
|
|||||||
|
|
||||||
version = (int(search.group(1)), int(search.group(2)))
|
version = (int(search.group(1)), int(search.group(2)))
|
||||||
|
|
||||||
if version >= (3, 7):
|
if version >= (3, 8):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
print('Incompatible python version for Certbot found: {0}'.format(version_str))
|
print('Incompatible python version for Certbot found: {0}'.format(version_str))
|
||||||
|
|||||||
6
tox.ini
6
tox.ini
@@ -56,10 +56,10 @@ commands =
|
|||||||
commands =
|
commands =
|
||||||
{[testenv:py-win]commands} certbot-apache
|
{[testenv:py-win]commands} certbot-apache
|
||||||
|
|
||||||
[testenv:py3{,7,8,9,10,11}]
|
[testenv:py3{,8,9,10,11}]
|
||||||
commands = {[testenv:py]commands}
|
commands = {[testenv:py]commands}
|
||||||
|
|
||||||
[testenv:py3.{7,8,9,10,11}]
|
[testenv:py3.{8,9,10,11}]
|
||||||
commands = {[testenv:py]commands}
|
commands = {[testenv:py]commands}
|
||||||
|
|
||||||
[testenv:oldest]
|
[testenv:oldest]
|
||||||
@@ -69,7 +69,7 @@ commands = {[testenv:py]commands}
|
|||||||
#
|
#
|
||||||
# This version should be kept in sync with the one declared in
|
# This version should be kept in sync with the one declared in
|
||||||
# tools/pinning/oldest/pyproject.toml.
|
# tools/pinning/oldest/pyproject.toml.
|
||||||
basepython = python3.7
|
basepython = python3.8
|
||||||
setenv = CERTBOT_OLDEST=1
|
setenv = CERTBOT_OLDEST=1
|
||||||
commands = {[testenv:py]commands}
|
commands = {[testenv:py]commands}
|
||||||
|
|
||||||
|
|||||||
@@ -11,14 +11,13 @@ setup(
|
|||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='certbot-dev@eff.org',
|
author_email='certbot-dev@eff.org',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
python_requires='>=3.7',
|
python_requires='>=3.8',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 4 - Beta',
|
'Development Status :: 4 - Beta',
|
||||||
'Intended Audience :: Developers',
|
'Intended Audience :: Developers',
|
||||||
'License :: OSI Approved :: Apache Software License',
|
'License :: OSI Approved :: Apache Software License',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
'Programming Language :: Python :: 3.8',
|
||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
|
|||||||
Reference in New Issue
Block a user