fix: better errors message

This commit is contained in:
egarette@silique.fr 2025-03-19 09:57:03 +01:00
parent 1b640689b8
commit b8899c98b1
6 changed files with 199 additions and 165 deletions

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Tiramisu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-07 07:55+0100\n"
"POT-Creation-Date: 2025-03-19 09:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
@ -34,7 +34,7 @@ msgstr "Ne peut avoir de warnings durant une validation"
msgid "Commands:"
msgstr "Commandes :"
#: tiramisu/api.py:111 tiramisu/api.py:1843
#: tiramisu/api.py:111 tiramisu/api.py:1849
msgid "please specify a valid sub function ({0}.{1})"
msgstr "veuillez spécifier une sous fonction valide ({0}.{1})"
@ -42,7 +42,7 @@ msgstr "veuillez spécifier une sous fonction valide ({0}.{1})"
msgid "please do not specify index ({0}.{1})"
msgstr "veuillez ne pas spécifier d'index ({0}.{1})"
#: tiramisu/api.py:201 tiramisu/api.py:847
#: tiramisu/api.py:201 tiramisu/api.py:848
msgid "please specify index with a follower option ({0}.{1})"
msgstr "veuillez spécifier un index avec une option suiveuse ({0}.{1})"
@ -94,31 +94,31 @@ msgstr "ne peut trouver \"{0}\" dans l'option \"{1}\" à l'index \"{2}\""
msgid "cannot find \"{0}\""
msgstr "ne peut trouver \"{0}\""
#: tiramisu/api.py:811
#: tiramisu/api.py:812
msgid "cannot reduce length of the leader {}"
msgstr "il est impossible de réduire la longueur du leader \"{}\""
#: tiramisu/api.py:864
#: tiramisu/api.py:865
msgid "only multi value has defaultmulti"
msgstr "seule les valeurs multiple a l'attribut defaultmulti"
#: tiramisu/api.py:1023
#: tiramisu/api.py:1029
msgid "please specify a valid sub function ({0}.{1}) for {2}"
msgstr "veuillez spécifier une sous fonction valide ({0}.{1}) pour {2}"
#: tiramisu/api.py:1410
#: tiramisu/api.py:1416
msgid "properties must be a frozenset"
msgstr "une propriété doit être de type frozenset"
#: tiramisu/api.py:1414 tiramisu/api.py:1441
#: tiramisu/api.py:1420 tiramisu/api.py:1447
msgid "unknown when {} (must be in append or remove)"
msgstr "value {} inconsistent (doit être append ou remove)"
#: tiramisu/api.py:1427 tiramisu/api.py:1451 tiramisu/config.py:1681
#: tiramisu/api.py:1433 tiramisu/api.py:1457 tiramisu/config.py:1681
msgid "unknown type {}"
msgstr "type inconnu {}"
#: tiramisu/api.py:1815
#: tiramisu/api.py:1821
msgid "do not use unrestraint, nowarnings or forcepermissive together"
msgstr ""
"il ne faut pas utiliser unrestraint, nowarnings ou forcepermissive ensemble"
@ -181,7 +181,7 @@ msgstr "l'option dans ParamInformation ne peut pas être une option dynamique"
#: tiramisu/autolib.py:279
msgid "first argument ({0}) must be a function"
msgstr "le premier argument ({0}à doit être une fonction"
msgstr "le premier argument ({0}) doit être une fonction"
#: tiramisu/autolib.py:283
msgid "help_function ({0}) must be a function"
@ -373,31 +373,39 @@ msgid "cannot modify the {0} {1} because has {2} {3}"
msgstr "ne peut modifier {0} \"{1}\" à cause {2} {3}"
#: tiramisu/error.py:118
msgid "cannot access to {0} {1} because \"{2}\" hasn't value"
msgstr "ne peut accéder à {0} {1} parce que \"{2}\" n'a pas de valeur"
#: tiramisu/error.py:120
msgid "{0} {1} is mandatory but hasn't value"
msgstr "{0} {1} est obligatoire mais n'a pas de valeur"
#: tiramisu/error.py:123
msgid "cannot access to {0} {1} because \"{2}\" has {3} {4}"
msgstr "ne peut accéder à {0} {1} parce que \"{2}\" a {3} {4}"
#: tiramisu/error.py:120
#: tiramisu/error.py:125
msgid "cannot access to {0} {1} because has {2} {3}"
msgstr "ne peut accéder à l'{0} {1} à cause {2} {3}"
#: tiramisu/error.py:192
#: tiramisu/error.py:197
msgid "invalid value"
msgstr "valeur invalide"
#: tiramisu/error.py:202
#: tiramisu/error.py:207
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\""
msgstr "attention, \"{0}\" peut être un {1} invalide pour \"{2}\""
#: tiramisu/error.py:204
#: tiramisu/error.py:209
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\" at index \"{3}\""
msgstr ""
"attention, \"{0}\" peut être un {1} invalide pour \"{2}\" à l'index \"{3}\""
#: tiramisu/error.py:223 tiramisu/error.py:234
#: tiramisu/error.py:228 tiramisu/error.py:239
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr "\"{0}\" est une valeur invalide pour l'option \"{2}\" de type {1}"
#: tiramisu/error.py:225
#: tiramisu/error.py:230
msgid "\"{0}\" is an invalid {1} for \"{2}\" at index \"{3}\""
msgstr "\"{0}\" est un {1} invalide pour \"{2}\" à l'index \"{3}\""
@ -480,25 +488,25 @@ msgstr "\"{0}\" est un nom invalide pour une option"
msgid "invalid properties type {0} for {1}, must be a frozenset"
msgstr "type {0} invalide pour des propriétés pour {1}, doit être un frozenset"
#: tiramisu/option/baseoption.py:98
#: tiramisu/option/baseoption.py:100
msgid "invalid property type {0} for {1}, must be a string or a Calculation"
msgstr ""
"type {0} invalide pour des propriétés pour {1}, doit être des caractères ou "
"un objet Calculation"
#: tiramisu/option/baseoption.py:249
#: tiramisu/option/baseoption.py:251
msgid "information's item for {0} not found: \"{1}\""
msgstr "item pour {0} dans les informations non trouvée: \"{1}\""
#: tiramisu/option/baseoption.py:267
#: tiramisu/option/baseoption.py:269
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule"
#: tiramisu/option/baseoption.py:308
#: tiramisu/option/baseoption.py:310
msgid "\"{}\" ({}) object attribute \"{}\" is read-only"
msgstr "\"{}\" ({}) l'attribut de l'objet \"{}\" est en lecture seule"
#: tiramisu/option/baseoption.py:320
#: tiramisu/option/baseoption.py:322
msgid "{0} not part of any Config"
msgstr "{0} ne fait pas parti d'une Config"
@ -522,27 +530,27 @@ msgstr "seul \"{0}\" est autorisé"
msgid "only {0} are allowed"
msgstr "seul {0} sont autorisées"
#: tiramisu/option/domainnameoption.py:62
#: tiramisu/option/domainnameoption.py:67
msgid "unknown type {0} for hostname"
msgstr "type_ inconnu {0} pour le nom d'hôte"
#: tiramisu/option/domainnameoption.py:65
#: tiramisu/option/domainnameoption.py:70
msgid "allow_ip must be a boolean"
msgstr "allow_ip doit être un booléen"
#: tiramisu/option/domainnameoption.py:67
#: tiramisu/option/domainnameoption.py:72
msgid "allow_cidr_network must be a boolean"
msgstr "allow_cidr_network doit être un booléen"
#: tiramisu/option/domainnameoption.py:69
#: tiramisu/option/domainnameoption.py:74
msgid "allow_without_dot must be a boolean"
msgstr "allow_without_dot doit être un booléen"
#: tiramisu/option/domainnameoption.py:71
#: tiramisu/option/domainnameoption.py:76
msgid "allow_startswith_dot must be a boolean"
msgstr "allow_startswith_dot doit être un booléen"
#: tiramisu/option/domainnameoption.py:82
#: tiramisu/option/domainnameoption.py:87
msgid ""
"must start with lowercase characters followed by lowercase characters, "
"number, \"-\" and \".\" characters are allowed"
@ -550,7 +558,7 @@ msgstr ""
"doit démarrer par un caractère en minuscule suivi par des caractères en "
"minuscule, des nombres, \"-\" et \".\" sont autorisés"
#: tiramisu/option/domainnameoption.py:85
#: tiramisu/option/domainnameoption.py:90
msgid ""
"must start with lowercase characters followed by lowercase characters, "
"number, \"-\" and \".\" characters are recommanded"
@ -558,7 +566,7 @@ msgstr ""
"doit démarrer par un caractère en minuscule suivi par des caractères en "
"minuscule, des nombres, \"-\" et \".\" sont recommandés"
#: tiramisu/option/domainnameoption.py:90
#: tiramisu/option/domainnameoption.py:95
msgid ""
"must start with lowercase characters followed by lowercase characters, "
"number and \"-\" characters are allowed"
@ -566,7 +574,7 @@ msgstr ""
"doit démarrer par un caractère en minuscule suivi par des caractères en "
"minuscule, des nombres et \"-\" sont autorisés"
#: tiramisu/option/domainnameoption.py:93
#: tiramisu/option/domainnameoption.py:98
msgid ""
"must start with lowercase characters followed by lowercase characters, "
"number and \"-\" characters are recommanded"
@ -574,40 +582,40 @@ msgstr ""
"doit démarrer par un caractère en minuscule suivi par des caractères en "
"minuscule, des nombres et\"-\" sont recommandés"
#: tiramisu/option/domainnameoption.py:97
#: tiramisu/option/domainnameoption.py:98
#: tiramisu/option/domainnameoption.py:102
#: tiramisu/option/domainnameoption.py:103
msgid "could be a IP, otherwise {}"
msgstr "peut être une IP, autrement {}"
#: tiramisu/option/domainnameoption.py:143
#: tiramisu/option/domainnameoption.py:148
msgid "invalid length (min 1)"
msgstr "longueur invalide (min 1)"
#: tiramisu/option/domainnameoption.py:146
#: tiramisu/option/domainnameoption.py:151
msgid "invalid length (max {0})"
msgstr "longueur invalide (max {0})"
#: tiramisu/option/domainnameoption.py:152
#: tiramisu/option/domainnameoption.py:157
msgid "must have dot"
msgstr "doit avoir un point"
#: tiramisu/option/domainnameoption.py:154
#: tiramisu/option/domainnameoption.py:159
msgid "invalid length (max 255)"
msgstr "longueur invalide (max 255)"
#: tiramisu/option/domainnameoption.py:175
#: tiramisu/option/domainnameoption.py:180
msgid "DNS resolution failed"
msgstr "la résolution DNS a échoué"
#: tiramisu/option/domainnameoption.py:179
#: tiramisu/option/domainnameoption.py:184
msgid "error resolving DNS: {1}"
msgstr "erreur de résolution DNS : {1}"
#: tiramisu/option/domainnameoption.py:186
#: tiramisu/option/domainnameoption.py:191
msgid "must not be an IP"
msgstr "ne doit pas être une IP"
#: tiramisu/option/domainnameoption.py:209
#: tiramisu/option/domainnameoption.py:214
msgid "some characters are uppercase"
msgstr "des caractères sont en majuscule"
@ -650,6 +658,10 @@ msgstr "fichier"
msgid "cannot find this {0}"
msgstr "ce {0} est introuvable"
#: tiramisu/option/intoption.py:46
msgid "which is not an integer"
msgstr "qui n'est pas un chiffre"
#: tiramisu/option/intoption.py:52
msgid "value should be equal or greater than \"{0}\""
msgstr "la valeur devrait être supérieur ou égal à {0}"
@ -774,19 +786,19 @@ msgstr ""
"valeur invalide pour default_multi \"{0}\" pour l'option {1}, doit être une "
"liste pour une submulti"
#: tiramisu/option/option.py:285
#: tiramisu/option/option.py:291
msgid "the value \"{}\" is not unique"
msgstr "la valeur de \"{}\" n'est pas unique"
#: tiramisu/option/option.py:347
#: tiramisu/option/option.py:353
msgid "which must not be a list"
msgstr "qui ne doit pas être une liste"
#: tiramisu/option/option.py:399 tiramisu/option/option.py:425
#: tiramisu/option/option.py:405 tiramisu/option/option.py:431
msgid "which must be a list"
msgstr "qui doit être une liste"
#: tiramisu/option/option.py:419
#: tiramisu/option/option.py:425
msgid "which \"{}\" must be a list of list"
msgstr "lequel \"{}\" doit être une liste de liste"
@ -869,27 +881,27 @@ msgstr "{0} a plus de droit que {1}"
msgid "too weak"
msgstr "trop simple"
#: tiramisu/option/portoption.py:74
#: tiramisu/option/portoption.py:80
msgid "inconsistency in allowed range"
msgstr "inconsistence dans la plage autorisée"
#: tiramisu/option/portoption.py:79
#: tiramisu/option/portoption.py:85
msgid "max value is empty"
msgstr "la valeur maximum est vide"
#: tiramisu/option/portoption.py:92
#: tiramisu/option/portoption.py:98
msgid "range must have two values only"
msgstr "un rang doit avoir deux valeurs seulement"
#: tiramisu/option/portoption.py:95
#: tiramisu/option/portoption.py:101
msgid "first port in range must be smaller than the second one"
msgstr "le premier port d'un rang doit être plus petit que le second"
#: tiramisu/option/portoption.py:121
#: tiramisu/option/portoption.py:127
msgid "should be between {0} and {1}"
msgstr "devrait être une nombre entre {0} et {1}"
#: tiramisu/option/portoption.py:123
#: tiramisu/option/portoption.py:129
msgid "must be between {0} and {1}"
msgstr "doit être une nombre entre {0} et {1}"
@ -904,31 +916,31 @@ msgstr ""
"symlink mal formé, le second paramètre doit être une option pour \"{0}\", "
"not {1}"
#: tiramisu/option/urloption.py:91
#: tiramisu/option/urloption.py:92
msgid "must start with http:// or https://"
msgstr "doit débuter par http:// ou https://"
#: tiramisu/option/urloption.py:116
#: tiramisu/option/urloption.py:117
msgid "the port \"{0}\" is invalid: {1}"
msgstr "le port \"{0}\" est invalide : {1}"
#: tiramisu/option/urloption.py:123
#: tiramisu/option/urloption.py:124
msgid "the domain \"{0}\" is invalid: {1}"
msgstr "le domaine \"{0}\" est invalide : {1}"
#: tiramisu/option/urloption.py:127
#: tiramisu/option/urloption.py:128
msgid "must ends with a valid resource name"
msgstr "doit finir par un nom de ressource valide"
#: tiramisu/setting.py:255
#: tiramisu/setting.py:258
msgid "can't rebind {0}"
msgstr "ne peut redéfinir ({0})"
#: tiramisu/setting.py:262
#: tiramisu/setting.py:265
msgid "can't unbind {0}"
msgstr "ne peut supprimer ({0})"
#: tiramisu/setting.py:464
#: tiramisu/setting.py:467
msgid ""
"invalid property type {type(new_prop)} for {subconfig.option.impl_getname()} "
"with {prop.function.__name__} function"
@ -936,15 +948,15 @@ msgstr ""
"type {type(new_prop)} de la propriété invalide pour la fonction {subconfig."
"option.impl_getname()} with {prop.function.__name__}"
#: tiramisu/setting.py:476
#: tiramisu/setting.py:479
msgid "leader cannot have \"{new_prop}\" property"
msgstr "une option leader ne peu avoir la propriété \"{new_prop}\""
#: tiramisu/setting.py:564
#: tiramisu/setting.py:567
msgid "leader cannot have \"{0}\" property"
msgstr "leader ne peut avoir la propriété \"{0}\""
#: tiramisu/setting.py:573
#: tiramisu/setting.py:576
msgid ""
"a leader ({0}) cannot have \"force_default_on_freeze\" or "
"\"force_metaconfig_on_freeze\" property without \"frozen\""
@ -952,19 +964,19 @@ msgstr ""
"une option leader ({0}) ne peut avoir de propriété "
"\"force_default_on_freeze\" or \"force_metaconfig_on_freeze\" sans \"frozen\""
#: tiramisu/setting.py:607
#: tiramisu/setting.py:610
msgid "permissive must be a frozenset"
msgstr "une permissive doit être de type frozenset"
#: tiramisu/setting.py:617
#: tiramisu/setting.py:620
msgid "cannot add those permissives: {0}"
msgstr "ne peut ajouter ces permissives : {0}"
#: tiramisu/setting.py:654
#: tiramisu/setting.py:657
msgid "can't reset properties to the symlinkoption \"{}\""
msgstr "ne peut réinitialiser les propriétés de la symlinkoption \"{}\""
#: tiramisu/setting.py:667
#: tiramisu/setting.py:670
msgid "can't reset permissives to the symlinkoption \"{}\""
msgstr "ne peut réinitialiser les permissive de la symlinkoption \"{}\""
@ -994,17 +1006,17 @@ msgstr ""
msgid "unknown action {}"
msgstr "action inconnue {}"
#: tiramisu/value.py:564 tiramisu/value.py:861
#: tiramisu/value.py:566 tiramisu/value.py:863
msgid "set owner \"{0}\" is forbidden"
msgstr "assigner l'utilisateur \"{0}\" est interdit"
#: tiramisu/value.py:571
#: tiramisu/value.py:573
msgid "\"{0}\" is a default value, so we cannot change owner to \"{1}\""
msgstr ""
"\"{0}\" est une valeur par défaut, donc ne peut changer d'utilisateur à "
"\"{1}\""
#: tiramisu/value.py:740
#: tiramisu/value.py:742
msgid ""
"index {index} is greater than the length {length} for option {subconfig."
"option.impl_get_display_name(with_quote=True)}"
@ -1012,7 +1024,7 @@ msgstr ""
"l'index {index} est supérieur à la longueur \"{length}\" pour l'option "
"\"{subconfig.option.impl_get_display_name(with_quote=True)}\""
#: tiramisu/value.py:847
#: tiramisu/value.py:849
msgid "information's item not found \"{}\""
msgstr "l'information de l'objet ne sont pas trouvé \"{}\""

View file

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2025-02-07 08:01+0100\n"
"POT-Creation-Date: 2025-03-19 09:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -35,7 +35,7 @@ msgstr ""
msgid "Commands:"
msgstr ""
#: tiramisu/api.py:111 tiramisu/api.py:1843
#: tiramisu/api.py:111 tiramisu/api.py:1849
msgid "please specify a valid sub function ({0}.{1})"
msgstr ""
@ -43,7 +43,7 @@ msgstr ""
msgid "please do not specify index ({0}.{1})"
msgstr ""
#: tiramisu/api.py:201 tiramisu/api.py:847
#: tiramisu/api.py:201 tiramisu/api.py:848
msgid "please specify index with a follower option ({0}.{1})"
msgstr ""
@ -83,31 +83,31 @@ msgstr ""
msgid "cannot find \"{0}\""
msgstr ""
#: tiramisu/api.py:811
#: tiramisu/api.py:812
msgid "cannot reduce length of the leader {}"
msgstr ""
#: tiramisu/api.py:864
#: tiramisu/api.py:865
msgid "only multi value has defaultmulti"
msgstr ""
#: tiramisu/api.py:1023
#: tiramisu/api.py:1029
msgid "please specify a valid sub function ({0}.{1}) for {2}"
msgstr ""
#: tiramisu/api.py:1410
#: tiramisu/api.py:1416
msgid "properties must be a frozenset"
msgstr ""
#: tiramisu/api.py:1414 tiramisu/api.py:1441
#: tiramisu/api.py:1420 tiramisu/api.py:1447
msgid "unknown when {} (must be in append or remove)"
msgstr ""
#: tiramisu/api.py:1427 tiramisu/api.py:1451 tiramisu/config.py:1681
#: tiramisu/api.py:1433 tiramisu/api.py:1457 tiramisu/config.py:1681
msgid "unknown type {}"
msgstr ""
#: tiramisu/api.py:1815
#: tiramisu/api.py:1821
msgid "do not use unrestraint, nowarnings or forcepermissive together"
msgstr ""
@ -320,30 +320,38 @@ msgid "cannot modify the {0} {1} because has {2} {3}"
msgstr ""
#: tiramisu/error.py:118
msgid "cannot access to {0} {1} because \"{2}\" has {3} {4}"
msgid "cannot access to {0} {1} because \"{2}\" hasn't value"
msgstr ""
#: tiramisu/error.py:120
msgid "{0} {1} is mandatory but hasn't value"
msgstr ""
#: tiramisu/error.py:123
msgid "cannot access to {0} {1} because \"{2}\" has {3} {4}"
msgstr ""
#: tiramisu/error.py:125
msgid "cannot access to {0} {1} because has {2} {3}"
msgstr ""
#: tiramisu/error.py:192
#: tiramisu/error.py:197
msgid "invalid value"
msgstr ""
#: tiramisu/error.py:202
#: tiramisu/error.py:207
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\""
msgstr ""
#: tiramisu/error.py:204
#: tiramisu/error.py:209
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\" at index \"{3}\""
msgstr ""
#: tiramisu/error.py:223 tiramisu/error.py:234
#: tiramisu/error.py:228 tiramisu/error.py:239
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr ""
#: tiramisu/error.py:225
#: tiramisu/error.py:230
msgid "\"{0}\" is an invalid {1} for \"{2}\" at index \"{3}\""
msgstr ""
@ -411,23 +419,23 @@ msgstr ""
msgid "invalid properties type {0} for {1}, must be a frozenset"
msgstr ""
#: tiramisu/option/baseoption.py:98
#: tiramisu/option/baseoption.py:100
msgid "invalid property type {0} for {1}, must be a string or a Calculation"
msgstr ""
#: tiramisu/option/baseoption.py:249
#: tiramisu/option/baseoption.py:251
msgid "information's item for {0} not found: \"{1}\""
msgstr ""
#: tiramisu/option/baseoption.py:267
#: tiramisu/option/baseoption.py:269
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
msgstr ""
#: tiramisu/option/baseoption.py:308
#: tiramisu/option/baseoption.py:310
msgid "\"{}\" ({}) object attribute \"{}\" is read-only"
msgstr ""
#: tiramisu/option/baseoption.py:320
#: tiramisu/option/baseoption.py:322
msgid "{0} not part of any Config"
msgstr ""
@ -451,76 +459,76 @@ msgstr ""
msgid "only {0} are allowed"
msgstr ""
#: tiramisu/option/domainnameoption.py:62
#: tiramisu/option/domainnameoption.py:67
msgid "unknown type {0} for hostname"
msgstr ""
#: tiramisu/option/domainnameoption.py:65
#: tiramisu/option/domainnameoption.py:70
msgid "allow_ip must be a boolean"
msgstr ""
#: tiramisu/option/domainnameoption.py:67
#: tiramisu/option/domainnameoption.py:72
msgid "allow_cidr_network must be a boolean"
msgstr ""
#: tiramisu/option/domainnameoption.py:69
#: tiramisu/option/domainnameoption.py:74
msgid "allow_without_dot must be a boolean"
msgstr ""
#: tiramisu/option/domainnameoption.py:71
#: tiramisu/option/domainnameoption.py:76
msgid "allow_startswith_dot must be a boolean"
msgstr ""
#: tiramisu/option/domainnameoption.py:82
#: tiramisu/option/domainnameoption.py:87
msgid "must start with lowercase characters followed by lowercase characters, number, \"-\" and \".\" characters are allowed"
msgstr ""
#: tiramisu/option/domainnameoption.py:85
#: tiramisu/option/domainnameoption.py:90
msgid "must start with lowercase characters followed by lowercase characters, number, \"-\" and \".\" characters are recommanded"
msgstr ""
#: tiramisu/option/domainnameoption.py:90
#: tiramisu/option/domainnameoption.py:95
msgid "must start with lowercase characters followed by lowercase characters, number and \"-\" characters are allowed"
msgstr ""
#: tiramisu/option/domainnameoption.py:93
#: tiramisu/option/domainnameoption.py:98
msgid "must start with lowercase characters followed by lowercase characters, number and \"-\" characters are recommanded"
msgstr ""
#: tiramisu/option/domainnameoption.py:97
#: tiramisu/option/domainnameoption.py:98
#: tiramisu/option/domainnameoption.py:102
#: tiramisu/option/domainnameoption.py:103
msgid "could be a IP, otherwise {}"
msgstr ""
#: tiramisu/option/domainnameoption.py:143
#: tiramisu/option/domainnameoption.py:148
msgid "invalid length (min 1)"
msgstr ""
#: tiramisu/option/domainnameoption.py:146
#: tiramisu/option/domainnameoption.py:151
msgid "invalid length (max {0})"
msgstr ""
#: tiramisu/option/domainnameoption.py:152
#: tiramisu/option/domainnameoption.py:157
msgid "must have dot"
msgstr ""
#: tiramisu/option/domainnameoption.py:154
#: tiramisu/option/domainnameoption.py:159
msgid "invalid length (max 255)"
msgstr ""
#: tiramisu/option/domainnameoption.py:175
#: tiramisu/option/domainnameoption.py:180
msgid "DNS resolution failed"
msgstr ""
#: tiramisu/option/domainnameoption.py:179
#: tiramisu/option/domainnameoption.py:184
msgid "error resolving DNS: {1}"
msgstr ""
#: tiramisu/option/domainnameoption.py:186
#: tiramisu/option/domainnameoption.py:191
msgid "must not be an IP"
msgstr ""
#: tiramisu/option/domainnameoption.py:209
#: tiramisu/option/domainnameoption.py:214
msgid "some characters are uppercase"
msgstr ""
@ -556,6 +564,10 @@ msgstr ""
msgid "cannot find this {0}"
msgstr ""
#: tiramisu/option/intoption.py:46
msgid "which is not an integer"
msgstr ""
#: tiramisu/option/intoption.py:52
msgid "value should be equal or greater than \"{0}\""
msgstr ""
@ -668,19 +680,19 @@ msgstr ""
msgid "invalid default_multi value \"{0}\" for option {1}, must be a list for a submulti"
msgstr ""
#: tiramisu/option/option.py:285
#: tiramisu/option/option.py:291
msgid "the value \"{}\" is not unique"
msgstr ""
#: tiramisu/option/option.py:347
#: tiramisu/option/option.py:353
msgid "which must not be a list"
msgstr ""
#: tiramisu/option/option.py:399 tiramisu/option/option.py:425
#: tiramisu/option/option.py:405 tiramisu/option/option.py:431
msgid "which must be a list"
msgstr ""
#: tiramisu/option/option.py:419
#: tiramisu/option/option.py:425
msgid "which \"{}\" must be a list of list"
msgstr ""
@ -757,27 +769,27 @@ msgstr ""
msgid "too weak"
msgstr ""
#: tiramisu/option/portoption.py:74
#: tiramisu/option/portoption.py:80
msgid "inconsistency in allowed range"
msgstr ""
#: tiramisu/option/portoption.py:79
#: tiramisu/option/portoption.py:85
msgid "max value is empty"
msgstr ""
#: tiramisu/option/portoption.py:92
#: tiramisu/option/portoption.py:98
msgid "range must have two values only"
msgstr ""
#: tiramisu/option/portoption.py:95
#: tiramisu/option/portoption.py:101
msgid "first port in range must be smaller than the second one"
msgstr ""
#: tiramisu/option/portoption.py:121
#: tiramisu/option/portoption.py:127
msgid "should be between {0} and {1}"
msgstr ""
#: tiramisu/option/portoption.py:123
#: tiramisu/option/portoption.py:129
msgid "must be between {0} and {1}"
msgstr ""
@ -789,59 +801,59 @@ msgstr ""
msgid "malformed symlink second parameters must be an option for \"{0}\", not {1}"
msgstr ""
#: tiramisu/option/urloption.py:91
#: tiramisu/option/urloption.py:92
msgid "must start with http:// or https://"
msgstr ""
#: tiramisu/option/urloption.py:116
#: tiramisu/option/urloption.py:117
msgid "the port \"{0}\" is invalid: {1}"
msgstr ""
#: tiramisu/option/urloption.py:123
#: tiramisu/option/urloption.py:124
msgid "the domain \"{0}\" is invalid: {1}"
msgstr ""
#: tiramisu/option/urloption.py:127
#: tiramisu/option/urloption.py:128
msgid "must ends with a valid resource name"
msgstr ""
#: tiramisu/setting.py:255
#: tiramisu/setting.py:258
msgid "can't rebind {0}"
msgstr ""
#: tiramisu/setting.py:262
#: tiramisu/setting.py:265
msgid "can't unbind {0}"
msgstr ""
#: tiramisu/setting.py:464
#: tiramisu/setting.py:467
msgid "invalid property type {type(new_prop)} for {subconfig.option.impl_getname()} with {prop.function.__name__} function"
msgstr ""
#: tiramisu/setting.py:476
#: tiramisu/setting.py:479
msgid "leader cannot have \"{new_prop}\" property"
msgstr ""
#: tiramisu/setting.py:564
#: tiramisu/setting.py:567
msgid "leader cannot have \"{0}\" property"
msgstr ""
#: tiramisu/setting.py:573
#: tiramisu/setting.py:576
msgid "a leader ({0}) cannot have \"force_default_on_freeze\" or \"force_metaconfig_on_freeze\" property without \"frozen\""
msgstr ""
#: tiramisu/setting.py:607
#: tiramisu/setting.py:610
msgid "permissive must be a frozenset"
msgstr ""
#: tiramisu/setting.py:617
#: tiramisu/setting.py:620
msgid "cannot add those permissives: {0}"
msgstr ""
#: tiramisu/setting.py:654
#: tiramisu/setting.py:657
msgid "can't reset properties to the symlinkoption \"{}\""
msgstr ""
#: tiramisu/setting.py:667
#: tiramisu/setting.py:670
msgid "can't reset permissives to the symlinkoption \"{}\""
msgstr ""
@ -869,19 +881,19 @@ msgstr ""
msgid "unknown action {}"
msgstr ""
#: tiramisu/value.py:564 tiramisu/value.py:861
#: tiramisu/value.py:566 tiramisu/value.py:863
msgid "set owner \"{0}\" is forbidden"
msgstr ""
#: tiramisu/value.py:571
#: tiramisu/value.py:573
msgid "\"{0}\" is a default value, so we cannot change owner to \"{1}\""
msgstr ""
#: tiramisu/value.py:740
#: tiramisu/value.py:742
msgid "index {index} is greater than the length {length} for option {subconfig.option.impl_get_display_name(with_quote=True)}"
msgstr ""
#: tiramisu/value.py:847
#: tiramisu/value.py:849
msgid "information's item not found \"{}\""
msgstr ""

View file

@ -910,34 +910,39 @@ class TiramisuOptionValue(CommonTiramisuOption, _TiramisuODGet):
def mandatory(self):
"""Return path of options with mandatory property without any value"""
subconfig = self._subconfig
if subconfig.option.impl_is_optiondescription():
ori_config_bag = self._subconfig.config_bag
config_bag = ori_config_bag.copy()
config_bag.properties -= {"mandatory", "empty", "warnings"}
config_bag.set_permissive()
self._subconfig.config_bag = config_bag
options = []
for subconfig in self._config_bag.context.walk(
self._subconfig,
only_mandatory=True,
):
options.append(
TiramisuOption(
subconfig.path,
subconfig.index,
ori_config_bag,
subconfig=subconfig,
)
)
self._subconfig.config_bag = ori_config_bag
return options
ori_config_bag = self._subconfig.config_bag
config_bag = ori_config_bag.copy()
config_bag.properties -= {"mandatory", "empty", "warnings"}
config_bag.set_permissive()
self._subconfig.config_bag = config_bag
try:
self._config_bag.context.walk_valid_value(
self._subconfig, only_mandatory=True
)
except PropertiesOptionError as err:
return err.proptype == ["mandatory"] or err.proptype == ["empty"]
return False
if subconfig.option.impl_is_optiondescription():
options = []
for subconfig in config_bag.context.walk(
self._subconfig,
only_mandatory=True,
):
options.append(
TiramisuOption(
subconfig.path,
subconfig.index,
ori_config_bag,
subconfig=subconfig,
)
)
self._subconfig.config_bag = ori_config_bag
return options
try:
self._config_bag.context.walk_valid_value(
self._subconfig, only_mandatory=True
)
except PropertiesOptionError as err:
return err.proptype == ["mandatory"] or err.proptype == ["empty"]
self._subconfig.config_bag = ori_config_bag
return False
except Exception as err:
self._subconfig.config_bag = ori_config_bag
raise err from err
def _registers(

View file

@ -113,6 +113,11 @@ class PropertiesOptionError(AttributeError):
msg = _('cannot modify the {0} {1} because "{2}" has {3} {4}')
else:
msg = _("cannot modify the {0} {1} because has {2} {3}")
elif properties == ["mandatory"]:
if self._orig_opt:
msg = _("cannot access to {0} {1} because \"{2}\" hasn't value")
else:
msg = _("{0} {1} is mandatory but hasn't value")
else:
if self._orig_opt:
msg = _('cannot access to {0} {1} because "{2}" has {3} {4}')

View file

@ -43,7 +43,7 @@ class IntOption(Option):
value: int,
) -> None:
if not isinstance(value, int):
raise ValueError()
raise ValueError(_('which is not an integer'))
def second_level_validation(self, value, warnings_only):
min_number = self.impl_get_extra("min_number")