MCPcopy Index your code
hub / github.com/rthalley/dnspython

github.com/rthalley/dnspython @v2.8.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.8.0 ↗ · + Follow
3,913 symbols 12,426 edges 239 files 816 documented · 21% 70 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

dnspython

Build Status Documentation Status PyPI version License: ISC Code style: 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 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.

Core symbols most depended-on inside this repo

from_text
called by 1429
dns/rdata.py
write
called by 150
dns/quic/_sync.py
get
called by 117
dns/zone.py
add
called by 92
dns/set.py
to_text
called by 80
dns/node.py
make
called by 77
dns/enum.py
key
called by 63
dns/btree.py
replace
called by 59
dns/rdata.py

Shape

Method 2,898
Class 528
Function 484
Route 3

Languages

Python100%

Modules by API surface

tests/test_name.py182 symbols
tests/test_zone.py116 symbols
tests/test_rdata.py110 symbols
dns/resolver.py109 symbols
tests/test_resolver.py99 symbols
tests/test_async.py98 symbols
dns/zone.py94 symbols
dns/message.py87 symbols
tests/test_message.py84 symbols
dns/btree.py81 symbols
dns/name.py80 symbols
tests/test_dnssec.py79 symbols

For agents

$ claude mcp add dnspython \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page