Si immagino che il problema quindi sia nel design dell'applicazione, perchè l'import già adesso e sicuramente pensavo di usarlo in un'altro modulo che non è quello finale, e quindi si otterrebbe una cosa del genere:<br>
error importa application, altri file del package usano error, il file main.py include application e usa application.<br><br>error e gli altri file però avrebbero bisogno dei dati del file yaml senza che main.py li includa (vengono usato direttamente dal package non sono per il file main.py), speravo che avviando il tutto a runtime funzionasse, perchè creo prima application e poi uso tutte le altre feature del package (tipo error).<br>
Mi sà che allora mi tocca trovare una strada alternativa. Il file yaml mi tornerebbe utile perchè per modificare il comportamento del programma mi basterebbe modificare quel valore e lanciare di nuovo il programma anzichè rimettere mano al sorgente e, magari, andare a modificare tutte le chiamate a error per settare debug a True o False. Non si tratta comunque solo di una flag di debug, ma anche di informazioni aggiuntive che si definiscono a runtime ma che servono ai file importati internamente.<br>
Probabilmente stò incasinando io stesso il design, metto un po' di ordine e magari se non riesco lo espongo meglio.<br><br>Riguardo l'uso del logger, si ci avevo già pensato, ma ancora non sono riuscito a capire come settare solo in un punto del programma il tipo di logging richiesto (per dire, se poi voglio disabilitare i messaggi di debug non vorrei dovermi modificare tutti i file per cambiare il valore logging.DEBUG).<br>
<br>Riguardo invece il fatto di __debug__ hai perfettamente ragione, la logica da C mi ha indotto a pensare che fosse una macro, mentre è una variabile python, probabilmente potrebbe essere migliore, ma forse complica troppo le cose o rallenta troppo l'esecuzione boh, chissà (bisognerebbe chiedere al Guido in persona).<br>