diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-03-12 21:59:22 -0700 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-03-12 21:59:22 -0700 |
commit | 494191413c80a01a7156fbe5fc6788d269e5e9ed (patch) | |
tree | dfab4f8b3f019498ce95756598324aa3574877e2 | |
parent | 8abe0a33b48b7be8b64b8e13c0cc3bbdaed02b0f (diff) | |
download | alembic-494191413c80a01a7156fbe5fc6788d269e5e9ed.tar.gz |
copy immutabledict here to remove dependency on sqla 0.7, [#36]rel_0_2_2
-rw-r--r-- | alembic/ddl/impl.py | 3 | ||||
-rw-r--r-- | alembic/util.py | 31 |
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) |