8000 Implementation of OrderedDict for python 2.6 · fariza/matplotlib@b6b3dfa · GitHub
[go: up one dir, main page]

Skip to content

Commit b6b3dfa

Browse files
committed
Implementation of OrderedDict for python 2.6
1 parent 9e70c13 commit b6b3dfa

File tree

2 files changed

+97
-1
lines changed

2 files changed

+97
-1
lines changed

lib/matplotlib/backend_bases.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@
4646
import warnings
4747
import time
4848
import io
49-
from collections import OrderedDict
49+
try:
50+
from collections import OrderedDict
51+
except:
52+
# simple python 2.6 implementation, core-features only
53+
from matplotlib.cbook import OrderedDict
5054

5155
import numpy as np
5256
import matplotlib.cbook as cbook

lib/matplotlib/cbook.py

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2327,3 +2327,95 @@ def get_instancemethod(self):
23272327
else:
23282328
def _putmask(a, mask, values):
23292329
return np.copyto(a, values, where=mask)
2330+
2331+
class OrderedDict(dict):
2332+
"""Very Basic implementation of OrderedDict, don't trust, missing a
2333+
few higher level functions, see NotImplemented functions below """
2334+
def __init__(self, *args, **kwargs):
2335+
self._keys = []
2336+
for key in kwargs:
2337+
self.__setitem__(key, kwargs[key])
2338+
2339+
def __contains__(self, key):
2340+
return key in self._keys
2341+
2342+
def __setitem__(self, key, value):
2343+
if key not in self._keys:
2344+
self._keys.append(key)
2345+
dict.__setitem__(self,key,value)
2346+
2347+
def __delitem__(self, key):
2348+
self._keys.remove(key)
2349+
dict.__delitem__(key)
2350+
2351+
def __iter__(self):
2352+
return self._keys.__iter__()
2353+
2354+
def __eq__(self, other):
2355+
return type(other) == type(self) and other._keys == self._keys and \
2356+
super.__eq__(self, other)
2357+
2358+
def __ne__(self, other):
2359+
return type(other) != type(self) or other._keys != self._keys or \
2360+
super.__ne__(self, other)
2361+
2362+
def __reduce__(self):
2363+
raise NotImplementedError
2364+
2365+
def __reversed__(self):
2366+
return self._keys.__reversed__()
2367+
2368+
def clear(self):
2369+
del self._keys[:]
2370+
dict.clear()
2371+
2372+
def copy(self):
2373+
raise NotImplementedError
2374+
2375+
def items(self):
2376+
return [(k, dict[k]) in self._keys]
2377+
2378+
def iteritems(self):
2379+
for k in self._keys:
2380+
yield k, dict[k]
2381+
2382+
def iterkeys(self):
2383+
return self.__iter__()
2384+
2385+
def itervalues(self):
2386+
for k in self._keys:
2387+
yield dict[self._keys]
2388+
2389+
def keys(self):
2390+
return self._keys
2391+
2392+
def pop(self, key):
2393+
self._keys.remove(key)
2394+
return dict.pop(self,key)
2395+
2396+
def pop_item(self, last=True):
2397+
if last:
2398+
key = self._keys[-1]
2399+
else:
2400+
key = self._keys[0]
2401+
return key, self.pop[key]
2402+
2403+
def set_default(self, key, default=None):
2404+
if key not in self._keys:
2405+
self[key] = default
2406+
return dict.get_default(self, key, default)
2407+
2408+
def update(*args, **kwds):
2409+
raise NotImplementedError
2410+
2411+
def values(self):
2412+
return [dict[k] for k in self._keys]
2413+
2414+
def viewitems(self):
2415+
raise NotImplementedError
2416+
def viewkeys(self):
2417+
raise NotImplementedError
2418+
def viewvalues(self):
2419+
raise NotImplementedError
2420+
def fromkeys(cls, iterable, value=None):
2421+
raise NotImplementedError

0 commit comments

Comments
 (0)
0