Description
# dnspython [](https://github.com/rthalley/dnspython/actions/) [](https://dnspython.readthedocs.io/en/latest/?badge=latest) [](https://badge.fury.io/py/dnspython) [](https://opensource.org/licenses/ISC) [](https://github.com/psf/black) ## INTRODUCTION `dnspython` is a DNS toolkit for Python. It supports almost all record types. It can be used for queries, zone transfers, and dynamic updates. It supports TSIG-authenticated messages and EDNS0. `dnspython` provides both high- and low-level access to DNS. The high-level classes perform queries for data of a given name, type, and class, and return an answer set. The low-level classes allow direct manipulation of DNS zones, messages, names, and records. To see a few of the ways `dnspython` can be used, look in the `examples/` directory. `dnspython` is a utility to work with DNS, `/etc/hosts` is thus not used. For simple forward DNS lookups, it's better to use `socket.getaddrinfo()` or `socket.gethostbyname()`. `dnspython` originated at Nominum where it was developed to facilitate the testing of DNS software. ## ABOUT THIS RELEASE This is of `dnspython` 2.8.0. Please read [What's New](https://dnspython.readthedocs.io/en/stable/whatsnew.html) for information about the changes in this release. ## INSTALLATION * Many distributions have dnspython packaged for you, so you should check there first. * To use a wheel downloaded from PyPi, run: ``` pip install dnspython ``` * To install from the source code, go into the top-level of the source code and run: ``` pip install --upgrade pip build python -m build pip install dist/*.whl ``` * To install the latest from the main branch, run `pip install git+https://github.com/rthalley/dnspython.git` `dnspython`'s default installation does not depend on any modules other than those in the Python standard library. To use some features, additional modules must be installed. For convenience, `pip` options are defined for the requirements. If you want to use DNS-over-HTTPS, run `pip install dnspython[doh]`. If you want to use DNSSEC functionality, run `pip install dnspython[dnssec]`. If you want to use internationalized domain names (IDNA) functionality, you must run `pip install dnspython[idna]` If you want to use the Trio asynchronous I/O package, run `pip install dnspython[trio]`. If you want to use WMI on Windows to determine the active DNS settings instead of the default registry scanning method, run `pip install dnspython[wmi]`. If you want to try the experimental DNS-over-QUIC code, run `pip install dnspython[doq]`. Note that you can install any combination of the above, e.g.: `pip install dnspython[doh,dnssec,idna]` ### Notices Python 2.x support ended with the release of 1.16.0. `dnspython` supports Python 3.10 and later. Future support is aligned with the lifetime of the Python 3 versions. Documentation has moved to [dnspython.readthedocs.io](https://dnspython.readthedocs.io).
Release History
| Version | Changes | Urgency | Date |
|---|---|---|---|
| 2.8.0 | Imported from PyPI (2.8.0) | Low | 4/21/2026 |
| v2.8.0 | See [What's New](https://dnspython.readthedocs.io/en/stable/whatsnew.html) for details. The minimum supported version of Python is 3.10. My thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington. This release was published to PyPI using Trusted Publishing. | Low | 9/7/2025 |
| v2.7.0 | See [What's New](https://dnspython.readthedocs.io/en/stable/whatsnew.html) for details. The minimum supported version of Python is 3.9. My thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington. | Low | 10/5/2024 |
| v2.6.1 | See [What's New](https://dnspython.readthedocs.io/en/latest/whatsnew.html) for details. This is a bug fix release for 2.6.0 where the "TuDoor" fix erroneously suppressed legitimate Truncated exceptions. This caused the stub resolver to timeout instead of failing over to TCP when a legitimate truncated response was received over UDP. This release addresses the potential DoS issue discussed in the "TuDoor" paper (CVE-2023-29483). The dnspython stub resolver is vulnerable to a potentia | Low | 2/18/2024 |
| v2.6.0 | See [What's New](https://dnspython.readthedocs.io/en/latest/whatsnew.html) for details. This release addresses the potential DoS issue discussed in the "TuDoor" paper (CVE-2023-29483). The dnspython stub resolver is vulnerable to a potential DoS if a bad-in-some-way response from the right address and port forged by an attacker arrives before a legitimate one on the UDP port dnspython is using for that query. In this situation, dnspython might switch to querying another resolver or give up | Low | 2/16/2024 |
| v2.5.0 | See the [What's New](https://dnspython.readthedocs.io/en/stable/whatsnew.html) page for a summary of this release. Thanks to all the contributors, and, as usual, thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington. | Low | 1/20/2024 |
| v2.4.2 | This is a bug fix release, see the [What's New](https://dnspython.readthedocs.io/en/stable/whatsnew.html) page in the documentation for a summary. Thanks to the people who reported the bugs and, as usual, thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington. | Low | 8/12/2023 |
