dnspython
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 originated at Nominum where it was developed to facilitate
the testing of DNS software. Nominum has generously allowed it to be
open sourced under a BSD-style license, and helps support its future
development by continuing to employ the author :).
ABOUT THIS RELEASE
This is dnspython 1.3.5
New since 1.3.4:
In the resolver, if time goes backward a little bit, ignore
it.
zone_for_name() has been added to the resolver module. It
returns the zone which is authoritative for the specified
name, which is handy for dynamic update. E.g.
import dns.resolver
print dns.resolver.zone_for_name('www.dnspython.org')
will output "dnspython.org." and
print dns.resolver.zone_for_name('a.b.c.d.e.f.example.')
will output ".".
The default resolver can be fetched with the
get_default_resolver() method.
You can now get the parent (immediate superdomain) of a name
by using the parent() method.
Zone.iterate_rdatasets() and Zone.iterate_rdatas() now have
a default rdtype of dns.rdatatype.ANY like the documentation
says.
A Dynamic DNS example, ddns.py, has been added.
New since 1.3.3:
The source address and port may now be specified when calling
dns.query.{udp,tcp,xfr}.
The resolver now does exponential backoff each time it runs
through all of the nameservers.
Rcodes which indicate a nameserver is likely to be a
"permanent failure" for a query cause the nameserver to be removed
from the mix for that query.
New since 1.3.2:
dns.message.Message.find_rrset() now uses an index, vastly
improving the from_wire() performance of large messages such
as zone transfers.
Added dns.message.make_response(), which creates a skeletal
response for the specified query.
Added opcode() and set_opcode() convenience methods to the
dns.message.Message class. Added the request_payload
attribute to the Message class.
The 'file' parameter of dns.name.Name.to_wire() is now
optional; if omitted, the wire form will be returned as the
value of the function.
dns.zone.from_xfr() in relativization mode incorrectly set
zone.origin to the empty name.
The masterfile parser incorrectly rejected TXT records where a
value was not quoted.
New since 1.3.1:
The NSEC format doesn't allow specifying types by number, so
we shouldn't either. (Using the unknown type format is still
OK though.)
The resolver wasn't catching dns.exception.Timeout, so a timeout
erroneously caused the whole resolution to fail instead of just
going on to the next server.
The renderer module didn't import random, causing an exception
to be raised if a query id wasn't provided when a Renderer was
created.
The conversion of LOC milliseconds values from text to binary was
incorrect if the length of the milliseconds string was not 3.
New since 1.3.0:
Added support for the SSHFP type.
New since 1.2.0:
Added support for new DNSSEC types RRSIG, NSEC, and DNSKEY.
This release fixes all known bugs.
See the ChangeLog file for more detailed information on changes since
the prior release.
REQUIREMENTS
Python 2.2 or later.
INSTALLATION
To build and install dnspython, type
python setup.py install
HOME PAGE
For the latest in releases, documentation, and information, visit the
dnspython home page at
http://www.dnspython.org/
DOCUMENTATION
Documentation is sparse at the moment. Use pydoc, or read the HTML
documentation at the dnspython home page, or download the HTML
documentation.
BUG REPORTS
Bug reports may be sent to bugs@dnspython.org
MAILING LISTS
A number of mailing lists are available. Visit the dnspython home
page to subscribe or unsubscribe.