[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [stem/master] fixed python2.6 compatability



commit 95c2187563cb194afa4aa4ec2d479614da91e291
Author: Foxboron <mcfoxax@xxxxxxxxx>
Date:   Fri Jan 2 23:57:28 2015 +0100

    fixed python2.6 compatability
---
 stem/_compat.py                 |    8 ++++----
 stem/control.py                 |   12 ++++++------
 stem/descriptor/__init__.py     |    6 +++---
 stem/descriptor/reader.py       |    4 ++--
 stem/exit_policy.py             |   10 +++++-----
 stem/response/events.py         |   20 ++++++++++----------
 stem/util/connection.py         |    4 ++--
 stem/util/enum.py               |    4 ++--
 stem/util/str_tools.py          |   10 +++++-----
 stem/util/system.py             |    4 ++--
 test/unit/connection/connect.py |    5 ++++-
 test/unit/tutorial_examples.py  |    2 +-
 12 files changed, 46 insertions(+), 43 deletions(-)

diff --git a/stem/_compat.py b/stem/_compat.py
index 0fb3bfc..e0ba489 100644
--- a/stem/_compat.py
+++ b/stem/_compat.py
@@ -6,11 +6,11 @@ PY33 = sys.version_info >= (3, 3)
 PY34 = sys.version_info >= (3, 4)
 
 if PY3:
-    unicode = str
+    str_type = str
 else:
-    unicode = unicode  # NOQA
+    str_type = unicode  # NOQA
 
 if PY3:
-    long = int
+    int_type = int
 else:
-    long = long  # NOQA
+    int_type = long  # NOQA
diff --git a/stem/control.py b/stem/control.py
index 8986c21..993d5c3 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -258,7 +258,7 @@ import stem.version
 
 from stem import UNDEFINED, CircStatus, Signal
 from stem.util import log
-from stem._compat import unicode
+from stem._compat import str_type
 
 # state changes a control socket can have
 
@@ -992,7 +992,7 @@ class Controller(BaseController):
     start_time = time.time()
     reply = {}
 
-    if isinstance(params, (bytes, unicode)):
+    if isinstance(params, (bytes, str_type)):
       is_multiple = False
       params = set([params])
     else:
@@ -1887,7 +1887,7 @@ class Controller(BaseController):
     start_time = time.time()
     reply = {}
 
-    if isinstance(params, (bytes, unicode)):
+    if isinstance(params, (bytes, str_type)):
       params = [params]
 
     # remove strings which contain only whitespace
@@ -2077,7 +2077,7 @@ class Controller(BaseController):
         for param, value in params:
           param = param.lower()
 
-          if isinstance(value, (bytes, unicode)):
+          if isinstance(value, (bytes, str_type)):
             value = [value]
 
           to_cache[param] = value
@@ -2635,7 +2635,7 @@ class Controller(BaseController):
       * :class:`stem.InvalidArguments` if features passed were invalid
     """
 
-    if isinstance(features, (bytes, unicode)):
+    if isinstance(features, (bytes, str_type)):
       features = [features]
 
     response = self.msg('USEFEATURE %s' % ' '.join(features))
@@ -2780,7 +2780,7 @@ class Controller(BaseController):
 
       args = [circuit_id]
 
-      if isinstance(path, (bytes, unicode)):
+      if isinstance(path, (bytes, str_type)):
         path = [path]
 
       if path:
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 25a880e..6f4653f 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -58,7 +58,7 @@ import stem.prereq
 import stem.util.enum
 import stem.util.str_tools
 import stem.util.system
-from stem._compat import unicode
+from stem._compat import str_type
 
 try:
   # added in python 2.7
@@ -151,7 +151,7 @@ def parse_file(descriptor_file, descriptor_type = None, validate = True, documen
 
   handler = None
 
-  if isinstance(descriptor_file, (bytes, unicode)):
+  if isinstance(descriptor_file, (bytes, str_type)):
     if stem.util.system.is_tarfile(descriptor_file):
       handler = _parse_file_for_tar_path
     else:
@@ -433,7 +433,7 @@ def _read_until_keywords(keywords, descriptor_file, inclusive = False, ignore_fi
 
   ending_keyword = None
 
-  if isinstance(keywords, (bytes, unicode)):
+  if isinstance(keywords, (bytes, str_type)):
     keywords = (keywords,)
 
   if ignore_first:
diff --git a/stem/descriptor/reader.py b/stem/descriptor/reader.py
index bbd6c6c..0022d89 100644
--- a/stem/descriptor/reader.py
+++ b/stem/descriptor/reader.py
@@ -90,7 +90,7 @@ except ImportError:
 import stem.descriptor
 import stem.prereq
 import stem.util.system
-from stem._compat import unicode
+from stem._compat import str_type
 
 # flag to indicate when the reader thread is out of descriptor files to read
 FINISHED = 'DONE'
@@ -263,7 +263,7 @@ class DescriptorReader(object):
   """
 
   def __init__(self, target, validate = True, follow_links = False, buffer_size = 100, persistence_path = None, document_handler = stem.descriptor.DocumentHandler.ENTRIES, **kwargs):
-    if isinstance(target, (bytes, unicode)):
+    if isinstance(target, (bytes, str_type)):
       self._targets = [target]
     else:
       self._targets = target
diff --git a/stem/exit_policy.py b/stem/exit_policy.py
index 7ac3b8b..06b2b53 100644
--- a/stem/exit_policy.py
+++ b/stem/exit_policy.py
@@ -75,7 +75,7 @@ import stem.util.connection
 import stem.util.enum
 import stem.util.str_tools
 
-from stem._compat import unicode
+from stem._compat import str_type
 
 try:
   # added in python 3.2
@@ -121,7 +121,7 @@ def get_config_policy(rules, ip_address = None):
   if ip_address and not (stem.util.connection.is_valid_ipv4_address(ip_address) or stem.util.connection.is_valid_ipv6_address(ip_address)):
     raise ValueError("%s isn't a valid IP address" % ip_address)
 
-  if isinstance(rules, (bytes, unicode)):
+  if isinstance(rules, (bytes, str_type)):
     rules = rules.split(',')
 
   result = []
@@ -238,7 +238,7 @@ class ExitPolicy(object):
     # sanity check the types
 
     for rule in rules:
-      if not isinstance(rule, (bytes, unicode, ExitPolicyRule)):
+      if not isinstance(rule, (bytes, str_type, ExitPolicyRule)):
         raise TypeError('Exit policy rules can only contain strings or ExitPolicyRules, got a %s (%s)' % (type(rule), rules))
 
     # Unparsed representation of the rules we were constructed with. Our
@@ -249,7 +249,7 @@ class ExitPolicy(object):
     is_all_str = True
 
     for rule in rules:
-      if not isinstance(rule, (bytes, unicode)):
+      if not isinstance(rule, (bytes, str_type)):
         is_all_str = False
 
     if rules and is_all_str:
@@ -458,7 +458,7 @@ class ExitPolicy(object):
         if isinstance(rule, bytes):
           rule = stem.util.str_tools._to_unicode(rule)
 
-        if isinstance(rule, unicode):
+        if isinstance(rule, str_type):
           rule = ExitPolicyRule(rule.strip())
 
         if rule.is_accept:
diff --git a/stem/response/events.py b/stem/response/events.py
index 01a7b26..55c73e3 100644
--- a/stem/response/events.py
+++ b/stem/response/events.py
@@ -12,7 +12,7 @@ import stem.response
 import stem.version
 
 from stem.util import connection, log, str_tools, tor_tools
-from stem._compat import unicode, long
+from stem._compat import str_type, int_type
 
 # Matches keyword=value arguments. This can't be a simple "(.*)=(.*)" pattern
 # because some positional arguments, like circuit paths, can have an equal
@@ -142,7 +142,7 @@ class Event(stem.response.ControlMessage):
     attr_values = getattr(self, attr)
 
     if attr_values:
-      if isinstance(attr_values, (bytes, unicode)):
+      if isinstance(attr_values, (bytes, str_type)):
         attr_values = [attr_values]
 
       for value in attr_values:
@@ -256,8 +256,8 @@ class BandwidthEvent(Event):
     elif not self.read.isdigit() or not self.written.isdigit():
       raise stem.ProtocolError("A BW event's bytes sent and received should be a positive numeric value, received: %s" % self)
 
-    self.read = long(self.read)
-    self.written = long(self.written)
+    self.read = int_type(self.read)
+    self.written = int_type(self.written)
 
 
 class BuildTimeoutSetEvent(Event):
@@ -977,8 +977,8 @@ class StreamBwEvent(Event):
     elif not self.read.isdigit() or not self.written.isdigit():
       raise stem.ProtocolError("A STREAM_BW event's bytes sent and received should be a positive numeric value, received: %s" % self)
 
-    self.read = long(self.read)
-    self.written = long(self.written)
+    self.read = int_type(self.read)
+    self.written = int_type(self.written)
 
 
 class TransportLaunchedEvent(Event):
@@ -1051,8 +1051,8 @@ class ConnectionBandwidthEvent(Event):
     elif not tor_tools.is_valid_connection_id(self.id):
       raise stem.ProtocolError("Connection IDs must be one to sixteen alphanumeric characters, got '%s': %s" % (self.id, self))
 
-    self.read = long(self.read)
-    self.written = long(self.written)
+    self.read = int_type(self.read)
+    self.written = int_type(self.written)
 
     self._log_if_unrecognized('type', stem.ConnectionType)
 
@@ -1091,8 +1091,8 @@ class CircuitBandwidthEvent(Event):
     elif not tor_tools.is_valid_circuit_id(self.id):
       raise stem.ProtocolError("Circuit IDs must be one to sixteen alphanumeric characters, got '%s': %s" % (self.id, self))
 
-    self.read = long(self.read)
-    self.written = long(self.written)
+    self.read = int_type(self.read)
+    self.written = int_type(self.written)
 
 
 class CellStatsEvent(Event):
diff --git a/stem/util/connection.py b/stem/util/connection.py
index 276f97c..ded09b3 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -51,7 +51,7 @@ import stem.util.proc
 import stem.util.system
 
 from stem.util import conf, enum, log
-from stem._compat import unicode
+from stem._compat import str_type
 
 # Connection resolution is risky to log about since it's highly likely to
 # contain sensitive information. That said, it's also difficult to get right in
@@ -337,7 +337,7 @@ def is_valid_ipv4_address(address):
   :returns: **True** if input is a valid IPv4 address, **False** otherwise
   """
 
-  if not isinstance(address, (bytes, unicode)):
+  if not isinstance(address, (bytes, str_type)):
     return False
 
   # checks if theres four period separated values
diff --git a/stem/util/enum.py b/stem/util/enum.py
index 7520bda..d641789 100644
--- a/stem/util/enum.py
+++ b/stem/util/enum.py
@@ -40,7 +40,7 @@ constructed as simple type listings...
     +- __iter__ - iterator over our enum keys
 """
 
-from stem._compat import unicode
+from stem._compat import str_type
 
 
 def UppercaseEnum(*args):
@@ -76,7 +76,7 @@ class Enum(object):
     keys, values = [], []
 
     for entry in args:
-      if isinstance(entry, (bytes, unicode)):
+      if isinstance(entry, (bytes, str_type)):
         key, val = entry, _to_camel_case(entry)
       elif isinstance(entry, tuple) and len(entry) == 2:
         key, val = entry
diff --git a/stem/util/str_tools.py b/stem/util/str_tools.py
index 3556a33..63b66b0 100644
--- a/stem/util/str_tools.py
+++ b/stem/util/str_tools.py
@@ -28,7 +28,7 @@ import sys
 
 import stem.prereq
 import stem.util.enum
-from stem._compat import unicode
+from stem._compat import str_type
 
 
 # label conversion tuples of the form...
@@ -74,13 +74,13 @@ if stem.prereq.is_python_3():
       return msg
 else:
   def _to_bytes_impl(msg):
-    if msg is not None and isinstance(msg, unicode):
+    if msg is not None and isinstance(msg, str_type):
       return codecs.latin_1_encode(msg, 'replace')[0]
     else:
       return msg
 
   def _to_unicode_impl(msg):
-    if msg is not None and not isinstance(msg, unicode):
+    if msg is not None and not isinstance(msg, str_type):
       return msg.decode('utf-8', 'replace')
     else:
       return msg
@@ -455,7 +455,7 @@ def _parse_timestamp(entry):
   :raises: **ValueError** if the timestamp is malformed
   """
 
-  if not isinstance(entry, (str, unicode)):
+  if not isinstance(entry, (str, str_type)):
     raise ValueError('parse_timestamp() input must be a str, got a %s' % type(entry))
 
   try:
@@ -481,7 +481,7 @@ def _parse_iso_timestamp(entry):
   :raises: **ValueError** if the timestamp is malformed
   """
 
-  if not isinstance(entry, (str, unicode)):
+  if not isinstance(entry, (str, str_type)):
     raise ValueError('parse_iso_timestamp() input must be a str, got a %s' % type(entry))
 
   # based after suggestions from...
diff --git a/stem/util/system.py b/stem/util/system.py
index ec33c2b..315c39e 100644
--- a/stem/util/system.py
+++ b/stem/util/system.py
@@ -56,7 +56,7 @@ import stem.util.str_tools
 
 from stem import UNDEFINED
 from stem.util import log
-from stem._compat import unicode
+from stem._compat import str_type
 
 # Mapping of commands to if they're available or not.
 
@@ -243,7 +243,7 @@ def is_running(command):
       command_listing = call(secondary_resolver, None)
 
     if command_listing:
-      command_listing = list(map(unicode.strip, command_listing))
+      command_listing = list(map(str_type.strip, command_listing))
       return command in command_listing
 
   return None
diff --git a/test/unit/connection/connect.py b/test/unit/connection/connect.py
index b342eb7..37ded2f 100644
--- a/test/unit/connection/connect.py
+++ b/test/unit/connection/connect.py
@@ -9,7 +9,10 @@ try:
 except ImportError:
   from io import StringIO
 
-from mock import Mock, patch
+try:
+  from mock import Mock, patch
+except ImportError:
+  from unittest.mock import Mock, patch
 
 import stem
 import stem.connection
diff --git a/test/unit/tutorial_examples.py b/test/unit/tutorial_examples.py
index b277192..618844d 100644
--- a/test/unit/tutorial_examples.py
+++ b/test/unit/tutorial_examples.py
@@ -280,7 +280,7 @@ class TestTutorialExamples(unittest.TestCase):
       # Query all authority votes asynchronously.
 
       downloader = remote.DescriptorDownloader(document_handler = DocumentHandler.DOCUMENT)
-      queries = collections.OrderedDict()  # needed so output's order matches what's expected
+      queries = {}
 
       for name, authority in list(remote.get_authorities().items()):
         if authority.v3ident is None:



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits