summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/build/changelog/changelog_09.rst9
-rw-r--r--lib/sqlalchemy/sql/type_api.py2
-rw-r--r--test/sql/test_types.py7
3 files changed, 17 insertions, 1 deletions
diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst
index f6aa96a0f..6473da10b 100644
--- a/doc/build/changelog/changelog_09.rst
+++ b/doc/build/changelog/changelog_09.rst
@@ -15,6 +15,15 @@
:released:
.. change::
+ :tags: bug, sql
+ :tickets: 3122
+
+ The :meth:`.TypeEngine.with_variant` method will now accept a
+ type class as an argument which is internally converted to an
+ instance, using the same convention long established by other
+ constructs such as :class:`.Column`.
+
+ .. change::
:tags: bug, orm
:tickets: 3117
diff --git a/lib/sqlalchemy/sql/type_api.py b/lib/sqlalchemy/sql/type_api.py
index 6fa0bc64a..f9af21baa 100644
--- a/lib/sqlalchemy/sql/type_api.py
+++ b/lib/sqlalchemy/sql/type_api.py
@@ -263,7 +263,7 @@ class TypeEngine(Visitable):
.. versionadded:: 0.7.2
"""
- return Variant(self, {dialect_name: type_})
+ return Variant(self, {dialect_name: to_instance(type_)})
@util.memoized_property
diff --git a/test/sql/test_types.py b/test/sql/test_types.py
index 1130c9e40..e5c1e7b62 100644
--- a/test/sql/test_types.py
+++ b/test/sql/test_types.py
@@ -816,6 +816,13 @@ class VariantTest(fixtures.TestBase, AssertsCompiledSQL):
dialect=dialects.postgresql.dialect()
)
+ def test_to_instance(self):
+ self.assert_compile(
+ self.UTypeOne().with_variant(self.UTypeTwo, "postgresql"),
+ "UTYPETWO",
+ dialect=dialects.postgresql.dialect()
+ )
+
def test_compile_composite(self):
self.assert_compile(
self.composite,