summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-03-12 21:59:22 -0700
committerMike Bayer <mike_mp@zzzcomputing.com>2012-03-12 21:59:22 -0700
commit494191413c80a01a7156fbe5fc6788d269e5e9ed (patch)
treedfab4f8b3f019498ce95756598324aa3574877e2
parent8abe0a33b48b7be8b64b8e13c0cc3bbdaed02b0f (diff)
downloadalembic-494191413c80a01a7156fbe5fc6788d269e5e9ed.tar.gz
copy immutabledict here to remove dependency on sqla 0.7, [#36]rel_0_2_2
-rw-r--r--alembic/ddl/impl.py3
-rw-r--r--alembic/util.py31
2 files changed, 32 insertions, 2 deletions
diff --git a/alembic/ddl/impl.py b/alembic/ddl/impl.py
index 32f4860..c87189b 100644
--- a/alembic/ddl/impl.py
+++ b/alembic/ddl/impl.py
@@ -5,7 +5,6 @@ from sqlalchemy import schema
from alembic.ddl import base
from alembic import util
from sqlalchemy import types as sqltypes
-from sqlalchemy import util as sqla_util
class ImplMeta(type):
def __init__(cls, classname, bases, dict_):
@@ -58,7 +57,7 @@ class DefaultImpl(object):
def _exec(self, construct, execution_options=None,
multiparams=(),
- params=sqla_util.immutabledict()):
+ params=util.immutabledict()):
if isinstance(construct, basestring):
construct = text(construct)
if self.as_sql:
diff --git a/alembic/util.py b/alembic/util.py
index eb2d11e..d5fa5a4 100644
--- a/alembic/util.py
+++ b/alembic/util.py
@@ -210,3 +210,34 @@ class memoized_property(object):
obj.__dict__[self.__name__] = result = self.fget(obj)
return result
+
+class immutabledict(dict):
+
+ def _immutable(self, *arg, **kw):
+ raise TypeError("%s object is immutable" % self.__class__.__name__)
+
+ __delitem__ = __setitem__ = __setattr__ = \
+ clear = pop = popitem = setdefault = \
+ update = _immutable
+
+ def __new__(cls, *args):
+ new = dict.__new__(cls)
+ dict.__init__(new, *args)
+ return new
+
+ def __init__(self, *args):
+ pass
+
+ def __reduce__(self):
+ return immutabledict, (dict(self), )
+
+ def union(self, d):
+ if not self:
+ return immutabledict(d)
+ else:
+ d2 = immutabledict(self)
+ dict.update(d2, d)
+ return d2
+
+ def __repr__(self):
+ return "immutabledict(%s)" % dict.__repr__(self)