mirror of
https://github.com/certbot/certbot.git
synced 2026-07-23 14:23:53 +02:00
## Summary - Migrate `certbot-dns-cloudflare` from the archived `python-cloudflare` 2.x library (`import CloudFlare`) to the actively maintained Cloudflare Python SDK 4.x (`import cloudflare`) - Update all API calls to the new SDK surface: `dns.records.create/list/delete`, `zones.list`, typed response objects instead of dicts - Replace `CloudFlare.exceptions.CloudFlareAPIError` with `cloudflare.APIStatusError` and extract CF error codes from `response.json()` - Bump dependency from `cloudflare>=2.19, <2.20` to `cloudflare>=4.0` - Update oldest pinning from `cloudflare 2.19` to `4.0.0` - Update all test mocks and assertions accordingly Fixes #9938 ## API Migration | Operation | Old 2.x | New 4.x | |---|---|---| | Import | `import CloudFlare` | `import cloudflare` | | Client (token) | `CloudFlare.CloudFlare(token=t)` | `cloudflare.Cloudflare(api_token=t)` | | Client (key) | `CloudFlare.CloudFlare(email, key)` | `cloudflare.Cloudflare(api_email=e, api_key=k)` | | List zones | `cf.zones.get(params={...})` → `list[dict]` | `cf.zones.list(name=n)` → iterable of Zone objects | | Create record | `cf.zones.dns_records.post(zone_id, data={...})` | `cf.dns.records.create(zone_id=id, **data)` | | List records | `cf.zones.dns_records.get(zone_id, params={...})` | `cf.dns.records.list(zone_id=id, type=..., ...)` | | Delete record | `cf.zones.dns_records.delete(zone_id, record_id)` | `cf.dns.records.delete(dns_record_id=rid, zone_id=zid)` | | Exceptions | `CloudFlare.exceptions.CloudFlareAPIError` | `cloudflare.APIStatusError` | ## Test plan - [x] All 20 existing tests pass with updated mocks - [x] Credentials INI file format is unchanged — no user-facing config changes - [x] Live dry-run renewal tested successfully across 5 domains --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Ember <BeigeBox@users.noreply.github.com> Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
107 lines
4.8 KiB
Plaintext
107 lines
4.8 KiB
Plaintext
# This file was generated by tools/pinning/oldest/repin.sh and can be updated using
|
|
# that script.
|
|
annotated-types==0.7.0 ; python_version == "3.10"
|
|
anyio==4.12.1 ; python_version == "3.10"
|
|
apacheconfig==0.3.2 ; python_version == "3.10"
|
|
asn1crypto==0.24.0 ; python_version == "3.10"
|
|
astroid==4.0.4 ; python_version == "3.10"
|
|
beautifulsoup4==4.14.3 ; python_version == "3.10"
|
|
boto3==1.20.34 ; python_version == "3.10"
|
|
botocore==1.23.34 ; python_version == "3.10"
|
|
cachetools==5.5.2 ; python_version == "3.10"
|
|
certifi==2026.2.25 ; python_version == "3.10"
|
|
cffi==1.14.1 ; python_version == "3.10"
|
|
chardet==3.0.4 ; python_version == "3.10"
|
|
cloudflare==4.0.0 ; python_version == "3.10"
|
|
colorama==0.4.6 ; (sys_platform == "win32" or platform_system == "Windows") and python_version == "3.10"
|
|
configargparse==1.5.3 ; python_version == "3.10"
|
|
configobj==5.0.6 ; python_version == "3.10"
|
|
coverage==7.13.4 ; python_version == "3.10"
|
|
cryptography==43.0.0 ; python_version == "3.10"
|
|
cython==0.29.37 ; python_version == "3.10"
|
|
dill==0.4.1 ; python_version == "3.10"
|
|
distlib==0.4.0 ; python_version == "3.10"
|
|
distro==1.7.0 ; python_version == "3.10"
|
|
dns-lexicon==3.15.1 ; python_version == "3.10"
|
|
dnspython==2.6.1 ; python_version == "3.10"
|
|
exceptiongroup==1.3.1 ; python_version == "3.10"
|
|
execnet==2.1.2 ; python_version == "3.10"
|
|
filelock==3.25.0 ; python_version == "3.10"
|
|
funcsigs==0.4 ; python_version == "3.10"
|
|
google-api-python-client==1.6.5 ; python_version == "3.10"
|
|
google-auth==2.16.0 ; python_version == "3.10"
|
|
h11==0.16.0 ; python_version == "3.10"
|
|
httpcore==1.0.9 ; python_version == "3.10"
|
|
httplib2==0.9.2 ; python_version == "3.10"
|
|
httpx==0.28.1 ; python_version == "3.10"
|
|
idna==2.8 ; python_version == "3.10"
|
|
iniconfig==2.3.0 ; python_version == "3.10"
|
|
ipaddress==1.0.16 ; python_version == "3.10"
|
|
isort==8.0.1 ; python_version == "3.10"
|
|
jmespath==0.10.0 ; python_version == "3.10"
|
|
josepy==2.2.0 ; python_version == "3.10"
|
|
jsonpickle==4.1.1 ; python_version == "3.10"
|
|
librt==0.8.1 ; python_version == "3.10" and platform_python_implementation != "PyPy"
|
|
mccabe==0.7.0 ; python_version == "3.10"
|
|
mypy-extensions==1.1.0 ; python_version == "3.10"
|
|
mypy==1.19.1 ; python_version == "3.10"
|
|
ndg-httpsclient==0.3.2 ; python_version == "3.10"
|
|
oauth2client==4.1.3 ; python_version == "3.10"
|
|
packaging==26.0 ; python_version == "3.10"
|
|
parsedatetime==2.6 ; python_version == "3.10"
|
|
pathspec==1.0.4 ; python_version == "3.10"
|
|
pbr==1.8.0 ; python_version == "3.10"
|
|
pip==26.0.1 ; python_version == "3.10"
|
|
platformdirs==4.9.2 ; python_version == "3.10"
|
|
pluggy==1.6.0 ; python_version == "3.10"
|
|
ply==3.4 ; python_version == "3.10"
|
|
py==1.11.0 ; python_version == "3.10"
|
|
pyasn1-modules==0.4.1 ; python_version == "3.10"
|
|
pyasn1==0.4.8 ; python_version == "3.10"
|
|
pycparser==2.14 ; python_version == "3.10"
|
|
pydantic-core==2.41.5 ; python_version == "3.10"
|
|
pydantic==2.12.5 ; python_version == "3.10"
|
|
pygments==2.19.2 ; python_version == "3.10"
|
|
pylint==4.0.5 ; python_version == "3.10"
|
|
pyopenssl==25.0.0 ; python_version == "3.10"
|
|
pyotp==2.9.0 ; python_version == "3.10"
|
|
pyparsing==3.0.0 ; python_version == "3.10"
|
|
pyrfc3339==1.0 ; python_version == "3.10"
|
|
pytest-cov==7.0.0 ; python_version == "3.10"
|
|
pytest-xdist==3.8.0 ; python_version == "3.10"
|
|
pytest==9.0.2 ; python_version == "3.10"
|
|
python-augeas==0.5.0 ; python_version == "3.10"
|
|
python-dateutil==2.9.0.post0 ; python_version == "3.10"
|
|
python-digitalocean==1.15.0 ; python_version == "3.10"
|
|
python-discovery==1.1.0 ; python_version == "3.10"
|
|
pytz==2026.1.post1 ; python_version == "3.10"
|
|
pywin32==311 ; python_version == "3.10" and sys_platform == "win32"
|
|
pyyaml==6.0.3 ; python_version == "3.10"
|
|
requests-file==3.0.1 ; python_version == "3.10"
|
|
requests==2.25.1 ; python_version == "3.10"
|
|
rsa==4.9.1 ; python_version == "3.10"
|
|
ruff==0.15.4 ; python_version == "3.10"
|
|
s3transfer==0.5.2 ; python_version == "3.10"
|
|
setuptools==82.0.0 ; python_version == "3.10"
|
|
six==1.16.0 ; python_version == "3.10"
|
|
sniffio==1.3.1 ; python_version == "3.10"
|
|
soupsieve==2.8.3 ; python_version == "3.10"
|
|
tldextract==5.3.1 ; python_version == "3.10"
|
|
tomli==2.4.0 ; python_version == "3.10"
|
|
tomlkit==0.14.0 ; python_version == "3.10"
|
|
tox==3.28.0 ; python_version == "3.10"
|
|
types-httplib2==0.31.2.20260125 ; python_version == "3.10"
|
|
types-pyrfc3339==2.0.1.20250825 ; python_version == "3.10"
|
|
types-python-dateutil==2.9.0.20260302 ; python_version == "3.10"
|
|
types-pywin32==311.0.0.20251008 ; python_version == "3.10"
|
|
types-requests==2.31.0.6 ; python_version == "3.10"
|
|
types-setuptools==82.0.0.20260210 ; python_version == "3.10"
|
|
types-urllib3==1.26.25.14 ; python_version == "3.10"
|
|
typing-extensions==4.15.0 ; python_version == "3.10"
|
|
typing-inspection==0.4.2 ; python_version == "3.10"
|
|
uritemplate==3.0.1 ; python_version == "3.10"
|
|
urllib3==1.26.5 ; python_version == "3.10"
|
|
uv==0.10.8 ; python_version == "3.10"
|
|
virtualenv==21.1.0 ; python_version == "3.10"
|
|
wheel==0.46.3 ; python_version == "3.10"
|