47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
|
class ValueAnnotator:
|
||
|
"""Annotate check
|
||
|
"""
|
||
|
def __init__(self,
|
||
|
objectspace,
|
||
|
) -> None:
|
||
|
if not hasattr(objectspace.space, 'variables'):
|
||
|
return
|
||
|
self.objectspace = objectspace
|
||
|
self.convert_value()
|
||
|
|
||
|
def convert_value(self) -> None:
|
||
|
for families in self.objectspace.space.variables.values():
|
||
|
for family in families.family.values():
|
||
|
for variable in family.variable.values():
|
||
|
if isinstance(variable, self.objectspace.leadership):
|
||
|
variable_type = 'leader'
|
||
|
for follower in variable.variable:
|
||
|
self._convert_value(follower,
|
||
|
variable_type,
|
||
|
)
|
||
|
variable_type = 'follower'
|
||
|
else:
|
||
|
self._convert_value(variable)
|
||
|
|
||
|
def _convert_value(self,
|
||
|
variable,
|
||
|
variable_type: str=None,
|
||
|
) -> None:
|
||
|
if not hasattr(variable, 'value'):
|
||
|
return
|
||
|
if variable.value[0].type == 'calculation':
|
||
|
variable.default = variable.value[0]
|
||
|
else:
|
||
|
if variable.multi:
|
||
|
if variable_type != 'follower':
|
||
|
variable.default = [value.name for value in variable.value]
|
||
|
if variable_type != 'leader':
|
||
|
if variable.multi == 'submulti':
|
||
|
variable.default_multi = [value.name for value in variable.value]
|
||
|
else:
|
||
|
#FIXME 0 ou -1 ?
|
||
|
variable.default_multi = variable.value[-1].name
|
||
|
else:
|
||
|
variable.default = variable.value[0].name
|
||
|
del variable.value
|