summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/ext
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-06-21 12:52:42 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2021-06-21 12:53:52 -0400
commit6ca7c2eb5294c255b3c1f62ec1445e3e5d52d4ba (patch)
treefd35b55d3be1a984dcf7478583177e7e65426c13 /lib/sqlalchemy/ext
parent73573a6fda1c3ebde27a169199b1f33fccb1e415 (diff)
downloadsqlalchemy-6ca7c2eb5294c255b3c1f62ec1445e3e5d52d4ba.tar.gz
accommodate no cls info found in _scan_declarative
Fixed issue in mypy plugin where class info for a custom declarative base would not be handled correctly on a cached mypy pass, leading to an AssertionError being raised. Fixes: #6476 Change-Id: If78340673e6a4d16d8f7cf787ce3bdb02c8bd47b
Diffstat (limited to 'lib/sqlalchemy/ext')
-rw-r--r--lib/sqlalchemy/ext/mypy/decl_class.py5
-rw-r--r--lib/sqlalchemy/ext/mypy/util.py2
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/sqlalchemy/ext/mypy/decl_class.py b/lib/sqlalchemy/ext/mypy/decl_class.py
index 2870eeb6f..61737fd66 100644
--- a/lib/sqlalchemy/ext/mypy/decl_class.py
+++ b/lib/sqlalchemy/ext/mypy/decl_class.py
@@ -50,7 +50,10 @@ def _scan_declarative_assignments_and_apply_types(
info = util._info_for_cls(cls, api)
- if cls.fullname.startswith("builtins"):
+ if info is None:
+ # this can occur during cached passes
+ return None
+ elif cls.fullname.startswith("builtins"):
return None
elif "_sa_decl_class_applied" in info.metadata:
cls_metadata = util.DeclClassApplied.deserialize(
diff --git a/lib/sqlalchemy/ext/mypy/util.py b/lib/sqlalchemy/ext/mypy/util.py
index 26bb0ac67..67c3fa209 100644
--- a/lib/sqlalchemy/ext/mypy/util.py
+++ b/lib/sqlalchemy/ext/mypy/util.py
@@ -208,6 +208,8 @@ def _info_for_cls(
) -> TypeInfo:
if cls.info is CLASSDEF_NO_INFO:
sym = api.lookup_qualified(cls.name, cls)
+ if sym is None:
+ return None
assert sym and isinstance(sym.node, TypeInfo)
return sym.node