Supponiamo che un progetto su larga scala sia in via di sviluppo in Python 3.7. Viene scelta una architettura stratificata: "architettura pulita", "cipolla" o "esagonale". La regola della dipendenza in esso consente solo le dipendenze dall'aspetto interno; link .
In alcune lingue questa regola è supportata da strumenti di compilazione (ad es. gradle, maven o sbt), che definiscono le dipendenze esplicite tra i sottoprogetti; ad esempio, link . Questo, tuttavia, non sembra possibile in Python 3. Le uniche soluzioni che ho trovato, come un progetto Python separato o un microservice per livello, sembrano eccessivamente complicate.
Specificamente, supponiamo che il livello Applicazione possa dipendere dal livello Dominio , ma non viceversa.
Domande:
- Quale può essere una soluzione in Python 3.7 per mantenere questa struttura di dipendenza?
- In che modo i moduli in Dominio non sono tecnicamente autorizzati per l'importazione da moduli ?
Extra: La mia soluzione attuale è di emulare i sottoprogetti definendo i pacchetti di livello superiore APP e DOMAIN. Questa capitalizzazione funge da contrassegno nelle istruzioni di importazione.