Compare commits

..

No commits in common. "888ba21551abfa23915ac21e2c2f3463e9fe8872" and "1b640689b80f75396fdded42c7fb54553f0f1b70" have entirely different histories.

7 changed files with 164 additions and 198 deletions

View file

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

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

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project] [project]
name = "tiramisu" name = "tiramisu"
version = "5.2.0a3" version = "5.2.0a2"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
readme = "README.md" readme = "README.md"
description = "an options controller tool" description = "an options controller tool"

View file

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

View file

@ -113,11 +113,6 @@ class PropertiesOptionError(AttributeError):
msg = _('cannot modify the {0} {1} because "{2}" has {3} {4}') msg = _('cannot modify the {0} {1} because "{2}" has {3} {4}')
else: else:
msg = _("cannot modify the {0} {1} because has {2} {3}") 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: else:
if self._orig_opt: if self._orig_opt:
msg = _('cannot access to {0} {1} because "{2}" has {3} {4}') msg = _('cannot access to {0} {1} because "{2}" has {3} {4}')

View file

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