diff --git a/210.patch b/210.patch new file mode 100644 index 0000000..7f56cf8 --- /dev/null +++ b/210.patch @@ -0,0 +1,23 @@ +From 0add1649c91b4f56b32e73c3a6327519c6eb532e Mon Sep 17 00:00:00 2001 +From: Avram Lubkin +Date: Tue, 4 Oct 2016 07:32:20 -0400 +Subject: [PATCH] Test creates file in wrong location + +test_zone.ZoneTestCase.testToFileFilename fails with OSError: [Errno 2] No such file or directory +--- + tests/test_zone.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_zone.py b/tests/test_zone.py +index dbc67c7..3c497a6 100644 +--- tests/test_zone.py ++++ tests/test_zone.py +@@ -177,7 +177,7 @@ def testToFileBinary(self): + def testToFileFilename(self): + z = dns.zone.from_file(here('example'), 'example') + try: +- z.to_file('example3-filename.out') ++ z.to_file(here('example3-filename.out')) + ok = filecmp.cmp(here('example3-filename.out'), + here('example3.good')) + finally: diff --git a/dnspython-1.14.0.tar.gz b/dnspython-1.14.0.tar.gz deleted file mode 100644 index 38b3bfc..0000000 --- a/dnspython-1.14.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1406421e208931a66fef38ef0106711e1da277c9f40ed935ec1ab7374c1687fc -size 144591 diff --git a/dnspython-1.14.0.tar.gz.asc b/dnspython-1.14.0.tar.gz.asc deleted file mode 100644 index 798756f..0000000 --- a/dnspython-1.14.0.tar.gz.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2 - -iQIVAwUAV0iNE/JLOvyMovXHAQhAZA//Y4KgyKmNlXBxbeFsjgxqypFkSvJuoQxN -Os+0mHriuYfVI1dylfxaYAnh+aye7TWaWJutQ25yKg1jbTyTTKCNTuDWqQYA7DpY -DwD2f2u8MpqlvRTkiU/v7O5lCLPvIl4slBPOGylYoWoM1I2ZzPmyj9BnhipZTtz/ -oaaoxUj2IlG8tg+4tlbkCFtHKH8PuNXZ7yZcH3w+0TpVUqC/UiJLXJMRIUvIqr8C -UPL2BLC2MYJWSJqmvE91Pv/MmaJxhlo63v1RQxEzX/kDAldJC+g02TbCjqLAO5b4 -W6KmGg6z6LVeTefLeJw98+I7ZpCBM00bRseFYIJ1T94BxA+3AEHYrgcyH5pWP9FC -aPqQdUhBV7lp42hLGXBGXEJtvDEgvXUqQbqf50SbnVO5HKwjMku2rzf7ddsbKgJ8 -xrUazJz901VAMjX2jqJHQDcPHk+q8q0ckLCzh9wm4haCu4hHK7cWyMfnd4Pt7Xwq -u1uru12zM+Uq3BTESwJBb0L7o6dTNtYlsodjz16Ndn/v5Ctl+k3v/B7QSSCfeKvB -fdfkel0WOm8z5s3tsjqhTL9wCal+XSm4wanRB6M4rlEN1STE9UKaNKnuRsYL99Kq -bS+kdcZjq4L5wRrm8wlDUycqEXU6jaxdOdePDVMIMS6V4MmpyiiRxcnxbQdSJzSg -p/FWVBKHueE= -=g6ef ------END PGP SIGNATURE----- diff --git a/dnspython-1.15.0.tar.gz b/dnspython-1.15.0.tar.gz new file mode 100644 index 0000000..82bc390 --- /dev/null +++ b/dnspython-1.15.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11598ae5735746e63921f8eebdfdee4a2e7d0ba842ebd57ba02682d4aed8244b +size 144073 diff --git a/dnspython-1.15.0.tar.gz.asc b/dnspython-1.15.0.tar.gz.asc new file mode 100644 index 0000000..88929fb --- /dev/null +++ b/dnspython-1.15.0.tar.gz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 + +iQIVAwUAV+6CivJLOvyMovXHAQih4RAAkKMyzk+JuVo+g7y2r3rmC+pek7RUxXvQ +Z7FkZyu/d6btCUm2UUbGe4yLdXhjhb9ABpdzq2W9Z+UKZVifvDkvzAUziVrA3oIl +xRwRfvzaCsB13n0uOnbFGeM2ocK2tEor4JyNY1ZMR6uEMuWlfi7eXHvuwnt7WNjv +pXBboE2aQN+jR/GM+l2wwnDJCFy65QTFZCiwyR/9Kcmrf+NdYJrkAfS0MjOc8Zyi +fV5OcrI2FR6CztCx5CL7CoiiHvxh0UDVzN9Er4dt6QMnUe8f+ygc3TJofXfZ4M+2 +fk/Lk6dOisU+gpOqcQuKmdk7ssO47q+Z29U/dDS7fLMf0xL7SLNTpmo9H5bEKsFb +S3Zmv54om2W0ltR5bUWLyZi6w8tATilHaIOKwBGAtPFiLNIgEApgP4GiTbysATEY +4IquLEg/Yqal3Xw2MNcCVq9WvKzAajO8z+5AHNzq0YY0hMfRjZVzb2kuaj3Vcukq +oEQGiDC5eHY3dLwXhj4QIC5fcgJGLapHy0YtUc3chF1qZsKytzKeB7wa9yFszcIb +wgOXWSmrjrlFB8RgmvWxQkTZIYHu+sYKGki0ekF76llxGLIisG/rFvwmFsbTnu/H +9L6TxKEIiwTMQoaXXteP9eJ6MEWkG04O2Hy94M7YPiBnWTlaJhe7HOuf/APYTI0u +OSJdhrag/p4= +=Ay5b +-----END PGP SIGNATURE----- diff --git a/python-dnspython.changes b/python-dnspython.changes index c6cab09..999b60a 100644 --- a/python-dnspython.changes +++ b/python-dnspython.changes @@ -1,3 +1,25 @@ +------------------------------------------------------------------- +Sat Oct 8 13:16:31 UTC 2016 - sebix+novell.com@sebix.at + +- New upstream release 1.15.0 + * IDNA 2008 support is now available if the "idna" module has been + installed and IDNA 2008 is requested. The default IDNA behavior + is still IDNA 2003. The new IDNA codec mechanism is currently + only useful for direct calls to dns.name.from_text() or + dns.name.from_unicode(), but in future releases it will be + deployed throughout dnspython, e.g. so that you can read a + masterfile with an IDNA 2008 codec in force. + * By default, dns.name.to_unicode() is not strict about which + version of IDNA the input complies with. Strictness can be + requested by using one of the strict IDNA codecs. + * Add AVC RR support. + * Some problems with newlines in various output modes have been + addressed. + * dns.name.to_text() now returns text and not bytes on Python 3.x + * More miscellaneous fixes for the Python 2/3 codeline merge. +- Include readme with readme.patch as not included in upstream tarball +- Fix a bug in the tests code with 210.patch with upstream pull request #210 + ------------------------------------------------------------------- Tue Jun 14 19:58:08 UTC 2016 - sebix+novell.com@sebix.at diff --git a/python-dnspython.spec b/python-dnspython.spec index 8526370..db59a7f 100644 --- a/python-dnspython.spec +++ b/python-dnspython.spec @@ -17,7 +17,7 @@ Name: python-dnspython -Version: 1.14.0 +Version: 1.15.0 Release: 0 Url: http://www.dnspython.org/ Summary: A DNS toolkit for Python @@ -26,12 +26,16 @@ Group: Development/Languages/Python Source: http://www.dnspython.org/kits/%{version}/dnspython-%{version}.tar.gz Source2: http://www.dnspython.org/kits/%{version}/dnspython-%{version}.tar.gz.asc Source3: python-dnspython.asc +Patch0: https://github.com/rthalley/dnspython/pull/210.patch +# Add the readme as patch as not included in the tarball +Patch1: readme.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: netcfg BuildRequires: python-devel BuildRequires: python-pycrypto BuildRequires: python-setuptools BuildRequires: unzip +Recommends: python-idna BuildArch: noarch %description @@ -44,6 +48,8 @@ dnspython originated at Nominum where it was developed to facilitate the testing %prep %setup -q -n dnspython-%{version} chmod -x examples/* +%patch0 +%patch1 %build python setup.py build @@ -52,15 +58,13 @@ python setup.py build python setup.py install --prefix=%{_prefix} --root=%{buildroot} %check -pushd tests # skip the resolver test suite as it requires an internet connection -test -f test_resolver.py && rm test_resolver.py -make check -popd +test -f tests/test_resolver.py && rm tests/test_resolver.py +python setup.py test %files -%defattr(-,root,root) -%doc ChangeLog LICENSE examples +%defattr(-,root,root,-) +%doc ChangeLog LICENSE README.md examples %{python_sitelib}/* %changelog diff --git a/readme.patch b/readme.patch new file mode 100644 index 0000000..faafea8 --- /dev/null +++ b/readme.patch @@ -0,0 +1,605 @@ +--- /dev/null 1970-01-01 01:00:09.936046830 +0100 ++++ README.md 2016-10-06 15:42:00.112010665 +0200 +@@ -0,0 +1,602 @@ ++dnspython [![Build Status](https://travis-ci.org/rthalley/dnspython.svg?branch=master)](https://travis-ci.org/rthalley/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 is a utility to work with DNS, `/etc/hosts` is thus not used. For ++simple forward DNS lookups, better use `socket.gethostbyname()`. ++ ++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 :). ++ ++## INSTALLATION ++- Many distributions have dnspython packaged for you, so you should ++ check there first. ++- If you have pip installed, you can do `pip install dnspython` ++- If not just download the source file and unzip it, then run ++ `sudo python setup.py install` ++ ++## ABOUT THIS RELEASE ++ ++This is dnspython 1.15.0 ++ ++### New since 1.14.0: ++ ++* IDNA 2008 support is now available if the "idna" module has been ++ installed and IDNA 2008 is requested. The default IDNA behavior is ++ still IDNA 2003. The new IDNA codec mechanism is currently only ++ useful for direct calls to dns.name.from_text() or ++ dns.name.from_unicode(), but in future releases it will be deployed ++ throughout dnspython, e.g. so that you can read a masterfile with an ++ IDNA 2008 codec in force. ++ ++* By default, dns.name.to_unicode() is not strict about which ++ version of IDNA the input complies with. Strictness can be ++ requested by using one of the strict IDNA codecs. ++ ++* The AVC RR is now supported. ++ ++### Bugs fixed since 1.14.0: ++ ++* Some problems with newlines in various output modes have been ++ addressed. ++ ++* dns.name.to_text() now returns text and not bytes on Python 3.x ++ ++* Miscellaneous fixes for the Python 2/3 codeline merge. ++ ++* Many "lint" fixes after the addition of pylint support. ++ ++* The random number generator reseeds after a fork(). ++ ++### New since 1.13.0: ++ ++* CSYNC RRs are now supported. ++ ++* `dns/message.py` (`make_query`): Setting any value which implies EDNS will ++ turn on EDNS if `use_edns` has not been specified. ++ ++### Bugs fixed since 1.13.0: ++ ++* TSIG signature algorithm setting was broken by the Python 2 and Python 3 code ++ line merge. ++ ++* A bug in the LOC RR destroyed N/S and E/W distinctions within a degree of the ++ equator or prime merdian respectively. ++ ++* Misc. fixes to deal with fallout from the Python 2 & 3 merge. ++ Fixes #156, #157, #158, #159, #160. ++ ++* Running with python optimization on caused issues when stripped docstrings ++ were referenced. Fixes #154 ++ ++* `dns.zone.from_text()` erroneously required the zone to be provided. ++ Fixes #153 ++ ++### New since 1.12.0: ++ ++* Dnspython now uses a single source for Python 2 and Python 3, eliminating the ++ painful merging between the Python 2 and Python 3 branches. Thank you so much ++ to Arthur Gautier for taking on this challenge and making it work! It was a ++ big job! ++ ++* Support for Python older than 2.6 dropped. ++ ++* Support for Python older than 3.3 dropped. ++ ++* Zone origin can be specified as a string. ++ ++* A rich string representation for all DNSExceptions. ++ ++* setuptools has replaced distutils ++ ++* Added support for CAA, CDS, CDNSKEY, EUI48, EUI64, and URI RR types. ++ ++* Names now support the pickle protocol. ++ ++* Ports can be specified per-nameserver in the stub resolver. ++ ++### Bugs fixed since 1.12.0: ++ ++* A number of Unicode name bugs have been fixed. ++ ++* `resolv.conf` processing now rejects lines with too few tokens. ++ ++* NameDicts now keep the max-depth value correct, and update properly. ++ ++### New since 1.11.1: ++ ++* Added `dns.zone.to_text()`. ++ ++* Added support for "options rotate" in `/etc/resolv.conf`. ++ ++* `dns.rdtypes.ANY.DNSKEY` now has helpers functions to convert between the ++ numeric form of the flags and a set of human-friendly strings ++ ++* The reverse name of an IPv6 mapped IPv4 address is now in the IPv4 reverse ++ namespace. ++ ++* The test system can now run the tests without requiring dnspython to be ++ installed. ++ ++* Preliminary Elliptic Curve DNSSEC Validation (requires ecdsa module) ++ ++### Bugs fixed since 1.11.1: ++ ++* dnspython raised an exception when reading a masterfile starting with leading ++ whitespace ++ ++* dnspython was affected by a python slicing API bug present on 64-bit windows. ++ ++* Unicode escaping was applied at the wrong time. ++ ++* RRSIG `to_text()` did not respect the relativize setting. ++ ++* APL RRs with zero rdlength were rejected. ++ ++* The tokenizer could put back an unescaped token. ++ ++* Making a response to a message signed with TSIG was broken. ++ ++* The IXFR state machine didn't handle long IXFR diffs. ++ ++### New since 1.11.0: ++ ++* Nothing ++ ++### Bugs fixed since 1.11.0: ++ ++* `dns.resolver.Resolver` erroneously referred to `retry_servfail` ++ instead of `self.retry_servfail`. ++ ++* `dns.tsigkeyring.to_text()` would fail trying to convert the keyname to text. ++ ++* Multi-message TSIGs were broken for algorithms other than HMAC-MD5 because we ++ weren't passing the right digest module to the HMAC code. ++ ++* `dns.dnssec._find_candidate_keys()` tried to extract the key from the wrong ++ variable name. ++ ++* $GENERATE tests were not backward compatible with python 2.4. ++ ++### New since 1.10.0: ++ ++* $GENERATE support ++ ++* TLSA RR support ++ ++* Added set_flags() method to dns.resolver.Resolver ++ ++### Bugs fixed since 1.10.0: ++ ++* Names with offsets >= 2^14 are no longer added to the compression table. ++ ++* The "::" syntax is not used to shorten a single 16-bit section of the text ++ form an IPv6 address. ++ ++* Caches are now locked. ++ ++* YXDOMAIN is raised if seen by the resolver. ++ ++* Empty rdatasets are not printed. ++ ++* DNSKEY key tags are no longer assumed to be unique. ++ ++### New since 1.9.4: ++ ++* Added dns.resolver.LRUCache. In this cache implementation, the cache size is ++ limited to a user-specified number of nodes, and when adding a new node to a ++ full cache the least-recently used node is removed. If you're crawling the web ++ or otherwise doing lots of resolutions and you are using a cache, switching ++ to the LRUCache is recommended. ++ ++* `dns.resolver.query()` will try TCP if a UDP response is truncated. ++ ++* The python socket module's DNS methods can be now be overridden with ++ implementations that use dnspython's resolver. ++ ++* Old DNSSEC types KEY, NXT, and SIG have been removed. ++ ++* Whitespace is allowed in SSHFP fingerprints. ++ ++* Origin checking in `dns.zone.from_xfr()` can be disabled. ++ ++* Trailing junk checking can be disabled. ++ ++* A source port can be specified when creating a resolver query. ++ ++* All EDNS values may now be specified to `dns.message.make_query()`. ++ ++### Bugs fixed since 1.9.4: ++ ++* IPv4 and IPv6 address processing is now stricter. ++ ++* Bounds checking of slices in rdata wire processing is now more strict, and ++ bounds errors (e.g. we got less data than was expected) now raise ++ `dns.exception.FormError` rather than `IndexError`. ++ ++* Specifying a source port without specifying source used to have no effect, but ++ now uses the wildcard address and the specified port. ++ ++### New since 1.9.3: ++ ++* Nothing. ++ ++### Bugs fixed since 1.9.3: ++ ++* The rdata `_wire_cmp()` routine now handles relative names. ++ ++* The SIG RR implementation was missing `import struct`. ++ ++### New since 1.9.2: ++ ++* A boolean parameter, `raise_on_no_answer`, has been added to the `query()` ++ methods. In no-error, no-data situations, this parameter determines whether ++ `NoAnswer` should be raised or not. If True, `NoAnswer` is raised. If False, ++ then an `Answer()` object with a None rrset will be returned. ++ ++* Resolver `Answer()` objects now have a canonical_name field. ++ ++* Rdata now has a `__hash__` method. ++ ++### Bugs fixed since 1.9.2: ++ ++* Dnspython was erroneously doing case-insensitive comparisons of the names in ++ NSEC and RRSIG RRs. ++ ++* We now use `is` and not `==` when testing what section an RR is in. ++ ++* The resolver now disallows metaqueries. ++ ++### New since 1.9.1: ++ ++* Nothing. ++ ++### Bugs fixed since 1.9.1: ++ ++* The `dns.dnssec` module didn't work at all due to missing imports that escaped ++ detection in testing because the test suite also did the imports. The third ++ time is the charm! ++ ++### New since 1.9.0: ++ ++* Nothing. ++ ++### Bugs fixed since 1.9.0: ++ ++* The `dns.dnssec` module didn't work with DSA due to namespace contamination ++ from a "from"-style import. ++ ++### New since 1.8.0: ++ ++* dnspython now uses `poll()` instead of `select()` when available. ++ ++* Basic DNSSEC validation can be done using `dns.dnsec.validate()` and ++ `dns.dnssec.validate_rrsig()` if you have PyCrypto 2.3 or later installed. ++ Complete secure resolution is not yet available. ++ ++* Added `key_id()` to the DNSSEC module, which computes the DNSSEC key id of a ++ DNSKEY rdata. ++ ++* Added `make_ds()` to the DNSSEC module, which returns the DS RR for a given ++ DNSKEY rdata. ++ ++* dnspython now raises an exception if HMAC-SHA284 or HMAC-SHA512 are used with ++ a Python older than 2.5.2. (Older Pythons do not compute the correct value.) ++ ++* Symbolic constants are now available for TSIG algorithm names. ++ ++### Bugs fixed since 1.8.0 ++ ++* `dns.resolver.zone_for_name()` didn't handle a query response with a CNAME or ++ DNAME correctly in some cases. ++ ++* When specifying rdata types and classes as text, Unicode strings may now be ++ used. ++ ++* Hashlib compatibility issues have been fixed. ++ ++* `dns.message` now imports `dns.edns`. ++ ++* The TSIG algorithm value was passed incorrectly to `use_tsig()` in some cases. ++ ++### New since 1.7.1: ++ ++* Support for hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384 and hmac-sha512 ++ has been contributed by Kevin Chen. ++ ++* The tokenizer's tokens are now Token objects instead of (type, value) tuples. ++ ++### Bugs fixed since 1.7.1: ++ ++* Escapes in masterfiles now work correctly. Previously they were only working ++ correctly when the text involved was part of a domain name. ++ ++* When constructing a DDNS update, if the `present()` method was used with a ++ single rdata, a zero TTL was not added. ++ ++* The entropy pool needed locking to be thread safe. ++ ++* The entropy pool's reading of `/dev/random` could cause dnspython to block. ++ ++* The entropy pool did buffered reads, potentially consuming more randomness ++ than we needed. ++ ++* The entropy pool did not seed with high quality randomness on Windows. ++ ++* SRV records were compared incorrectly. ++ ++* In the e164 query function, the resolver parameter was not used. ++ ++### New since 1.7.0: ++ ++* Nothing ++ ++### Bugs fixed since 1.7.0: ++ ++* The 1.7.0 kitting process inadvertently omitted the code for the DLV RR. ++ ++* Negative DDNS prerequisites are now handled correctly. ++ ++### New since 1.6.0: ++ ++* Rdatas now have a `to_digestable()` method, which returns the DNSSEC canonical ++ form of the rdata, suitable for use in signature computations. ++ ++* The NSEC3, NSEC3PARAM, DLV, and HIP RR types are now supported. ++ ++* An entropy module has been added and is used to randomize query ids. ++ ++* EDNS0 options are now supported. ++ ++* UDP IXFR is now supported. ++ ++* The wire format parser now has a `one_rr_per_rrset` mode, which suppresses the ++ usual coalescing of all RRs of a given type into a single RRset. ++ ++* Various helpful DNSSEC-related constants are now defined. ++ ++* The resolver's `query()` method now has an optional `source` parameter, ++ allowing the source IP address to be specified. ++ ++### Bugs fixed since 1.6.0: ++ ++* On Windows, the resolver set the domain incorrectly. ++ ++* DS RR parsing only allowed one Base64 chunk. ++ ++* TSIG validation didn't always use absolute names. ++ ++* `NSEC.to_text()` only printed the last window. ++ ++* We did not canonicalize IPv6 addresses before comparing them; we ++ would thus treat equivalent but different textual forms, e.g. ++ "1:00::1" and "1::1" as being non-equivalent. ++ ++* If the peer set a TSIG error, we didn't raise an exception. ++ ++* Some EDNS bugs in the message code have been fixed (see the ChangeLog ++ for details). ++ ++### New since 1.5.0: ++ ++* Added dns.inet.is_multicast(). ++ ++### Bugs fixed since 1.5.0: ++ ++* If `select()` raises an exception due to EINTR, we should just `select()` ++ again. ++ ++* If the queried address is a multicast address, then don't check that the ++ address of the response is the same as the address queried. ++ ++* NAPTR comparisons didn't compare the preference field due to a typo. ++ ++* Testing of whether a Windows NIC is enabled now works on Vista thanks to code ++ contributed by Paul Marks. ++ ++### New since 1.4.0: ++ ++* Answer objects now support more of the python sequence protocol, forwarding ++ the requests to the answer rrset. E.g. `for a in answer` is equivalent to ++ `for a in answer.rrset`, `answer[i]` is equivalent to `answer.rrset[i]`, and ++ `answer[i:j]` is equivalent to `answer.rrset[i:j]`. ++ ++* Making requests using EDNS, including indicating DNSSEC awareness, ++ is now easier. For example, you can now say: ++ `q = dns.message.make_query('www.dnspython.org', 'MX', want_dnssec=True)` ++ ++* `dns.query.xfr()` can now be used for IXFR. ++ ++* Support has been added for the DHCID, IPSECKEY, and SPF RR types. ++ ++* UDP messages from unexpected sources can now be ignored by setting ++ `ignore_unexpected` to True when calling `dns.query.udp`. ++ ++### Bugs fixed since 1.4.0: ++ ++* If `/etc/resolv.conf` didn't exist, we raised an exception instead of simply ++ using the default resolver configuration. ++ ++* In `dns.resolver.Resolver._config_win32_fromkey()`, we were passing the wrong ++ variable to `self._config_win32_search()`. ++ ++### New since 1.3.5: ++ ++* You can now convert E.164 numbers to/from their ENUM name forms: ++ ```python ++ >>> import dns.e164 ++ >>> n = dns.e164.from_e164("+1 555 1212") ++ >>> n ++ ++ >>> dns.e164.to_e164(n) ++ '+15551212' ++ ``` ++ ++* You can now convert IPv4 and IPv6 address to/from their corresponding DNS ++ reverse map names: ++ ```python ++ >>> import dns.reversename ++ >>> n = dns.reversename.from_address("127.0.0.1") ++ >>> n ++ ++ >>> dns.reversename.to_address(n) ++ '127.0.0.1' ++ ``` ++ ++* You can now convert between Unicode strings and their IDN ACE form: ++ ```python ++ >>> n = dns.name.from_text(u'les-\u00e9l\u00e8ves.example.') ++ >>> n ++ ++ >>> n.to_unicode() ++ u'les-\xe9l\xe8ves.example.' ++ ``` ++ ++* The origin parameter to `dns.zone.from_text()` and `dns.zone.to_text()` is now ++ optional. If not specified, the origin will be taken from the first $ORIGIN ++ statement in the master file. ++ ++* Sanity checking of a zone can be disabled; this is useful when working with ++ files which are zone fragments. ++ ++### Bugs fixed since 1.3.5: ++ ++* The correct delimiter was not used when retrieving the list of nameservers ++ from the registry in certain versions of windows. ++ ++* The floating-point version of latitude and longitude in LOC RRs ++ (`float_latitude` and `float_longitude`) had incorrect signs for south ++ latitudes and west longitudes. ++ ++* BIND 8 TTL syntax is now accepted in all TTL-like places (i.e. SOA fields ++ refresh, retry, expire, and minimum; SIG/RRSIG field original_ttl). ++ ++* TTLs are now bounds checked when their text form is parsed, and their values ++ must be in the closed interval `[0, 2^31 - 1]`. ++ ++### 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.6 or later. ++ ++ ++## 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.