From: rmoretto Date: Sat, 5 Sep 2020 16:30:45 +0000 (-0400) Subject: Added detection of Table prefixes in the create table render X-Git-Tag: rel_1_5_0~18^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69f389268e3a5f638502dce19e9635b274c6b5ff;p=thirdparty%2Fsqlalchemy%2Falembic.git Added detection of Table prefixes in the create table render Added rendering for the ``Table.prefixes`` element to autogenerate so that the rendered Python code includes these directives. Pull request courtesy Rodrigo Ce Moretto. Fixes: #721 Closes: #734 Pull-request: https://github.com/sqlalchemy/alembic/pull/734 Pull-request-sha: 4917e195c184b79d63ea60a31ae8ea59e499162c Change-Id: I1e53500d49784c3ce2672fa9ce82876fa7645ee9 --- diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index a960d31c..a5e32639 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -202,6 +202,11 @@ def _add_table(autogen_context, op): text += ",\ncomment=%r" % _ident(comment) for k in sorted(op.kw): text += ",\n%s=%r" % (k.replace(" ", "_"), op.kw[k]) + + if table._prefixes: + prefixes = ", ".join("'%s'" % p for p in table._prefixes) + text += ",\nprefixes=[%s]" % prefixes + text += "\n)" return text diff --git a/docs/build/unreleased/721.rst b/docs/build/unreleased/721.rst new file mode 100644 index 00000000..017c5f13 --- /dev/null +++ b/docs/build/unreleased/721.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: bug, autogenerate + :tickets: 721 + + Added rendering for the ``Table.prefixes`` element to autogenerate so that + the rendered Python code includes these directives. Pull request courtesy + Rodrigo Ce Moretto. diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py index e7999f49..e1f32697 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -966,6 +966,43 @@ class AutogenRenderTest(TestBase): ")", ) + def test_render_table_w_prefixes(self): + m = MetaData() + t = Table( + "test", + m, + Column("id", Integer, primary_key=True), + prefixes=["TEST", "PREFIXES"], + ) + op_obj = ops.CreateTableOp.from_table(t) + eq_ignore_whitespace( + autogenerate.render_op_text(self.autogen_context, op_obj), + "op.create_table('test'," + "sa.Column('id', sa.Integer(), nullable=False)," + "sa.PrimaryKeyConstraint('id')," + "prefixes=['TEST', 'PREFIXES']" + ")", + ) + + def test_render_table_w_prefixes_schema(self): + m = MetaData(schema="foo") + t = Table( + "test", + m, + Column("id", Integer, primary_key=True), + prefixes=["TEST", "PREFIXES"], + ) + op_obj = ops.CreateTableOp.from_table(t) + eq_ignore_whitespace( + autogenerate.render_op_text(self.autogen_context, op_obj), + "op.create_table('test'," + "sa.Column('id', sa.Integer(), nullable=False)," + "sa.PrimaryKeyConstraint('id')," + "schema='foo'," + "prefixes=['TEST', 'PREFIXES']" + ")", + ) + def test_render_addtl_args(self): m = MetaData() t = Table(