summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Stasiak <jakub@stasiak.at>2014-12-10 15:03:43 +0000
committerJakub Stasiak <jakub@stasiak.at>2014-12-11 13:42:29 +0000
commit54ed4b79bb8de9523b5a5b74a79b01c8aa2291a7 (patch)
tree3aab32626967940a3f578ea233999de1f9dc8f96
parent1c2205d5c9b364a825d51acd03add4de91cb645a (diff)
Use six for Python 2/3 compatibility
-rw-r--r--README.rst5
-rwxr-xr-xexamples/browser.py6
-rwxr-xr-xexamples/registration.py6
-rwxr-xr-xsetup.py3
-rw-r--r--zeroconf.py46
5 files changed, 26 insertions, 40 deletions
diff --git a/README.rst b/README.rst
index d4345f4..75e9dd1 100644
--- a/README.rst
+++ b/README.rst
@@ -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)
diff --git a/setup.py b/setup.py
index 2cfba01..229a653 100755
--- a/setup.py
+++ b/setup.py
@@ -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