diff --git a/certbot/certbot/plugins/dns_common.py b/certbot/certbot/plugins/dns_common.py index 9d5b2e614..a8e6a5a4d 100644 --- a/certbot/certbot/plugins/dns_common.py +++ b/certbot/certbot/plugins/dns_common.py @@ -272,8 +272,18 @@ class CredentialsConfiguration: try: self.confobj = configobj.ConfigObj(filename) except configobj.ConfigObjError as e: - logger.debug("Error parsing credentials configuration: %s", e, exc_info=True) - raise errors.PluginError("Error parsing credentials configuration: {0}".format(e)) + logger.debug( + "Error parsing credentials configuration '%s': %s", + filename, + e, + exc_info=True + ) + raise errors.PluginError( + "Error parsing credentials configuration '{}': {}".format( + filename, + e + ) + ) self.mapper = mapper diff --git a/certbot/docs/contributing.rst b/certbot/docs/contributing.rst index c32bdc170..6d1faf061 100644 --- a/certbot/docs/contributing.rst +++ b/certbot/docs/contributing.rst @@ -585,8 +585,8 @@ include our snaps, Docker images, Windows installer, CI, and our development environments. In most cases, the file where dependency versions are specified is -``tools/requirements.txt``. There are two exceptions to this. The first is our -"oldest" tests where ``tools/oldest_constraints.txt`` is used instead. The +``tools/requirements.txt``. There are three exceptions to this. The first is +our "oldest" tests where ``tools/oldest_constraints.txt`` is used instead. The purpose of the "oldest" tests is to ensure Certbot continues to work with the oldest versions of our dependencies which we claim to support. The oldest versions of the dependencies we support should also be declared in our setup.py @@ -598,6 +598,12 @@ leave Certbot's dependencies unpinned. The thinking behind this test is to help us learn about breaking changes in our dependencies so that we can respond accordingly. +The third exception is temporary and at ``tools/1.32.x/requirements.txt``. +This file is simply a copy of ``tools/requirements.txt`` from our 1.32.x branch +to help us ensure those dependencies stay reasonably well updated while we still +have Certbot 1.x snap users. Once we've moved all snap users to Certbot 2.0, +this file should be deleted. + The choices of whether Certbot's dependencies are pinned and what file is used if they are should be automatically handled for you most of the time by Certbot's tooling. The way it works though is ``tools/pip_install.py`` (which diff --git a/tools/1.32.x/requirements.txt b/tools/1.32.x/requirements.txt new file mode 100644 index 000000000..9f49b9353 --- /dev/null +++ b/tools/1.32.x/requirements.txt @@ -0,0 +1,195 @@ +# This is a copy of tools/requirements.txt from the 1.32.x branch that I +# placed here so it will be in our master branch and GitHub will scan it for +# security vulnerabilities while we still have 1.x snap users. If we're notified +# about problems in our dependencies here and want to upgrade, we should do so +# by updating tools/requirements.txt on the 1.32.x branch, doing a point release +# from that branch, and copying any updates to tools/requirements.txt on that +# branch to this file on the master branch. +# +# This file is named requirements.txt so it 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.12 ; 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.11.7 ; python_version >= "3.7" and python_version < "4.0" +attrs==22.1.0 ; python_version >= "3.7" and python_version < "4.0" +awscli==1.27.0 ; python_version >= "3.7" and python_version < "4.0" +azure-devops==6.0.0b4 ; python_version >= "3.7" and python_version < "4.0" +babel==2.11.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.11.1 ; python_version >= "3.7" and python_version < "4.0" +bleach==5.0.1 ; python_version >= "3.7" and python_version < "4.0" +boto3==1.26.0 ; python_version >= "3.7" and python_version < "4.0" +botocore==1.29.0 ; python_version >= "3.7" and python_version < "4.0" +cachecontrol==0.12.11 ; python_version >= "3.7" and python_version < "4.0" +cachetools==5.2.0 ; python_version >= "3.7" and python_version < "4.0" +cachy==0.3.0 ; python_version >= "3.7" and python_version < "4.0" +certifi==2022.9.24 ; python_version >= "3.7" and python_version < "4" +cffi==1.15.1 ; python_version >= "3.7" and python_version < "4.0" +charset-normalizer==2.1.1 ; python_version >= "3.7" and python_version < "4" +cleo==1.0.0a5 ; python_version >= "3.7" and python_version < "4.0" +cloudflare==2.10.2 ; python_version >= "3.7" and python_version < "4.0" +colorama==0.4.4 ; python_version >= "3.7" and python_version < "4.0" +commonmark==0.9.1 ; python_version >= "3.7" and python_version < "4.0" +configargparse==1.5.3 ; python_version >= "3.7" and python_version < "4.0" +configobj==5.0.6 ; python_version >= "3.7" and python_version < "4.0" +coverage==6.5.0 ; python_version >= "3.7" and python_version < "4.0" +crashtest==0.3.1 ; python_version >= "3.7" and python_version < "4.0" +cryptography==38.0.3 ; python_version >= "3.7" and python_version < "4.0" +cython==0.29.32 ; python_version >= "3.7" and python_version < "4.0" +decorator==5.1.1 ; python_version >= "3.7" and python_version < "4.0" +dill==0.3.6 ; python_version >= "3.7" and python_version < "4.0" +distlib==0.3.6 ; 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.11.7 ; python_version >= "3.7" and python_version < "4.0" +dnspython==2.2.1 ; python_version >= "3.7" and python_version < "4.0" +docutils==0.16 ; python_version >= "3.7" and python_version < "4.0" +dulwich==0.20.50 ; python_version >= "3.7" and python_version < "4.0" +exceptiongroup==1.0.0 ; python_version >= "3.7" and python_version < "3.11" +execnet==1.9.0 ; python_version >= "3.7" and python_version < "4.0" +fabric==2.7.1 ; python_version >= "3.7" and python_version < "4.0" +filelock==3.8.0 ; python_version >= "3.7" and python_version < "4.0" +google-api-core==2.10.2 ; python_version >= "3.7" and python_version < "4.0" +google-api-python-client==2.65.0 ; python_version >= "3.7" and python_version < "4.0" +google-auth-httplib2==0.1.0 ; python_version >= "3.7" and python_version < "4.0" +google-auth==2.14.0 ; python_version >= "3.7" and python_version < "4.0" +googleapis-common-protos==1.56.4 ; python_version >= "3.7" and python_version < "4.0" +html5lib==1.1 ; python_version >= "3.7" and python_version < "4.0" +httplib2==0.21.0 ; python_version >= "3.7" and python_version < "4.0" +idna==3.4 ; python_version >= "3.7" and python_version < "4" +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.10.0 ; python_version >= "3.7" and python_version < "3.9" +iniconfig==1.1.1 ; python_version >= "3.7" and python_version < "4.0" +invoke==1.7.3 ; python_version >= "3.7" and python_version < "4.0" +ipdb==0.13.9 ; 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.10.1 ; python_version >= "3.7" and python_version < "4.0" +jaraco-classes==3.2.3 ; python_version >= "3.7" and python_version < "4.0" +jedi==0.18.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==2.2.0 ; python_version >= "3.7" and python_version < "4.0" +jsonschema==4.17.0 ; python_version >= "3.7" and python_version < "4.0" +keyring==23.9.3 ; python_version >= "3.7" and python_version < "4.0" +lazy-object-proxy==1.8.0 ; python_version >= "3.7" and python_version < "4.0" +lockfile==0.12.2 ; python_version >= "3.7" and python_version < "4.0" +markupsafe==2.1.1 ; 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_version >= "3.7" and python_version < "4.0" +mock==4.0.3 ; python_version >= "3.7" and python_version < "4.0" +more-itertools==9.0.0 ; python_version >= "3.7" and python_version < "4.0" +msgpack==1.0.4 ; python_version >= "3.7" and python_version < "4.0" +msrest==0.6.21 ; python_version >= "3.7" and python_version < "4.0" +mypy-extensions==0.4.3 ; python_version >= "3.7" and python_version < "4.0" +mypy==0.982 ; python_version >= "3.7" and python_version < "4.0" +oauth2client==4.1.3 ; python_version >= "3.7" and python_version < "4.0" +oauthlib==3.2.2 ; python_version >= "3.7" and python_version < "4.0" +packaging==21.3 ; python_version >= "3.7" and python_version < "4.0" +paramiko==2.11.0 ; 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" +pathlib2==2.3.7.post1 ; 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==22.3 ; python_version >= "3.7" and python_version < "4.0" +pkginfo==1.8.3 ; 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.5.2 ; python_version >= "3.7" and python_version < "4.0" +pluggy==1.0.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.1.2 ; 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.31 ; python_version >= "3.7" and python_version < "4.0" +protobuf==4.21.9 ; 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.2.8 ; python_version >= "3.7" and python_version < "4.0" +pyasn1==0.4.8 ; python_version >= "3.7" and python_version < "4.0" +pycparser==2.21 ; python_version >= "3.7" and python_version < "4.0" +pygments==2.13.0 ; python_version >= "3.7" and python_version < "4.0" +pylev==1.4.0 ; python_version >= "3.7" and python_version < "4.0" +pylint==2.13.9 ; python_version >= "3.7" 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==22.1.0 ; python_version >= "3.7" and python_version < "4.0" +pyparsing==3.0.9 ; python_version >= "3.7" and python_version < "4.0" +pyrfc3339==1.1 ; python_version >= "3.7" and python_version < "4.0" +pyrsistent==0.19.1 ; python_version >= "3.7" and python_version < "4.0" +pytest-cov==4.0.0 ; python_version >= "3.7" and python_version < "4.0" +pytest-xdist==3.0.2 ; python_version >= "3.7" and python_version < "4.0" +pytest==7.2.0 ; 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==2022.6 ; python_version >= "3.7" and python_version < "4.0" +pywin32-ctypes==0.2.0 ; python_version >= "3.7" and python_version < "4.0" and sys_platform == "win32" +pywin32==304 ; python_version >= "3.7" and python_version < "4.0" and sys_platform == "win32" +pyyaml==5.4.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.28.1 ; python_version >= "3.7" and python_version < "4" +rfc3986==2.0.0 ; python_version >= "3.7" and python_version < "4.0" +rich==12.6.0 ; python_version >= "3.7" and python_version < "4.0" +rsa==4.7.2 ; python_version >= "3.7" and python_version < "4" +s3transfer==0.6.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.5.2 ; python_version >= "3.7" and python_version < "4.0" +setuptools==65.5.0 ; python_version >= "3.7" and python_version < "4.0" +shellingham==1.5.0 ; 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.3.2.post1 ; python_version >= "3.7" and python_version < "4.0" +sphinx-rtd-theme==1.1.0 ; python_version >= "3.7" and python_version < "4.0" +sphinx==5.1.1 ; 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-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.4.0 ; python_version >= "3.7" and python_version < "4.0" +toml==0.10.2 ; 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.11.6 ; python_version >= "3.7" and python_version < "4.0" +tox==3.27.0 ; python_version >= "3.7" and python_version < "4.0" +traitlets==5.5.0 ; python_version >= "3.7" and python_version < "4.0" +twine==4.0.1 ; python_version >= "3.7" and python_version < "4.0" +typed-ast==1.5.4 ; python_version >= "3.7" and python_version < "3.8" +types-cryptography==3.3.23.1 ; python_version >= "3.7" and python_version < "4.0" +types-mock==4.0.15.2 ; python_version >= "3.7" and python_version < "4.0" +types-pyopenssl==22.1.0.1 ; python_version >= "3.7" and python_version < "4.0" +types-pyrfc3339==1.1.1 ; python_version >= "3.7" and python_version < "4.0" +types-python-dateutil==2.8.19.2 ; python_version >= "3.7" and python_version < "4.0" +types-pytz==2022.6.0.1 ; python_version >= "3.7" and python_version < "4.0" +types-requests==2.28.11.2 ; python_version >= "3.7" and python_version < "4.0" +types-setuptools==65.5.0.2 ; python_version >= "3.7" and python_version < "4.0" +types-six==1.16.21 ; python_version >= "3.7" and python_version < "4.0" +types-urllib3==1.26.25.1 ; python_version >= "3.7" and python_version < "4.0" +typing-extensions==4.4.0 ; 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.12 ; python_version >= "3.7" and python_version < "4" +virtualenv==20.16.6 ; python_version >= "3.7" and python_version < "4.0" +wcwidth==0.2.5 ; python_version >= "3.7" and python_version < "4.0" +webencodings==0.5.1 ; python_version >= "3.7" and python_version < "4.0" +wheel==0.37.1 ; python_version >= "3.7" and python_version < "4.0" +wrapt==1.14.1 ; python_version >= "3.7" and python_version < "4.0" +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.10.0 ; python_version >= "3.7" and python_version < "4.0" +zope-component==5.0.1 ; python_version >= "3.7" and python_version < "4.0" +zope-event==4.5.0 ; python_version >= "3.7" and python_version < "4.0" +zope-hookable==5.2 ; python_version >= "3.7" and python_version < "4.0" +zope-interface==5.5.0 ; python_version >= "3.7" and python_version < "4.0" diff --git a/tools/_release.sh b/tools/_release.sh index 368ed21d5..58551952c 100755 --- a/tools/_release.sh +++ b/tools/_release.sh @@ -169,6 +169,14 @@ VIRTUALENV_NO_DOWNLOAD=1 virtualenv ../venv . ../venv/bin/activate pip install -U setuptools pip install -U pip + +# This creates a string like "acme==a.b.c certbot==a.b.c ..." which can be used +# with pip to ensure the correct versions of our packages installed. +subpkgs_with_version="" +for pkg in $SUBPKGS; do + subpkgs_with_version="$subpkgs_with_version $pkg==$version" +done + # Now, use our local archives. Disable cache so we get the correct packages even if # we (or our dependencies) have conditional dependencies implemented with if # statements in setup.py and we have cached wheels lying around that would cause @@ -176,7 +184,7 @@ pip install -U pip python ../tools/pip_install.py \ --no-cache-dir \ --find-links . \ - $SUBPKGS + $subpkgs_with_version cd ~- # get a snapshot of the CLI help for the docs