summaryrefslogtreecommitdiff
path: root/alembic/autogenerate
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-09-19 17:40:06 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2019-09-19 20:47:31 -0400
commitf8c1c70eb9cea8c7fb7ef1236e29b924908c5b8b (patch)
treefcb8926e5ec8c924b54062557bf028905ea3bb25 /alembic/autogenerate
parent049e8303b42b70df562a9e33bbb4aa66f99b2824 (diff)
downloadalembic-f8c1c70eb9cea8c7fb7ef1236e29b924908c5b8b.tar.gz
Render Variant types
Added rendering for SQLAlchemy ``Variant`` datatypes, which render as the base type plus one or more ``.with_variant()`` method calls. Change-Id: Ic0eea1be911c2fb3e9802ec21ff99815a06602e3 Fixes: #131
Diffstat (limited to 'alembic/autogenerate')
-rw-r--r--alembic/autogenerate/render.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py
index 895c390..8101637 100644
--- a/alembic/autogenerate/render.py
+++ b/alembic/autogenerate/render.py
@@ -679,6 +679,8 @@ def _repr_type(type_, autogen_context):
elif impl_rt:
return impl_rt
elif mod.startswith("sqlalchemy."):
+ if type(type_) is sqltypes.Variant:
+ return _render_Variant_type(type_, autogen_context)
if "_render_%s_type" % type_.__visit_name__ in globals():
fn = globals()["_render_%s_type" % type_.__visit_name__]
return fn(type_, autogen_context)
@@ -696,6 +698,17 @@ def _render_ARRAY_type(type_, autogen_context):
)
+def _render_Variant_type(type_, autogen_context):
+ base = _repr_type(type_.impl, autogen_context)
+ for dialect in sorted(type_.mapping):
+ typ = type_.mapping[dialect]
+ base += ".with_variant(%r, %s)" % (
+ dialect,
+ _repr_type(typ, autogen_context),
+ )
+ return base
+
+
def _render_type_w_subtype(
type_, autogen_context, attrname, regexp, prefix=None
):