Python tem um probleminha com importação circular.
Você pode dar uma olhada na PEP 484, lá esse erro é discutido.
De grosso modo esse erro ocorre quando você tenta utilizar seus scripts todos no mesmo pacote
e realizar importações entre eles.
A solução é mudar a sintaxe da importação, mudar a sintaxe dos type hints, e o mais importante, se você for instanciar alguma das classes, essa classe deve ser instanciada em um módulo separado do pacote.
Veja abaixo:
estrutura
app
__init__.py
aluno_aula.py
aluno.py
aula.py
main.py
aluno.py
from app import aula
class Aluno:
nome: str
idade: int
periodo: int
aulas: list['aula.Aula']
aula.py
from app import aluno
class Aula:
disciplina: str
alunos: list['aluno.Aluno']
aluno_aula.py
from app import aluno, aula
class AlunoAula:
alunos: list['aluno.Aluno']
aulas: list['aula.Aula']
def say_hello(self) -> None:
print('hello')
init.py
# __init__.py
# flake8: noqa
from . aluno_aula import AlunoAula
main.py
from app import AlunoAula
aluno_aula = AlunoAula()
aluno_aula.say_hello()