diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-09-19 17:40:06 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-09-19 20:47:31 -0400 |
commit | f8c1c70eb9cea8c7fb7ef1236e29b924908c5b8b (patch) | |
tree | fcb8926e5ec8c924b54062557bf028905ea3bb25 /alembic/autogenerate | |
parent | 049e8303b42b70df562a9e33bbb4aa66f99b2824 (diff) | |
download | alembic-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.py | 13 |
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 ): |