Compare commits

..

No commits in common. "d3477d62417c8353714a04ca534ba73f9e9c6ea0" and "192325e9e00702788f69baaadcc745873f290b8b" have entirely different histories.

19 changed files with 152 additions and 303 deletions

View file

@ -1,16 +1,3 @@
## 1.2.0a39 (2025-10-29)
### Feat
- add tags support
### Fix
- load config leadership
- do not load secrets if not allowed
- update translation
- add test
## 1.2.0a38 (2025-10-22) ## 1.2.0a38 (2025-10-22)
## 1.2.0a37 (2025-10-16) ## 1.2.0a37 (2025-10-16)

View file

@ -5,8 +5,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"POT-Creation-Date: 2025-10-26 15:26+0100\n" "POT-Creation-Date: 2025-10-04 16:06+0200\n"
"PO-Revision-Date: 2025-10-26 15:28+0100\n" "PO-Revision-Date: 2025-10-04 16:06+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: fr\n" "Language: fr\n"
@ -16,31 +16,31 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 3.7\n" "X-Generator: Poedit 3.7\n"
#: src/rougail/annotator/family.py:151 #: src/rougail/annotator/family.py:150
msgid "default variable mode \"{0}\" is not a valid mode, valid modes are {1}" msgid "default variable mode \"{0}\" is not a valid mode, valid modes are {1}"
msgstr "" msgstr ""
"le mode d'une variable par défaut \"{0}\" n'est pas un mode valide, les " "le mode d'une variable par défaut \"{0}\" n'est pas un mode valide, les "
"modes valides sont {1}" "modes valides sont {1}"
#: src/rougail/annotator/family.py:157 #: src/rougail/annotator/family.py:156
msgid "default family mode \"{0}\" is not a valid mode, valid modes are {1}" msgid "default family mode \"{0}\" is not a valid mode, valid modes are {1}"
msgstr "" msgstr ""
"le mode d'une famille par défaut \"{0}\" n'est pas un mode valide, les modes " "le mode d'une famille par défaut \"{0}\" n'est pas un mode valide, les modes "
"valides sont {1}" "valides sont {1}"
#: src/rougail/annotator/family.py:189 #: src/rougail/annotator/family.py:188
msgid "mode \"{0}\" for \"{1}\" is not a valid mode, valid modes are {2}" msgid "mode \"{0}\" for \"{1}\" is not a valid mode, valid modes are {2}"
msgstr "" msgstr ""
"le mode \"{0}\" pour \"{1}\" n'est pas un mode valide, les modes valides " "le mode \"{0}\" pour \"{1}\" n'est pas un mode valide, les modes valides "
"sont {2}" "sont {2}"
#: src/rougail/annotator/family.py:193 #: src/rougail/annotator/family.py:192
msgid "mode \"{0}\" for \"{1}\" is not a valid mode, no modes are available" msgid "mode \"{0}\" for \"{1}\" is not a valid mode, no modes are available"
msgstr "" msgstr ""
"le mode \"{0}\" pour \"{1}\" n'est pas un mode valide, aucun mode ne sont " "le mode \"{0}\" pour \"{1}\" n'est pas un mode valide, aucun mode ne sont "
"définis" "définis"
#: src/rougail/annotator/family.py:257 #: src/rougail/annotator/family.py:256
msgid "" msgid ""
"the variable \"{0}\" is mandatory so in \"{1}\" mode but family has the " "the variable \"{0}\" is mandatory so in \"{1}\" mode but family has the "
"higher family mode \"{2}\"" "higher family mode \"{2}\""
@ -48,7 +48,7 @@ msgstr ""
"la variable \"{0}\" est obligatoire, donc en mode \"{1}\", mais la famille a " "la variable \"{0}\" est obligatoire, donc en mode \"{1}\", mais la famille a "
"un mode supérieur \"{2}\"" "un mode supérieur \"{2}\""
#: src/rougail/annotator/family.py:295 #: src/rougail/annotator/family.py:294
msgid "" msgid ""
"the follower \"{0}\" is in \"{1}\" mode but leader have the higher mode " "the follower \"{0}\" is in \"{1}\" mode but leader have the higher mode "
"\"{2}\"" "\"{2}\""
@ -56,7 +56,7 @@ msgstr ""
"la variable suiveuse \"{0}\" a le mode \"{1}\" mais la variable leader a un " "la variable suiveuse \"{0}\" a le mode \"{1}\" mais la variable leader a un "
"mode supérieur \"{2}\"" "mode supérieur \"{2}\""
#: src/rougail/annotator/family.py:328 #: src/rougail/annotator/family.py:327
msgid "" msgid ""
"the family \"{0}\" is in \"{1}\" mode but variables and families inside have " "the family \"{0}\" is in \"{1}\" mode but variables and families inside have "
"the higher modes \"{2}\"" "the higher modes \"{2}\""
@ -64,7 +64,7 @@ msgstr ""
"la famille \"{0}\" a le mode \"{1}\" mais les variables et les familles à " "la famille \"{0}\" a le mode \"{1}\" mais les variables et les familles à "
"l'intérieur ont des modes supérieurs \"{2}\"" "l'intérieur ont des modes supérieurs \"{2}\""
#: src/rougail/annotator/family.py:346 #: src/rougail/annotator/family.py:345
msgid "" msgid ""
"the variable \"{0}\" is in \"{1}\" mode but family has the higher family " "the variable \"{0}\" is in \"{1}\" mode but family has the higher family "
"mode \"{2}\"" "mode \"{2}\""
@ -72,28 +72,6 @@ msgstr ""
"la variable \"{0}\" est dans le mode \"{1}\" mais la famille a le mode " "la variable \"{0}\" est dans le mode \"{1}\" mais la famille a le mode "
"supérieur \"{2}\"" "supérieur \"{2}\""
#: src/rougail/annotator/property.py:158
msgid ""
"invalid tag name \"{0}\" should only contains lowercase ascii character, "
"number or _"
msgstr ""
"nom de l'étiquette invalide \"{0}\" doit seulement contenir des caractères "
"ascii minuscule, nombre or _"
#: src/rougail/annotator/property.py:163
msgid "invalid tag name \"{0}\" should not be a name of an existing mode"
msgstr ""
"nom de l'étiquette invalide \"{0}\" ne doit pas être un nom de mode existant"
#: src/rougail/annotator/property.py:168
#, fuzzy
#| msgid ""
#| "invalid tag name \"{0}\" should not be name of an available proprerties"
msgid "invalid tag name \"{0}\" should not be name of an available properties"
msgstr ""
"nom de l'étiquette invalide \"{0}\" ne doit pas être le nom d'une propriétés "
"existantes"
#: src/rougail/annotator/value.py:78 #: src/rougail/annotator/value.py:78
msgid "" msgid ""
"the follower \"{0}\" is not multi, so cannot have a list has default value" "the follower \"{0}\" is not multi, so cannot have a list has default value"
@ -139,129 +117,129 @@ msgstr ""
"la variable \"{0}\" a l'attribut \"secret_manager\" donc ne devrait pas " "la variable \"{0}\" a l'attribut \"secret_manager\" donc ne devrait pas "
"avoir de valeur par défaut" "avoir de valeur par défaut"
#: src/rougail/annotator/variable.py:254 #: src/rougail/annotator/variable.py:253
msgid "" msgid ""
"the variable \"{0}\" has regexp attribut but has not the \"regexp\" type" "the variable \"{0}\" has regexp attribut but has not the \"regexp\" type"
msgstr "" msgstr ""
"la variable \"{0}\" a un attribut regexp mais n'a pas le type \"regexp\"" "la variable \"{0}\" a un attribut regexp mais n'a pas le type \"regexp\""
#: src/rougail/annotator/variable.py:297 #: src/rougail/annotator/variable.py:296
msgid "" msgid ""
"the variable \"{0}\" has choices attribut but has not the \"choice\" type" "the variable \"{0}\" has choices attribut but has not the \"choice\" type"
msgstr "" msgstr ""
"la variable \"{0}\" a un attribut choices mais n'a pas le type \"choice\"" "la variable \"{0}\" a un attribut choices mais n'a pas le type \"choice\""
#: src/rougail/annotator/variable.py:325 #: src/rougail/annotator/variable.py:324
msgid "" msgid ""
"the variable \"{0}\" has an unvalid default value \"{1}\" should be in {2}" "the variable \"{0}\" has an unvalid default value \"{1}\" should be in {2}"
msgstr "" msgstr ""
"la variable \"{0}\" a la valeur par défaut invalide \"{1}\" devrait être {2}" "la variable \"{0}\" a la valeur par défaut invalide \"{1}\" devrait être {2}"
#: src/rougail/config/__init__.py:235 #: src/rougail/config/__init__.py:226
msgid "Structure format version by default, if not specified in structure file" msgid "Structure format version by default, if not specified in structure file"
msgstr "" msgstr ""
"La version du format de la structure par défaut, si non spécifier dans le " "La version du format de la structure par défaut, si non spécifier dans le "
"fichier de structure" "fichier de structure"
#: src/rougail/config/__init__.py:243 #: src/rougail/config/__init__.py:234
msgid "File with functions" msgid "File with functions"
msgstr "Fichier avec les fonctions" msgstr "Fichier avec les fonctions"
#: src/rougail/config/__init__.py:255 #: src/rougail/config/__init__.py:246
msgid "All modes level available" msgid "All modes level available"
msgstr "Tous les niveaux de modes valides" msgstr "Tous les niveaux de modes valides"
#: src/rougail/config/__init__.py:267 #: src/rougail/config/__init__.py:258
msgid "Default mode for a family" msgid "Default mode for a family"
msgstr "Mode par défaut pour une famille" msgstr "Mode par défaut pour une famille"
#: src/rougail/config/__init__.py:287 #: src/rougail/config/__init__.py:278
msgid "Default mode for a variable" msgid "Default mode for a variable"
msgstr "Mode par défaut pour une variable" msgstr "Mode par défaut pour une variable"
#: src/rougail/config/__init__.py:311 #: src/rougail/config/__init__.py:302
msgid "Option name for the base option" msgid "Option name for the base option"
msgstr "Nom de l'option pour l'option de base" msgstr "Nom de l'option pour l'option de base"
#: src/rougail/config/__init__.py:316 #: src/rougail/config/__init__.py:307
msgid "In cache file, do not importation of Tiramisu and other dependencies" msgid "In cache file, do not importation of Tiramisu and other dependencies"
msgstr "" msgstr ""
"Dans le fichier de cache, ne pas importer Tiramisu et autres dépendances" "Dans le fichier de cache, ne pas importer Tiramisu et autres dépendances"
#: src/rougail/config/__init__.py:321 #: src/rougail/config/__init__.py:312
msgid "Tiramisu cache filename" msgid "Tiramisu cache filename"
msgstr "Nom du fichier du cache Tiramisu" msgstr "Nom du fichier du cache Tiramisu"
#: src/rougail/config/__init__.py:329 #: src/rougail/config/__init__.py:320
msgid "Name of internal functions that we can use as a function" msgid "Name of internal functions that we can use as a function"
msgstr "" msgstr ""
"Nom des fonctions internes qu'il est possible d'utiliser comme fonction" "Nom des fonctions internes qu'il est possible d'utiliser comme fonction"
#: src/rougail/config/__init__.py:335 #: src/rougail/config/__init__.py:326
msgid "Name of extra annotators" msgid "Name of extra annotators"
msgstr "Nom des annotators supplémentaires" msgstr "Nom des annotators supplémentaires"
#: src/rougail/config/__init__.py:341 #: src/rougail/config/__init__.py:332
msgid "Suffix add to generated options name" msgid "Suffix add to generated options name"
msgstr "Suffix ajouté pour généré le nom des options" msgstr "Suffix ajouté pour généré le nom des options"
#: src/rougail/config/__init__.py:347 #: src/rougail/config/__init__.py:338
msgid "Every variables in calculation are optionals" msgid "Every variables in calculation are optionals"
msgstr "Toutes les variables dans un calcul sont optionnelles" msgstr "Toutes les variables dans un calcul sont optionnelles"
#: src/rougail/config/__init__.py:351 #: src/rougail/config/__init__.py:342
msgid "Loads redefine variables even if there don't already exists" msgid "Loads redefine variables even if there don't already exists"
msgstr "Charger les variables redéfinis même si elles n'existe pas" msgstr "Charger les variables redéfinis même si elles n'existe pas"
#: src/rougail/config/__init__.py:358 #: src/rougail/config/__init__.py:349
msgid "The secret pattern to build item name in Bitwarden" msgid "The secret pattern to build item name in Bitwarden"
msgstr "Le patron de secret pour construire le nom de l'élément dans Bitwarden" msgstr "Le patron de secret pour construire le nom de l'élément dans Bitwarden"
#: src/rougail/config/__init__.py:359 #: src/rougail/config/__init__.py:350
msgid "The pattern is in Jinja format" msgid "The pattern is in Jinja format"
msgstr "Le patron est au format Jinja" msgstr "Le patron est au format Jinja"
#: src/rougail/config/__init__.py:387 #: src/rougail/config/__init__.py:378
msgid "Select for {0}" msgid "Select for {0}"
msgstr "Sélection pour {0}" msgstr "Sélection pour {0}"
#: src/rougail/config/__init__.py:467 #: src/rougail/config/__init__.py:458
msgid "Override default parameters for option type" msgid "Override default parameters for option type"
msgstr "Sur charger les paramètre par défaut pour le type d'option" msgstr "Sur charger les paramètre par défaut pour le type d'option"
#: src/rougail/config/__init__.py:470 #: src/rougail/config/__init__.py:461
msgid "Default parameters for option type" msgid "Default parameters for option type"
msgstr "Paramètre par défaut pour le type d'option" msgstr "Paramètre par défaut pour le type d'option"
#: src/rougail/convert/convert.py:281 #: src/rougail/convert/convert.py:280
msgid "unknown type {0} for {1}" msgid "unknown type {0} for {1}"
msgstr "type {0} inconnu pour {1}" msgstr "type {0} inconnu pour {1}"
#: src/rougail/convert/convert.py:419 #: src/rougail/convert/convert.py:418
msgid "family \"{0}\" define multiple time" msgid "family \"{0}\" define multiple time"
msgstr "la famille \"{0}\" est définit plusieurs fois" msgstr "la famille \"{0}\" est définit plusieurs fois"
#: src/rougail/convert/convert.py:672 #: src/rougail/convert/convert.py:671
msgid "variable \"{0}\" define multiple time" msgid "variable \"{0}\" define multiple time"
msgstr "la variable \"{0}\" est définit plusieurs fois" msgstr "la variable \"{0}\" est définit plusieurs fois"
#: src/rougail/convert/convert.py:770 #: src/rougail/convert/convert.py:769
msgid "params must be a dict for {0}" msgid "params must be a dict for {0}"
msgstr "params doit être une dict pour {0}" msgstr "params doit être une dict pour {0}"
#: src/rougail/convert/convert.py:791 #: src/rougail/convert/convert.py:790
msgid "\"{0}\" has an invalid \"params\" for {1}: {2}" msgid "\"{0}\" has an invalid \"params\" for {1}: {2}"
msgstr "\"{0}\" a un attribut \"params\" invalide pour {1}: {2}" msgstr "\"{0}\" a un attribut \"params\" invalide pour {1}: {2}"
#: src/rougail/convert/convert.py:805 #: src/rougail/convert/convert.py:804
msgid "secret_manager must be a dict for {0}" msgid "secret_manager must be a dict for {0}"
msgstr "secret_manager doit être une dict pour {0}" msgstr "secret_manager doit être une dict pour {0}"
#: src/rougail/convert/convert.py:1134 #: src/rougail/convert/convert.py:1133
msgid "Cannot execute annotate multiple time" msgid "Cannot execute annotate multiple time"
msgstr "Ne peut exécuter l'annotation plusieurs fois" msgstr "Ne peut exécuter l'annotation plusieurs fois"
#: src/rougail/convert/convert.py:1141 #: src/rougail/convert/convert.py:1140
msgid "" msgid ""
"invalid \"structural\" definition ({0}), we cannot load any structural file!" "invalid \"structural\" definition ({0}), we cannot load any structural file!"
msgstr "" msgstr ""
@ -282,7 +260,7 @@ msgstr ""
"\"{2}\"" "\"{2}\""
#: src/rougail/convert/object_model.py:133 #: src/rougail/convert/object_model.py:133
#: src/rougail/convert/object_model.py:479 #: src/rougail/convert/object_model.py:468
msgid "unknown object \"{0}\" in attribute \"{1}\" for \"{2}\"" msgid "unknown object \"{0}\" in attribute \"{1}\" for \"{2}\""
msgstr "objet inconnu \"{0}\" dans l'attribut \"{1}\" pour \"{2}\"" msgstr "objet inconnu \"{0}\" dans l'attribut \"{1}\" pour \"{2}\""
@ -311,15 +289,7 @@ msgstr ""
"la variable \"{0}\" n'est pas suiveuse, donc ne peut avoir de type index " "la variable \"{0}\" n'est pas suiveuse, donc ne peut avoir de type index "
"comme paramètre dans \"{1}\"" "comme paramètre dans \"{1}\""
#: src/rougail/convert/object_model.py:405 #: src/rougail/convert/object_model.py:463
msgid ""
"variable \"{0}\" has a calculating \"{1}\" with an invalid return_type, "
"should be boolean or string, not \"{2}\""
msgstr ""
"la variable \"{0}\" a un calcul \"{1}\" avec un return_type invalide, "
"devrait être un booléen ou une chaîne de caractère, et pas \"{2}\""
#: src/rougail/convert/object_model.py:474
msgid "" msgid ""
"a variable \"{0}\" is needs in attribute \"{1}\" for \"{2}\" but it's a " "a variable \"{0}\" is needs in attribute \"{1}\" for \"{2}\" but it's a "
"family" "family"
@ -327,7 +297,7 @@ msgstr ""
"une variable \"{0}\" est nécessaire pour l'attribut \"{1}\" pour \"{2}\" " "une variable \"{0}\" est nécessaire pour l'attribut \"{1}\" pour \"{2}\" "
"mais c'est une famille" "mais c'est une famille"
#: src/rougail/convert/object_model.py:499 #: src/rougail/convert/object_model.py:488
msgid "" msgid ""
"variable \"{0}\" has an attribute \"{1}\" calculated with the unknown " "variable \"{0}\" has an attribute \"{1}\" calculated with the unknown "
"variable \"{2}\"" "variable \"{2}\""
@ -335,7 +305,7 @@ msgstr ""
"la variable \"{0}\" a un attribut invalide \"{1}\" calculé avec la variable " "la variable \"{0}\" a un attribut invalide \"{1}\" calculé avec la variable "
"inconnue \"{2}\"" "inconnue \"{2}\""
#: src/rougail/convert/object_model.py:551 #: src/rougail/convert/object_model.py:540
msgid "" msgid ""
"the variable \"{0}\" has an invalid \"{1}\" the variable \"{2}\" is in a sub " "the variable \"{0}\" has an invalid \"{1}\" the variable \"{2}\" is in a sub "
"dynamic option" "dynamic option"
@ -343,14 +313,14 @@ msgstr ""
"la variable \"{0}\" a un attribut invalide \"{1}\", la variable \"{2}\" est " "la variable \"{0}\" a un attribut invalide \"{1}\", la variable \"{2}\" est "
"dans une sous option dynamique" "dans une sous option dynamique"
#: src/rougail/convert/object_model.py:560 #: src/rougail/convert/object_model.py:549
msgid "" msgid ""
"the leader \"{0}\" has an invalid \"{1}\" the follower \"{2}\" is a multi" "the leader \"{0}\" has an invalid \"{1}\" the follower \"{2}\" is a multi"
msgstr "" msgstr ""
"la variable meneuse \"{0}\" a un attribut invalide \"{1}\", la variable " "la variable meneuse \"{0}\" a un attribut invalide \"{1}\", la variable "
"suiveuse \"{2}\" est multiple" "suiveuse \"{2}\" est multiple"
#: src/rougail/convert/object_model.py:602 #: src/rougail/convert/object_model.py:591
msgid "" msgid ""
"the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" " "the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" "
"must not be multi" "must not be multi"
@ -358,7 +328,7 @@ msgstr ""
"la variable \"{0}\" a un attribut invalide \"{1}\", la variable \"{2}\" ne " "la variable \"{0}\" a un attribut invalide \"{1}\", la variable \"{2}\" ne "
"doit pas être multiple" "doit pas être multiple"
#: src/rougail/convert/object_model.py:616 #: src/rougail/convert/object_model.py:605
msgid "" msgid ""
"the variable \"{0}\" has an invalid attribute \"{1}\", the variable must not " "the variable \"{0}\" has an invalid attribute \"{1}\", the variable must not "
"be a multi or the variable \"{2}\" must be multi" "be a multi or the variable \"{2}\" must be multi"
@ -366,7 +336,7 @@ msgstr ""
"la variable \"{0}\" a un attribut invalide \"{1}\", la variable ne doit pas " "la variable \"{0}\" a un attribut invalide \"{1}\", la variable ne doit pas "
"être multiple ou la variable \"{2}\" doit être multiple" "être multiple ou la variable \"{2}\" doit être multiple"
#: src/rougail/convert/object_model.py:630 #: src/rougail/convert/object_model.py:619
msgid "" msgid ""
"the variable \"{0}\" has an invalid attribute \"{1}\", the variable must be " "the variable \"{0}\" has an invalid attribute \"{1}\", the variable must be "
"a multi or the variable \"{2}\" must not be multi" "a multi or the variable \"{2}\" must not be multi"
@ -374,7 +344,7 @@ msgstr ""
"la variable \"{0}\" a un attribut invalide \"{1}\", la variable doit être " "la variable \"{0}\" a un attribut invalide \"{1}\", la variable doit être "
"multiple ou la variable \"{2}\" ne doit pas être multiple" "multiple ou la variable \"{2}\" ne doit pas être multiple"
#: src/rougail/convert/object_model.py:644 #: src/rougail/convert/object_model.py:633
msgid "" msgid ""
"the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" " "the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" "
"is multi but is inside a list" "is multi but is inside a list"
@ -382,7 +352,7 @@ msgstr ""
"la variable \"{0}\" a un attribut invalide \"{1}\", la variable \"{2}\" est " "la variable \"{0}\" a un attribut invalide \"{1}\", la variable \"{2}\" est "
"multiple mais est dans une liste" "multiple mais est dans une liste"
#: src/rougail/convert/object_model.py:666 #: src/rougail/convert/object_model.py:655
msgid "" msgid ""
"the variable \"{0}\" is waiting for a list as \"{1}\" but the attribute " "the variable \"{0}\" is waiting for a list as \"{1}\" but the attribute "
"\"default\" is not a list (\"{2}\")" "\"default\" is not a list (\"{2}\")"
@ -390,7 +360,7 @@ msgstr ""
"la variable \"{0}\" attend une liste comme \"{1}\" mais l'attribut " "la variable \"{0}\" attend une liste comme \"{1}\" mais l'attribut "
"\"default\" n'est pas une liste \"{2}\"" "\"default\" n'est pas une liste \"{2}\""
#: src/rougail/convert/object_model.py:668 #: src/rougail/convert/object_model.py:657
msgid "" msgid ""
"the variable \"{0}\" is not waiting for a list as \"{1}\" but the attribute " "the variable \"{0}\" is not waiting for a list as \"{1}\" but the attribute "
"\"default\" is a list (\"{2}\")" "\"default\" is a list (\"{2}\")"
@ -398,7 +368,7 @@ msgstr ""
"la variable \"{0}\" n'attend pas une liste comme \"{1}\" mais l'attribut " "la variable \"{0}\" n'attend pas une liste comme \"{1}\" mais l'attribut "
"\"default\" est une liste \"{2}\"" "\"default\" est une liste \"{2}\""
#: src/rougail/convert/object_model.py:684 #: src/rougail/convert/object_model.py:673
msgid "" msgid ""
"\"{0}\" attribut shall not have an \"optional\" attribute without the " "\"{0}\" attribut shall not have an \"optional\" attribute without the "
"\"default\" attribute for variable \"{1}\"" "\"default\" attribute for variable \"{1}\""
@ -406,7 +376,7 @@ msgstr ""
"l'attribut \"{0}\" ne devrait pas avoir d'attribut \"optional\" sans " "l'attribut \"{0}\" ne devrait pas avoir d'attribut \"optional\" sans "
"l'attribut \"default\" pour la variable \"{1}\"" "l'attribut \"default\" pour la variable \"{1}\""
#: src/rougail/convert/object_model.py:708 #: src/rougail/convert/object_model.py:697
msgid "" msgid ""
"variable \"{0}\" has a default value calculated with \"{1}\" which has " "variable \"{0}\" has a default value calculated with \"{1}\" which has "
"incompatible type" "incompatible type"
@ -414,7 +384,7 @@ msgstr ""
"la variable \"{0}\" a une valeur par défaut calculé a partir de \"{1}\" " "la variable \"{0}\" a une valeur par défaut calculé a partir de \"{1}\" "
"laquelle a un type incompatible" "laquelle a un type incompatible"
#: src/rougail/convert/object_model.py:751 #: src/rougail/convert/object_model.py:740
msgid "" msgid ""
"the variable \"{0}\" is waiting for a boolean as \"{1}\" but the attribute " "the variable \"{0}\" is waiting for a boolean as \"{1}\" but the attribute "
"\"default\" is not a boolean (\"{2}\")" "\"default\" is not a boolean (\"{2}\")"
@ -422,7 +392,7 @@ msgstr ""
"la variable \"{0}\" attend un booléan comme \"{1}\" mais l'attribut " "la variable \"{0}\" attend un booléan comme \"{1}\" mais l'attribut "
"\"default\" n'est pas une booléan (\"{2}\")" "\"default\" n'est pas une booléan (\"{2}\")"
#: src/rougail/convert/object_model.py:771 #: src/rougail/convert/object_model.py:760
msgid "" msgid ""
"\"when\" is not allowed in format version 1.0 for attribute \"{0}\" for " "\"when\" is not allowed in format version 1.0 for attribute \"{0}\" for "
"variable \"{1}\"" "variable \"{1}\""
@ -430,7 +400,7 @@ msgstr ""
"\"when\" n'est pas autorisé avec le format en version 1.0 pour l'attribut " "\"when\" n'est pas autorisé avec le format en version 1.0 pour l'attribut "
"\"{0}\" pour la variable \"{1}\"" "\"{0}\" pour la variable \"{1}\""
#: src/rougail/convert/object_model.py:776 #: src/rougail/convert/object_model.py:765
msgid "" msgid ""
"the variable \"{0}\" has an invalid attribute \"{1}\", \"when\" and " "the variable \"{0}\" has an invalid attribute \"{1}\", \"when\" and "
"\"when_not\" cannot set together" "\"when_not\" cannot set together"
@ -438,7 +408,7 @@ msgstr ""
"la variable \"{0}\" a un attribut invalide \"{1}\", \"when\" et \"when_not\" " "la variable \"{0}\" a un attribut invalide \"{1}\", \"when\" et \"when_not\" "
"ne peuvent pas être défini ensemble" "ne peuvent pas être défini ensemble"
#: src/rougail/convert/object_model.py:784 #: src/rougail/convert/object_model.py:773
msgid "" msgid ""
"\"when_not\" is not allowed in format version 1.0 for attribute \"{0}\" for " "\"when_not\" is not allowed in format version 1.0 for attribute \"{0}\" for "
"variable \"{1}\"" "variable \"{1}\""
@ -446,7 +416,7 @@ msgstr ""
"\"when_not\" n'est pas autorisé au format 1.0 pour l'attribut \"{0}\" pour " "\"when_not\" n'est pas autorisé au format 1.0 pour l'attribut \"{0}\" pour "
"la variable variable \"{1}\"" "la variable variable \"{1}\""
#: src/rougail/convert/object_model.py:840 #: src/rougail/convert/object_model.py:829
msgid "" msgid ""
"cannot find variable \"{0}\" for the information \"{1}\" when calculating " "cannot find variable \"{0}\" for the information \"{1}\" when calculating "
"\"{2}\"" "\"{2}\""
@ -454,19 +424,19 @@ msgstr ""
"ne peut trouver la variable \"{0}\" pour l'information \"{1}\" lors du " "ne peut trouver la variable \"{0}\" pour l'information \"{1}\" lors du "
"calcul de \"{2}\"" "calcul de \"{2}\""
#: src/rougail/convert/object_model.py:845 #: src/rougail/convert/object_model.py:834
msgid "" msgid ""
"identifier not allowed for the information \"{0}\" when calculating \"{1}\"" "identifier not allowed for the information \"{0}\" when calculating \"{1}\""
msgstr "" msgstr ""
"identifier n'est pas autorisé pour l'information \"{0}\" lors du calcul de " "identifier n'est pas autorisé pour l'information \"{0}\" lors du calcul de "
"\"{1}\"" "\"{1}\""
#: src/rougail/convert/object_model.py:897 #: src/rougail/convert/object_model.py:886
msgid "\"when\" is not allowed in format version 1.0 for attribute \"{0}\"" msgid "\"when\" is not allowed in format version 1.0 for attribute \"{0}\""
msgstr "\"when\" n'est pas autorisé au format 1.0 pour l'attribut \"{0}\"" msgstr "\"when\" n'est pas autorisé au format 1.0 pour l'attribut \"{0}\""
#: src/rougail/convert/object_model.py:903 #: src/rougail/convert/object_model.py:892
#: src/rougail/convert/object_model.py:913 #: src/rougail/convert/object_model.py:902
msgid "" msgid ""
"the identifier has an invalid attribute \"{0}\", \"when\" and \"when_not\" " "the identifier has an invalid attribute \"{0}\", \"when\" and \"when_not\" "
"cannot set together" "cannot set together"
@ -474,14 +444,14 @@ msgstr ""
"l'identifiant a un attribut invalide \"{0}\", \"when\" et \"when_not\" ne " "l'identifiant a un attribut invalide \"{0}\", \"when\" et \"when_not\" ne "
"peuvent pas être défini ensemble" "peuvent pas être défini ensemble"
#: src/rougail/convert/object_model.py:939 #: src/rougail/convert/object_model.py:928
msgid "" msgid ""
"the variable \"{0}\" is not a follower, so cannot have index type for \"{1}\"" "the variable \"{0}\" is not a follower, so cannot have index type for \"{1}\""
msgstr "" msgstr ""
"la variable \"{0}\" n'est pas suiveuse, donc ne peut avoir de type index " "la variable \"{0}\" n'est pas suiveuse, donc ne peut avoir de type index "
"pour \"{1}\"" "pour \"{1}\""
#: src/rougail/convert/path.py:211 #: src/rougail/convert/path.py:207
msgid "" msgid ""
"A variable or a family located in the \"{0}\" namespace shall not be used in " "A variable or a family located in the \"{0}\" namespace shall not be used in "
"the \"{1}\" namespace" "the \"{1}\" namespace"
@ -494,7 +464,7 @@ msgid "internal error, {0} is not a dynamic variable"
msgstr "erreur interne, \"{0}\" n'est pas une variable dynamique" msgstr "erreur interne, \"{0}\" n'est pas une variable dynamique"
#: src/rougail/error.py:61 src/rougail/tiramisu.py:157 #: src/rougail/error.py:61 src/rougail/tiramisu.py:157
#: src/rougail/user_datas.py:392 src/rougail/user_datas.py:395 #: src/rougail/user_datas.py:377 src/rougail/user_datas.py:380
msgid "{0} in {1}" msgid "{0} in {1}"
msgstr "{0} dans {1}" msgstr "{0} dans {1}"
@ -506,7 +476,7 @@ msgstr "alternative_name \"{0}\" est en conflit avec \"--help\""
msgid "conflict alternative_name \"{0}\": \"{1}\" and \"{2}\"" msgid "conflict alternative_name \"{0}\": \"{1}\" and \"{2}\""
msgstr "conflit dans les \"alternative_name\" \"{0}\": \"{1}\" et \"{2}\"" msgstr "conflit dans les \"alternative_name\" \"{0}\": \"{1}\" et \"{2}\""
#: src/rougail/structural_directory/__init__.py:129 #: src/rougail/structural_directory/__init__.py:127
msgid "duplicate structural file name {0}" msgid "duplicate structural file name {0}"
msgstr "nom de fichier {0} de structure dupliqué" msgstr "nom de fichier {0} de structure dupliqué"
@ -523,18 +493,14 @@ msgid "Main namespace name"
msgstr "Nom de l'espace de nom principal" msgstr "Nom de l'espace de nom principal"
#: src/rougail/structural_directory/config.py:69 #: src/rougail/structural_directory/config.py:69
msgid "Namespaces are isolated"
msgstr "Les espaces de noms sont isolés"
#: src/rougail/structural_directory/config.py:78
msgid "Extra namespaces" msgid "Extra namespaces"
msgstr "Espaces de nom supplémentaires" msgstr "Espaces de nom supplémentaires"
#: src/rougail/structural_directory/config.py:87 #: src/rougail/structural_directory/config.py:78
msgid "Extra namespace name" msgid "Extra namespace name"
msgstr "Nom de l'espace de nom supplémentaire" msgstr "Nom de l'espace de nom supplémentaire"
#: src/rougail/structural_directory/config.py:93 #: src/rougail/structural_directory/config.py:84
msgid "Directories where extra structural files are placed" msgid "Directories where extra structural files are placed"
msgstr "" msgstr ""
"Répertoires où sont placés les fichiers de structure de l'espace de nom " "Répertoires où sont placés les fichiers de structure de l'espace de nom "
@ -552,7 +518,7 @@ msgstr ""
"ne peut calculer l'attribut \"{0}\" pour la variable \"{1}\" dans {2} avec " "ne peut calculer l'attribut \"{0}\" pour la variable \"{1}\" dans {2} avec "
"les paramètres \"{3}\" : {4}" "les paramètres \"{3}\" : {4}"
#: src/rougail/user_datas.py:135 #: src/rougail/user_datas.py:137
msgid "" msgid ""
"cannot load variable path \"{0}\", the identifier \"{1}\" is not valid in {2}" "cannot load variable path \"{0}\", the identifier \"{1}\" is not valid in {2}"
msgstr "" msgstr ""
@ -565,19 +531,19 @@ msgstr ""
"la variable \"{0}\" contient des secrets et ne devrait pas être défini dans " "la variable \"{0}\" contient des secrets et ne devrait pas être défini dans "
"{1}" "{1}"
#: src/rougail/user_datas.py:257 #: src/rougail/user_datas.py:250
msgid "loaded from {0}" msgid "loaded from {0}"
msgstr "chargée depuis {0}" msgstr "chargée depuis {0}"
#: src/rougail/user_datas.py:297 #: src/rougail/user_datas.py:280
msgid "" msgid ""
"cannot set the value \"{0}\" to the family {1}, it will be ignored when " "cannot set the value \"{0}\" to the family {1}, it will be ignored when "
"loading from {2}" "loading from {2}"
msgstr "" msgstr ""
"impossible de définir la valeur \"{0}\" à la famille {1}, elle sera ignorée " "impossible de définir la valeur \"{0}\" à la famille {1}, elle sera ignorée "
"lors du chargement depuis {2}" "lors du chargement depuis {0}"
#: src/rougail/user_datas.py:309 #: src/rougail/user_datas.py:292
msgid "" msgid ""
"variable or family \"{0}\" does not exist, it will be ignored when loading " "variable or family \"{0}\" does not exist, it will be ignored when loading "
"from {1}" "from {1}"
@ -585,7 +551,7 @@ msgstr ""
"la variable ou la famille \"{0}\" n'existe pas, elle sera ignorée lors du " "la variable ou la famille \"{0}\" n'existe pas, elle sera ignorée lors du "
"chargement depuis {1}" "chargement depuis {1}"
#: src/rougail/user_datas.py:315 #: src/rougail/user_datas.py:298
msgid "" msgid ""
"\"{0}\" is the name of a dynamic family, it will be ignored when loading " "\"{0}\" is the name of a dynamic family, it will be ignored when loading "
"from {1}" "from {1}"
@ -593,11 +559,11 @@ msgstr ""
"\"{0}\" est le nom d'une famille dynamique, il sera ignoré lors du " "\"{0}\" est le nom d'une famille dynamique, il sera ignoré lors du "
"chargement depuis {1}" "chargement depuis {1}"
#: src/rougail/user_datas.py:321 #: src/rougail/user_datas.py:304
msgid "{0} loaded from {1}" msgid "{0} loaded from {1}"
msgstr "{0} chargée depuis {1}" msgstr "{0} chargée depuis {1}"
#: src/rougail/user_datas.py:349 #: src/rougail/user_datas.py:334
msgid "" msgid ""
"variable {0} at index \"{1}\" is {2}, it will be ignored when loading from " "variable {0} at index \"{1}\" is {2}, it will be ignored when loading from "
"{3}" "{3}"
@ -605,23 +571,23 @@ msgstr ""
"la variable {0} à l'index \"{1}\" est {2}, elle sera ignorée lors du " "la variable {0} à l'index \"{1}\" est {2}, elle sera ignorée lors du "
"chargement depuis {3}" "chargement depuis {3}"
#: src/rougail/user_datas.py:360 #: src/rougail/user_datas.py:345
msgid "" msgid ""
"family {0} is {1}, {2} at index \"{3}\" will be ignored when loading from {4}" "family {0} is {1}, {2} at index \"{3}\" will be ignored when loading from {4}"
msgstr "" msgstr ""
"la famille {0} est {1}, {2} à l'index \"{3}\" sera ignorée lors du " "la famille {0} est {1}, {2} à l'index \"{3}\" sera ignorée lors du "
"chargement depuis {4}" "chargement depuis {4}"
#: src/rougail/user_datas.py:373 #: src/rougail/user_datas.py:358
msgid "variable {0} is {1}, it will be ignored when loading from {2}" msgid "variable {0} is {1}, it will be ignored when loading from {2}"
msgstr "" msgstr ""
"la variable {0} est {1}, elle sera ignorée lors du chargement depuis {2}" "la variable {0} est {1}, elle sera ignorée lors du chargement depuis {2}"
#: src/rougail/user_datas.py:381 #: src/rougail/user_datas.py:366
msgid "family {0} is {1}, {2} will be ignored when loading from {3}" msgid "family {0} is {1}, {2} will be ignored when loading from {3}"
msgstr "la famille {0} est {1}, {2} sera ignorée lors du chargement depuis {3}" msgstr "la famille {0} est {1}, {2} sera ignorée lors du chargement depuis {3}"
#: src/rougail/user_datas.py:401 #: src/rougail/user_datas.py:386
msgid "" msgid ""
"the value \"{0}\" is an invalid {1} for {2} at index \"{3}\", {4}, it will " "the value \"{0}\" is an invalid {1} for {2} at index \"{3}\", {4}, it will "
"be ignored when loading from {5}" "be ignored when loading from {5}"
@ -629,7 +595,7 @@ msgstr ""
"la valeur \"{0}\" est un invalide {1} pour {2} à l'index \"{3}\", {4}, elle " "la valeur \"{0}\" est un invalide {1} pour {2} à l'index \"{3}\", {4}, elle "
"sera ignorée lors du chargement depuis {5}" "sera ignorée lors du chargement depuis {5}"
#: src/rougail/user_datas.py:415 #: src/rougail/user_datas.py:401
msgid "" msgid ""
"the value \"{0}\" is an invalid {1} for {2}, {3}, it will be ignored when " "the value \"{0}\" is an invalid {1} for {2}, {3}, it will be ignored when "
"loading from {4}" "loading from {4}"

View file

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2025-10-26 15:29+0100\n" "POT-Creation-Date: 2025-10-05 21:37+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,50 +15,38 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: src/rougail/annotator/family.py:151 #: src/rougail/annotator/family.py:150
msgid "default variable mode \"{0}\" is not a valid mode, valid modes are {1}" msgid "default variable mode \"{0}\" is not a valid mode, valid modes are {1}"
msgstr "" msgstr ""
#: src/rougail/annotator/family.py:157 #: src/rougail/annotator/family.py:156
msgid "default family mode \"{0}\" is not a valid mode, valid modes are {1}" msgid "default family mode \"{0}\" is not a valid mode, valid modes are {1}"
msgstr "" msgstr ""
#: src/rougail/annotator/family.py:189 #: src/rougail/annotator/family.py:188
msgid "mode \"{0}\" for \"{1}\" is not a valid mode, valid modes are {2}" msgid "mode \"{0}\" for \"{1}\" is not a valid mode, valid modes are {2}"
msgstr "" msgstr ""
#: src/rougail/annotator/family.py:193 #: src/rougail/annotator/family.py:192
msgid "mode \"{0}\" for \"{1}\" is not a valid mode, no modes are available" msgid "mode \"{0}\" for \"{1}\" is not a valid mode, no modes are available"
msgstr "" msgstr ""
#: src/rougail/annotator/family.py:257 #: src/rougail/annotator/family.py:256
msgid "the variable \"{0}\" is mandatory so in \"{1}\" mode but family has the higher family mode \"{2}\"" msgid "the variable \"{0}\" is mandatory so in \"{1}\" mode but family has the higher family mode \"{2}\""
msgstr "" msgstr ""
#: src/rougail/annotator/family.py:295 #: src/rougail/annotator/family.py:294
msgid "the follower \"{0}\" is in \"{1}\" mode but leader have the higher mode \"{2}\"" msgid "the follower \"{0}\" is in \"{1}\" mode but leader have the higher mode \"{2}\""
msgstr "" msgstr ""
#: src/rougail/annotator/family.py:328 #: src/rougail/annotator/family.py:327
msgid "the family \"{0}\" is in \"{1}\" mode but variables and families inside have the higher modes \"{2}\"" msgid "the family \"{0}\" is in \"{1}\" mode but variables and families inside have the higher modes \"{2}\""
msgstr "" msgstr ""
#: src/rougail/annotator/family.py:346 #: src/rougail/annotator/family.py:345
msgid "the variable \"{0}\" is in \"{1}\" mode but family has the higher family mode \"{2}\"" msgid "the variable \"{0}\" is in \"{1}\" mode but family has the higher family mode \"{2}\""
msgstr "" msgstr ""
#: src/rougail/annotator/property.py:158
msgid "invalid tag name \"{0}\" should only contains lowercase ascii character, number or _"
msgstr ""
#: src/rougail/annotator/property.py:163
msgid "invalid tag name \"{0}\" should not be a name of an existing mode"
msgstr ""
#: src/rougail/annotator/property.py:168
msgid "invalid tag name \"{0}\" should not be name of an available properties"
msgstr ""
#: src/rougail/annotator/value.py:78 #: src/rougail/annotator/value.py:78
msgid "the follower \"{0}\" is not multi, so cannot have a list has default value" msgid "the follower \"{0}\" is not multi, so cannot have a list has default value"
msgstr "" msgstr ""
@ -87,15 +75,15 @@ msgstr ""
msgid "the variable \"{0}\" has attribute \"secret_manager\" so must not have default value" msgid "the variable \"{0}\" has attribute \"secret_manager\" so must not have default value"
msgstr "" msgstr ""
#: src/rougail/annotator/variable.py:254 #: src/rougail/annotator/variable.py:253
msgid "the variable \"{0}\" has regexp attribut but has not the \"regexp\" type" msgid "the variable \"{0}\" has regexp attribut but has not the \"regexp\" type"
msgstr "" msgstr ""
#: src/rougail/annotator/variable.py:297 #: src/rougail/annotator/variable.py:296
msgid "the variable \"{0}\" has choices attribut but has not the \"choice\" type" msgid "the variable \"{0}\" has choices attribut but has not the \"choice\" type"
msgstr "" msgstr ""
#: src/rougail/annotator/variable.py:325 #: src/rougail/annotator/variable.py:324
msgid "the variable \"{0}\" has an unvalid default value \"{1}\" should be in {2}" msgid "the variable \"{0}\" has an unvalid default value \"{1}\" should be in {2}"
msgstr "" msgstr ""
@ -171,35 +159,35 @@ msgstr ""
msgid "Default parameters for option type" msgid "Default parameters for option type"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:281 #: src/rougail/convert/convert.py:280
msgid "unknown type {0} for {1}" msgid "unknown type {0} for {1}"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:419 #: src/rougail/convert/convert.py:418
msgid "family \"{0}\" define multiple time" msgid "family \"{0}\" define multiple time"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:672 #: src/rougail/convert/convert.py:671
msgid "variable \"{0}\" define multiple time" msgid "variable \"{0}\" define multiple time"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:770 #: src/rougail/convert/convert.py:769
msgid "params must be a dict for {0}" msgid "params must be a dict for {0}"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:791 #: src/rougail/convert/convert.py:790
msgid "\"{0}\" has an invalid \"params\" for {1}: {2}" msgid "\"{0}\" has an invalid \"params\" for {1}: {2}"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:805 #: src/rougail/convert/convert.py:804
msgid "secret_manager must be a dict for {0}" msgid "secret_manager must be a dict for {0}"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:1134 #: src/rougail/convert/convert.py:1133
msgid "Cannot execute annotate multiple time" msgid "Cannot execute annotate multiple time"
msgstr "" msgstr ""
#: src/rougail/convert/convert.py:1141 #: src/rougail/convert/convert.py:1140
msgid "invalid \"structural\" definition ({0}), we cannot load any structural file!" msgid "invalid \"structural\" definition ({0}), we cannot load any structural file!"
msgstr "" msgstr ""
@ -212,7 +200,7 @@ msgid "the variable \"{0}\" is in fact a family in attribute \"{1}\" for \"{2}\"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:133 #: src/rougail/convert/object_model.py:133
#: src/rougail/convert/object_model.py:479 #: src/rougail/convert/object_model.py:468
msgid "unknown object \"{0}\" in attribute \"{1}\" for \"{2}\"" msgid "unknown object \"{0}\" in attribute \"{1}\" for \"{2}\""
msgstr "" msgstr ""
@ -232,96 +220,92 @@ msgstr ""
msgid "the variable \"{0}\" is not a follower, so cannot have index type for param in \"{1}\"" msgid "the variable \"{0}\" is not a follower, so cannot have index type for param in \"{1}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:405 #: src/rougail/convert/object_model.py:463
msgid "variable \"{0}\" has a calculating \"{1}\" with an invalid return_type, should be boolean or string, not \"{2}\""
msgstr ""
#: src/rougail/convert/object_model.py:474
msgid "a variable \"{0}\" is needs in attribute \"{1}\" for \"{2}\" but it's a family" msgid "a variable \"{0}\" is needs in attribute \"{1}\" for \"{2}\" but it's a family"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:499 #: src/rougail/convert/object_model.py:488
msgid "variable \"{0}\" has an attribute \"{1}\" calculated with the unknown variable \"{2}\"" msgid "variable \"{0}\" has an attribute \"{1}\" calculated with the unknown variable \"{2}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:551 #: src/rougail/convert/object_model.py:540
msgid "the variable \"{0}\" has an invalid \"{1}\" the variable \"{2}\" is in a sub dynamic option" msgid "the variable \"{0}\" has an invalid \"{1}\" the variable \"{2}\" is in a sub dynamic option"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:560 #: src/rougail/convert/object_model.py:549
msgid "the leader \"{0}\" has an invalid \"{1}\" the follower \"{2}\" is a multi" msgid "the leader \"{0}\" has an invalid \"{1}\" the follower \"{2}\" is a multi"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:602 #: src/rougail/convert/object_model.py:591
msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" must not be multi" msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" must not be multi"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:616 #: src/rougail/convert/object_model.py:605
msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable must not be a multi or the variable \"{2}\" must be multi" msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable must not be a multi or the variable \"{2}\" must be multi"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:630 #: src/rougail/convert/object_model.py:619
msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable must be a multi or the variable \"{2}\" must not be multi" msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable must be a multi or the variable \"{2}\" must not be multi"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:644 #: src/rougail/convert/object_model.py:633
msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" is multi but is inside a list" msgid "the variable \"{0}\" has an invalid attribute \"{1}\", the variable \"{2}\" is multi but is inside a list"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:666 #: src/rougail/convert/object_model.py:655
msgid "the variable \"{0}\" is waiting for a list as \"{1}\" but the attribute \"default\" is not a list (\"{2}\")" msgid "the variable \"{0}\" is waiting for a list as \"{1}\" but the attribute \"default\" is not a list (\"{2}\")"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:668 #: src/rougail/convert/object_model.py:657
msgid "the variable \"{0}\" is not waiting for a list as \"{1}\" but the attribute \"default\" is a list (\"{2}\")" msgid "the variable \"{0}\" is not waiting for a list as \"{1}\" but the attribute \"default\" is a list (\"{2}\")"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:684 #: src/rougail/convert/object_model.py:673
msgid "\"{0}\" attribut shall not have an \"optional\" attribute without the \"default\" attribute for variable \"{1}\"" msgid "\"{0}\" attribut shall not have an \"optional\" attribute without the \"default\" attribute for variable \"{1}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:708 #: src/rougail/convert/object_model.py:697
msgid "variable \"{0}\" has a default value calculated with \"{1}\" which has incompatible type" msgid "variable \"{0}\" has a default value calculated with \"{1}\" which has incompatible type"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:751 #: src/rougail/convert/object_model.py:740
msgid "the variable \"{0}\" is waiting for a boolean as \"{1}\" but the attribute \"default\" is not a boolean (\"{2}\")" msgid "the variable \"{0}\" is waiting for a boolean as \"{1}\" but the attribute \"default\" is not a boolean (\"{2}\")"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:771 #: src/rougail/convert/object_model.py:760
msgid "\"when\" is not allowed in format version 1.0 for attribute \"{0}\" for variable \"{1}\"" msgid "\"when\" is not allowed in format version 1.0 for attribute \"{0}\" for variable \"{1}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:776 #: src/rougail/convert/object_model.py:765
msgid "the variable \"{0}\" has an invalid attribute \"{1}\", \"when\" and \"when_not\" cannot set together" msgid "the variable \"{0}\" has an invalid attribute \"{1}\", \"when\" and \"when_not\" cannot set together"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:784 #: src/rougail/convert/object_model.py:773
msgid "\"when_not\" is not allowed in format version 1.0 for attribute \"{0}\" for variable \"{1}\"" msgid "\"when_not\" is not allowed in format version 1.0 for attribute \"{0}\" for variable \"{1}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:840 #: src/rougail/convert/object_model.py:829
msgid "cannot find variable \"{0}\" for the information \"{1}\" when calculating \"{2}\"" msgid "cannot find variable \"{0}\" for the information \"{1}\" when calculating \"{2}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:845 #: src/rougail/convert/object_model.py:834
msgid "identifier not allowed for the information \"{0}\" when calculating \"{1}\"" msgid "identifier not allowed for the information \"{0}\" when calculating \"{1}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:897 #: src/rougail/convert/object_model.py:886
msgid "\"when\" is not allowed in format version 1.0 for attribute \"{0}\"" msgid "\"when\" is not allowed in format version 1.0 for attribute \"{0}\""
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:903 #: src/rougail/convert/object_model.py:892
#: src/rougail/convert/object_model.py:913 #: src/rougail/convert/object_model.py:902
msgid "the identifier has an invalid attribute \"{0}\", \"when\" and \"when_not\" cannot set together" msgid "the identifier has an invalid attribute \"{0}\", \"when\" and \"when_not\" cannot set together"
msgstr "" msgstr ""
#: src/rougail/convert/object_model.py:939 #: src/rougail/convert/object_model.py:928
msgid "the variable \"{0}\" is not a follower, so cannot have index type for \"{1}\"" msgid "the variable \"{0}\" is not a follower, so cannot have index type for \"{1}\""
msgstr "" msgstr ""
#: src/rougail/convert/path.py:211 #: src/rougail/convert/path.py:207
msgid "A variable or a family located in the \"{0}\" namespace shall not be used in the \"{1}\" namespace" msgid "A variable or a family located in the \"{0}\" namespace shall not be used in the \"{1}\" namespace"
msgstr "" msgstr ""
@ -330,7 +314,7 @@ msgid "internal error, {0} is not a dynamic variable"
msgstr "" msgstr ""
#: src/rougail/error.py:61 src/rougail/tiramisu.py:157 #: src/rougail/error.py:61 src/rougail/tiramisu.py:157
#: src/rougail/user_datas.py:392 src/rougail/user_datas.py:395 #: src/rougail/user_datas.py:399 src/rougail/user_datas.py:402
msgid "{0} in {1}" msgid "{0} in {1}"
msgstr "" msgstr ""
@ -342,7 +326,7 @@ msgstr ""
msgid "conflict alternative_name \"{0}\": \"{1}\" and \"{2}\"" msgid "conflict alternative_name \"{0}\": \"{1}\" and \"{2}\""
msgstr "" msgstr ""
#: src/rougail/structural_directory/__init__.py:129 #: src/rougail/structural_directory/__init__.py:127
msgid "duplicate structural file name {0}" msgid "duplicate structural file name {0}"
msgstr "" msgstr ""
@ -359,18 +343,14 @@ msgid "Main namespace name"
msgstr "" msgstr ""
#: src/rougail/structural_directory/config.py:69 #: src/rougail/structural_directory/config.py:69
msgid "Namespaces are isolated"
msgstr ""
#: src/rougail/structural_directory/config.py:78
msgid "Extra namespaces" msgid "Extra namespaces"
msgstr "" msgstr ""
#: src/rougail/structural_directory/config.py:87 #: src/rougail/structural_directory/config.py:78
msgid "Extra namespace name" msgid "Extra namespace name"
msgstr "" msgstr ""
#: src/rougail/structural_directory/config.py:93 #: src/rougail/structural_directory/config.py:84
msgid "Directories where extra structural files are placed" msgid "Directories where extra structural files are placed"
msgstr "" msgstr ""
@ -382,55 +362,55 @@ msgstr ""
msgid "cannot calculating \"{0}\" attribute for variable \"{1}\" in {2} with parameters \"{3}\": {4}" msgid "cannot calculating \"{0}\" attribute for variable \"{1}\" in {2} with parameters \"{3}\": {4}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:135 #: src/rougail/user_datas.py:141
msgid "cannot load variable path \"{0}\", the identifier \"{1}\" is not valid in {2}" msgid "cannot load variable path \"{0}\", the identifier \"{1}\" is not valid in {2}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:218 #: src/rougail/user_datas.py:227
msgid "the variable \"{0}\" contains secrets and should not be defined in {1}" msgid "the variable \"{0}\" contains secrets and should not be defined in {1}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:257 #: src/rougail/user_datas.py:265
msgid "loaded from {0}" msgid "loaded from {0}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:297 #: src/rougail/user_datas.py:304
msgid "cannot set the value \"{0}\" to the family {1}, it will be ignored when loading from {2}" msgid "cannot set the value \"{0}\" to the family {1}, it will be ignored when loading from {2}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:309 #: src/rougail/user_datas.py:316
msgid "variable or family \"{0}\" does not exist, it will be ignored when loading from {1}" msgid "variable or family \"{0}\" does not exist, it will be ignored when loading from {1}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:315 #: src/rougail/user_datas.py:322
msgid "\"{0}\" is the name of a dynamic family, it will be ignored when loading from {1}" msgid "\"{0}\" is the name of a dynamic family, it will be ignored when loading from {1}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:321 #: src/rougail/user_datas.py:328
msgid "{0} loaded from {1}" msgid "{0} loaded from {1}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:349 #: src/rougail/user_datas.py:356
msgid "variable {0} at index \"{1}\" is {2}, it will be ignored when loading from {3}" msgid "variable {0} at index \"{1}\" is {2}, it will be ignored when loading from {3}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:360 #: src/rougail/user_datas.py:367
msgid "family {0} is {1}, {2} at index \"{3}\" will be ignored when loading from {4}" msgid "family {0} is {1}, {2} at index \"{3}\" will be ignored when loading from {4}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:373 #: src/rougail/user_datas.py:380
msgid "variable {0} is {1}, it will be ignored when loading from {2}" msgid "variable {0} is {1}, it will be ignored when loading from {2}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:381 #: src/rougail/user_datas.py:388
msgid "family {0} is {1}, {2} will be ignored when loading from {3}" msgid "family {0} is {1}, {2} will be ignored when loading from {3}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:401 #: src/rougail/user_datas.py:408
msgid "the value \"{0}\" is an invalid {1} for {2} at index \"{3}\", {4}, it will be ignored when loading from {5}" msgid "the value \"{0}\" is an invalid {1} for {2} at index \"{3}\", {4}, it will be ignored when loading from {5}"
msgstr "" msgstr ""
#: src/rougail/user_datas.py:415 #: src/rougail/user_datas.py:422
msgid "the value \"{0}\" is an invalid {1} for {2}, {3}, it will be ignored when loading from {4}" msgid "the value \"{0}\" is an invalid {1} for {2}, {3}, it will be ignored when loading from {4}"
msgstr "" msgstr ""

View file

@ -1,6 +1,6 @@
[project] [project]
name = "rougail" name = "rougail"
version = "1.2.0a39" version = "1.2.0a38"
[tool.commitizen] [tool.commitizen]
name = "cz_conventional_commits" name = "cz_conventional_commits"

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project] [project]
name = "rougail-base" name = "rougail-base"
version = "1.2.0a39" version = "1.2.0a38"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
readme = "README.md" readme = "README.md"
description = "A consistency handling system that was initially designed in the configuration management" description = "A consistency handling system that was initially designed in the configuration management"

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project] [project]
name = "rougail" name = "rougail"
version = "1.2.0a39" version = "1.2.0a38"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
description = "A consistency handling system that was initially designed in the configuration management" description = "A consistency handling system that was initially designed in the configuration management"
classifiers = [ classifiers = [
@ -18,7 +18,7 @@ classifiers = [
dependencies = [ dependencies = [
"ruamel.yaml ~= 0.18.6", "ruamel.yaml ~= 0.18.6",
"pydantic ~= 2.9.2", "pydantic ~= 2.9.2",
"rougail-base == 1.2.0a39", "rougail-base == 1.2.0a38",
] ]
[tool.flit.sdist] [tool.flit.sdist]

View file

@ -1 +1 @@
__version__ = "1.2.0a39" __version__ = "1.2.0a38"

View file

@ -166,7 +166,7 @@ class Annotator(Walk):
raise DictConsistencyError(msg, 82, xmlfiles) raise DictConsistencyError(msg, 82, xmlfiles)
if tag in PROPERTIES_MAKE_SENSE: if tag in PROPERTIES_MAKE_SENSE:
msg = _( msg = _(
'invalid tag name "{0}" should not be name of an available properties' 'invalid tag name "{0}" should not be name of an available proprerties'
).format(tag) ).format(tag)
raise DictConsistencyError(msg, 82, xmlfiles) raise DictConsistencyError(msg, 82, xmlfiles)

View file

@ -25,6 +25,7 @@ details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
from pathlib import Path from pathlib import Path
from tiramisu import Config from tiramisu import Config
from ruamel.yaml import YAML from ruamel.yaml import YAML
@ -128,16 +129,11 @@ class _RougailConfig:
key = RENAMED.get(key, key) key = RENAMED.get(key, key)
option = self.config.option(key) option = self.config.option(key)
if option.isoptiondescription() and option.isleadership(): if option.isoptiondescription() and option.isleadership():
if isinstance(value, RConfigLeadership): leader = list(value)
leader = value.leader
followers = value.followers
else:
leader = list(value)
followers = value.values()
option.leader().value.reset() option.leader().value.reset()
option.leader().value.set(leader) option.leader().value.set(leader)
follower = option.followers()[0] follower = option.followers()[0]
for idx, val in enumerate(followers): for idx, val in enumerate(value.values()):
self.config.option(follower.path(), idx).value.set(val) self.config.option(follower.path(), idx).value.set(val)
elif key == "not_export_with_import": elif key == "not_export_with_import":
option.value.set(not value) option.value.set(not value)
@ -182,7 +178,7 @@ class _RougailConfig:
leader = value leader = value
else: else:
followers.append(value) followers.append(value)
return RConfigLeadership(self.config, option, leader, followers) return dict(zip(leader, followers))
def parse(self, config) -> str: def parse(self, config) -> str:
for option in config: for option in config:
@ -203,42 +199,6 @@ class _RougailConfig:
return values return values
class RConfigLeadership():
def __init__(self, config, option, leader, followers):
self.config = config
self.option = option
self.leader = leader
self.followers = followers
def items(self):
return dict(zip(self.leader, self.followers)).items()
def __setitem__(
self,
key,
value,
) -> None:
self.config.property.read_write()
names = self.option.option('names')
leader = names.value.get()
leader.append(key)
names.value.set(leader)
directories = self.option.option('directories', len(leader) - 1)
directories.value.set(value)
self.leader.append(key)
self.followers.append(value)
self.config.property.read_only()
def __getitem__(self, key):
option = self.option.option(key)
if option.isleader():
return option.value.get()
return [option.index(idx).value.get() for idx in range(option.value.len())]
def __repr__(self):
return dict(zip(self.leader, self.followers))
class FakeRougailConvert(RougailConvert): class FakeRougailConvert(RougailConvert):
def __init__( def __init__(
self, self,

View file

@ -28,6 +28,7 @@ from pydantic import (
ConfigDict, ConfigDict,
) )
import tiramisu import tiramisu
from tiramisu.config import get_common_path
from ..utils import ( from ..utils import (
get_jinja_variable_to_param, get_jinja_variable_to_param,
calc_multi_for_type_variable, calc_multi_for_type_variable,

View file

@ -219,7 +219,6 @@ class UserDatas:
'the variable "{0}" contains secrets and should not be defined in {1}' 'the variable "{0}" contains secrets and should not be defined in {1}'
).format(path, self.values[values_path]["source"]) ).format(path, self.values[values_path]["source"])
) )
self.values.pop(path)
continue continue
value = self.convert_value( value = self.convert_value(
path, option, options, self.values[values_path]["values"] path, option, options, self.values[values_path]["values"]

View file

@ -1,6 +0,0 @@
{
"rougail.var": {
"owner": "default",
"value": []
}
}

View file

@ -1,3 +0,0 @@
{
"rougail.var": []
}

View file

@ -1,6 +0,0 @@
{
"rougail.var": {
"owner": "default",
"value": []
}
}

View file

@ -1,3 +0,0 @@
{
"rougail.var": []
}

View file

@ -1,15 +0,0 @@
from tiramisu import *
from tiramisu.setting import ALLOWED_LEADER_PROPERTIES
from re import compile as re_compile
from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription
load_functions('../rougail-tests/funcs/test.py')
try:
groups.namespace
except:
groups.addgroup('namespace')
ALLOWED_LEADER_PROPERTIES.add("basic")
ALLOWED_LEADER_PROPERTIES.add("standard")
ALLOWED_LEADER_PROPERTIES.add("advanced")
option_2 = IntOption(name="var", doc="the first variable", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'ymlfiles': ['../rougail-tests/structures/01_6integer_multi_mandatory/rougail/00-base.yml'], 'type': 'integer'})
optiondescription_1 = OptionDescription(name="rougail", doc="Rougail", group_type=groups.namespace, children=[option_2], properties=frozenset({"basic"}), informations={'ymlfiles': ['']})
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[optiondescription_1])

View file

@ -1,10 +0,0 @@
from tiramisu import *
from tiramisu.setting import ALLOWED_LEADER_PROPERTIES
from re import compile as re_compile
from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription
load_functions('../rougail-tests/funcs/test.py')
ALLOWED_LEADER_PROPERTIES.add("basic")
ALLOWED_LEADER_PROPERTIES.add("standard")
ALLOWED_LEADER_PROPERTIES.add("advanced")
option_1 = IntOption(name="var", doc="the first variable", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'ymlfiles': ['../rougail-tests/structures/01_6integer_multi_mandatory/rougail/00-base.yml'], 'type': 'integer'})
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])