feat: leadership => sequence

This commit is contained in:
egarette@silique.fr 2026-06-11 07:53:47 +02:00
parent 49063e107d
commit ce059ffb01
63 changed files with 112 additions and 76 deletions

View file

@ -19,6 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
from io import BytesIO from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
from copy import deepcopy
from ruamel.yaml import YAML, CommentedMap from ruamel.yaml import YAML, CommentedMap
from ruamel.yaml.representer import RoundTripRepresenter from ruamel.yaml.representer import RoundTripRepresenter
@ -37,6 +38,7 @@ from djlint.reformat import formatter
from tiramisu.config import get_common_path from tiramisu.config import get_common_path
from rougail.convert import RougailConvert from rougail.convert import RougailConvert
from rougail.convert.collect import Collect
from rougail.convert.object_model import ( from rougail.convert.object_model import (
Variable, Variable,
Family, Family,
@ -240,6 +242,8 @@ class RougailOutputFormatter:
family["exists"] = yaml_data["exists"] family["exists"] = yaml_data["exists"]
force_keys = list(yaml_data) force_keys = list(yaml_data)
type_ = obj.type type_ = obj.type
if type_ in RENAME_TYPE:
type_ = RENAME_TYPE[type_]
if type_ == "dynamic": if type_ == "dynamic":
attributes = self.get_attributes(self.rougail.dynamic) attributes = self.get_attributes(self.rougail.dynamic)
else: else:
@ -247,17 +251,20 @@ class RougailOutputFormatter:
for attr, default_value in attributes.items(): for attr, default_value in attributes.items():
if attr in ["name", "path", "namespace", "version", "xmlfiles"]: if attr in ["name", "path", "namespace", "version", "xmlfiles"]:
continue continue
try: if attr == "type":
value = getattr(obj, attr) value = type_
except AttributeError: else:
continue try:
value = getattr(obj, attr)
except AttributeError:
continue
if attr != "type" and attr not in force_keys and value == default_value: if attr != "type" and attr not in force_keys and value == default_value:
continue continue
if attr in children: if attr in children:
attr = f"_{attr}" attr = f"_{attr}"
family[attr] = self.object_to_yaml(attr, type_, value, False, path) family[attr] = self.object_to_yaml(attr, type_, value, False, path)
if type_ == "dynamic" or (children and type_ == "family"): if type_ == "dynamic" or (children and type_ == "family"):
tmp_family = family.copy() tmp_family = deepcopy(family)
if "_type" in tmp_family: if "_type" in tmp_family:
del tmp_family["_type"] del tmp_family["_type"]
else: else:
@ -276,10 +283,21 @@ class RougailOutputFormatter:
elif cpath.replace('{{ identifier }}', '{{ suffix }}') in child: elif cpath.replace('{{ identifier }}', '{{ suffix }}') in child:
cpath = cpath.replace('{{ identifier }}', '{{ suffix }}') cpath = cpath.replace('{{ identifier }}', '{{ suffix }}')
child = child[cpath] child = child[cpath]
tmp_family[cpath] = child tmp_family[cpath] = child
family_type = self.rougail.is_family_or_variable("", tmp_family, False, "") #family_type = self.rougail.is_family_or_variable("", tmp_family, False, "")
collect = Collect(
self.rougail,
name,
parent,
tmp_family,
None,
None,
test_exists=False,
raises=False,
)
family_type = collect.option_type
if family_type == "family": if family_type == "family":
family_type = self.rougail.get_family_or_variable_type(tmp_family) family_type = collect.user_type
if family_type is None: if family_type is None:
family_type = 'family' family_type = 'family'
if family_type == type_: if family_type == type_:
@ -347,8 +365,14 @@ class RougailOutputFormatter:
xmlfiles=obj.xmlfiles, xmlfiles=obj.xmlfiles,
) )
obj.params.append(param) obj.params.append(param)
if type_ == 'choice':
variable_obj = self.rougail.choices
elif type_ == "regexp":
variable_obj = self.rougail.regexp
else:
variable_obj = self.rougail.variable
for attr, default_value in self.get_attributes( for attr, default_value in self.get_attributes(
self.rougail.variable, ["name", "path", "namespace", "version", "xmlfiles"] variable_obj, ["name", "path", "namespace", "version", "xmlfiles"]
).items(): ).items():
if attr == "type": if attr == "type":
value = type_ value = type_

View file

@ -3,7 +3,7 @@
version: 1.1 version: 1.1
leadership: leadership:
type: leadership type: sequence
hidden: true hidden: true
var1: # a first variable var1: # a first variable

View file

@ -18,33 +18,33 @@ var2:
var3: var3:
description: the third variable description: the third variable
mandatory: false
choices: choices:
- a - a
- b - b
- c - c
mandatory: false
var4: var4:
description: the forth variable description: the forth variable
mandatory: false
choices: choices:
- null - null
- b - b
- c - c
mandatory: false
var5: var5:
description: the fifth variable description: the fifth variable
default: a
choices: choices:
- a - a
- b - b
- c - c
default: a
var6: var6:
description: the sixth variable description: the sixth variable
default: 1
choices: choices:
- 1 - 1
- 2 - 2
- 3 - 3
default: 1
... ...

View file

@ -4,6 +4,7 @@ version: 1.1
var: var:
description: a variable description: a variable
default: 9
choices: choices:
jinja: |- jinja: |-
{% for n in trange(0, 10) %} {% for n in trange(0, 10) %}
@ -11,5 +12,4 @@ var:
{% endfor %} {% endfor %}
return_type: integer return_type: integer
description: choices is 0 to 9 description: choices is 0 to 9
default: 9
... ...

View file

@ -9,7 +9,7 @@ var1: # a second variable
var2: var2:
description: a first variable description: a first variable
default: a
choices: choices:
variable: _.var1 variable: _.var1
default: a
... ...

View file

@ -9,9 +9,9 @@ var1: # a second variable
var2: var2:
description: a first variable description: a first variable
default: a
choices: choices:
variable: _.var1 variable: _.var1
default: a
var3: var3:
description: a third variable description: a third variable

View file

@ -9,9 +9,9 @@ var1: # a second variable
var2: var2:
description: a first variable description: a first variable
default: a
choices: choices:
variable: _.var1 variable: _.var1
default: a
family: family:

View file

@ -7,6 +7,6 @@ var:
test: test:
- '#b1b1b1' - '#b1b1b1'
- '#b2b2b2' - '#b2b2b2'
regexp: ^#(?:[0-9a-f]{3}){1,2}$
default: '#a1a1a1' default: '#a1a1a1'
regexp: ^#(?:[0-9a-f]{3}){1,2}$
... ...

View file

@ -7,8 +7,8 @@ var1:
test: test:
- '#b1b1b1' - '#b1b1b1'
- '#b2b2b2' - '#b2b2b2'
regexp: ^#(?:[0-9a-f]{3}){1,2}$
default: '#a1a1a1' default: '#a1a1a1'
regexp: ^#(?:[0-9a-f]{3}){1,2}$
var2: var2:
description: a second variable description: a second variable

View file

@ -4,9 +4,9 @@ version: 1.1
var: var:
description: A choice description: A choice
default: quote'
choices: choices:
- quote' - quote'
- quote" - quote"
- quote"' - quote"'
default: quote'
... ...

View file

@ -4,16 +4,16 @@ version: 1.1
variable1: variable1:
description: a first variable description: a first variable
multi: true
choices: choices:
- val1 - val1
- val2 - val2
multi: true
variable2: variable2:
description: a second variable description: a second variable
multi: true
mandatory: false
choices: choices:
- val1 - val1
- val2 - val2
multi: true
mandatory: false
... ...

View file

@ -8,8 +8,8 @@ source_variable_2: val2 # the second source variable
my_variable: my_variable:
description: a variable description: a variable
default: val1
choices: choices:
- variable: _.source_variable_1 - variable: _.source_variable_1
- variable: _.source_variable_2 - variable: _.source_variable_2
default: val1
... ...

View file

@ -4,6 +4,7 @@ version: 1.1
var: var:
description: a variable description: a variable
default: 9
choices: choices:
jinja: |- jinja: |-
{% for item in trange(0, 10) %} {% for item in trange(0, 10) %}
@ -11,5 +12,4 @@ var:
{%- endfor %} {%- endfor %}
return_type: integer return_type: integer
description: choice for 0 to 9 description: choice for 0 to 9
default: 9
... ...

View file

@ -4,6 +4,7 @@ version: 1.1
var: var:
description: a variable description: a variable
default: 9
choices: choices:
jinja: |- jinja: |-
{% for item in trange(0, 10) %} {% for item in trange(0, 10) %}
@ -11,5 +12,4 @@ var:
{%- endfor %} {%- endfor %}
return_type: integer return_type: integer
description: choice for 0 to 9 description: choice for 0 to 9
default: 9
... ...

View file

@ -4,6 +4,7 @@ version: 1.1
variable: variable:
description: a variable description: a variable
default: c
choices: choices:
variable: _.unknown_variable variable: _.unknown_variable
optional: true optional: true
@ -11,5 +12,4 @@ variable:
- a - a
- b - b
- c - c
default: c
... ...

View file

@ -4,9 +4,9 @@ version: 1.1
var: var:
description: A choice description: A choice
default: c
choices: choices:
- a - a
- b - b
- c - c
default: c
... ...

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leadership: leadership:
description: a leadership description: a leadership
type: leadership type: sequence
leader: [] # a leader leader: [] # a leader

View file

@ -3,5 +3,5 @@
version: 1.1 version: 1.1
empty_leader: empty_leader:
type: leadership type: sequence
... ...

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- leader - leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # the leader leader: # the leader
- leader - leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leadership: leadership:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -10,7 +10,7 @@ general1:
leader: leader:
description: leader description: leader
type: leadership type: sequence
leader: # leader leader: # leader

View file

@ -4,13 +4,16 @@ version: 1.1
leadership: leadership:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader
examples: examples:
- val1 - val1
- val2 - val2
test:
- val1
- val2
default: default:
- value_1 - value_1
- value_2 - value_2

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: [] # the leader leader: [] # the leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- a - a

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- a - a

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: leadership description: leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- a - a

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leadership: leadership:
description: A leadership description: A leadership
type: leadership type: sequence
leader: [] # The leader leader: [] # The leader

View file

@ -4,7 +4,7 @@ version: 1.1
leadership: leadership:
description: A leadership description: A leadership
type: leadership type: sequence
leader: leader:
description: The leader description: The leader

View file

@ -4,7 +4,7 @@ version: 1.1
leadership: leadership:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -3,7 +3,7 @@
version: 1.1 version: 1.1
leader: leader:
type: leadership type: sequence
leader: leader:
- a - a

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -8,7 +8,7 @@ calculate: # a calculated variable
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leadership_1: leadership_1:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1
@ -14,7 +14,7 @@ leadership_1:
leadership_2: leadership_2:
description: a second leadership description: a second leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leadership_1: leadership_1:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1
@ -14,7 +14,7 @@ leadership_1:
leadership_2: leadership_2:
description: a second leadership description: a second leadership
type: leadership type: sequence
leader: # a leader leader: # a leader
- value1 - value1

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: The leadership description: The leadership
type: leadership type: sequence
leader: leader:
description: The leader description: The leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
hidden: true hidden: true
leader: leader:

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -6,7 +6,7 @@ condition: true # a condition
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # aleader leader: # aleader
- a - a

View file

@ -4,7 +4,7 @@ version: 1.1
leadership: leadership:
description: a leadership description: a leadership
type: leadership type: sequence
leader: # aleader leader: # aleader
- a - a

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: [] # a leader leader: [] # a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -6,7 +6,7 @@ condition: no # a condition
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: leader:
description: a leader description: a leader

View file

@ -6,7 +6,7 @@ condition: yes # a condition
leader: leader:
description: a leadership description: a leadership
type: leadership type: sequence
leader: [] # a leader leader: [] # a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: leader description: leader
type: leadership type: sequence
leader: # a leader leader: # a leader
- a - a

View file

@ -6,7 +6,10 @@ var1: # A suffix variable
- val1 - val1
- val2 - val2
var2: val1 # A suffix variable2 var2:
description: A suffix variable2
default: val1
hidden: true
dyn{{ identifier }}: dyn{{ identifier }}:
dynamic: dynamic:

View file

@ -6,7 +6,10 @@ var1: # A suffix variable
- val1 - val1
- val2 - val2
var2: val1 # A suffix variable2 var2:
description: A suffix variable2
default: val1
hidden: true
dyn{{ identifier }}: dyn{{ identifier }}:
dynamic: dynamic:

View file

@ -24,4 +24,5 @@ var2:
default: default:
variable: _.dynval1.var variable: _.dynval1.var
propertyerror: false propertyerror: false
mandatory: false
... ...

View file

@ -22,5 +22,7 @@ var2:
description: A variable calculated description: A variable calculated
default: default:
variable: _.dynval1.var variable: _.dynval1.var
propertyerror: false
optional: true optional: true
mandatory: false
... ...

View file

@ -13,7 +13,7 @@ dyn{{ identifier }}:
leadership: leadership:
description: a leadership description: a leadership
type: leadership type: sequence
leader: [] # a leader leader: [] # a leader

View file

@ -17,7 +17,7 @@ dyn{{ identifier }}:
leadership: leadership:
description: a leadership description: a leadership
type: leadership type: sequence
leader: [] # a leader leader: [] # a leader

View file

@ -4,7 +4,7 @@ version: 1.1
leader: leader:
description: A leadership description: A leadership
type: leadership type: sequence
leader: leader:
description: A leader description: A leader