From c8a1e30981acc324b07f1745d6a5fe87ab7fcf92 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Wed, 27 Mar 2024 14:05:52 -0700 Subject: [PATCH 01/13] change tox pin to >= 4 and rerun pinning script --- tools/pinning/current/pyproject.toml | 2 +- tools/requirements.txt | 112 ++++++++++++++------------- 2 files changed, 59 insertions(+), 55 deletions(-) diff --git a/tools/pinning/current/pyproject.toml b/tools/pinning/current/pyproject.toml index 7ffd19986..8a0661b58 100644 --- a/tools/pinning/current/pyproject.toml +++ b/tools/pinning/current/pyproject.toml @@ -74,7 +74,7 @@ poetry = "<1.3.0" # 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" +tox = ">=4" [tool.poetry.dev-dependencies] diff --git a/tools/requirements.txt b/tools/requirements.txt index 6012addb8..e8019947b 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -11,28 +11,29 @@ appnope==0.1.4 ; python_version >= "3.8" and python_version < "4.0" and sys_plat astroid==3.0.3 ; python_version >= "3.8" and python_version < "4.0" asttokens==2.4.1 ; python_version >= "3.8" and python_version < "4.0" attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" -azure-core==1.30.0 ; python_version >= "3.8" and python_version < "4.0" +azure-core==1.30.1 ; python_version >= "3.8" and python_version < "4.0" azure-devops==7.1.0b4 ; python_version >= "3.8" and python_version < "4.0" babel==2.14.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.1.2 ; python_version >= "3.8" and python_version < "4.0" beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4.0" -boto3==1.34.36 ; python_version >= "3.8" and python_version < "4.0" -botocore==1.34.36 ; python_version >= "3.8" and python_version < "4.0" +boto3==1.34.72 ; python_version >= "3.8" and python_version < "4.0" +botocore==1.34.72 ; 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.2 ; python_version >= "3.8" and python_version < "4.0" +cachetools==5.3.3 ; python_version >= "3.8" and python_version < "4.0" cachy==0.3.0 ; python_version >= "3.8" and python_version < "4.0" certifi==2024.2.2 ; python_version >= "3.8" and python_version < "4.0" cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" +chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0" charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" cleo==1.0.0a5 ; python_version >= "3.8" and python_version < "4.0" -cloudflare==2.17.0 ; 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" +cloudflare==2.19.2 ; python_version >= "3.8" and python_version < "4.0" +colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" configargparse==1.7 ; python_version >= "3.8" and python_version < "4.0" configobj==5.0.8 ; python_version >= "3.8" and python_version < "4.0" -coverage==7.4.1 ; python_version >= "3.8" and python_version < "4.0" +coverage==7.4.4 ; python_version >= "3.8" and python_version < "4.0" crashtest==0.3.1 ; python_version >= "3.8" and python_version < "4.0" -cryptography==42.0.2 ; python_version >= "3.8" and python_version < "4.0" +cryptography==42.0.5 ; python_version >= "3.8" and python_version < "4.0" cython==0.29.37 ; python_version >= "3.8" and python_version < "4.0" decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" @@ -40,42 +41,44 @@ dill==0.3.8 ; python_version < "4.0" and python_version >= "3.8" distlib==0.3.8 ; python_version >= "3.8" and python_version < "4.0" distro==1.9.0 ; python_version >= "3.8" and python_version < "4.0" dns-lexicon==3.17.0 ; python_version >= "3.8" and python_version < "4.0" -dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" +dnspython==2.6.1 ; python_version >= "3.8" and python_version < "4.0" docutils==0.20.1 ; python_version >= "3.8" and python_version < "4.0" dulwich==0.20.50 ; python_version >= "3.8" and python_version < "4.0" exceptiongroup==1.2.0 ; 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.1 ; python_version >= "3.8" and python_version < "4.0" fabric==3.2.2 ; python_version >= "3.8" and python_version < "4.0" -filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" -google-api-core==2.16.2 ; python_version >= "3.8" and python_version < "4.0" -google-api-python-client==2.116.0 ; python_version >= "3.8" and python_version < "4.0" +filelock==3.13.3 ; python_version >= "3.8" and python_version < "4.0" +google-api-core==2.18.0 ; python_version >= "3.8" and python_version < "4.0" +google-api-python-client==2.123.0 ; python_version >= "3.8" and python_version < "4.0" google-auth-httplib2==0.2.0 ; python_version >= "3.8" and python_version < "4.0" -google-auth==2.27.0 ; python_version >= "3.8" and python_version < "4.0" -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" +google-auth==2.29.0 ; python_version >= "3.8" and python_version < "4.0" +googleapis-common-protos==1.63.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.6 ; 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.1 ; python_version >= "3.8" and python_version < "4.0" +importlib-resources==6.4.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.13.2 ; python_version >= "3.8" and python_version < "4.0" -jaraco-classes==3.3.0 ; python_version >= "3.8" and python_version < "4.0" +jaraco-classes==3.3.1 ; python_version >= "3.8" and python_version < "4.0" +jaraco-context==4.3.0 ; python_version >= "3.8" and python_version < "4.0" +jaraco-functools==4.0.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.3 ; python_version >= "3.8" and python_version < "4.0" jmespath==1.0.1 ; python_version >= "3.8" and python_version < "4.0" josepy==1.14.0 ; python_version >= "3.8" and python_version < "4.0" jsonlines==4.0.0 ; python_version >= "3.8" and python_version < "4.0" -jsonpickle==3.0.2 ; python_version >= "3.8" and python_version < "4.0" +jsonpickle==3.0.3 ; python_version >= "3.8" and python_version < "4.0" jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" -keyring==24.3.0 ; python_version >= "3.8" and python_version < "4.0" +keyring==25.0.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.5 ; python_version >= "3.8" and python_version < "4.0" @@ -83,20 +86,20 @@ 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.2.0 ; python_version >= "3.8" and python_version < "4.0" -msgpack==1.0.7 ; python_version >= "3.8" and python_version < "4.0" +msgpack==1.0.8 ; 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.8.0 ; python_version >= "3.8" and python_version < "4.0" -nh3==0.2.15 ; python_version >= "3.8" and python_version < "4.0" +mypy==1.9.0 ; python_version >= "3.8" and python_version < "4.0" +nh3==0.2.17 ; 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" +packaging==24.0 ; python_version >= "3.8" and python_version < "4.0" paramiko==3.4.0 ; python_version >= "3.8" and python_version < "4.0" parsedatetime==2.6 ; python_version >= "3.8" and python_version < "4.0" parso==0.8.3 ; python_version >= "3.8" and python_version < "4.0" pexpect==4.9.0 ; python_version >= "3.8" and python_version < "4.0" pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "4.0" pip==24.0 ; python_version >= "3.8" and python_version < "4.0" -pkginfo==1.9.6 ; python_version >= "3.8" and python_version < "4.0" +pkginfo==1.10.0 ; 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.4.0 ; python_version >= "3.8" and python_version < "4.0" @@ -105,48 +108,49 @@ 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.43 ; python_version >= "3.8" and python_version < "4.0" -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" +proto-plus==1.23.0 ; python_version >= "3.8" and python_version < "4.0" +protobuf==4.25.3 ; python_version >= "3.8" and python_version < "4.0" ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "4.0" pure-eval==0.2.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.1 ; python_version >= "3.8" and python_version < "4.0" +pyasn1-modules==0.4.0 ; python_version >= "3.8" and python_version < "4.0" +pyasn1==0.6.0 ; python_version >= "3.8" and python_version < "4.0" pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" pylev==1.4.0 ; python_version >= "3.8" and python_version < "4.0" pylint==3.0.2 ; python_version >= "3.8" and python_version < "4.0" pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" pynsist==2.7 ; python_version >= "3.8" and python_version < "4.0" -pyopenssl==24.0.0 ; python_version >= "3.8" and python_version < "4.0" +pyopenssl==24.1.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" +pyparsing==3.1.2 ; python_version >= "3.8" and python_version < "4.0" +pyproject-api==1.6.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-cov==5.0.0 ; python_version >= "3.8" and python_version < "4.0" pytest-xdist==3.5.0 ; python_version >= "3.8" and python_version < "4.0" -pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" +pytest==8.1.1 ; 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-dateutil==2.9.0.post0 ; python_version >= "3.8" and python_version < "4.0" python-digitalocean==1.17.0 ; python_version >= "3.8" and python_version < "4.0" pytz==2024.1 ; 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.33.0 ; python_version >= "3.8" and python_version < "4.0" +readme-renderer==43.0 ; python_version >= "3.8" and python_version < "4.0" +referencing==0.34.0 ; python_version >= "3.8" and python_version < "4.0" requests-download==0.1.2 ; python_version >= "3.8" and python_version < "4.0" requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" -requests-oauthlib==1.3.1 ; python_version >= "3.8" and python_version < "4.0" +requests-oauthlib==2.0.0 ; python_version >= "3.8" and python_version < "4.0" requests-toolbelt==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.7.0 ; python_version >= "3.8" and python_version < "4.0" -rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" +rich==13.7.1 ; python_version >= "3.8" and python_version < "4.0" +rpds-py==0.18.0 ; python_version >= "3.8" and python_version < "4.0" rsa==4.9 ; python_version >= "3.8" and python_version < "4" -s3transfer==0.10.0 ; python_version >= "3.8" and python_version < "4.0" +s3transfer==0.10.1 ; 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.8.1 ; python_version >= "3.8" and python_version < "4.0" -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" +setuptools-rust==1.9.0 ; python_version >= "3.8" and python_version < "4.0" +setuptools==69.2.0 ; python_version >= "3.8" and python_version < "4.0" shellingham==1.5.4 ; python_version >= "3.8" and python_version < "4.0" six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" snowballstemmer==2.2.0 ; python_version >= "3.8" and python_version < "4.0" @@ -161,30 +165,30 @@ sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_version < "4.0" sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_version < "4.0" sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_version < "4.0" stack-data==0.6.3 ; python_version >= "3.8" and python_version < "4.0" -tldextract==5.1.1 ; python_version >= "3.8" and python_version < "4.0" +tldextract==5.1.2 ; python_version >= "3.8" and python_version < "4.0" tomli==2.0.1 ; python_version >= "3.8" and python_full_version <= "3.11.0a6" -tomlkit==0.12.3 ; python_version >= "3.8" and python_version < "4.0" -tox==3.28.0 ; python_version >= "3.8" and python_version < "4.0" -traitlets==5.14.1 ; 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==24.0.0.20240130 ; python_version >= "3.8" and python_version < "4.0" +tomlkit==0.12.4 ; python_version >= "3.8" and python_version < "4.0" +tox==4.4.7 ; python_version >= "3.8" and python_version < "4.0" +traitlets==5.14.2 ; python_version >= "3.8" and python_version < "4.0" +twine==5.0.0 ; python_version >= "3.8" and python_version < "4.0" +types-httplib2==0.22.0.20240310 ; python_version >= "3.8" and python_version < "4.0" +types-pyopenssl==24.0.0.20240311 ; 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.20240106 ; python_version >= "3.8" and python_version < "4.0" +types-python-dateutil==2.9.0.20240316 ; python_version >= "3.8" and python_version < "4.0" types-pytz==2024.1.0.20240203 ; python_version >= "3.8" and python_version < "4.0" -types-pywin32==306.0.0.20240130 ; python_version >= "3.8" and python_version < "4.0" +types-pywin32==306.0.0.20240319 ; 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==69.0.0.20240125 ; python_version >= "3.8" and python_version < "4.0" -types-six==1.16.21.20240106 ; python_version >= "3.8" and python_version < "4.0" +types-setuptools==69.2.0.20240317 ; python_version >= "3.8" and python_version < "4.0" +types-six==1.16.21.20240311 ; 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.9.0 ; python_version >= "3.8" and python_version < "4.0" +typing-extensions==4.10.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.18 ; 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.13 ; python_version >= "3.8" and python_version < "4.0" webencodings==0.5.1 ; python_version >= "3.8" and python_version < "4.0" -wheel==0.42.0 ; python_version >= "3.8" and python_version < "4.0" +wheel==0.43.0 ; python_version >= "3.8" and python_version < "4.0" wrapt==1.16.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" +zipp==3.18.1 ; python_version >= "3.8" and python_version < "4.0" From 39fda1d44d09a7b16a5580cdbd25d17bc7a7bce0 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Wed, 27 Mar 2024 14:16:40 -0700 Subject: [PATCH 02/13] make minor changes to support tox v4 based on https://tox.wiki/en/latest/upgrading.html --- .azure-pipelines/templates/jobs/packaging-jobs.yml | 2 +- certbot/docs/contributing.rst | 10 +++++----- tox.ini | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.azure-pipelines/templates/jobs/packaging-jobs.yml b/.azure-pipelines/templates/jobs/packaging-jobs.yml index 22f0f3790..d26f1d4d6 100644 --- a/.azure-pipelines/templates/jobs/packaging-jobs.yml +++ b/.azure-pipelines/templates/jobs/packaging-jobs.yml @@ -186,7 +186,7 @@ jobs: displayName: Install Certbot snap - script: | set -e - venv/bin/python -m tox -e integration-external,apacheconftest-external-with-pebble + venv/bin/python -m tox run -e integration-external,apacheconftest-external-with-pebble displayName: Run tox - job: snap_dns_run dependsOn: snaps_build diff --git a/certbot/docs/contributing.rst b/certbot/docs/contributing.rst index 1a6c402af..8a7ca935e 100644 --- a/certbot/docs/contributing.rst +++ b/certbot/docs/contributing.rst @@ -134,7 +134,7 @@ For debugging, we recommend putting Once you are done with your code changes, and the tests in ``foo_test.py`` pass, run all of the unit tests for Certbot and check for coverage with ``tox --e cover``. You should then check for code style with ``tox -e lint`` (all +-e cover``. You should then check for code style with ``tox run -e lint`` (all files) or ``pylint --rcfile=.pylintrc path/to/file.py`` (single file at a time). @@ -163,7 +163,7 @@ With a user allowed to access your local Docker daemon, run: .. code-block:: shell - tox -e integration + tox run -e integration Tests will be run using pytest. A test report and a code coverage report will be displayed at the end of the integration tests execution. @@ -485,7 +485,7 @@ annotations; we can find bugs in Certbot even without a fully annotated codebase Zulip wrote a `great guide`_ to using mypy. It’s useful, but you don’t have to read the whole thing to start contributing to Certbot. -To run mypy on Certbot, use ``tox -e mypy`` on a machine that has Python 3 installed. +To run mypy on Certbot, use ``tox run -e mypy`` on a machine that has Python 3 installed. Also note that OpenSSL, which we rely on, has type definitions for crypto but not SSL. We use both. Those imports should look like this: @@ -509,12 +509,12 @@ Steps: something we have the time and interest to review. 1. Write your code! When doing this, you should add :ref:`mypy type annotations ` for any functions you add or modify. You can check that - you've done this correctly by running ``tox -e mypy`` on a machine that has + you've done this correctly by running ``tox run -e mypy`` on a machine that has Python 3 installed. 2. Make sure your environment is set up properly and that you're in your virtualenv. You can do this by following the instructions in the :ref:`Getting Started ` section. -3. Run ``tox -e lint`` to check for pylint errors. Fix any errors. +3. Run ``tox run -e lint`` to check for pylint errors. Fix any errors. 4. Run ``tox --skip-missing-interpreters`` to run all the tests we recommend developers run locally. The ``--skip-missing-interpreters`` argument ignores missing versions of Python needed for running the tests. Fix any errors. diff --git a/tox.ini b/tox.ini index 8178771d4..cc83114c6 100644 --- a/tox.ini +++ b/tox.ini @@ -38,7 +38,7 @@ deps = -e certbot-dns-route53 -e certbot-dns-sakuracloud -e certbot-nginx -whitelist_externals = +allowlist_externals = echo false # This and the next few testenvs are a workaround for @@ -205,7 +205,7 @@ commands = docker build -t certbot-compatibility-test -f certbot-compatibility-test/Dockerfile . docker build -t apache-compat -f certbot-compatibility-test/Dockerfile-apache . docker run --rm -t apache-compat -c apache.tar.gz -vvvv -whitelist_externals = +allowlist_externals = docker passenv = DOCKER_* @@ -216,7 +216,7 @@ commands = docker build -t certbot-compatibility-test -f certbot-compatibility-test/Dockerfile . docker build -t nginx-compat -f certbot-compatibility-test/Dockerfile-nginx . docker run --rm -t nginx-compat -c nginx.tar.gz -vv -aie -whitelist_externals = +allowlist_externals = docker passenv = DOCKER_* From 4925f7193380c76159fb95f74db6db44462d64e3 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Wed, 27 Mar 2024 15:11:21 -0700 Subject: [PATCH 03/13] work around undocumented lack of ability to reference multi-named envs --- tox.ini | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index cc83114c6..6dd17c725 100644 --- a/tox.ini +++ b/tox.ini @@ -73,7 +73,7 @@ basepython = python3.8 setenv = CERTBOT_OLDEST=1 commands = {[testenv:py]commands} -[testenv:cover{,-posix}] +[testenv:cover] coverage_report = python -m coverage report # These coverage report commands are used on both posix and windows common_coverage_report_commands = @@ -98,6 +98,9 @@ commands = {[testenv:cover]coverage_report} --fail-under 100 --include certbot-apache/* {[testenv:cover]common_coverage_report_commands} +[testenv:cover-posix] +commands = {[testenv:cover]commands} + [testenv:cover-win] commands = {[testenv:py-win]commands} --cov --cov-report= From 87ab76fc7d1c5e2857d30bc75a258859373ccac3 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Wed, 27 Mar 2024 15:44:28 -0700 Subject: [PATCH 04/13] allowlist apache conf test external --- tox.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tox.ini b/tox.ini index 6dd17c725..24a5b0ff5 100644 --- a/tox.ini +++ b/tox.ini @@ -179,6 +179,8 @@ passenv = description = Run apacheconftest with pebble and Certbot outside of the tox virtual environment. deps = -e certbot-ci +allowlist_externals = + {toxinidir}/certbot-apache/certbot_apache/_internal/tests/apache-conf-files/apache-conf-test-pebble.py commands = {toxinidir}/certbot-apache/certbot_apache/_internal/tests/apache-conf-files/apache-conf-test-pebble.py --debian-modules @@ -186,6 +188,8 @@ commands = deps = {[testenv:apacheconftest]deps} {[testenv:apacheconftest-external-with-pebble]deps} +allowlist_externals = + {toxinidir}/certbot-apache/certbot_apache/_internal/tests/apache-conf-files/apache-conf-test-pebble.py commands = {[testenv:apacheconftest-external-with-pebble]commands} [testenv:nginxroundtrip] From 54b7b1883e90a25cd7757f47b770f09f1cc3ac52 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Wed, 27 Mar 2024 16:27:42 -0700 Subject: [PATCH 05/13] use legacy editable mode for oldest tests --- tox.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/tox.ini b/tox.ini index 24a5b0ff5..a1512a05d 100644 --- a/tox.ini +++ b/tox.ini @@ -71,6 +71,7 @@ commands = {[testenv:py]commands} # tools/pinning/oldest/pyproject.toml. basepython = python3.8 setenv = CERTBOT_OLDEST=1 +package = editable-legacy commands = {[testenv:py]commands} [testenv:cover] From 920b717c4598ad9c008cd8e86d1e365d2967c706 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Thu, 28 Mar 2024 15:34:24 -0700 Subject: [PATCH 06/13] update poetry version using urllib3 workaround --- tools/pinning/current/pyproject.toml | 6 +++- tools/requirements.txt | 52 ++++++++++++---------------- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/tools/pinning/current/pyproject.toml b/tools/pinning/current/pyproject.toml index 8a0661b58..bab653a27 100644 --- a/tools/pinning/current/pyproject.toml +++ b/tools/pinning/current/pyproject.toml @@ -8,6 +8,9 @@ license = "Apache License 2.0" [tool.poetry.dependencies] python = "^3.8" +# workaround for: https://github.com/python-poetry/poetry-plugin-export/issues/183 +urllib3 = ">=1.25.4,<1.27" + # Local dependencies # Any local packages that have dependencies on other local packages must be # listed below before the package it depends on. For instance, certbot depends @@ -68,7 +71,7 @@ cryptography = "!= 37.0.3" # If poetry>=1.3.0 is selected, multiple versions of virtualenv are selected # causing problems when exporting dependencies so let's pin poetry back until # https://github.com/python-poetry/poetry-plugin-export/issues/168 is resolved. -poetry = "<1.3.0" +poetry = ">=1.3.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 @@ -76,6 +79,7 @@ poetry = "<1.3.0" # deterministic builds. tox = ">=4" + [tool.poetry.dev-dependencies] [build-system] diff --git a/tools/requirements.txt b/tools/requirements.txt index e8019947b..cf1109fac 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -17,22 +17,22 @@ babel==2.14.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.1.2 ; python_version >= "3.8" and python_version < "4.0" beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4.0" -boto3==1.34.72 ; python_version >= "3.8" and python_version < "4.0" -botocore==1.34.72 ; python_version >= "3.8" and python_version < "4.0" -cachecontrol==0.12.14 ; python_version >= "3.8" and python_version < "4.0" +boto3==1.34.73 ; python_version >= "3.8" and python_version < "4.0" +botocore==1.34.73 ; python_version >= "3.8" and python_version < "4.0" +build==1.2.1 ; python_version >= "3.8" and python_version < "4.0" +cachecontrol==0.14.0 ; python_version >= "3.8" and python_version < "4.0" cachetools==5.3.3 ; python_version >= "3.8" and python_version < "4.0" -cachy==0.3.0 ; python_version >= "3.8" and python_version < "4.0" certifi==2024.2.2 ; python_version >= "3.8" and python_version < "4.0" cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0" charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" -cleo==1.0.0a5 ; python_version >= "3.8" and python_version < "4.0" +cleo==2.1.0 ; python_version >= "3.8" and python_version < "4.0" cloudflare==2.19.2 ; python_version >= "3.8" and python_version < "4.0" colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" configargparse==1.7 ; python_version >= "3.8" and python_version < "4.0" configobj==5.0.8 ; python_version >= "3.8" and python_version < "4.0" coverage==7.4.4 ; python_version >= "3.8" and python_version < "4.0" -crashtest==0.3.1 ; python_version >= "3.8" and python_version < "4.0" +crashtest==0.4.1 ; python_version >= "3.8" and python_version < "4.0" cryptography==42.0.5 ; python_version >= "3.8" and python_version < "4.0" cython==0.29.37 ; python_version >= "3.8" and python_version < "4.0" decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" @@ -43,32 +43,31 @@ distro==1.9.0 ; python_version >= "3.8" and python_version < "4.0" dns-lexicon==3.17.0 ; python_version >= "3.8" and python_version < "4.0" dnspython==2.6.1 ; python_version >= "3.8" and python_version < "4.0" docutils==0.20.1 ; python_version >= "3.8" and python_version < "4.0" -dulwich==0.20.50 ; python_version >= "3.8" and python_version < "4.0" +dulwich==0.21.7 ; python_version >= "3.8" and python_version < "4.0" exceptiongroup==1.2.0 ; 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.1 ; python_version >= "3.8" and python_version < "4.0" fabric==3.2.2 ; python_version >= "3.8" and python_version < "4.0" +fastjsonschema==2.19.1 ; python_version >= "3.8" and python_version < "4.0" filelock==3.13.3 ; python_version >= "3.8" and python_version < "4.0" google-api-core==2.18.0 ; python_version >= "3.8" and python_version < "4.0" -google-api-python-client==2.123.0 ; python_version >= "3.8" and python_version < "4.0" +google-api-python-client==2.124.0 ; python_version >= "3.8" and python_version < "4.0" google-auth-httplib2==0.2.0 ; python_version >= "3.8" and python_version < "4.0" google-auth==2.29.0 ; python_version >= "3.8" and python_version < "4.0" googleapis-common-protos==1.63.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.6 ; 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-metadata==7.1.0 ; python_version >= "3.8" and python_version < "4.0" importlib-resources==6.4.0 ; python_version >= "3.8" and python_version < "4.0" iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" +installer==0.7.0 ; python_version >= "3.8" and python_version < "4.0" invoke==2.2.0 ; python_version >= "3.8" and python_version < "4.0" ipdb==0.13.13 ; python_version >= "3.8" and python_version < "4.0" ipython==8.12.3 ; python_version >= "3.8" and python_version < "4.0" isodate==0.6.1 ; python_version >= "3.8" and python_version < "4.0" isort==5.13.2 ; python_version >= "3.8" and python_version < "4.0" jaraco-classes==3.3.1 ; python_version >= "3.8" and python_version < "4.0" -jaraco-context==4.3.0 ; python_version >= "3.8" and python_version < "4.0" -jaraco-functools==4.0.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.3 ; python_version >= "3.8" and python_version < "4.0" @@ -76,10 +75,7 @@ jmespath==1.0.1 ; python_version >= "3.8" and python_version < "4.0" josepy==1.14.0 ; python_version >= "3.8" and python_version < "4.0" jsonlines==4.0.0 ; python_version >= "3.8" and python_version < "4.0" jsonpickle==3.0.3 ; python_version >= "3.8" and python_version < "4.0" -jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" -jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" -keyring==25.0.0 ; python_version >= "3.8" and python_version < "4.0" -lockfile==0.12.2 ; python_version >= "3.8" and python_version < "4.0" +keyring==24.3.1 ; python_version >= "3.8" and python_version < "4.0" markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" markupsafe==2.1.5 ; python_version >= "3.8" and python_version < "4.0" matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_version < "4.0" @@ -100,13 +96,12 @@ pexpect==4.9.0 ; python_version >= "3.8" and python_version < "4.0" pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "4.0" pip==24.0 ; python_version >= "3.8" and python_version < "4.0" pkginfo==1.10.0 ; 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" +platformdirs==4.2.0 ; python_version >= "3.8" and python_version < "4.0" pluggy==1.4.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" +poetry-core==1.9.0 ; python_version >= "3.8" and python_version < "4.0" +poetry-plugin-export==1.7.1 ; python_version >= "3.8" and python_version < "4.0" +poetry==1.8.2 ; python_version >= "3.8" and python_version < "4.0" prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "4.0" proto-plus==1.23.0 ; python_version >= "3.8" and python_version < "4.0" protobuf==4.25.3 ; python_version >= "3.8" and python_version < "4.0" @@ -116,7 +111,6 @@ pyasn1-modules==0.4.0 ; python_version >= "3.8" and python_version < "4.0" pyasn1==0.6.0 ; python_version >= "3.8" and python_version < "4.0" pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" -pylev==1.4.0 ; python_version >= "3.8" and python_version < "4.0" pylint==3.0.2 ; python_version >= "3.8" and python_version < "4.0" pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" pynsist==2.7 ; python_version >= "3.8" and python_version < "4.0" @@ -124,6 +118,7 @@ pyopenssl==24.1.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.2 ; python_version >= "3.8" and python_version < "4.0" pyproject-api==1.6.1 ; python_version >= "3.8" and python_version < "4.0" +pyproject-hooks==1.0.0 ; python_version >= "3.8" and python_version < "4.0" pyrfc3339==1.1 ; python_version >= "3.8" and python_version < "4.0" pytest-cov==5.0.0 ; python_version >= "3.8" and python_version < "4.0" pytest-xdist==3.5.0 ; python_version >= "3.8" and python_version < "4.0" @@ -135,16 +130,15 @@ pytz==2024.1 ; 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" +rapidfuzz==3.7.0 ; python_version >= "3.8" and python_version < "4.0" readme-renderer==43.0 ; python_version >= "3.8" and python_version < "4.0" -referencing==0.34.0 ; python_version >= "3.8" and python_version < "4.0" requests-download==0.1.2 ; python_version >= "3.8" and python_version < "4.0" requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" requests-oauthlib==2.0.0 ; python_version >= "3.8" and python_version < "4.0" -requests-toolbelt==0.9.1 ; python_version >= "3.8" and python_version < "4.0" +requests-toolbelt==1.0.0 ; python_version >= "3.8" and python_version < "4.0" requests==2.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.7.1 ; python_version >= "3.8" and python_version < "4.0" -rpds-py==0.18.0 ; python_version >= "3.8" and python_version < "4.0" rsa==4.9 ; python_version >= "3.8" and python_version < "4" s3transfer==0.10.1 ; 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" @@ -168,8 +162,9 @@ stack-data==0.6.3 ; python_version >= "3.8" and python_version < "4.0" tldextract==5.1.2 ; python_version >= "3.8" and python_version < "4.0" tomli==2.0.1 ; python_version >= "3.8" and python_full_version <= "3.11.0a6" tomlkit==0.12.4 ; python_version >= "3.8" and python_version < "4.0" -tox==4.4.7 ; python_version >= "3.8" and python_version < "4.0" +tox==4.14.2 ; python_version >= "3.8" and python_version < "4.0" traitlets==5.14.2 ; python_version >= "3.8" and python_version < "4.0" +trove-classifiers==2024.3.25 ; python_version >= "3.8" and python_version < "4.0" twine==5.0.0 ; python_version >= "3.8" and python_version < "4.0" types-httplib2==0.22.0.20240310 ; python_version >= "3.8" and python_version < "4.0" types-pyopenssl==24.0.0.20240311 ; python_version >= "3.8" and python_version < "4.0" @@ -184,11 +179,10 @@ types-urllib3==1.26.25.14 ; python_version >= "3.8" and python_version < "4.0" typing-extensions==4.10.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.18 ; python_version < "4.0" and python_version >= "3.8" -virtualenv==20.21.1 ; python_version >= "3.8" and python_version < "4.0" +virtualenv==20.25.1 ; python_version >= "3.8" and python_version < "4.0" wcwidth==0.2.13 ; python_version >= "3.8" and python_version < "4.0" -webencodings==0.5.1 ; python_version >= "3.8" and python_version < "4.0" wheel==0.43.0 ; python_version >= "3.8" and python_version < "4.0" wrapt==1.16.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" +xattr==1.1.0 ; 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.18.1 ; python_version >= "3.8" and python_version < "4.0" From 8978e4dbffbe721e98f0a905505371522235ee59 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Thu, 28 Mar 2024 15:42:41 -0700 Subject: [PATCH 07/13] remove useless editable-legacy flag --- =64 | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tox.ini | 1 - 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 =64 diff --git a/=64 b/=64 new file mode 100644 index 000000000..88ef8e2e7 --- /dev/null +++ b/=64 @@ -0,0 +1,73 @@ +Obtaining file:///home/erica/certbot/acme + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-apache + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-cloudflare + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-digitalocean + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-dnsimple + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-dnsmadeeasy + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-gehirn + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-google + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-linode + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-luadns + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-nsone + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-ovh + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-rfc2136 + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-route53 + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-dns-sakuracloud + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot-nginx + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Obtaining file:///home/erica/certbot/certbot + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Requirement already satisfied: setuptools in ./.tox/oldest/lib/python3.8/site-packages (41.6.0) +Collecting cryptography>=3.2.1 + Using cached cryptography-3.2.1-cp35-abi3-manylinux2010_x86_64.whl.metadata (5.2 kB) +Collecting josepy>=1.13.0 + Using cached josepy-1.14.0-py3-none-any.whl.metadata (1.8 kB) +Collecting PyOpenSSL!=23.1.0,>=17.5.0 + Using cached pyOpenSSL-17.5.0-py2.py3-none-any.whl.metadata (5.1 kB) +Collecting pyrfc3339 + Using cached pyRFC3339-1.0-py2.py3-none-any.whl.metadata (1.7 kB) +Collecting pytz>=2019.3 + Using cached pytz-2019.3-py2.py3-none-any.whl.metadata (20 kB) +Collecting requests>=2.20.0 + Using cached requests-2.20.0-py2.py3-none-any.whl.metadata (5.6 kB) +Collecting importlib_resources>=1.3.1 + Using cached importlib_resources-6.1.1-py3-none-any.whl.metadata (4.1 kB) +Collecting pytest + Using cached pytest-7.4.3-py3-none-any.whl.metadata (7.9 kB) +Collecting pytest-xdist + Using cached pytest_xdist-3.5.0-py3-none-any.whl.metadata (3.1 kB) +Collecting typing-extensions + Using cached typing_extensions-4.8.0-py3-none-any.whl.metadata (3.0 kB) +INFO: pip is looking at multiple versions of certbot-apache[dev] to determine which version is compatible with other requirements. This could take a while. diff --git a/tox.ini b/tox.ini index a1512a05d..24a5b0ff5 100644 --- a/tox.ini +++ b/tox.ini @@ -71,7 +71,6 @@ commands = {[testenv:py]commands} # tools/pinning/oldest/pyproject.toml. basepython = python3.8 setenv = CERTBOT_OLDEST=1 -package = editable-legacy commands = {[testenv:py]commands} [testenv:cover] From 7f885292f924f3588375948b7484d168deca6eca Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Thu, 28 Mar 2024 15:49:20 -0700 Subject: [PATCH 08/13] why does this fix it????? --- tox.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/tox.ini b/tox.ini index 24a5b0ff5..45e58ca88 100644 --- a/tox.ini +++ b/tox.ini @@ -22,6 +22,7 @@ setenv = install_command = python -I {toxinidir}/tools/pip_install.py {opts} {packages} deps = -e acme[test] + -e certbot -e certbot[test] !win: -e certbot-apache[dev] -e certbot-dns-cloudflare From 57bb4e40b7b8104ac7238f72ebd9f0be3fada8f2 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Thu, 28 Mar 2024 15:52:11 -0700 Subject: [PATCH 09/13] remove accidentally checked in file --- =64 | 73 ------------------------------------------------------------- 1 file changed, 73 deletions(-) delete mode 100644 =64 diff --git a/=64 b/=64 deleted file mode 100644 index 88ef8e2e7..000000000 --- a/=64 +++ /dev/null @@ -1,73 +0,0 @@ -Obtaining file:///home/erica/certbot/acme - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-apache - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-cloudflare - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-digitalocean - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-dnsimple - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-dnsmadeeasy - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-gehirn - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-google - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-linode - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-luadns - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-nsone - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-ovh - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-rfc2136 - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-route53 - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-dns-sakuracloud - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot-nginx - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Obtaining file:///home/erica/certbot/certbot - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Requirement already satisfied: setuptools in ./.tox/oldest/lib/python3.8/site-packages (41.6.0) -Collecting cryptography>=3.2.1 - Using cached cryptography-3.2.1-cp35-abi3-manylinux2010_x86_64.whl.metadata (5.2 kB) -Collecting josepy>=1.13.0 - Using cached josepy-1.14.0-py3-none-any.whl.metadata (1.8 kB) -Collecting PyOpenSSL!=23.1.0,>=17.5.0 - Using cached pyOpenSSL-17.5.0-py2.py3-none-any.whl.metadata (5.1 kB) -Collecting pyrfc3339 - Using cached pyRFC3339-1.0-py2.py3-none-any.whl.metadata (1.7 kB) -Collecting pytz>=2019.3 - Using cached pytz-2019.3-py2.py3-none-any.whl.metadata (20 kB) -Collecting requests>=2.20.0 - Using cached requests-2.20.0-py2.py3-none-any.whl.metadata (5.6 kB) -Collecting importlib_resources>=1.3.1 - Using cached importlib_resources-6.1.1-py3-none-any.whl.metadata (4.1 kB) -Collecting pytest - Using cached pytest-7.4.3-py3-none-any.whl.metadata (7.9 kB) -Collecting pytest-xdist - Using cached pytest_xdist-3.5.0-py3-none-any.whl.metadata (3.1 kB) -Collecting typing-extensions - Using cached typing_extensions-4.8.0-py3-none-any.whl.metadata (3.0 kB) -INFO: pip is looking at multiple versions of certbot-apache[dev] to determine which version is compatible with other requirements. This could take a while. From 4e6934a4b63e27b1ef2d41fab0537955d82e1557 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Thu, 28 Mar 2024 17:36:02 -0700 Subject: [PATCH 10/13] new tox requires local scripts to be explicitly allowlisted --- tox.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tox.ini b/tox.ini index 45e58ca88..5e923dfd0 100644 --- a/tox.ini +++ b/tox.ini @@ -314,3 +314,5 @@ setenv = AWS_DEFAULT_REGION=us-east-1 changedir = letstest deps = -e {toxinidir}/letstest commands = {toxinidir}/tools/retry.sh letstest targets/targets.yaml {env:AWS_EC2_PEM_FILE} SET_BY_ENV scripts/test_apache2.sh --repo {toxinidir} +allowlist_externals = + {toxinidir}/tools/retry.sh From 54dd12cd572ffd4e60dbb27ec49270b78a69b946 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Thu, 28 Mar 2024 18:05:47 -0700 Subject: [PATCH 11/13] update azure environment passing to new required but undocumented format --- .azure-pipelines/templates/jobs/extended-tests-jobs.yml | 2 +- .azure-pipelines/templates/steps/tox-steps.yml | 2 +- tox.ini | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/templates/jobs/extended-tests-jobs.yml b/.azure-pipelines/templates/jobs/extended-tests-jobs.yml index ab15c8c8d..09d0e22c7 100644 --- a/.azure-pipelines/templates/jobs/extended-tests-jobs.yml +++ b/.azure-pipelines/templates/jobs/extended-tests-jobs.yml @@ -18,7 +18,7 @@ jobs: PYTHON_VERSION: 3.11 TOXENV: py311 linux-isolated: - TOXENV: 'isolated-{acme,certbot,apache,cloudflare,digitalocean,dnsimple,dnsmadeeasy,gehirn,google,linode,luadns,nsone,ovh,rfc2136,route53,sakuracloud,nginx}' + TOXENV: 'isolated-acme,isolated-certbot,isolated-apache,isolated-cloudflare,isolated-digitalocean,isolated-dnsimple,isolated-dnsmadeeasy,isolated-gehirn,isolated-google,isolated-linode,isolated-luadns,isolated-nsone,isolated-ovh,isolated-rfc2136,isolated-route53,isolated-sakuracloud,isolated-nginx' linux-boulder-v2-integration-certbot-oldest: PYTHON_VERSION: 3.8 TOXENV: integration-certbot-oldest diff --git a/.azure-pipelines/templates/steps/tox-steps.yml b/.azure-pipelines/templates/steps/tox-steps.yml index 6a257821b..156bbeaa2 100644 --- a/.azure-pipelines/templates/steps/tox-steps.yml +++ b/.azure-pipelines/templates/steps/tox-steps.yml @@ -44,7 +44,7 @@ steps: export TARGET_BRANCH="`echo "${BUILD_SOURCEBRANCH}" | sed -E 's!refs/(heads|tags)/!!g'`" [ -z "${SYSTEM_PULLREQUEST_TARGETBRANCH}" ] || export TARGET_BRANCH="${SYSTEM_PULLREQUEST_TARGETBRANCH}" env - python3 -m tox + python3 -m tox run env: AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID) AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY) diff --git a/tox.ini b/tox.ini index 5e923dfd0..6b710906e 100644 --- a/tox.ini +++ b/tox.ini @@ -2,6 +2,7 @@ # mypy doesn't current pass for us on Windows. Fixing that is being tracked by # https://github.com/certbot/certbot/issues/7803. envlist = {cover,lint}-{win,posix},mypy + skipsdist = true [base] @@ -99,6 +100,7 @@ commands = {[testenv:cover]coverage_report} --fail-under 100 --include certbot-apache/* {[testenv:cover]common_coverage_report_commands} +# Another workaround for https://github.com/tox-dev/tox/issues/2858 in tox v4. [testenv:cover-posix] commands = {[testenv:cover]commands} From 90348bde4e703a297503acf55ee8bd29f263545a Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Fri, 29 Mar 2024 11:24:51 -0700 Subject: [PATCH 12/13] allowlist the apache conf test farm test --- tox.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tox.ini b/tox.ini index 6b710906e..1ad33dc27 100644 --- a/tox.ini +++ b/tox.ini @@ -177,6 +177,8 @@ commands = {toxinidir}/certbot-apache/certbot_apache/_internal/tests/apache-conf-files/apache-conf-test --debian-modules passenv = SERVER +allowlist_externals = + {toxinidir}/certbot-apache/certbot_apache/_internal/tests/apache-conf-files/apache-conf-test [testenv:apacheconftest-external-with-pebble] description = Run apacheconftest with pebble and Certbot outside of the tox virtual environment. From cca30ace316d4d0ae3c4ff36d9ec92fa32bb7b7d Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Fri, 29 Mar 2024 12:02:51 -0700 Subject: [PATCH 13/13] actually completely unpin poetry --- tools/pinning/current/pyproject.toml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tools/pinning/current/pyproject.toml b/tools/pinning/current/pyproject.toml index bab653a27..1034ee8b5 100644 --- a/tools/pinning/current/pyproject.toml +++ b/tools/pinning/current/pyproject.toml @@ -68,15 +68,8 @@ pylint = "3.0.2" # Making sure that it would not get installed (Fixing https://github.com/certbot/certbot/issues/9336) cryptography = "!= 37.0.3" -# If poetry>=1.3.0 is selected, multiple versions of virtualenv are selected -# causing problems when exporting dependencies so let's pin poetry back until -# https://github.com/python-poetry/poetry-plugin-export/issues/168 is resolved. -poetry = ">=1.3.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. +# Branch 4.x of tox introduces backward incompatibility changes, so require a newer +# version of tox to keep deterministic builds. tox = ">=4"