[tor-commits] [stem/master] Python 2.6 broken by OrderedDict usage

atagar at torproject.org atagar at torproject.org
Sat Jun 7 18:42:46 UTC 2014


commit 2ebd329ff3c9079828d62529e1e01be9ba0cdf1d
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Jun 7 10:55:53 2014 -0700

    Python 2.6 broken by OrderedDict usage
    
    In our recent release I swapped our stem.util.conf to use an OrderedDict,
    breaking our support for python 2.6...
    
      % python2.6 ./run_tests.py --unit
      Traceback (most recent call last):
        File "./run_tests.py", line 465, in <module>
          main()
        File "./run_tests.py", line 119, in main
          test_config.load(os.path.join(STEM_BASE, "test", "settings.cfg"))
        File "/home/atagar/Desktop/stem/stem/util/conf.py", line 504, in load
          self.set(key, value, False)
        File "/home/atagar/Desktop/stem/stem/util/conf.py", line 604, in set
          listener(self, key)
        File "/home/atagar/Desktop/stem/stem/util/conf.py", line 175, in update
          new_value = config.get(key, self.config_dict[key])
        File "/home/atagar/Desktop/stem/stem/util/conf.py", line 685, in get
          valMap = collections.OrderedDict()
      AttributeError: 'module' object has no attribute 'OrderedDict'
    
    Caught by pmezard on...
    
      https://trac.torproject.org/12223
    
    This is actually something we've already dealt with elsewhere. Stem contains
    its own python 2.6 compatable copy of the OrderedDict module, I just forgot to
    use it here.
---
 stem/util/conf.py |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/stem/util/conf.py b/stem/util/conf.py
index 7c1cd69..6443fba 100644
--- a/stem/util/conf.py
+++ b/stem/util/conf.py
@@ -157,11 +157,16 @@ Here's an expanation of what happened...
     +- get_value - provides the value for a given key as a string
 """
 
-import collections
 import threading
 
 from stem.util import log
 
+try:
+  # added in python 2.7
+  from collections import OrderedDict
+except ImportError:
+  from stem.util.ordereddict import OrderedDict
+
 CONFS = {}  # mapping of identifier to singleton instances of configs
 
 
@@ -682,7 +687,7 @@ class Config(object):
     elif isinstance(default, tuple):
       val = tuple(val)
     elif isinstance(default, dict):
-      valMap = collections.OrderedDict()
+      valMap = OrderedDict()
       for entry in val:
         if '=>' in entry:
           entryKey, entryVal = entry.split('=>', 1)





More information about the tor-commits mailing list