Für gewöhnlich bekommt man diese Meldung:
ImportError: cannot import name 'xyz' from partially initialized module 'abc' (most likely due to a circular import) (module in which the issue happens)
Das Problem ist, das der Parser versucht ein Modul A zu laden und dabei alle Abhängigkeiten aufzulösen und dazu B lädt bevor A komplett geladen ist.
B wiederum muss A laden, was bereits halb geladen ist und das resultiert in einer Loop.
from __future__ import annotation from typing import TYPE_CHECKING if TYPE_CHECKING: import whateverlib resulting else in circular import rest of code
__future__
sorgt dafür das die Prüfung der Klassen die für Typing angegeben sind erst auf Existenz geprüft werden nach dem das Modul komplett geladen worden ist (also alle Klassen bekannt sind)