Gestion de la configuration d'une application Python

Gestion de la configuration d'une application Python - Python - Programmation

Marsh Posté le 24-10-2006 à 21:00:44    

Je suis en train de faire une modeste application en Python pour la feignasse que je suis (un truc qui redimensionne des photos, les recompresse, génère les miniatures, renomme le tout et l'upload sur un FTP). Cette application n'ayant pas de GUI (je rappelle, je rappelle je suis une feignasse) et voulant éviter les lignes de commande à rallonge (jsuf) les différentes options seront régies par un fichier de conf.
 
Python propose la solution clé en main pour utiliser un fichier de conf sans trop se prendre la tête: ConfigParser.SafeConfigParser.
Wünderbar.
 
Sauf que voilà, j'ai pas vraiment envie que les détails du fichier de conf (comment sont nommées les sections et les entrées) voire même la mécanique du fichier de conf soient intimement liées à la logique de l'appli. D'où l'idée d'encapsuler tout ça dans un module séparé, voire une classe ad hoc. Ma question est simple: quelle est l'implémentation la plus adaptée à Python ?
 
- faire une classe à part qui instancie un SafeConfigParser ou dériver une classe à moi du SafeConfigParser ?
- faire des getters qui se contenteront de faire un get(section, variable) ?
- utiliser __getattr__ pour faire le get(section, variable) approprié et éviter d'écrire des getters ?
 
Je ne suis pas encore totalement en osmose avec les paradigmes du Python, alors si une âme charitable et éclairée veut bien me donner un signe, je lui en serait reconnaissant (accessoirement, j'ai pas encore beaucoup de vécu en Python, donc je préfère éviter de prendre le mauvais pli, ou encore d'appliquer tel quel ce que j'aurais fait dans un autre langage).

Reply

Marsh Posté le 24-10-2006 à 21:00:44   

Reply

Marsh Posté le 24-10-2006 à 22:41:33    

ConfigParser sert à parser des fichiers de type ini.
 
En python, à moins que tu ais absolument besoin que des utilisateurs stupides (dans le sens de "ne connaissant pas le python) puissent la modifier, tu peux parfaitement faire ton fichier de conf directement en python: un fichier conf.py, directement importable en tant que module, et baste.
 
À la limite tu valides ses structures en bout de chaîne, mais tu as directement des objets Python à gérer, pas de parsing à te bouffer.
 
Sinon, j'aime bien YAML


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 25-10-2006 à 00:02:44    

Effectivement, j'avais pas pensé à la solution directement en Python.
Ca devrait être largement suffisant. A la base, c'est moi le principal utilisateur, voire même le seul, j'ai juste comme reflexe de jamais prendre comme hypothèse de base que je serai le seul utilisateur :)
 
Je vais partir sur la solution module python avec les variables directement dedans. J'avais pas pensé à YAML sur le coup, faut dire qu'un bête fichier .ini suffisait à mon bonheur.
 
Merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed