[PATCH v2 11/20] nmbug-status: Add an OrderedDict stub for Python 2.6

W. Trevor King wking at tremily.us
Mon Feb 10 10:40:32 PST 2014


Tomi Ollila and David Bremner (and presumably others) are running
Python 2.6 on their nmbug-status boxes, so it makes sense to keep
support for that version.  This commit adds a really minimal
OrderedDict stub (e.g. it doesn't handle key removal), but it gets the
job done for Page._get_threads.  Once we reach a point where Python
2.6 is no longer important (it's already out of it's security-fix
window [1]), we can pull this stub back out.

[1]: http://www.python.org/download/releases/2.6.9/
---
 devel/nmbug/nmbug-status | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status
index 6aa2583..57f16e2 100755
--- a/devel/nmbug/nmbug-status
+++ b/devel/nmbug/nmbug-status
@@ -5,7 +5,6 @@
 # dependencies
 #       - python 2.6 for json
 #       - argparse; either python 2.7, or install separately
-#       - collections.OrderedDict; python 2.7
 
 from __future__ import print_function
 from __future__ import unicode_literals
@@ -30,6 +29,25 @@ _ENCODING = locale.getpreferredencoding() or sys.getdefaultencoding()
 _PAGES = {}
 
 
+if not hasattr(collections, 'OrderedDict'):  # Python 2.6 or earlier
+    class _OrderedDict (dict):
+        "Just enough of a stub to get through Page._get_threads"
+        def __init__(self, *args, **kwargs):
+            super(_OrderedDict, self).__init__(*args, **kwargs)
+            self._keys = []  # record key order
+
+        def __setitem__(self, key, value):
+            super(_OrderedDict, self).__setitem__(key, value)
+            self._keys.append(key)
+
+        def __values__(self):
+            for key in self._keys:
+                yield self[key]
+
+
+    collections.OrderedDict = _OrderedDict
+
+
 def read_config(path=None, encoding=None):
     "Read config from json file"
     if not encoding:
-- 
1.8.5.2.8.g0f6c0d1



More information about the notmuch mailing list