(action_db=None, runner_db=None, merged_only=False)
| 52 | |
| 53 | |
| 54 | def get_params_view(action_db=None, runner_db=None, merged_only=False): |
| 55 | if runner_db: |
| 56 | runner_params = ( |
| 57 | fast_deepcopy_dict(getattr(runner_db, "runner_parameters", {})) or {} |
| 58 | ) |
| 59 | else: |
| 60 | runner_params = {} |
| 61 | |
| 62 | if action_db: |
| 63 | action_params = fast_deepcopy_dict(getattr(action_db, "parameters", {})) or {} |
| 64 | else: |
| 65 | action_params = {} |
| 66 | |
| 67 | parameters = set(runner_params.keys()).union(set(action_params.keys())) |
| 68 | |
| 69 | merged_params = {} |
| 70 | for param in parameters: |
| 71 | merged_params[param] = _merge_param_meta_values( |
| 72 | action_meta=action_params.get(param), runner_meta=runner_params.get(param) |
| 73 | ) |
| 74 | |
| 75 | if merged_only: |
| 76 | return merged_params |
| 77 | |
| 78 | def is_required(param_meta): |
| 79 | return param_meta.get("required", False) |
| 80 | |
| 81 | def is_immutable(param_meta): |
| 82 | return param_meta.get("immutable", False) |
| 83 | |
| 84 | immutable = { |
| 85 | param for param in parameters if is_immutable(merged_params.get(param)) |
| 86 | } |
| 87 | required = {param for param in parameters if is_required(merged_params.get(param))} |
| 88 | required = required - immutable |
| 89 | optional = parameters - required - immutable |
| 90 | |
| 91 | required_params = {k: merged_params[k] for k in required} |
| 92 | optional_params = {k: merged_params[k] for k in optional} |
| 93 | immutable_params = {k: merged_params[k] for k in immutable} |
| 94 | |
| 95 | return (required_params, optional_params, immutable_params) |
| 96 | |
| 97 | |
| 98 | def cast_params(action_ref, params, cast_overrides=None): |
nothing calls this directly
no test coverage detected