1 .. default-role:: literal
3 .. include:: inc/preambule.txt
8 Protocole d'accès aux valeurs
9 -------------------------------
13 - Si la variable n'a pas été déclarée, une erreur est levée
14 - 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 `["",""]`,
15 - 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,
16 - 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.
20 - Si la variable n'a pas été déclarée, une erreur est levée
21 - 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`,
22 - 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,
23 - 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.
25 la différence tient au fait de la valeur nulle (`None`) qui a été mal définie
26 dès le début dans `Créole`.
28 Accès Créole par "dictionnaire"
29 --------------------------------
31 La définition est dans le `XML`
35 <family name="general">
37 <variable name="adresse_ip_eth0">
39 Le dictionnaire est chargé dans un `EoleDict()`
43 from creole.cfgparser import EoleDict
44 eoldict = EoleDict(...)
46 Un export dans un dictionnaire est necessaire pour manipuler les données
50 from creole.parsedico import parse_dico
52 flatdict = parse_dico(eoldict)
54 assert dico['ip'] == '10.10.1.11'
57 le resultat de l'accès aux données vient de `typeole.EoleVar('ip').get_value()`
60 Accès `tiramisu` par espace de nommage
61 ----------------------------------------
64 - espaces de nommages ;
65 - c'est la configuration qui est responsable de l'accès aux valeurs ;
66 - une configuration par accès direct (pas d'export) ;
67 - un point d'entrée unique aisément manipulable grâce aux espaces de nommage.
71 from tiramisu.config import Config
72 from tiramisu.option import OptionDescription
73 subdescr = OptionDescription("creole", [IPOption('ip')])
74 descr = OptionDescription("creole", [subdescr])
75 config = Config(descr)
76 assert config.creole.general.ip == '10.10.1.11'
78 Les valeurs sont dépendantes **de la configuration** et donc la responsabilité
79 des valeurs dépend de la configuration et pas de la variable elle-même.