--- /dev/null
+.. change::
+ :tags: change
+ :tickets: 6804, 6759
+
+ Add basic support for generic classes without requiring
+ ``TYPE_CHECKING``.
"""
+ def __class_getitem__(cls, key):
+ # allow generic classes in py3.9+
+ return cls
+
@util.preload_module("sqlalchemy.sql.traversals")
def get_children(self, omit_attrs=(), **kw):
r"""Return immediate child :class:`.visitors.Traversible`
sequence. This should be false only for oracle.
"""
return exclusions.open()
+
+ @property
+ def builtin_generics(self):
+ "If list[int] is a valid syntax. basically py3.9+"
+ return exclusions.only_if(lambda: util.py39)
from .compat import print_
from .compat import py2k
from .compat import py37
+from .compat import py38
+from .compat import py39
from .compat import py3k
from .compat import pypy
from .compat import quote_plus
import platform
import sys
-py310 = sys.version_info >= (3, 10)
+py39 = sys.version_info >= (3, 9)
py38 = sys.version_info >= (3, 8)
py37 = sys.version_info >= (3, 7)
py3k = sys.version_info >= (3, 0)
--- /dev/null
+from sqlalchemy import Column
+from sqlalchemy.testing import fixtures
+from sqlalchemy.testing import requires
+
+
+class TestGenerics(fixtures.TestBase):
+ @requires.builtin_generics
+ def test_traversible_is_generic(self):
+ col = Column[int]
+ assert col is Column