MCPcopy Create free account
hub / github.com/OpenRouterTeam/python-sdk / serialize_multipart_form

Function serialize_multipart_form

src/openrouter/utils/forms.py:122–197  ·  view source on GitHub ↗
(
    media_type: str, request: Any
)

Source from the content-addressed store, hash-verified

120
121
122def serialize_multipart_form(
123 media_type: str, request: Any
124) -> Tuple[str, Dict[str, Any], List[Tuple[str, Any]]]:
125 form: Dict[str, Any] = {}
126 files: List[Tuple[str, Any]] = []
127
128 if not isinstance(request, BaseModel):
129 raise TypeError("invalid request body type")
130
131 request_fields: Dict[str, FieldInfo] = request.__class__.model_fields
132 request_field_types = get_type_hints(request.__class__)
133
134 for name in request_fields:
135 field = request_fields[name]
136
137 val = getattr(request, name)
138 if not _is_set(val):
139 continue
140
141 field_metadata = find_field_metadata(field, MultipartFormMetadata)
142 if not field_metadata:
143 continue
144
145 f_name = field.alias if field.alias else name
146
147 if field_metadata.file:
148 if isinstance(val, List):
149 # Handle array of files
150 array_field_name = f_name + "[]"
151 for file_obj in val:
152 if not _is_set(file_obj):
153 continue
154
155 file_name, content, content_type = _extract_file_properties(
156 file_obj
157 )
158
159 if content_type is not None:
160 files.append(
161 (array_field_name, (file_name, content, content_type))
162 )
163 else:
164 files.append((array_field_name, (file_name, content)))
165 else:
166 # Handle single file
167 file_name, content, content_type = _extract_file_properties(val)
168
169 if content_type is not None:
170 files.append((f_name, (file_name, content, content_type)))
171 else:
172 files.append((f_name, (file_name, content)))
173 elif field_metadata.json:
174 files.append(
175 (
176 f_name,
177 (
178 None,
179 marshal_json(val, request_field_types[name]),

Callers 1

serialize_request_bodyFunction · 0.85

Calls 5

_is_setFunction · 0.85
find_field_metadataFunction · 0.85
_extract_file_propertiesFunction · 0.85
marshal_jsonFunction · 0.85
_val_to_stringFunction · 0.85

Tested by

no test coverage detected