(
path_params: Any,
gbls: Any,
path_param_values: Dict[str, str],
skip_fields: List[str],
)
| 47 | |
| 48 | |
| 49 | def _populate_path_params( |
| 50 | path_params: Any, |
| 51 | gbls: Any, |
| 52 | path_param_values: Dict[str, str], |
| 53 | skip_fields: List[str], |
| 54 | ) -> List[str]: |
| 55 | globals_already_populated: List[str] = [] |
| 56 | |
| 57 | if not isinstance(path_params, BaseModel): |
| 58 | return globals_already_populated |
| 59 | |
| 60 | path_param_fields: Dict[str, FieldInfo] = path_params.__class__.model_fields |
| 61 | path_param_field_types = get_type_hints(path_params.__class__) |
| 62 | for name in path_param_fields: |
| 63 | if name in skip_fields: |
| 64 | continue |
| 65 | |
| 66 | field = path_param_fields[name] |
| 67 | |
| 68 | param_metadata = find_field_metadata(field, PathParamMetadata) |
| 69 | if param_metadata is None: |
| 70 | continue |
| 71 | |
| 72 | param = getattr(path_params, name) if _is_set(path_params) else None |
| 73 | param, global_found = _populate_from_globals( |
| 74 | name, param, PathParamMetadata, gbls |
| 75 | ) |
| 76 | if global_found: |
| 77 | globals_already_populated.append(name) |
| 78 | |
| 79 | if not _is_set(param): |
| 80 | continue |
| 81 | |
| 82 | f_name = field.alias if field.alias is not None else name |
| 83 | serialization = param_metadata.serialization |
| 84 | if serialization is not None: |
| 85 | serialized_params = _get_serialized_params( |
| 86 | param_metadata, f_name, param, path_param_field_types[name] |
| 87 | ) |
| 88 | for key, value in serialized_params.items(): |
| 89 | path_param_values[key] = value |
| 90 | else: |
| 91 | pp_vals: List[str] = [] |
| 92 | if param_metadata.style == "simple": |
| 93 | if isinstance(param, List): |
| 94 | for pp_val in param: |
| 95 | if not _is_set(pp_val): |
| 96 | continue |
| 97 | pp_vals.append(_val_to_string(pp_val)) |
| 98 | path_param_values[f_name] = ",".join(pp_vals) |
| 99 | elif isinstance(param, Dict): |
| 100 | for pp_key in param: |
| 101 | if not _is_set(param[pp_key]): |
| 102 | continue |
| 103 | if param_metadata.explode: |
| 104 | pp_vals.append(f"{pp_key}={_val_to_string(param[pp_key])}") |
| 105 | else: |
| 106 | pp_vals.append(f"{pp_key},{_val_to_string(param[pp_key])}") |
no test coverage detected