MCPcopy
hub / github.com/openai/openai-python / construct

Method construct

src/openai/_models.py:231–288  ·  src/openai/_models.py::BaseModel.construct
(  # pyright: ignore[reportIncompatibleMethodOverride]
        __cls: Type[ModelT],
        _fields_set: set[str] | None = None,
        **values: object,
    )

Source from the content-addressed store, hash-verified

229 @classmethod
230 @override
231 def construct( class="cm"># pyright: ignore[reportIncompatibleMethodOverride]
232 __cls: Type[ModelT],
233 _fields_set: set[str] | None = None,
234 **values: object,
235 ) -> ModelT:
236 m = __cls.__new__(__cls)
237 fields_values: dict[str, object] = {}
238
239 config = get_model_config(__cls)
240 populate_by_name = (
241 config.allow_population_by_field_name
242 if isinstance(config, _ConfigProtocol)
243 else config.get(class="st">"populate_by_name")
244 )
245
246 if _fields_set is None:
247 _fields_set = set()
248
249 model_fields = get_model_fields(__cls)
250 for name, field in model_fields.items():
251 key = field.alias
252 if key is None or (key not in values and populate_by_name):
253 key = name
254
255 if key in values:
256 fields_values[name] = _construct_field(value=values[key], field=field, key=key)
257 _fields_set.add(name)
258 else:
259 fields_values[name] = field_get_default(field)
260
261 extra_field_type = _get_extra_fields_type(__cls)
262
263 _extra = {}
264 for key, value in values.items():
265 if key not in model_fields:
266 parsed = construct_type(value=value, type_=extra_field_type) if extra_field_type is not None else value
267
268 if PYDANTIC_V1:
269 _fields_set.add(key)
270 fields_values[key] = parsed
271 else:
272 _extra[key] = parsed
273
274 object.__setattr__(m, class="st">"__dict__", fields_values)
275
276 if PYDANTIC_V1:
277 class="cm"># init_private_attributes() does not exist in v2
278 m._init_private_attributes() class="cm"># type: ignore
279
280 class="cm"># copied from Pydantic v1's `construct()` method
281 object.__setattr__(m, class="st">"__fields_set__", _fields_set)
282 else:
283 class="cm"># these properties are copied from Pydantic's `model_construct()` method
284 object.__setattr__(m, class="st">"__pydantic_private__", None)
285 object.__setattr__(m, class="st">"__pydantic_extra__", _extra)
286 object.__setattr__(m, class="st">"__pydantic_fields_set__", _fields_set)
287
288 return m

Callers 15

construct_typeFunction · 0.45
constructMethod · 0.45
getMethod · 0.45
postMethod · 0.45
patchMethod · 0.45
putMethod · 0.45
deleteMethod · 0.45
get_api_listMethod · 0.45
getMethod · 0.45
postMethod · 0.45
patchMethod · 0.45
putMethod · 0.45

Calls 9

get_model_configFunction · 0.85
get_model_fieldsFunction · 0.85
_construct_fieldFunction · 0.85
field_get_defaultFunction · 0.85
_get_extra_fields_typeFunction · 0.85
construct_typeFunction · 0.85
addMethod · 0.80
getMethod · 0.45
itemsMethod · 0.45