Changelog¶
v0.2.0¶
(2026-05-20)
Bug fixes¶
Matched the
.localmDNS suffix case-insensitively so hostnames such asMyHost.LOCALare routed through mDNS as required by RFC 6762 – by @aiolibsbot.Related issues and pull requests on GitHub: #65.
Cancelled the in-flight mDNS and DNS lookup tasks when
AsyncDualMDNSResolver.resolve()is itself cancelled, so a cancelled lookup no longer orphans tasks that keep running against the sharedzeroconfinstance – by @bdraco.Related issues and pull requests on GitHub: #69.
Made resolver
close()idempotent – a second call on a resolver that owns itsAsyncZeroconfno longer raisesAttributeError– by @aiolibsbot.Related issues and pull requests on GitHub: #74.
Stopped
AsyncDualMDNSResolverfrom returning the same address twice when the mDNS and DNS resolvers agree on a.localname – by @aiolibsbot.Related issues and pull requests on GitHub: #87.
Features¶
Added async context manager support to
AsyncMDNSResolverandAsyncDualMDNSResolver, soasync withcloses the resolver automatically – by @aiolibsbot.Related issues and pull requests on GitHub: #90.
Removals and backward incompatible breaking changes¶
Improved documentation¶
Corrected the public API module docstring (it described an unrelated project), fixed a grammar error in the package docstring, and normalized the indentation of the class directives in the API reference so the parameter lists render correctly, and added an intersphinx mapping to
python-zeroconfso theasync_zeroconfparameter cross-references resolve under the nitpicky docs build – by @aiolibsbot.Related issues and pull requests on GitHub: #67.
Fixed the README quick-start example leaking the resolver: a resolver passed to
aiohttp.TCPConnectoris owned by the caller, so it is now closed in afinallyblock – by @aiolibsbot.Related issues and pull requests on GitHub: #80.
Completed the documentation landing page: filled the empty Introduction section, added an installation snippet, and added a runnable usage example that closes the resolver in a
finallyblock. Also fixed the same resolver leak in theAsyncMDNSResolverreference example – by @aiolibsbot.Related issues and pull requests on GitHub: #84.
Documented the
resolve()andclose()methods ofAsyncMDNSResolverandAsyncDualMDNSResolverin the API reference, including the.localrouting behaviour and theAsyncZeroconfownership semantics ofclose()– by @aiolibsbot.Related issues and pull requests on GitHub: #85.
Added a usage example for
AsyncDualMDNSResolverin the API reference and documented thefamilyparameter ofresolve()(socket.AF_INET,socket.AF_INET6andsocket.AF_UNSPEC). Also clarified thatmdns_timeout=Noneis cache-only, the same as0– by @aiolibsbot.Related issues and pull requests on GitHub: #86.
Documented
AsyncDualMDNSResolverin the README quick start so the landing page covers the full public API, not justAsyncMDNSResolver– by @aiolibsbot.Related issues and pull requests on GitHub: #89.
Packaging updates and notes for downstreams¶
The packaging metadata switched to including an SPDX license identifier introduced in PEP 639 – by @cdce8p.
As a side effect, the minimum required version of
setuptoolsincreased to v77.Related issues and pull requests on GitHub: #36.
Fixed
MANIFEST.into graft thesrc/tree and dropped references to the non-existentpackaging/directory andNOTICEfile, removing spurious build warnings. Thepy.typedmarker is now shipped explicitly viapackage-data, and the distribution advertises the Python 3.10–3.13, CPython, PyPy, andTyping :: Typedclassifiers – by @aiolibsbot.Related issues and pull requests on GitHub: #68.
Added support for Python 3.14: the test matrix now runs against 3.14 and the distribution advertises the
Programming Language :: Python :: 3.14classifier – by @aiolibsbot.Related issues and pull requests on GitHub: #81.
Contributor-facing changes¶
Expanded the public-API regression test to cover
AsyncDualMDNSResolver,api.__all__, and theaiohttp.resolver.AsyncResolverdrop-in subclass guarantee for both resolvers.Related issues and pull requests on GitHub: #71.
Hardened the CI workflow: the default
GITHUB_TOKENis now restricted tocontents: read, and a concurrency group cancels superseded in-progress pull request runs to conserve CI resources – by @aiolibsbot.Related issues and pull requests on GitHub: #72.
Enabled the mypy
disallow_untyped_defs,disallow_incomplete_defs, andcheck_untyped_defschecks so that newly added functions insrc/andtests/must carry complete type annotations – by @aiolibsbot.Related issues and pull requests on GitHub: #73.
Migrated CI runners from
actions/setup-pythontoastral-sh/setup-uvso dependencies and Python interpreters are provisioned viauvinstead of systempip– by @aiolibsbot.Related issues and pull requests on GitHub: #76.
Replaced the
pyupgradepre-commit hook with Ruff’sUPrule set so a single linter handles syntax modernization, targeting Python 3.10+ – by @aiolibsbot.Related issues and pull requests on GitHub: #78.
v0.1.1¶
(2025-02-14)
Miscellaneous internal changes¶
v0.1.0¶
(2025-02-05)
Features¶
Created the
aiohttp_asyncmdnsresolver.api.AsyncDualMDNSResolverclass to resolve.localnames using both mDNS and DNS – by @bdraco.Related issues and pull requests on GitHub: #23.
v0.0.3¶
(2025-01-31)
Bug fixes¶
v0.0.2¶
(2025-01-30)
Miscellaneous internal changes¶
v0.0.1¶
(2025-01-05)
Initial release