Skip to content

feat(prowler): chunk2 create the configuration (#422) - #431

Draft
Christophe Melchior (Kakudou) wants to merge 9 commits into
feat/422-prowler-injector-chk1-initfrom
feat/422-prowler-injector-chk2-configuration
Draft

feat(prowler): chunk2 create the configuration (#422)#431
Christophe Melchior (Kakudou) wants to merge 9 commits into
feat/422-prowler-injector-chk1-initfrom
feat/422-prowler-injector-chk2-configuration

Conversation

@Kakudou

Copy link
Copy Markdown
Member

Part of #422. Chunk 2 of the Prowler injector stack: create the configuration — multi-provider config: strict/frozen provider input models, executable runtime path, safe mutation rejection, trusted AWS endpoint override.

@Filigran-Automation Filigran Automation (Filigran-Automation) changed the title feat(prowler): Chunk2 create the configuration (#422) feat(prowler): chunk2 create the configuration (#422) Aug 26, 2026
@Filigran-Automation Filigran Automation (Filigran-Automation) added the filigran team Item from the Filigran team. label Aug 26, 2026
@codecov

codecov Bot commented Aug 26, 2026

Copy link
Copy Markdown

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
565 1 564 0
View the top 1 failed test(s) by shortest run time
tests.behaviour.chk001_catalog_scaffold.test_chk001_catalog_scaffold_bdd::test_foundation_startup_registers_no_assessment_contracts
Stack Traces | 0.004s run time
standard_injector_environment = None

    def test_foundation_startup_registers_no_assessment_contracts(
        standard_injector_environment: None,
    ) -> None:
        """The foundation starts its listener with an empty contract catalog."""
        _given_the_prowler_project()
>       config, helper = _when_injector_starts()
                         ^^^^^^^^^^^^^^^^^^^^^^^

.../behaviour/chk001_catalog_scaffold/test_chk001_catalog_scaffold_bdd.py:146: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../behaviour/chk001_catalog_scaffold/test_chk001_catalog_scaffold_bdd.py:70: in _when_injector_starts
    config = ConfigLoader()
             ^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

__pydantic_self__ = ConfigLoader(), _case_sensitive = None
_nested_model_default_partial_update = None, _env_prefix = None
_env_prefix_target = None, _env_file = PosixPath('.'), _env_file_encoding = None
_env_ignore_empty = None, _env_nested_delimiter = None
_env_nested_max_split = None, _env_parse_none_str = None
_env_parse_enums = None, _cli_prog_name = None, _cli_parse_args = None
_cli_settings_source = None, _cli_parse_none_str = None
_cli_hide_none_type = None, _cli_avoid_json = None, _cli_enforce_required = None
_cli_use_class_docs_for_groups = None, _cli_exit_on_error = None
_cli_prefix = None, _cli_flag_prefix_char = None, _cli_implicit_flags = None
_cli_ignore_unknown_args = None, _cli_kebab_case = None, _cli_shortcuts = None
_secrets_dir = None, _build_sources = None, values = {}
sources = (EnvSettingsSource(env_nested_delimiter='_', env_prefix_len=0), DefaultSettingsSource(nested_model_default_partial_update=False))
init_kwargs = {}

    def __init__(
        __pydantic_self__,
        _case_sensitive: bool | None = None,
        _nested_model_default_partial_update: bool | None = None,
        _env_prefix: str | None = None,
        _env_prefix_target: EnvPrefixTarget | None = None,
        _env_file: DotenvType | None = ENV_FILE_SENTINEL,
        _env_file_encoding: str | None = None,
        _env_ignore_empty: bool | None = None,
        _env_nested_delimiter: str | None = None,
        _env_nested_max_split: int | None = None,
        _env_parse_none_str: str | None = None,
        _env_parse_enums: bool | None = None,
        _cli_prog_name: str | None = None,
        _cli_parse_args: bool | list[str] | tuple[str, ...] | None = None,
        _cli_settings_source: CliSettingsSource[Any] | None = None,
        _cli_parse_none_str: str | None = None,
        _cli_hide_none_type: bool | None = None,
        _cli_avoid_json: bool | None = None,
        _cli_enforce_required: bool | None = None,
        _cli_use_class_docs_for_groups: bool | None = None,
        _cli_exit_on_error: bool | None = None,
        _cli_prefix: str | None = None,
        _cli_flag_prefix_char: str | None = None,
        _cli_implicit_flags: bool | Literal['dual', 'toggle'] | None = None,
        _cli_ignore_unknown_args: bool | None = None,
        _cli_kebab_case: bool | Literal['all', 'no_enums'] | None = None,
        _cli_shortcuts: Mapping[str, str | list[str]] | None = None,
        _secrets_dir: PathType | None = None,
        _build_sources: tuple[tuple[PydanticBaseSettingsSource, ...], dict[str, Any]] | None = None,
        **values: Any,
    ) -> None:
        sources, init_kwargs = (
            _build_sources
            if _build_sources is not None
            else __pydantic_self__.__class__._settings_init_sources(
                _case_sensitive=_case_sensitive,
                _nested_model_default_partial_update=_nested_model_default_partial_update,
                _env_prefix=_env_prefix,
                _env_prefix_target=_env_prefix_target,
                _env_file=_env_file,
                _env_file_encoding=_env_file_encoding,
                _env_ignore_empty=_env_ignore_empty,
                _env_nested_delimiter=_env_nested_delimiter,
                _env_nested_max_split=_env_nested_max_split,
                _env_parse_none_str=_env_parse_none_str,
                _env_parse_enums=_env_parse_enums,
                _cli_prog_name=_cli_prog_name,
                _cli_parse_args=_cli_parse_args,
                _cli_settings_source=_cli_settings_source,
                _cli_parse_none_str=_cli_parse_none_str,
                _cli_hide_none_type=_cli_hide_none_type,
                _cli_avoid_json=_cli_avoid_json,
                _cli_enforce_required=_cli_enforce_required,
                _cli_use_class_docs_for_groups=_cli_use_class_docs_for_groups,
                _cli_exit_on_error=_cli_exit_on_error,
                _cli_prefix=_cli_prefix,
                _cli_flag_prefix_char=_cli_flag_prefix_char,
                _cli_implicit_flags=_cli_implicit_flags,
                _cli_ignore_unknown_args=_cli_ignore_unknown_args,
                _cli_kebab_case=_cli_kebab_case,
                _cli_shortcuts=_cli_shortcuts,
                _secrets_dir=_secrets_dir,
                _init_kwargs=values,
            )
        )
    
>       super().__init__(**__pydantic_self__.__class__._settings_build_values(sources, init_kwargs))
E       pydantic_core._pydantic_core.ValidationError: 1 validation error for ConfigLoader
E       openaev.tenant_id
E         Input should be a valid UUID, invalid character: found `t` at 1 [type=uuid_parsing, input_value='test-tenant', input_type=str]
E           For further information visit https://errors.pydantic.dev/2.13/v/uuid_parsing

../../../../..../pypoetry/virtualenvs/openaev-prowler-injector-c-ZdwkI6-py3.13/lib/python3.13.../site-packages/pydantic_settings/main.py:247: ValidationError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

filigran team Item from the Filigran team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants