ANN: dnspython 1.1.0
Bob Halley
halley@dnspython.org
10 Aug 2003 22:00:22 -0700
dnspython 1.1.0 has been released. Here's the README:
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.1.0.
New since 1.0.0:
Message sections are now lists of RRsets, not lists of nodes.
Nodes no longer have names; owner names are associated with
nodes in the Zone object's nodes dictionary.
Many tests have been added to the test suite; dnspython 1.0.0
has 47 tests, 1.1.0 has 275. The improved testing
uncovered a number of bugs, all of which have been fixed.
The NameDict class provides a dictionary whose keys are DNS
names. In addition to behaving like a normal Python
dictionary, it also provides the get_deepest_match() method.
If, for example, you had a dictionary containing the keys
foo.com and com, then get_deepest_match() of the name
a.b.foo.com would match the foo.com key.
A new Renderer class for those applications which want finer
control over the DNS wire format message generation process.
Support for a "TooBig" exception if the size of wire format
output exceeds a specified limit.
Zones now have find_rrset() and find_rdataset() convenience
methods. They let you retrieve rdata with the specified name
and type in one call, e.g.:
rrset = zone.find_rrset('foo', 'mx')
Other new zone convenience methods include: find_node(),
delete_node(), delete_rdataset(), replace_rdataset(),
iterate_rdatasets(), and iterate_rdatas().
get_ variants of find_ methods are provided; the difference is
that get_ methods return None if the desired object doesn't
exist, whereas the find_ methods raise an exception.
Zones now have a to_file() method.
The message and zone from_file() methods allow Unicode
filenames on platforms (and versions of python) which support
them. Universal newline support is also used if available.
The Zone class now implements more of the standard mapping
interface. E.g. you can say zone.keys(), zone.get('name'),
zone.iteritems(), etc. __iter__() has been changed to iterate
the keys rather than values to match the standard mapping
interface's behavior.
Rdatasets support more set operations
Zone and Node factories may be specified, allowing applications
to subclass Zone or Node and yet still use the algorithms which
build zones from master files or AXFR data.
dns.ipv6.inet_ntoa() now minimizes the text representation of
IPv6 addresses in the usual way,
e.g. "0000:0000:0000:0000:0000:0000:0000:0001" is minimized to
"::1".
dns.query functions now take an optional address family
parameter.
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.