feat: find automatically the type for a multi
in case the "multi" attribute is not set, infers the type
This commit is contained in:
parent
955b293403
commit
57f7852501
2 changed files with 23 additions and 26 deletions
|
@ -62,32 +62,6 @@ class Annotator(Walk): # pylint: disable=R0903
|
||||||
variable: dict,
|
variable: dict,
|
||||||
) -> None:
|
) -> None:
|
||||||
multi = self.objectspace.multis.get(variable.path, False)
|
multi = self.objectspace.multis.get(variable.path, False)
|
||||||
|
|
||||||
# default type inference from a default value with :term:`basic types`
|
|
||||||
basic_types = {str: "string", int: "number", bool: "boolean", float: "float"}
|
|
||||||
if variable.version == "1.0":
|
|
||||||
# - version: 1.0, the default value is of type "string" by default
|
|
||||||
if variable.type is None:
|
|
||||||
variable.type = "string"
|
|
||||||
else: #if variable.version != "1.0":
|
|
||||||
# - version: 1.1, the default value has no type by default
|
|
||||||
if multi is False and variable.type is None:
|
|
||||||
if type(variable.default) in basic_types:
|
|
||||||
variable.type = basic_types[type(variable.default)]
|
|
||||||
elif isinstance(variable.default, list):
|
|
||||||
#if variable.name == "varname23":
|
|
||||||
# print("IIIIIIIIIIIIIIIIIIIIIIIIIIIII")
|
|
||||||
# print(variable.multi)
|
|
||||||
if variable.multi is None or variable.multi is False:
|
|
||||||
variable.multi = True
|
|
||||||
if variable.type is None:
|
|
||||||
variable.type = basic_types[type(variable.default[0])]
|
|
||||||
#if variable.name == "varname23":
|
|
||||||
# print(variable.multi)
|
|
||||||
# print(variable.type)
|
|
||||||
else:
|
|
||||||
variable.type = "string"
|
|
||||||
|
|
||||||
# a boolean must have value, the default value is "True"
|
# a boolean must have value, the default value is "True"
|
||||||
if variable.type == "boolean" and multi is False and variable.default is None:
|
if variable.type == "boolean" and multi is False and variable.default is None:
|
||||||
variable.default = True
|
variable.default = True
|
||||||
|
|
|
@ -86,6 +86,29 @@ class Annotator(Walk): # pylint: disable=R0903
|
||||||
variable.type = "choice"
|
variable.type = "choice"
|
||||||
self._convert_variable(variable)
|
self._convert_variable(variable)
|
||||||
|
|
||||||
|
multi = self.objectspace.multis.get(variable.path, False)
|
||||||
|
# default type inference from a default value with :term:`basic types`
|
||||||
|
basic_types = {str: "string", int: "number", bool: "boolean", float: "float"}
|
||||||
|
if variable.version == "1.0":
|
||||||
|
# - version: 1.0, the default value is of type "string" by default
|
||||||
|
if variable.type is None:
|
||||||
|
variable.type = "string"
|
||||||
|
else: #if variable.version != "1.0":
|
||||||
|
# - version: 1.1, the default value has no type by default
|
||||||
|
if multi is False and variable.type is None:
|
||||||
|
if type(variable.default) in basic_types:
|
||||||
|
variable.type = basic_types[type(variable.default)]
|
||||||
|
elif isinstance(variable.default, list):
|
||||||
|
if variable.multi is None or variable.multi is False:
|
||||||
|
variable.multi = True
|
||||||
|
if variable.type is None:
|
||||||
|
variable.type = basic_types[type(variable.default[0])]
|
||||||
|
#else:
|
||||||
|
# variable.type = "string"
|
||||||
|
# let's update the "multi" attribute in the tiramisu cache then
|
||||||
|
if variable.multi == True:
|
||||||
|
self.objectspace.multis[variable.path] = True
|
||||||
|
|
||||||
def _convert_variable(
|
def _convert_variable(
|
||||||
self,
|
self,
|
||||||
variable: dict,
|
variable: dict,
|
||||||
|
|
Loading…
Reference in a new issue