def _transform_value()

in rostran/providers/cloudformation/template.py [0:0]


    def _transform_value(self, value):
        resolved = True
        if isinstance(value, list):
            data = []
            for v in value:
                v, resolved_v = self._transform_value(v)
                if not resolved_v:
                    resolved = False
                data.append(v)
            return data, resolved
        elif isinstance(value, dict):
            data = {}
            is_func = False
            if len(value) == 1:
                key = list(value.keys())[0]
                function_rule: FunctionRule = self.rule_manager.function_rule
                # transform func
                if key in function_rule.function:
                    is_func = True
                    data.update(
                        self._transform_function(
                            key, value[key], function_rule.function[key]
                        )
                    )
                elif re.match(r"^Fn::[\s\S]+$", key):
                    is_func = True
                    typer.secho(
                        f"  Function {key!r} is not supported and will be ignored.",
                        fg="yellow",
                    )
                    data.update(value)
            if not is_func:
                for k, v in value.items():
                    val, resolved_val = self._transform_value(v)
                    data[k] = val
                    if not resolved_val:
                        resolved = False
            else:
                resolved = False
            return data, resolved
        elif isinstance(value, str):
            pseudo_parameters_rule: PseudoParametersRule = (
                self.rule_manager.pseudo_parameters_rule
            )
            if value in pseudo_parameters_rule.pseudo_parameters:
                return (
                    self._transform_pseudo_parameter(
                        value, pseudo_parameters_rule.pseudo_parameters[value]
                    ),
                    False,
                )
            elif re.match(r"^AWS::[\s\S]+$", value):
                typer.secho(
                    f"  Pseudo parameter {value!r} is not supported and will be ignored.",
                    fg="yellow",
                )
                resolved = False

        return value, resolved