[kernel] r18613 - in dists/squeeze-backports/linux-2.6/debian: . lib/python/debian_linux

Ben Hutchings benh at alioth.debian.org
Tue Jan 24 05:03:15 UTC 2012


Author: benh
Date: Tue Jan 24 05:03:13 2012
New Revision: 18613

Log:
Monkey-patch Python collections module to add OrderedDict if necessary

Modified:
   dists/squeeze-backports/linux-2.6/debian/changelog
   dists/squeeze-backports/linux-2.6/debian/lib/python/debian_linux/__init__.py

Modified: dists/squeeze-backports/linux-2.6/debian/changelog
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/changelog	Tue Jan 24 04:43:32 2012	(r18612)
+++ dists/squeeze-backports/linux-2.6/debian/changelog	Tue Jan 24 05:03:13 2012	(r18613)
@@ -4,6 +4,7 @@
     - Use gcc-4.4 for all architectures
     - Disable building of udebs
     - Change ABI number to 0.bpo.1
+    - Monkey-patch Python collections module to add OrderedDict if necessary
 
  -- Ben Hutchings <ben at decadent.org.uk>  Tue, 24 Jan 2012 03:22:36 +0000
 

Modified: dists/squeeze-backports/linux-2.6/debian/lib/python/debian_linux/__init__.py
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/lib/python/debian_linux/__init__.py	Tue Jan 24 04:43:32 2012	(r18612)
+++ dists/squeeze-backports/linux-2.6/debian/lib/python/debian_linux/__init__.py	Tue Jan 24 05:03:13 2012	(r18613)
@@ -1 +1,43 @@
 # Module
+
+# Python 2.6 compat
+def _compat():
+    import collections
+
+    if hasattr(collections, 'OrderedDict'):
+        return
+
+    class OrderedDict(dict):
+        __slots__ = '_list',
+
+        def __init__(self, entries=None):
+            super(OrderedDict, self).__init__()
+            self._list = []
+            if entries is not None:
+                for key, value in entries:
+                    self[key] = value
+
+        def __delitem__(self, key):
+            super(OrderedDict, self).__delitem__(key)
+            self._list.remove(key)
+
+        def __setitem__(self, key, value):
+            super(OrderedDict, self).__setitem__(key, value)
+            if key not in self._list:
+                self._list.append(key)
+
+        def iterkeys(self):
+            for i in iter(self._list):
+                yield i
+
+        def iteritems(self):
+            for i in iter(self._list):
+                yield (i, self[i])
+
+        def itervalues(self):
+            for i in iter(self._list):
+                yield self[i]
+
+    collections.OrderedDict = OrderedDict
+
+_compat()



More information about the Kernel-svn-changes mailing list