diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-06-21 12:52:42 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-06-21 12:53:52 -0400 |
| commit | 6ca7c2eb5294c255b3c1f62ec1445e3e5d52d4ba (patch) | |
| tree | fd35b55d3be1a984dcf7478583177e7e65426c13 /lib/sqlalchemy/ext | |
| parent | 73573a6fda1c3ebde27a169199b1f33fccb1e415 (diff) | |
| download | sqlalchemy-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.py | 5 | ||||
| -rw-r--r-- | lib/sqlalchemy/ext/mypy/util.py | 2 |
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 |
