]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
pep484 updates
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 28 Mar 2025 12:38:57 +0000 (08:38 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 28 Mar 2025 12:38:57 +0000 (08:38 -0400)
Change-Id: I7e7d254dcff3e26f92b413596246409b1dfaab16

alembic/autogenerate/render.py
alembic/ddl/base.py
alembic/ddl/impl.py
tests/test_autogen_render.py

index 50c51fa9304a13b038c24397c112efbec3167058..ffc277db81d174333d0f8892d28e464343ebcc37 100644 (file)
@@ -505,6 +505,7 @@ def _alter_column(
     type_ = op.modify_type
     nullable = op.modify_nullable
     comment = op.modify_comment
+    newname = op.modify_name
     autoincrement = op.kw.get("autoincrement", None)
     existing_type = op.existing_type
     existing_nullable = op.existing_nullable
@@ -533,6 +534,8 @@ def _alter_column(
         rendered = _render_server_default(server_default, autogen_context)
         text += ",\n%sserver_default=%s" % (indent, rendered)
 
+    if newname is not None:
+        text += ",\n%snew_column_name=%r" % (indent, newname)
     if type_ is not None:
         text += ",\n%stype_=%s" % (indent, _repr_type(type_, autogen_context))
     if nullable is not None:
index bd55c56d570493202a6bd6c9151a65c07325676a..7c36a887326b27f8b46c6d1f04c1955023583385 100644 (file)
@@ -299,9 +299,13 @@ def format_server_default(
     compiler: DDLCompiler,
     default: Optional[_ServerDefault],
 ) -> str:
-    return compiler.get_column_default_string(
+    # this can be updated to use compiler.render_default_string
+    # for SQLAlchemy 2.0 and above; not in 1.4
+    default_str = compiler.get_column_default_string(
         Column("x", Integer, server_default=default)
     )
+    assert default_str is not None
+    return default_str
 
 
 def format_type(compiler: DDLCompiler, type_: TypeEngine) -> str:
index c116fcfa6120f38e25fe2aeba89c1c63d5834840..96b03f6f7c00956706c58cc843f002dd2d8d5854 100644 (file)
@@ -46,7 +46,6 @@ if TYPE_CHECKING:
     from sqlalchemy.engine.reflection import Inspector
     from sqlalchemy.sql import ClauseElement
     from sqlalchemy.sql import Executable
-    from sqlalchemy.sql.elements import ColumnElement
     from sqlalchemy.sql.elements import quoted_name
     from sqlalchemy.sql.schema import Constraint
     from sqlalchemy.sql.schema import ForeignKeyConstraint
@@ -440,7 +439,7 @@ class DefaultImpl(metaclass=ImplMeta):
     def drop_table_comment(self, table: Table) -> None:
         self._exec(schema.DropTableComment(table))
 
-    def create_column_comment(self, column: ColumnElement[Any]) -> None:
+    def create_column_comment(self, column: Column[Any]) -> None:
         self._exec(schema.SetColumnComment(column))
 
     def drop_index(self, index: Index, **kw: Any) -> None:
index 600e57834fdf07d89479c774228f21aad6af2544..ed31183e8c0a2242c0dec692f751ccb3e72e3623 100644 (file)
@@ -1327,6 +1327,18 @@ class AutogenRenderTest(TestBase):
             {"from mypackage import MySpecialType"},
         )
 
+    def test_render_modify_name(self):
+        op_obj = ops.AlterColumnOp(
+            "sometable",
+            "somecolumn",
+            modify_name="newcolumnname",
+        )
+        eq_ignore_whitespace(
+            autogenerate.render_op_text(self.autogen_context, op_obj),
+            "op.alter_column('sometable', 'somecolumn', "
+            "new_column_name='newcolumnname')",
+        )
+
     def test_render_modify_type(self):
         op_obj = ops.AlterColumnOp(
             "sometable",