From 83bf27d41b2913aadec73009628420e10457dd5a Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 31 Aug 2022 20:19:45 +0300 Subject: [PATCH] Recalculate metaclass in checker.py --- mypy/checker.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mypy/checker.py b/mypy/checker.py index 1f4cb8bc7b3a..a39af7f21f01 100644 --- a/mypy/checker.py +++ b/mypy/checker.py @@ -2029,6 +2029,12 @@ def visit_class_def(self, defn: ClassDef) -> None: for base in typ.mro[1:]: if base.is_final: self.fail(message_registry.CANNOT_INHERIT_FROM_FINAL.format(base.name), defn) + + if typ.metaclass_type is None: + # This might be because of import cycle when metaclass is a placeholder node. + # See https://github.com/python/mypy/pull/13565 + typ.metaclass_type = typ.calculate_metaclass_type() + with self.tscope.class_scope(defn.info), self.enter_partial_types(is_class=True): old_binder = self.binder self.binder = ConditionalTypeBinder()