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