diff options
author | Jakub Stasiak <jakub@stasiak.at> | 2014-12-10 15:03:43 +0000 |
---|---|---|
committer | Jakub Stasiak <jakub@stasiak.at> | 2014-12-11 13:42:29 +0000 |
commit | 54ed4b79bb8de9523b5a5b74a79b01c8aa2291a7 (patch) | |
tree | 3aab32626967940a3f578ea233999de1f9dc8f96 | |
parent | 1c2205d5c9b364a825d51acd03add4de91cb645a (diff) |
Use six for Python 2/3 compatibility
-rw-r--r-- | README.rst | 5 | ||||
-rwxr-xr-x | examples/browser.py | 6 | ||||
-rwxr-xr-x | examples/registration.py | 6 | ||||
-rwxr-xr-x | setup.py | 3 | ||||
-rw-r--r-- | zeroconf.py | 46 |
5 files changed, 26 insertions, 40 deletions
@@ -65,7 +65,8 @@ Here's an example: .. code-block:: python - from zeroconf import raw_input, ServiceBrowser, Zeroconf + from six.moves import input + from zeroconf import ServiceBrowser, Zeroconf class MyListener(object): @@ -82,7 +83,7 @@ Here's an example: listener = MyListener() browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener) try: - raw_input("Press enter to exit...\n\n") + input("Press enter to exit...\n\n") finally: zeroconf.close() diff --git a/examples/browser.py b/examples/browser.py index 1b3b717..9ac6d84 100755 --- a/examples/browser.py +++ b/examples/browser.py @@ -5,7 +5,9 @@ from __future__ import absolute_import, division, print_function, unicode_litera import socket -from zeroconf import raw_input, ServiceBrowser, Zeroconf +from six.moves import input + +from zeroconf import ServiceBrowser, Zeroconf class MyListener(object): @@ -38,6 +40,6 @@ if __name__ == '__main__': listener = MyListener() browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener) try: - raw_input("Waiting (press Enter to exit)...\n\n") + input("Waiting (press Enter to exit)...\n\n") finally: zeroconf.close() diff --git a/examples/registration.py b/examples/registration.py index 18e440f..50d53c1 100755 --- a/examples/registration.py +++ b/examples/registration.py @@ -4,7 +4,9 @@ import socket -from zeroconf import raw_input, ServiceInfo, Zeroconf +from six.moves import input + +from zeroconf import ServiceInfo, Zeroconf desc = {'path': '/~paulsm/'} @@ -17,7 +19,7 @@ zeroconf = Zeroconf() print("Registration of a service...") zeroconf.register_service(info) try: - raw_input("Waiting (press Enter to exit)...") + input("Waiting (press Enter to exit)...") finally: print("Unregistering...") zeroconf.unregister_service(info) @@ -50,4 +50,7 @@ setup( 'Bonjour', 'Avahi', 'Zeroconf', 'Multicast DNS', 'Service Discovery', 'mDNS', ], + install_requires=[ + 'six', + ], ) diff --git a/zeroconf.py b/zeroconf.py index fe5606d..f3c5cc3 100644 --- a/zeroconf.py +++ b/zeroconf.py @@ -35,6 +35,9 @@ import threading import time from functools import reduce +from six import byte2int, int2byte, text_type +from six.moves import xrange + try: NullHandler = logging.NullHandler @@ -54,31 +57,6 @@ log.addHandler(NullHandler()) if log.level == logging.NOTSET: log.setLevel(logging.WARN) -try: - xrange = xrange -except NameError: - xrange = range - -try: - unicode -except NameError: - unicode = str - -if isinstance(chr(8), unicode): - byte_chr = lambda num: bytes([num]) -else: - byte_chr = chr - -if isinstance(bytes([8])[0], int): - byte_ord = lambda x: x -else: - byte_ord = ord - -try: - raw_input = raw_input -except NameError: - raw_input = input - # hook for threads _GLOBAL_DONE = False @@ -501,7 +479,7 @@ class DNSIncoming(object): def read_character_string(self): """Reads a character string from the packet""" - length = byte_ord(self.data[self.offset]) + length = byte2int(self.data[self.offset]) self.offset += 1 return self.read_string(length) @@ -558,7 +536,7 @@ class DNSIncoming(object): def read_utf(self, offset, length): """Reads a UTF-8 string of a given length from the packet""" - return unicode(self.data[offset:offset + length], 'utf-8', 'replace') + return text_type(self.data[offset:offset + length], 'utf-8', 'replace') def read_name(self): """Reads a domain name from the packet""" @@ -568,7 +546,7 @@ class DNSIncoming(object): first = off while True: - length = byte_ord(self.data[off]) + length = byte2int(self.data[off]) off += 1 if length == 0: break @@ -579,7 +557,7 @@ class DNSIncoming(object): elif t == 0xC0: if next < 0: next = off + 1 - off = ((length & 0x3F) << 8) | byte_ord(self.data[off]) + off = ((length & 0x3F) << 8) | byte2int(self.data[off]) if off >= first: # TODO raise more specific exception raise Exception("Bad domain name (circular) at %s" % (off,)) @@ -643,7 +621,7 @@ class DNSOutgoing(object): def write_byte(self, value): """Writes a single byte to the packet""" - self.pack(b'!c', byte_chr(value)) + self.pack(b'!c', int2byte(value)) def insert_short(self, index, value): """Inserts an unsigned short in a certain position in the packet""" @@ -1064,12 +1042,12 @@ class ServiceInfo(object): result = b'' for key in properties: value = properties[key] - if isinstance(key, unicode): + if isinstance(key, text_type): key = key.encode('utf-8') if value is None: suffix = b'' - elif isinstance(value, unicode): + elif isinstance(value, text_type): suffix = value.encode('utf-8') elif isinstance(value, int): if value: @@ -1080,7 +1058,7 @@ class ServiceInfo(object): suffix = b'' list.append(b'='.join((key, suffix))) for item in list: - result = b''.join((result, byte_chr(len(item)), item)) + result = b''.join((result, int2byte(len(item)), item)) self.text = result else: self.text = properties @@ -1094,7 +1072,7 @@ class ServiceInfo(object): index = 0 strs = [] while index < end: - length = byte_ord(text[index]) + length = byte2int(text[index]) index += 1 strs.append(text[index:index + length]) index += length |