]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Added detection of Table prefixes in the create table render
authorrmoretto <rodrigo.ce.moretto@gmail.com>
Sat, 5 Sep 2020 16:30:45 +0000 (12:30 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 5 Nov 2020 13:35:54 +0000 (08:35 -0500)
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

alembic/autogenerate/render.py
docs/build/unreleased/721.rst [new file with mode: 0644]
tests/test_autogen_render.py

index a960d31cb950f49950704f6b208b2b17066f04e4..a5e32639ca0cc2689dd3f8cc48566989311d204b 100644 (file)
@@ -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 (file)
index 0000000..017c5f1
--- /dev/null
@@ -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.
index e7999f49b401b99b0810a9ee097fecf1e0184f26..e1f32697ad9da5e4aa849d328b7e0af7a00be08f 100644 (file)
@@ -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(