def get_params()

in source/idea/idea-sdk/src/ideasdk/user_input/framework.py [0:0]


    def get_params(self, module: str = None, section: str = None, group: str = None, all_=True) -> List[SocaUserInputParamMetadata]:
        self._check_initialized()

        result = []
        if Utils.is_empty(module) and all_:
            for key in self._params:
                result.append(self._params[key])
            return result

        module_info = self.get_module(module)
        if module_info is None:
            return result

        if Utils.is_empty(module_info.sections):
            return result

        def merge(to: SocaUserInputParamMetadata, from_: SocaUserInputParamMetadata) -> SocaUserInputParamMetadata:
            to_dict = to.copy(deep=True).dict(exclude_unset=True, exclude_none=True, exclude_defaults=True, by_alias=True)
            from_dict = from_.dict(by_alias=True)
            for key in from_dict:
                value = from_dict[key]
                if key not in to_dict:
                    to_dict[key] = value
            return SocaUserInputParamMetadata(**to_dict)

        for section_info in module_info.sections:

            if Utils.is_not_empty(section) and section != section_info.name:
                continue

            if Utils.is_empty(group) or Utils.is_not_empty(group) and all_:
                if Utils.is_not_empty(section_info.params):
                    for section_param in section_info.params:
                        param_info = self.get_param(section_param.name)
                        result.append(merge(section_param, param_info))

            if all_ or Utils.is_not_empty(group):
                if Utils.is_not_empty(section_info.groups):
                    for group_info in section_info.groups:

                        if Utils.is_not_empty(group) and group != group_info.name:
                            continue

                        if Utils.is_not_empty(group_info.params):
                            for group_param in group_info.params:
                                param_info = self.get_param(group_param.name)
                                result.append(merge(group_param, param_info))

        return result