mirror of
https://github.com/certbot/certbot.git
synced 2026-05-17 19:39:07 -04: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>
26 lines
1.6 KiB
INI
26 lines
1.6 KiB
INI
# This file isn't used while testing packages in tools/_release.sh so any
|
|
# settings we want to also change there must be added to the release script
|
|
# directly.
|
|
[pytest]
|
|
# Warnings being triggered by our plugins using deprecated features in
|
|
# acme/certbot should be fixed by having our plugins no longer using the
|
|
# deprecated code rather than adding them to the list of ignored warnings here.
|
|
# Fixing things in this way prevents us from shipping packages raising our own
|
|
# deprecation warnings and gives time for plugins that don't use the deprecated
|
|
# API to propagate, especially for plugins packaged as an external snap, before
|
|
# we release breaking changes.
|
|
#
|
|
# 1) In v2.28.0, google-api-core added an annoying message that the current python's EOL
|
|
# is coming up. We deprecate python versions on schedule, so mostly this is just an
|
|
# annoyance for our own tests, and can probably be silenced forever.
|
|
# 2) cloudflare 4.x imports pydantic.v1 for compatibility, which emits a
|
|
# UserWarning on Python 3.14+. Cloudflare plan to add official 3.13/3.14
|
|
# support in their upcoming v5 release; track progress (and remove this
|
|
# entry once released) via https://github.com/cloudflare/cloudflare-python/issues/2679
|
|
# When this pytest.ini entry is removed, the warnings filter at the top of
|
|
# certbot-dns-cloudflare/src/certbot_dns_cloudflare/_internal/dns_cloudflare.py
|
|
# should be removed as well.
|
|
filterwarnings =
|
|
error
|
|
ignore:You are using a Python version (.*) which Google will stop supporting:FutureWarning
|
|
ignore:Core Pydantic V1 functionality:UserWarning
|