dnspython breaking changes
Every breaking API change we have recorded in dnspython on PyPI: 569 breaking changes in 2 versions. Below are its newest 2 versions, removals and renames first, each with its source.
Newest change October 9, 2026

On this page
2.9.0
- Removed
The minimum supported Python is now 3.11. Users on older Python versions must upgrade Python before installing this release. github.com - Removed
dns.rdtypes.ANY.NSEC3.b32_hex_to_normal
dns.rdtypes.ANY.NSEC3.b32_hex_to_normal was removed in dnspython 2.9.0 pypi.org - Removed
dns.rdtypes.ANY.NSEC3.b32_normal_to_hex
dns.rdtypes.ANY.NSEC3.b32_normal_to_hex was removed in dnspython 2.9.0 pypi.org - Signature changed
dns.asyncquery.https
Was async def https(q: dns.message.Message, where: str, timeout: float | None = None, port: int = 443, source: str | None = None, source_port: int = 0, one_rr_per_rrset: bool = False, ignore_trailing: bool = False, client... pypi.org - Signature changed
dns.asyncquery.inbound_xfr
Was async def inbound_xfr(where: str, txn_manager: dns.transaction.TransactionManager, query: dns.message.Message | None = None, port: int = 53, timeout: float | None = None, lifetime: float | None = None, source: str | None = None... pypi.org - Signature changed
dns.asyncquery.make_ssl_context
Was def make_ssl_context(verify: bool | str = True, check_hostname: bool = True, alpns: list[str] | None = None) -> ssl.SSLContext; now def make_ssl_context(verify: bool | str | os.PathLike = True, check_hostname: bool = True, alpns... pypi.org - Signature changed
dns.asyncquery.quic
Was async def quic(q: dns.message.Message, where: str, timeout: float | None = None, port: int = 853, source: str | None = None, source_port: int = 0, one_rr_per_rrset: bool = False, ignore_trailing: bool = False, connection... pypi.org - Signature changed
dns.asyncquery.receive_tcp
Was async def receive_tcp(sock: dns.asyncbackend.StreamSocket, expiration: float | None = None, one_rr_per_rrset: bool = False, keyring: Dict[dns.name.Name, dns.tsig.Key] | None = None, request_mac: bytes | None = b'', ignore_trailing... pypi.org - Signature changed
dns.asyncquery.receive_udp
Was async def receive_udp(sock: dns.asyncbackend.DatagramSocket, destination: Any | None = None, expiration: float | None = None, ignore_unexpected: bool = False, one_rr_per_rrset: bool = False, keyring: Dict[dns.name.Name, dns.tsig.Key] |... pypi.org - Signature changed
dns.asyncquery.send_tcp
Was async def send_tcp(sock: dns.asyncbackend.StreamSocket, what: dns.message.Message | bytes, expiration: float | None = None) -> Tuple[int, float]; now async def send_tcp(sock: dns.asyncbackend.StreamSocket, what: dns.message.Message |... pypi.org
And 298 more in this version.
2.8.0
- Removed
dns.asyncquery.ssl.CERT_NONE
dns.asyncquery.ssl.CERT_NONE was removed in dnspython 2.8.0 pypi.org - Removed
dns.asyncquery.ssl.create_default_context
dns.asyncquery.ssl.create_default_context was removed in dnspython 2.8.0 pypi.org - Removed
dns.asyncquery.ssl.SSLContext
dns.asyncquery.ssl.SSLContext was removed in dnspython 2.8.0 pypi.org - Removed
dns.asyncquery.ssl.SSLSocket
dns.asyncquery.ssl.SSLSocket was removed in dnspython 2.8.0 pypi.org - Removed
dns.asyncquery.ssl.WantReadException
dns.asyncquery.ssl.WantReadException was removed in dnspython 2.8.0 pypi.org - Removed
dns.asyncquery.ssl.WantWriteException
dns.asyncquery.ssl.WantWriteException was removed in dnspython 2.8.0 pypi.org - Default changed
The package now requires Python 3.10 or later; older Python versions are no longer supported. Users on older Python must upgrade before installing this release. github.com - Signature changed
dns.asyncbackend.Backend.name
Was def name(self); now def name(self) -> str. pypi.org - Signature changed
dns.asyncquery.https
Was async def https(q: dns.message.Message, where: str, timeout: Optional[float] = None, port: int = 443, source: Optional[str] = None, source_port: int = 0, one_rr_per_rrset: bool = False, ignore_trailing: bool = False, client... pypi.org - Signature changed
dns.asyncquery.inbound_xfr
Was async def inbound_xfr(where: str, txn_manager: dns.transaction.TransactionManager, query: Optional[dns.message.Message] = None, port: int = 53, timeout: Optional[float] = None, lifetime: Optional[float] = None, source: Optional[str] =... pypi.org
And 251 more in this version.
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The API reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

Put your code on continuous management.
Scan a public repository now, or give your agent one line.
See how out of date your code is.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp