Ad oggi la configurazione viene letta solamente nel file main.py passando il percorso completo al file di configurazione recuperato dalla linea di comando (CLI):
Per ottenere la stessa configurazione è necessario passare ogni volta il percorso al file di configurazione. Questo fa sì che se volessimo accedere alla configurazione corrente da un modulo diverso bisognerebbe per forza passargli in qualche modo questo percorso, altrimenti verrebbe restituita la configurazione di default
Ogni funzione richiamata dal file main.py per essere configurabile deve per forza accettare in ingresso un parametro che verrà preso dalla configurazione (in quanto non può accedervi direttamente per il motivo espresso al punto 1)
Soluzioni
Singleton
L'idea prevalente è quella di usare una classe Configuration che implementi il Singleton Pattern (come in questo esempio calzante).
In questo modo la configurazione viene caricata in memoria per tutta la vita dell'oggetto Configuration e vi si può accedere globalmente andando ad includere il modulo e richiamando Configuration.get_instance() (o un metodo analogo) che ritorni la configurazione corretta.
Ad oggi la configurazione viene letta solamente nel file
main.py
passando il percorso completo al file di configurazione recuperato dalla linea di comando (CLI):https://github.com/LukeSavefrogs/danea-easyfatt/blob/1af44e2ef269aab6c669d028405add55388f9641/src/veryeasyfatt/app/main.py#L39-L46
Questo crea diversi problemi:
main.py
per essere configurabile deve per forza accettare in ingresso un parametro che verrà preso dalla configurazione (in quanto non può accedervi direttamente per il motivo espresso al punto 1)Soluzioni
Singleton
L'idea prevalente è quella di usare una classe
Configuration
che implementi il Singleton Pattern (come in questo esempio calzante).In questo modo la configurazione viene caricata in memoria per tutta la vita dell'oggetto
Configuration
e vi si può accedere globalmente andando ad includere il modulo e richiamandoConfiguration.get_instance()
(o un metodo analogo) che ritorni la configurazione corretta.