From dc6e27b9d42eb13566bc8b41829b718c6b4041aa Mon Sep 17 00:00:00 2001 From: RamonWill Date: Mon, 3 Aug 2020 18:43:43 +0100 Subject: [PATCH] including enum name in error message --- lib/sqlalchemy/sql/sqltypes.py | 16 ++++++++++++---- test/sql/test_types.py | 26 +++++++++++++------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py index 52d80da669..0b03dafae3 100644 --- a/lib/sqlalchemy/sql/sqltypes.py +++ b/lib/sqlalchemy/sql/sqltypes.py @@ -1557,8 +1557,12 @@ class Enum(Emulated, String, SchemaType): util.raise_( LookupError( "'%s' is not among the defined enum values. " - "Possible values: %s" - % (elem, langhelpers._repr_tuple_names(self.enums)) + "Enum name: %s. Possible values: %s" + % ( + elem, + self.name, + langhelpers._repr_tuple_names(self.enums), + ) ), replace_context=err, ) @@ -1583,8 +1587,12 @@ class Enum(Emulated, String, SchemaType): util.raise_( LookupError( "'%s' is not among the defined enum values. " - "Possible values: %s" - % (elem, langhelpers._repr_tuple_names(self.enums)) + "Enum name: %s. Possible values: %s" + % ( + elem, + self.name, + langhelpers._repr_tuple_names(self.enums), + ) ), replace_context=err, ) diff --git a/test/sql/test_types.py b/test/sql/test_types.py index dfbb78245a..30309046e9 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -1452,7 +1452,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): eq_(bind_processor("foo"), "foo") assert_raises_message( LookupError, - "'5' is not among the defined enum values. " + "'5' is not among the defined enum values. Enum name: someenum. " "Possible values: one, two, three, ..., BMember", bind_processor, 5, @@ -1460,7 +1460,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): assert_raises_message( LookupError, - "'foo' is not among the defined enum values. " + "'foo' is not among the defined enum values. Enum name: someenum. " "Possible values: one, two, three, ..., BMember", bind_processor_validates, "foo", @@ -1471,7 +1471,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): eq_(result_processor("one"), self.one) assert_raises_message( LookupError, - "'foo' is not among the defined enum values. " + "'foo' is not among the defined enum values. Enum name: someenum. " "Possible values: one, two, three, ..., BMember", result_processor, "foo", @@ -1487,7 +1487,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): assert_raises_message( LookupError, - "'5' is not among the defined enum values. " + "'5' is not among the defined enum values. Enum name: someenum. " "Possible values: one, two, three, ..., BMember", literal_processor, 5, @@ -1495,7 +1495,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): assert_raises_message( LookupError, - "'foo' is not among the defined enum values. " + "'foo' is not among the defined enum values. Enum name: someenum. " "Possible values: one, two, three, ..., BMember", validate_literal_processor, "foo", @@ -1513,7 +1513,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): eq_(bind_processor("foo"), "foo") assert_raises_message( LookupError, - "'5' is not among the defined enum values. " + "'5' is not among the defined enum values. Enum name: None. " "Possible values: one, two", bind_processor, 5, @@ -1521,7 +1521,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): assert_raises_message( LookupError, - "'foo' is not among the defined enum values. " + "'foo' is not among the defined enum values. Enum name: None. " "Possible values: one, two", bind_processor_validates, "foo", @@ -1532,7 +1532,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): eq_(result_processor("one"), "one") assert_raises_message( LookupError, - "'foo' is not among the defined enum values. " + "'foo' is not among the defined enum values. Enum name: None. " "Possible values: one, two", result_processor, "foo", @@ -1546,7 +1546,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): eq_(literal_processor("foo"), "'foo'") assert_raises_message( LookupError, - "'5' is not among the defined enum values. " + "'5' is not among the defined enum values. Enum name: None. " "Possible values: one, two", literal_processor, 5, @@ -1554,7 +1554,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): assert_raises_message( LookupError, - "'foo' is not among the defined enum values. " + "'foo' is not among the defined enum values. Enum name: None. " "Possible values: one, two", validate_literal_processor, "foo", @@ -1567,7 +1567,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): eq_(bind_processor("one"), "one") assert_raises_message( LookupError, - "'5' is not among the defined enum values. " + "'5' is not among the defined enum values. Enum name: None. " "Possible values: one, twothreefou.., seven, eight", bind_processor, 5, @@ -1579,7 +1579,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): assert_raises_message( LookupError, - "'5' is not among the defined enum values. " + "'5' is not among the defined enum values. Enum name: None. " "Possible values: None", bind_processor, 5, @@ -1781,7 +1781,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): assert_raises_message( LookupError, "'four' is not among the defined enum values. " - "Possible values: one, two, three", + "Enum name: None. Possible values: one, two, three", conn.scalar, select([self.tables.non_native_enum_table.c.someotherenum]), ) -- 2.47.3