# Les variables à choix ## Une variable à choix Il est possible d'imposer une liste de valeur pour une variable particulière : ```yml --- version: '1.0' my_variable: type: choice choices: - val1 - val2 - val3 ``` Dans ce cas, seules les valeurs proposées sont possibles pour cette variable. Cette variable n'est pas obligatoire dont il est possible de mettre la valeur "None". Si la variable est obligatoire ou si une valeur est précisée (la variable passe obligatoire) alors la valeur "None" n'est plus autorisé : ```yml --- version: '1.0' my_variable: type: choice choices: - val1 - val2 - val3 default: val1 ``` ## Un variable à choix typée Les choix sont typés : ```yml --- version: '1.0' my_variable: type: choice choices: - val1 - 3 - true default: val1 ``` dans ce cas, le chiffre 3 est autorisé mais pas la chaine de caractère "3". ## Redéfinir une option à choix Si on veut supprimer un choix ou redéfinir complètement la liste, il faut redéfinir cette variable et ajouter l'attribut "remove_choice" à "True" : ```yml --- version: '1.0' my_variable: redefine: true choices: - val1 - val2 ``` Dans ce cas toutes les anciens choix ne seront plus possible. Seuls les nouveaux le seront. ## Un variable à choix provenant de variable Les choix d'une variable peuvent provenir d'une autre variable multiple : ```yml --- version: '1.0' source_variable: multi: true default: - val1 - val2 my_variable: type: choice choices: type: variable variable: rougail.source_variable ``` Ou de plusieurs autres variables : ```yml --- version: '1.0' source_variable_1: default: val1 source_variable_2: default: val2 my_variable: type: choice choices: - type: variable variable: rougail.source_variable_1 - type: variable variable: rougail.source_variable_2 ``` Dans ce cas, toutes les valeurs de la variable ou des variables seront des choix utilisables par l'utilisateur. ## Un variable à choix provenant d'une fonction jinja Faisons d'abord une fonction `trange` dans le fichier functions.py : ```python def trange(min, max): return range(min, ma ``` On va récupérer ici les valeurs de 0 à 9 : ```yml --- version: '1.0' my_variable: type: choice default: 9 choices: type: jinja jinja: |+ {% for item in trange(0, 10) %} {{ item }} {%- endfor %} return_type: number ```