]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
to_e164() was returning binary instead of text.
authorBob Halley <halley@dnspython.org>
Mon, 2 Jan 2017 14:19:38 +0000 (06:19 -0800)
committerBob Halley <halley@dnspython.org>
Mon, 2 Jan 2017 14:19:38 +0000 (06:19 -0800)
Doco update for e164

ChangeLog
dns/e164.py
tests/test_name.py

index 87d1da9870b6ed3b5dfda4f036cb7b95d079f426..223607d42a21aaac87838870847b5eff764c06e1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-02  Bob Halley  <halley@dnspython.org>
+
+       * dns/e164.py: to_e164() was returning binary instead of text,
+         another Py2/Py3 merge bug.
+
 2017-01-01  Bob Halley  <halley@dnspython.org>
 
        * dns/rdatatype.py: CNAME is now a singleton, as the reasons
index 99300730b8696c854c47b49bc5076355e5deafd3..2618b4f3114549087f7bc57f588ba6250250d766 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006, 2007, 2009, 2011 Nominum, Inc.
+# Copyright (C) 2006-2017 Nominum, Inc.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation for any purpose with or without fee is hereby granted,
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-"""DNS E.164 helpers
-
-@var public_enum_domain: The DNS public ENUM domain, e164.arpa.
-@type public_enum_domain: dns.name.Name object
-"""
-
+"""DNS E.164 helpers."""
 
 import dns.exception
 import dns.name
 import dns.resolver
-from ._compat import string_types
+from ._compat import string_types, maybe_decode
 
+#: The public E.164 domain.
 public_enum_domain = dns.name.from_text('e164.arpa.')
 
 
 def from_e164(text, origin=public_enum_domain):
     """Convert an E.164 number in textual form into a Name object whose
     value is the ENUM domain name for that number.
-    @param text: an E.164 number in textual form.
-    @type text: str
-    @param origin: The domain in which the number should be constructed.
-    The default is e164.arpa.
-    @type origin: dns.name.Name object or None
-    @rtype: dns.name.Name object
+
+    *text*, a ``text``, is an E.164 number in textual form.
+
+    *origin*, a ``dns.name.Name``, the domain in which the number
+    should be constructed.  The default is ``e164.arpa.``.
+
+    Returns a ``dns.name.Name``.
     """
+
     parts = [d for d in text if d.isdigit()]
     parts.reverse()
     return dns.name.from_text('.'.join(parts), origin=origin)
@@ -45,14 +43,17 @@ def from_e164(text, origin=public_enum_domain):
 
 def to_e164(name, origin=public_enum_domain, want_plus_prefix=True):
     """Convert an ENUM domain name into an E.164 number.
-    @param name: the ENUM domain name.
-    @type name: dns.name.Name object.
-    @param origin: A domain containing the ENUM domain name.  The
-    name is relativized to this domain before being converted to text.
-    @type origin: dns.name.Name object or None
-    @param want_plus_prefix: if True, add a '+' to the beginning of the
-    returned number.
-    @rtype: str
+
+    *name* is a ``dns.name.Name``, the ENUM domain name.
+
+    *origin* is a ``dns.anme.Name``, a domain containing the ENUM
+    domain name.  The name is relativized to this domain before being
+    converted to text.  If ``None``, no relativization is done.
+
+    *want_plus_prefix* is a ``bool``.  If True, add a '+' to the beginning of
+    the returned number.
+
+    Returns a ``text``.
     """
     if origin is not None:
         name = name.relativize(origin)
@@ -63,14 +64,22 @@ def to_e164(name, origin=public_enum_domain, want_plus_prefix=True):
     text = b''.join(dlabels)
     if want_plus_prefix:
         text = b'+' + text
-    return text
+    return maybe_decode(text)
 
 
 def query(number, domains, resolver=None):
     """Look for NAPTR RRs for the specified number in the specified domains.
 
     e.g. lookup('16505551212', ['e164.dnspython.org.', 'e164.arpa.'])
+
+    *number*, a ``text`` is the number to look for.
+
+    *domains* is an iterable containing ``dns.name.Name`` values.
+
+    *resolver*, a ``dns.resolver.Resolver``, is the resolver to use.  If
+    ``None``, the default resolver is used.
     """
+
     if resolver is None:
         resolver = dns.resolver.get_default_resolver()
     e_nx = dns.resolver.NXDOMAIN()
index f2a87736ffcf9b90d2be2df8ab462cc5ca52c5b4..fecbaafe28cd6235d9ff1bab76d61632a4fcd487 100644 (file)
@@ -782,7 +782,7 @@ class NameTestCase(unittest.TestCase):
 
     def testEnumToE164(self):
         n = dns.name.from_text('2.1.2.1.5.5.5.0.5.6.1.e164.arpa.')
-        e = b'+16505551212'
+        e = '+16505551212'
         text = dns.e164.to_e164(n)
         self.assertEqual(text, e)