Compare commits

..

3 commits

264 changed files with 1063 additions and 105 deletions

View file

@ -1,3 +1,13 @@
## 0.1.0a8 (2025-05-12)
### Feat
- display loaded_from informations
### Fix
- black
## 0.1.0a7 (2025-05-02)
### Fix

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project]
name = "rougail.user_data_environment"
version = "0.1.0a7"
version = "0.1.0a8"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
readme = "README.md"
description = "Rougail user_data environment"

View file

@ -3,4 +3,4 @@ from .__version__ import __version__
RougailUserData = RougailUserDataEnvironment
__all__ = ('RougailUserDataEnvironment',)
__all__ = ("RougailUserDataEnvironment",)

View file

@ -1 +1 @@
__version__ = "0.1.0a7"
__version__ = "0.1.0a8"

View file

@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
from rougail.error import DictConsistencyError
from rougail.annotator.variable import Walk
from .i18n import _
@ -42,11 +43,19 @@ class Annotator(Walk):
def check_family(self):
for family in self.get_families():
if family.name != family.name.lower():
msg = _('family name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid')
raise DictConsistencyError(msg.format(family.name), 200, family.xmlfiles)
msg = _(
'family name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid'
)
raise DictConsistencyError(
msg.format(family.name), 200, family.xmlfiles
)
def check_variable(self):
for variable in self.get_variables():
if variable.name != variable.name.lower():
msg = _('variable name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid')
raise DictConsistencyError(msg.format(variable.name), 201, variable.xmlfiles)
msg = _(
'variable name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid'
)
raise DictConsistencyError(
msg.format(variable.name), 201, variable.xmlfiles
)

View file

@ -22,9 +22,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
def get_rougail_config(*,
backward_compatibility=True,
) -> dict:
def get_rougail_config(
*,
backward_compatibility=True,
) -> dict:
options = """
environment:
description: Define values from the environment
@ -40,11 +41,12 @@ environment:
variable: main_namespace
when_not: null
"""
return {'name': 'environment',
'process': 'user data',
'options': options,
'level': 50,
}
return {
"name": "environment",
"process": "user data",
"options": options,
"level": 50,
}
__all__ = ('get_rougail_config',)
__all__ = ("get_rougail_config",)

View file

@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
import os
from rougail.object_model import CONVERT_OPTION
from rougail.config import RougailConfig
@ -26,36 +27,41 @@ from tiramisu.error import ValueOptionError
class RougailUserDataEnvironment:
def __init__(self,
config: 'Config',
*,
rougailconfig: RougailConfig=None,
):
def __init__(
self,
config: "Config",
*,
rougailconfig: RougailConfig = None,
):
# this is the tiramisu config object
self.config = config
if rougailconfig is None:
rougailconfig = RougailConfig
user_data = rougailconfig['step.user_data']
if 'environment' not in user_data:
user_data.append('environment')
rougailconfig['step.user_data'] = user_data
user_data = rougailconfig['step.user_data']
user_data = rougailconfig["step.user_data"]
if "environment" not in user_data:
user_data.append("environment")
rougailconfig["step.user_data"] = user_data
user_data = rougailconfig["step.user_data"]
self.rougailconfig = rougailconfig
if 'environment' not in user_data:
raise ExtentionError('environment is not set in step.user_data')
if "environment" not in user_data:
raise ExtentionError("environment is not set in step.user_data")
self.errors = []
self.warnings = []
def run(self):
values = self.parse()
return [{'source': 'environment variable',
'errors': self.errors,
'warnings': self.warnings,
'values': values,
'options': {'multi_separator': ',',
'needs_convert': True,
},
}]
return [
{
"source": "environment variable",
"errors": self.errors,
"warnings": self.warnings,
"values": values,
"options": {
"multi_separator": ",",
"needs_convert": True,
},
}
]
def parse(self):
variables = {}
@ -65,7 +71,9 @@ class RougailUserDataEnvironment:
variables.update(get_rougail_environment(option.name()))
else:
return variables
return get_rougail_environment(None, self.rougailconfig['environment.default_environment_name'])
return get_rougail_environment(
None, self.rougailconfig["environment.default_environment_name"]
)
def get_rougail_environment(namespace, environment_name=None):
@ -77,11 +85,13 @@ def get_rougail_environment(namespace, environment_name=None):
"""
# then we filter the ROUGAIL_ environment variables
if namespace is None:
rougail_environment_var = environment_name.upper() + '_'
rougail_environment_var = environment_name.upper() + "_"
len_env = len(rougail_environment_var)
else:
rougail_environment_var = namespace.upper() + '.'
rougail_environment_var = namespace.upper() + "."
len_env = 0
return {envvar[len_env:].lower(): envval
for envvar, envval in os.environ.items()
if envvar.startswith(rougail_environment_var)}
return {
envvar[len_env:].lower(): envval
for envvar, envval in os.environ.items()
if envvar.startswith(rougail_environment_var)
}

View file

@ -0,0 +1 @@
ROUGAIL_UNKNOWN=1

View file

@ -0,0 +1,2 @@
ROUGAIL_FAMILY_DISABLED.VARIABLE1=test
ROUGAIL_FAMILY_DISABLED.VARIABLE2=test

View file

@ -0,0 +1 @@
ROUGAIL_VARIABLE_DISABLED=test

View file

@ -0,0 +1 @@
ROUGAIL_VARIABLE_INT=test

View file

@ -0,0 +1 @@
ROUGAIL_FAMILY_DISABLED_HIDDEN.VARIABLE1=test

View file

@ -0,0 +1 @@
ROUGAIL_SECRET=a

View file

@ -0,0 +1 @@
ROUGAIL_FAMILY=test

View file

@ -0,0 +1 @@
ROUGAIL_DYN_UNKNOWN.VARIABLE=test

View file

@ -0,0 +1,4 @@
ROUGAIL_LEADERSHIP.LEADER=test1,test2,test3
ROUGAIL_LEADERSHIP.FOLLOWER=test1,test2,test3
ROUGAIL_LEADERSHIP.FOLLOWER_DISABLED=test1,test2,test3
ROUGAIL_LEADERSHIP.FOLLOWER_DISABLED_AT_INDEX=test1,test2,test3

View file

@ -0,0 +1,2 @@
ROUGAIL_LEADERSHIP.LEADER=test
ROUGAIL_LEADERSHIP.UNKNWON=test

View file

@ -0,0 +1,2 @@
ROUGAIL_LEADERSHIP.LEADER=test
ROUGAIL_LEADERSHIP.FOLLOWER=test1,test2

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable or family \"unknown\" does not exist, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,7 @@
{
"errors": [],
"warnings": [
"family \"family_disabled\" is disabled, \"family_disabled.variable1\" will be ignored when loading from environment variable",
"family \"family_disabled\" is disabled, \"family_disabled.variable2\" will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable \"variable_disabled\" is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"the value \"test\" is invalid for \"variable_int\", which is not an integer, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"family \"family_disabled_hidden\" is disabled and hidden, \"family_disabled_hidden.variable1\" will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"the value \"**********\" is invalid for \"secret\", at least 10 characters are required, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"cannot set the value \"test\" to the family \"family\", it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable or family \"dyn_unknown\" does not exist, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,9 @@
{
"errors": [],
"warnings": [
"variable \"leadership.follower_disabled\" at index \"0\" is disabled, it will be ignored when loading from environment variable",
"variable \"leadership.follower_disabled\" at index \"1\" is disabled, it will be ignored when loading from environment variable",
"variable \"leadership.follower_disabled\" at index \"2\" is disabled, it will be ignored when loading from environment variable",
"variable \"leadership.follower_disabled_at_index\" at index \"1\" is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable or family \"leadership.unknwon\" does not exist, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"index \"1\" is greater than the leadership length \"1\" for option \"leadership.follower\" in environment variable"
]
}

View file

@ -0,0 +1,68 @@
%YAML 1.2
---
version: 1.1
variable:
secret:
type: secret
params:
min_len: 10
variable_disabled:
disabled: true
variable_disabled_hidden:
disabled: true
hidden: true
variable_int:
type: number
family:
variable:
family_disabled:
disabled: true
variable1:
variable2:
family_disabled_hidden:
disabled: true
hidden: true
variable1:
variable2:
dyn_{{ identifier }}:
dynamic:
- var1
- var2
variable:
leadership:
type: leadership
leader:
follower:
follower_disabled:
disabled: true
follower_disabled_at_index:
disabled:
jinja: >-
{% if index == 1 %}
true
{% else %}
{% endif %}
params:
index:
type: index
...

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,9 @@
{
"errors": [],
"warnings": [
"family \"leadership\" is hidden, \"leadership.var1\" (a first variable) will be ignored when loading from environment variable",
"family \"leadership\" is hidden, \"leadership.var2\" (a first variable) at index \"0\" will be ignored when loading from environment variable",
"index \"1\" is greater than the leadership length \"1\" for option \"leadership.var2\" (a first variable) in environment variable",
"index \"2\" is greater than the leadership length \"1\" for option \"leadership.var2\" (a first variable) in environment variable"
]
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,3 @@
ROUGAIL_LEADERSHIP.VAR1="string1,string2,string3"
ROUGAIL_LEADERSHIP.VAR2="string1,,"
ROUGAIL_VAR2="string1"

View file

@ -0,0 +1,3 @@
ROUGAIL_LEADERSHIP.VAR1="string1,string2,string3"
ROUGAIL_LEADERSHIP.VAR2="string1,,"
ROUGAIL_VAR2="string1"

View file

@ -0,0 +1,9 @@
{
"leadership.var1": [
{
"leadership.var1": "a_value",
"leadership.var2": "a_value"
}
],
"var2": "string1"
}

View file

@ -0,0 +1,9 @@
{
"leadership.var1": [
{
"leadership.var1": "a_value",
"leadership.var2": "a_value"
}
],
"var2": "a_value"
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,2 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"

View file

@ -0,0 +1,2 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"

View file

@ -0,0 +1 @@
ROUGAIL_VAR1="string1"

View file

@ -0,0 +1,4 @@
{
"var1": "string1",
"var2": "string1"
}

View file

@ -0,0 +1,4 @@
{
"var1": "string1",
"var2": "string1"
}

View file

@ -1,6 +1,6 @@
{
"errors": [],
"warnings": [
"cannot access to option \"var2\" (a second variable) because has property \"disabled\" loaded from environment variable"
"variable \"var2\" (a second variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -1,6 +1,6 @@
{
"errors": [],
"warnings": [
"cannot access to option \"var2\" (a second variable) because has property \"disabled\" loaded from environment variable"
"variable \"var2\" (a second variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,7 @@
{
"errors": [],
"warnings": [
"variable \"var1\" (a first variable) is hidden, it will be ignored when loading from environment variable",
"variable \"var2\" (a second variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable \"var2\" (a second variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1 @@
ROUGAIL_VAR2="string1"

View file

@ -0,0 +1,4 @@
{
"var1": "value",
"var3": "string1"
}

View file

@ -0,0 +1,4 @@
{
"var1": "value",
"var3": "value"
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable \"var1\" (a first variable) is hidden, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1 @@
ROUGAIL_VAR2="string1"

View file

@ -0,0 +1,5 @@
{
"var1": "value",
"var2": "string1",
"var3": "string1"
}

View file

@ -0,0 +1,5 @@
{
"var1": "value",
"var2": "string1",
"var3": "value"
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable \"var2\" (a second variable) is hidden, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,6 @@
{
"errors": [],
"warnings": [
"variable \"var3\" (a third variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1 @@
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1,5 @@
{
"var1": "string1",
"var2": "string1",
"var3": "string1"
}

View file

@ -0,0 +1,4 @@
{
"var1": "value",
"var2": "value"
}

View file

@ -0,0 +1,7 @@
{
"errors": [],
"warnings": [
"variable \"var2\" (a second variable) is hidden, it will be ignored when loading from environment variable",
"variable \"var3\" (a third variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1,3 @@
ROUGAIL_VAR1="string1"
ROUGAIL_VAR2="string1"
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1 @@
ROUGAIL_VAR3="string1"

View file

@ -0,0 +1,4 @@
{
"var1": "string1",
"var2": "string1"
}

View file

@ -0,0 +1,5 @@
{
"var1": "value",
"var2": "value",
"var3": "string1"
}

View file

@ -1,6 +1,6 @@
{
"errors": [],
"warnings": [
"cannot access to option \"var1\" (a first variable) because has property \"hidden\" (unknown is undefined) loaded from environment variable"
"variable \"var1\" (a first variable) is hidden, it will be ignored when loading from environment variable"
]
}

View file

@ -1,6 +1,6 @@
{
"errors": [],
"warnings": [
"cannot access to option \"variable\" (a variable) because has property \"disabled\" loaded from environment variable"
"variable \"variable\" (a variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -1,6 +1,6 @@
{
"errors": [],
"warnings": [
"cannot access to option \"variable\" (a variable) because has property \"disabled\" loaded from environment variable"
"variable \"variable\" (a variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -1,6 +1,6 @@
{
"errors": [],
"warnings": [
"cannot access to option \"variable\" (a variable) because has property \"disabled\" loaded from environment variable"
"variable \"variable\" (a variable) is disabled, it will be ignored when loading from environment variable"
]
}

View file

@ -1,6 +1,6 @@
{
"errors": [],
"warnings": [
"cannot access to option \"variable\" (a variable) because has property \"disabled\" loaded from environment variable"
"variable \"variable\" (a variable) is disabled, it will be ignored when loading from environment variable"
]
}

Some files were not shown because too many files have changed in this diff Show more