|
@@ -40,50 +40,6 @@ except ImportError:
|
|
|
import struct
|
|
|
|
|
|
|
|
|
-class defaultdict(dict):
|
|
|
- """A python 2.4 equivalent of collections.defaultdict."""
|
|
|
-
|
|
|
- def __init__(self, default_factory=None, *a, **kw):
|
|
|
- if (default_factory is not None and
|
|
|
- not hasattr(default_factory, '__call__')):
|
|
|
- raise TypeError('first argument must be callable')
|
|
|
- dict.__init__(self, *a, **kw)
|
|
|
- self.default_factory = default_factory
|
|
|
-
|
|
|
- def __getitem__(self, key):
|
|
|
- try:
|
|
|
- return dict.__getitem__(self, key)
|
|
|
- except KeyError:
|
|
|
- return self.__missing__(key)
|
|
|
-
|
|
|
- def __missing__(self, key):
|
|
|
- if self.default_factory is None:
|
|
|
- raise KeyError(key)
|
|
|
- self[key] = value = self.default_factory()
|
|
|
- return value
|
|
|
-
|
|
|
- def __reduce__(self):
|
|
|
- if self.default_factory is None:
|
|
|
- args = tuple()
|
|
|
- else:
|
|
|
- args = self.default_factory,
|
|
|
- return type(self), args, None, None, self.items()
|
|
|
-
|
|
|
- def copy(self):
|
|
|
- return self.__copy__()
|
|
|
-
|
|
|
- def __copy__(self):
|
|
|
- return type(self)(self.default_factory, self)
|
|
|
-
|
|
|
- def __deepcopy__(self, memo):
|
|
|
- import copy
|
|
|
- return type(self)(self.default_factory,
|
|
|
- copy.deepcopy(self.items()))
|
|
|
- def __repr__(self):
|
|
|
- return 'defaultdict(%s, %s)' % (self.default_factory,
|
|
|
- dict.__repr__(self))
|
|
|
-
|
|
|
-
|
|
|
def make_sha(source=''):
|
|
|
"""A python2.4 workaround for the sha/hashlib module fiasco."""
|
|
|
try:
|