summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/util/compat.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/util/compat.py')
-rw-r--r--lib/sqlalchemy/util/compat.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py
index 2e10b6f69..d99bb2035 100644
--- a/lib/sqlalchemy/util/compat.py
+++ b/lib/sqlalchemy/util/compat.py
@@ -54,6 +54,7 @@ else:
except ImportError:
import pickle
+
# a controversial feature, required by MySQLdb currently
def buffer(x):
return x
@@ -108,6 +109,7 @@ if py3k_warning:
# they're bringing it back in 3.2. brilliant !
def callable(fn):
return hasattr(fn, '__call__')
+
def cmp(a, b):
return (a > b) - (a < b)
@@ -126,43 +128,51 @@ except ImportError:
for i, fname in enumerate(fieldnames):
setattr(tup, fname, tup[i])
return tup
- tuptype = type(typename, (tuple, ), {'__new__':__new__})
+ tuptype = type(typename, (tuple, ), {'__new__': __new__})
return tuptype
try:
from collections import defaultdict
except ImportError:
class defaultdict(dict):
+
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.iteritems()
+
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))
@@ -189,6 +199,7 @@ except:
def add(self, other):
self._storage[other] = True
+
# find or create a dict implementation that supports __missing__
class _probe(dict):
def __missing__(self, key):
@@ -221,6 +232,7 @@ except ImportError:
import md5
_md5 = md5.new
+
def md5_hex(x):
# Py3K
#x = x.encode('utf-8')
@@ -273,4 +285,3 @@ else:
import decimal
-