From: Mike Bayer Date: Fri, 4 Mar 2022 22:30:21 +0000 (-0500) Subject: add length to enum repr params X-Git-Tag: rel_2_0_0b1~448 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a26a522648af14ffb9388d8d306bd98523bef1c9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git add length to enum repr params This amends the fix for #7789. Fixes: #7598 Change-Id: I067a081d743f1efaf8288601bec0400712012265 --- diff --git a/doc/build/changelog/unreleased_14/7720_7789.rst b/doc/build/changelog/unreleased_14/7720_7789.rst index 5c1026ef5f..5a521fe010 100644 --- a/doc/build/changelog/unreleased_14/7720_7789.rst +++ b/doc/build/changelog/unreleased_14/7720_7789.rst @@ -1,6 +1,6 @@ .. change:: :tags: bug, sql, mysql - :tickets: 7720, 7789 + :tickets: 7720, 7789, 7598 Fixed issues in :class:`_mysql.SET` datatype as well as :class:`.Enum` where the ``__repr__()`` method would not render all optional parameters in diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py index 3794fd8f79..6b2d3654b5 100644 --- a/lib/sqlalchemy/sql/sqltypes.py +++ b/lib/sqlalchemy/sql/sqltypes.py @@ -1321,9 +1321,9 @@ class Enum(Emulated, String, TypeEngine[Union[str, enum.Enum]], SchemaType): self.validate_strings = kw.pop("validate_strings", False) if self.enums: - length = max(len(x) for x in self.enums) + self._default_length = length = max(len(x) for x in self.enums) else: - length = 0 + self._default_length = length = 0 if not self.native_enum and length_arg is not NO_ARG: if length_arg < length: raise ValueError( @@ -1456,6 +1456,7 @@ class Enum(Emulated, String, TypeEngine[Union[str, enum.Enum]], SchemaType): additional_kw=[ ("native_enum", True), ("create_constraint", False), + ("length", self._default_length), ], to_inspect=[Enum, SchemaType], ) diff --git a/test/sql/test_types.py b/test/sql/test_types.py index 58dfa4dd8a..d7b9ae6550 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -2486,6 +2486,13 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): "Enum('x', 'y', name='somename', create_constraint=True)", ) + def test_repr_three(self): + e = Enum("x", "y", native_enum=False, length=255) + eq_( + repr(e), + "Enum('x', 'y', native_enum=False, length=255)", + ) + def test_length_native(self): e = Enum("x", "y", "long", length=42)