.. default-role:: literal .. include:: inc/preambule.txt Accès aux variables ==================== Protocole d'accès aux valeurs ------------------------------- **Créole** - Si la variable n'a pas été déclarée, une erreur est levée - Si la variable a été déclarée, mais qu'aucune valeur n'a été définie, (ni valeur affectée, ni valeur par défaut) la valeur retournée est `[]` ou `""` ou `[""]` ou `["",""]`, - Si la variable a été déclarée et qu'une valeur par défaut a été définie, la valeur retournée et la valeur par défaut, - Si la variable a été déclarée et qu'une valeur a été définie, la valeur retournée est la valeur de la variable. **tiramisu** - Si la variable n'a pas été déclarée, une erreur est levée - Si la variable a été déclarée, mais qu'aucune valeur n'a été définie, (ni valeur affectée, ni valeur par défaut) la valeur retournée est `None`, - Si la variable a été déclarée et qu'une valeur par défaut a été définie, la valeur retournée et la valeur par défaut, - Si la variable a été déclarée et qu'une valeur a été définie, la valeur retournée est la valeur de la variable. la différence tient au fait de la valeur nulle (`None`) qui a été mal définie dès le début dans `Créole`. Accès Créole par "dictionnaire" -------------------------------- La définition est dans le `XML` :: Le dictionnaire est chargé dans un `EoleDict()` :: from creole.cfgparser import EoleDict eoldict = EoleDict(...) Un export dans un dictionnaire est necessaire pour manipuler les données :: from creole.parsedico import parse_dico flatdict = parse_dico(eoldict) assert dico['ip'] == '10.10.1.11' le resultat de l'accès aux données vient de `typeole.EoleVar('ip').get_value()` Accès `tiramisu` par espace de nommage ---------------------------------------- - espaces de nommages ; - c'est la configuration qui est responsable de l'accès aux valeurs ; - une configuration par accès direct (pas d'export) ; - un point d'entrée unique aisément manipulable grâce aux espaces de nommage. :: from tiramisu.config import Config from tiramisu.option import OptionDescription subdescr = OptionDescription("creole", [IPOption('ip')]) descr = OptionDescription("creole", [subdescr]) config = Config(descr) assert config.creole.general.ip == '10.10.1.11' Les valeurs sont dépendantes **de la configuration** et donc la responsabilité des valeurs dépend de la configuration et pas de la variable elle-même.