orq-ai-sdk 4.2.0rc28__py3-none-any.whl → 4.2.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. orq_ai_sdk/_hooks/globalhook.py +0 -1
  2. orq_ai_sdk/_version.py +3 -3
  3. orq_ai_sdk/audio.py +30 -0
  4. orq_ai_sdk/basesdk.py +20 -6
  5. orq_ai_sdk/chat.py +22 -0
  6. orq_ai_sdk/completions.py +332 -0
  7. orq_ai_sdk/contacts.py +43 -855
  8. orq_ai_sdk/deployments.py +61 -0
  9. orq_ai_sdk/edits.py +258 -0
  10. orq_ai_sdk/embeddings.py +238 -0
  11. orq_ai_sdk/generations.py +272 -0
  12. orq_ai_sdk/identities.py +1037 -0
  13. orq_ai_sdk/images.py +28 -0
  14. orq_ai_sdk/models/__init__.py +5341 -737
  15. orq_ai_sdk/models/actionreviewedstreamingevent.py +18 -1
  16. orq_ai_sdk/models/actionreviewrequestedstreamingevent.py +44 -1
  17. orq_ai_sdk/models/agenterroredstreamingevent.py +18 -1
  18. orq_ai_sdk/models/agentinactivestreamingevent.py +168 -70
  19. orq_ai_sdk/models/agentmessagecreatedstreamingevent.py +18 -2
  20. orq_ai_sdk/models/agentresponsemessage.py +18 -2
  21. orq_ai_sdk/models/agentstartedstreamingevent.py +127 -2
  22. orq_ai_sdk/models/agentthoughtstreamingevent.py +178 -211
  23. orq_ai_sdk/models/conversationresponse.py +31 -20
  24. orq_ai_sdk/models/conversationwithmessagesresponse.py +31 -20
  25. orq_ai_sdk/models/createagentrequestop.py +1922 -384
  26. orq_ai_sdk/models/createagentresponse.py +147 -91
  27. orq_ai_sdk/models/createagentresponserequestop.py +111 -2
  28. orq_ai_sdk/models/createchatcompletionop.py +1375 -861
  29. orq_ai_sdk/models/createchunkop.py +46 -19
  30. orq_ai_sdk/models/createcompletionop.py +1890 -0
  31. orq_ai_sdk/models/createcontactop.py +45 -56
  32. orq_ai_sdk/models/createconversationop.py +61 -39
  33. orq_ai_sdk/models/createconversationresponseop.py +68 -4
  34. orq_ai_sdk/models/createdatasetitemop.py +424 -80
  35. orq_ai_sdk/models/createdatasetop.py +19 -2
  36. orq_ai_sdk/models/createdatasourceop.py +92 -26
  37. orq_ai_sdk/models/createembeddingop.py +384 -0
  38. orq_ai_sdk/models/createevalop.py +552 -24
  39. orq_ai_sdk/models/createidentityop.py +176 -0
  40. orq_ai_sdk/models/createimageeditop.py +504 -0
  41. orq_ai_sdk/models/createimageop.py +208 -117
  42. orq_ai_sdk/models/createimagevariationop.py +486 -0
  43. orq_ai_sdk/models/createknowledgeop.py +186 -121
  44. orq_ai_sdk/models/creatememorydocumentop.py +50 -1
  45. orq_ai_sdk/models/creatememoryop.py +34 -21
  46. orq_ai_sdk/models/creatememorystoreop.py +34 -1
  47. orq_ai_sdk/models/createmoderationop.py +521 -0
  48. orq_ai_sdk/models/createpromptop.py +2748 -1252
  49. orq_ai_sdk/models/creatererankop.py +416 -0
  50. orq_ai_sdk/models/createresponseop.py +2567 -0
  51. orq_ai_sdk/models/createspeechop.py +316 -0
  52. orq_ai_sdk/models/createtoolop.py +537 -12
  53. orq_ai_sdk/models/createtranscriptionop.py +562 -0
  54. orq_ai_sdk/models/createtranslationop.py +540 -0
  55. orq_ai_sdk/models/datapart.py +18 -1
  56. orq_ai_sdk/models/deletechunksop.py +34 -1
  57. orq_ai_sdk/models/{deletecontactop.py → deleteidentityop.py} +9 -9
  58. orq_ai_sdk/models/deletepromptop.py +26 -0
  59. orq_ai_sdk/models/deploymentcreatemetricop.py +362 -76
  60. orq_ai_sdk/models/deploymentgetconfigop.py +635 -194
  61. orq_ai_sdk/models/deploymentinvokeop.py +168 -173
  62. orq_ai_sdk/models/deploymentsop.py +195 -58
  63. orq_ai_sdk/models/deploymentstreamop.py +652 -304
  64. orq_ai_sdk/models/errorpart.py +18 -1
  65. orq_ai_sdk/models/filecontentpartschema.py +18 -1
  66. orq_ai_sdk/models/filegetop.py +19 -2
  67. orq_ai_sdk/models/filelistop.py +35 -2
  68. orq_ai_sdk/models/filepart.py +50 -1
  69. orq_ai_sdk/models/fileuploadop.py +51 -2
  70. orq_ai_sdk/models/generateconversationnameop.py +31 -20
  71. orq_ai_sdk/models/get_v2_evaluators_id_versionsop.py +34 -1
  72. orq_ai_sdk/models/get_v2_tools_tool_id_versions_version_id_op.py +18 -1
  73. orq_ai_sdk/models/get_v2_tools_tool_id_versionsop.py +34 -1
  74. orq_ai_sdk/models/getallmemoriesop.py +34 -21
  75. orq_ai_sdk/models/getallmemorydocumentsop.py +42 -1
  76. orq_ai_sdk/models/getallmemorystoresop.py +34 -1
  77. orq_ai_sdk/models/getallpromptsop.py +1690 -230
  78. orq_ai_sdk/models/getalltoolsop.py +325 -8
  79. orq_ai_sdk/models/getchunkscountop.py +34 -1
  80. orq_ai_sdk/models/getevalsop.py +395 -43
  81. orq_ai_sdk/models/getonechunkop.py +14 -19
  82. orq_ai_sdk/models/getoneknowledgeop.py +116 -96
  83. orq_ai_sdk/models/getonepromptop.py +1673 -230
  84. orq_ai_sdk/models/getpromptversionop.py +1670 -216
  85. orq_ai_sdk/models/imagecontentpartschema.py +50 -1
  86. orq_ai_sdk/models/internal/globals.py +18 -1
  87. orq_ai_sdk/models/invokeagentop.py +140 -2
  88. orq_ai_sdk/models/invokedeploymentrequest.py +418 -80
  89. orq_ai_sdk/models/invokeevalop.py +160 -131
  90. orq_ai_sdk/models/listagentsop.py +793 -166
  91. orq_ai_sdk/models/listchunksop.py +32 -19
  92. orq_ai_sdk/models/listchunkspaginatedop.py +46 -19
  93. orq_ai_sdk/models/listconversationsop.py +18 -1
  94. orq_ai_sdk/models/listdatasetdatapointsop.py +252 -42
  95. orq_ai_sdk/models/listdatasetsop.py +35 -2
  96. orq_ai_sdk/models/listdatasourcesop.py +35 -26
  97. orq_ai_sdk/models/{listcontactsop.py → listidentitiesop.py} +89 -79
  98. orq_ai_sdk/models/listknowledgebasesop.py +132 -96
  99. orq_ai_sdk/models/listmodelsop.py +1 -0
  100. orq_ai_sdk/models/listpromptversionsop.py +1684 -216
  101. orq_ai_sdk/models/parseop.py +161 -17
  102. orq_ai_sdk/models/partdoneevent.py +19 -2
  103. orq_ai_sdk/models/post_v2_router_ocrop.py +408 -0
  104. orq_ai_sdk/models/publiccontact.py +27 -4
  105. orq_ai_sdk/models/publicidentity.py +62 -0
  106. orq_ai_sdk/models/reasoningpart.py +19 -2
  107. orq_ai_sdk/models/refusalpartschema.py +18 -1
  108. orq_ai_sdk/models/remoteconfigsgetconfigop.py +34 -1
  109. orq_ai_sdk/models/responsedoneevent.py +114 -84
  110. orq_ai_sdk/models/responsestartedevent.py +18 -1
  111. orq_ai_sdk/models/retrieveagentrequestop.py +787 -166
  112. orq_ai_sdk/models/retrievedatapointop.py +236 -42
  113. orq_ai_sdk/models/retrievedatasetop.py +19 -2
  114. orq_ai_sdk/models/retrievedatasourceop.py +17 -26
  115. orq_ai_sdk/models/{retrievecontactop.py → retrieveidentityop.py} +38 -41
  116. orq_ai_sdk/models/retrievememorydocumentop.py +18 -1
  117. orq_ai_sdk/models/retrievememoryop.py +18 -21
  118. orq_ai_sdk/models/retrievememorystoreop.py +18 -1
  119. orq_ai_sdk/models/retrievetoolop.py +309 -8
  120. orq_ai_sdk/models/runagentop.py +1451 -197
  121. orq_ai_sdk/models/searchknowledgeop.py +108 -1
  122. orq_ai_sdk/models/security.py +18 -1
  123. orq_ai_sdk/models/streamagentop.py +93 -2
  124. orq_ai_sdk/models/streamrunagentop.py +1428 -195
  125. orq_ai_sdk/models/textcontentpartschema.py +34 -1
  126. orq_ai_sdk/models/thinkingconfigenabledschema.py +18 -1
  127. orq_ai_sdk/models/toolcallpart.py +18 -1
  128. orq_ai_sdk/models/tooldoneevent.py +18 -1
  129. orq_ai_sdk/models/toolexecutionfailedstreamingevent.py +50 -1
  130. orq_ai_sdk/models/toolexecutionfinishedstreamingevent.py +34 -1
  131. orq_ai_sdk/models/toolexecutionstartedstreamingevent.py +34 -1
  132. orq_ai_sdk/models/toolresultpart.py +18 -1
  133. orq_ai_sdk/models/toolreviewrequestedevent.py +18 -1
  134. orq_ai_sdk/models/toolstartedevent.py +18 -1
  135. orq_ai_sdk/models/updateagentop.py +1951 -404
  136. orq_ai_sdk/models/updatechunkop.py +46 -19
  137. orq_ai_sdk/models/updateconversationop.py +61 -39
  138. orq_ai_sdk/models/updatedatapointop.py +424 -80
  139. orq_ai_sdk/models/updatedatasetop.py +51 -2
  140. orq_ai_sdk/models/updatedatasourceop.py +17 -26
  141. orq_ai_sdk/models/updateevalop.py +577 -16
  142. orq_ai_sdk/models/{updatecontactop.py → updateidentityop.py} +78 -68
  143. orq_ai_sdk/models/updateknowledgeop.py +234 -190
  144. orq_ai_sdk/models/updatememorydocumentop.py +50 -1
  145. orq_ai_sdk/models/updatememoryop.py +50 -21
  146. orq_ai_sdk/models/updatememorystoreop.py +66 -1
  147. orq_ai_sdk/models/updatepromptop.py +2844 -1450
  148. orq_ai_sdk/models/updatetoolop.py +592 -9
  149. orq_ai_sdk/models/usermessagerequest.py +18 -2
  150. orq_ai_sdk/moderations.py +218 -0
  151. orq_ai_sdk/orq_completions.py +660 -0
  152. orq_ai_sdk/orq_responses.py +398 -0
  153. orq_ai_sdk/prompts.py +28 -36
  154. orq_ai_sdk/rerank.py +232 -0
  155. orq_ai_sdk/router.py +89 -641
  156. orq_ai_sdk/sdk.py +3 -0
  157. orq_ai_sdk/speech.py +251 -0
  158. orq_ai_sdk/transcriptions.py +326 -0
  159. orq_ai_sdk/translations.py +298 -0
  160. orq_ai_sdk/utils/__init__.py +13 -1
  161. orq_ai_sdk/variations.py +254 -0
  162. orq_ai_sdk-4.2.6.dist-info/METADATA +888 -0
  163. orq_ai_sdk-4.2.6.dist-info/RECORD +263 -0
  164. {orq_ai_sdk-4.2.0rc28.dist-info → orq_ai_sdk-4.2.6.dist-info}/WHEEL +2 -1
  165. orq_ai_sdk-4.2.6.dist-info/top_level.txt +1 -0
  166. orq_ai_sdk-4.2.0rc28.dist-info/METADATA +0 -867
  167. orq_ai_sdk-4.2.0rc28.dist-info/RECORD +0 -233
@@ -64,6 +64,22 @@ class TwoFile(BaseModel):
64
64
  filename: Optional[str] = None
65
65
  r"""The name of the file, used when passing the file to the model as a string."""
66
66
 
67
+ @model_serializer(mode="wrap")
68
+ def serialize_model(self, handler):
69
+ optional_fields = set(["file_data", "uri", "mimeType", "filename"])
70
+ serialized = handler(self)
71
+ m = {}
72
+
73
+ for n, f in type(self).model_fields.items():
74
+ k = f.alias or n
75
+ val = serialized.get(k)
76
+
77
+ if val != UNSET_SENTINEL:
78
+ if val is not None or k not in optional_fields:
79
+ m[k] = val
80
+
81
+ return m
82
+
67
83
 
68
84
  class ThreeTypedDict(TypedDict):
69
85
  type: InvokeEval2Type
@@ -95,6 +111,22 @@ class TwoImageURL(BaseModel):
95
111
  detail: Optional[str] = None
96
112
  r"""Specifies the detail level of the image. Currently only supported with OpenAI models"""
97
113
 
114
+ @model_serializer(mode="wrap")
115
+ def serialize_model(self, handler):
116
+ optional_fields = set(["detail"])
117
+ serialized = handler(self)
118
+ m = {}
119
+
120
+ for n, f in type(self).model_fields.items():
121
+ k = f.alias or n
122
+ val = serialized.get(k)
123
+
124
+ if val != UNSET_SENTINEL:
125
+ if val is not None or k not in optional_fields:
126
+ m[k] = val
127
+
128
+ return m
129
+
98
130
 
99
131
  class Two2TypedDict(TypedDict):
100
132
  r"""The image part of the prompt message. Only supported with vision models."""
@@ -188,6 +220,22 @@ class InvokeEvalToolCalls(BaseModel):
188
220
 
189
221
  index: Optional[float] = None
190
222
 
223
+ @model_serializer(mode="wrap")
224
+ def serialize_model(self, handler):
225
+ optional_fields = set(["id", "index"])
226
+ serialized = handler(self)
227
+ m = {}
228
+
229
+ for n, f in type(self).model_fields.items():
230
+ k = f.alias or n
231
+ val = serialized.get(k)
232
+
233
+ if val != UNSET_SENTINEL:
234
+ if val is not None or k not in optional_fields:
235
+ m[k] = val
236
+
237
+ return m
238
+
191
239
 
192
240
  class InvokeEvalMessagesTypedDict(TypedDict):
193
241
  role: InvokeEvalRole
@@ -211,31 +259,26 @@ class InvokeEvalMessages(BaseModel):
211
259
 
212
260
  @model_serializer(mode="wrap")
213
261
  def serialize_model(self, handler):
214
- optional_fields = ["tool_calls", "tool_call_id"]
215
- nullable_fields = ["content", "tool_call_id"]
216
- null_default_fields = []
217
-
262
+ optional_fields = set(["tool_calls", "tool_call_id"])
263
+ nullable_fields = set(["content", "tool_call_id"])
218
264
  serialized = handler(self)
219
-
220
265
  m = {}
221
266
 
222
267
  for n, f in type(self).model_fields.items():
223
268
  k = f.alias or n
224
269
  val = serialized.get(k)
225
- serialized.pop(k, None)
226
-
227
- optional_nullable = k in optional_fields and k in nullable_fields
228
- is_set = (
229
- self.__pydantic_fields_set__.intersection({n})
230
- or k in null_default_fields
231
- ) # pylint: disable=no-member
232
-
233
- if val is not None and val != UNSET_SENTINEL:
234
- m[k] = val
235
- elif val != UNSET_SENTINEL and (
236
- not k in optional_fields or (optional_nullable and is_set)
237
- ):
238
- m[k] = val
270
+ is_nullable_and_explicitly_set = (
271
+ k in nullable_fields
272
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
273
+ )
274
+
275
+ if val != UNSET_SENTINEL:
276
+ if (
277
+ val is not None
278
+ or k not in optional_fields
279
+ or is_nullable_and_explicitly_set
280
+ ):
281
+ m[k] = val
239
282
 
240
283
  return m
241
284
 
@@ -269,6 +312,24 @@ class InvokeEvalRequestBody(BaseModel):
269
312
  messages: Optional[List[InvokeEvalMessages]] = None
270
313
  r"""The messages used to generate the output, without the last user message"""
271
314
 
315
+ @model_serializer(mode="wrap")
316
+ def serialize_model(self, handler):
317
+ optional_fields = set(
318
+ ["query", "output", "reference", "retrievals", "messages"]
319
+ )
320
+ serialized = handler(self)
321
+ m = {}
322
+
323
+ for n, f in type(self).model_fields.items():
324
+ k = f.alias or n
325
+ val = serialized.get(k)
326
+
327
+ if val != UNSET_SENTINEL:
328
+ if val is not None or k not in optional_fields:
329
+ m[k] = val
330
+
331
+ return m
332
+
272
333
 
273
334
  class InvokeEvalRequestTypedDict(TypedDict):
274
335
  id: str
@@ -287,6 +348,22 @@ class InvokeEvalRequest(BaseModel):
287
348
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
288
349
  ] = None
289
350
 
351
+ @model_serializer(mode="wrap")
352
+ def serialize_model(self, handler):
353
+ optional_fields = set(["RequestBody"])
354
+ serialized = handler(self)
355
+ m = {}
356
+
357
+ for n, f in type(self).model_fields.items():
358
+ k = f.alias or n
359
+ val = serialized.get(k)
360
+
361
+ if val != UNSET_SENTINEL:
362
+ if val is not None or k not in optional_fields:
363
+ m[k] = val
364
+
365
+ return m
366
+
290
367
 
291
368
  class InvokeEvalEvalsResponseResponseBodyData(BaseModel):
292
369
  message: str
@@ -369,31 +446,26 @@ class InvokeEvalResponseBodyHTTP(BaseModel):
369
446
 
370
447
  @model_serializer(mode="wrap")
371
448
  def serialize_model(self, handler):
372
- optional_fields = ["value"]
373
- nullable_fields = ["value"]
374
- null_default_fields = []
375
-
449
+ optional_fields = set(["value"])
450
+ nullable_fields = set(["value"])
376
451
  serialized = handler(self)
377
-
378
452
  m = {}
379
453
 
380
454
  for n, f in type(self).model_fields.items():
381
455
  k = f.alias or n
382
456
  val = serialized.get(k)
383
- serialized.pop(k, None)
384
-
385
- optional_nullable = k in optional_fields and k in nullable_fields
386
- is_set = (
387
- self.__pydantic_fields_set__.intersection({n})
388
- or k in null_default_fields
389
- ) # pylint: disable=no-member
390
-
391
- if val is not None and val != UNSET_SENTINEL:
392
- m[k] = val
393
- elif val != UNSET_SENTINEL and (
394
- not k in optional_fields or (optional_nullable and is_set)
395
- ):
396
- m[k] = val
457
+ is_nullable_and_explicitly_set = (
458
+ k in nullable_fields
459
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
460
+ )
461
+
462
+ if val != UNSET_SENTINEL:
463
+ if (
464
+ val is not None
465
+ or k not in optional_fields
466
+ or is_nullable_and_explicitly_set
467
+ ):
468
+ m[k] = val
397
469
 
398
470
  return m
399
471
 
@@ -423,7 +495,9 @@ OriginalValue = TypeAliasType("OriginalValue", Union[float, bool, str])
423
495
 
424
496
  class InvokeEvalResponseBodyEvalsResponseValueTypedDict(TypedDict):
425
497
  workflow_run_id: str
426
- value: InvokeEvalResponseBodyEvalsResponse200ApplicationJSON7ValueTypedDict
498
+ value: Nullable[
499
+ InvokeEvalResponseBodyEvalsResponse200ApplicationJSON7ValueTypedDict
500
+ ]
427
501
  explanation: NotRequired[Nullable[str]]
428
502
  original_value: NotRequired[Nullable[OriginalValueTypedDict]]
429
503
  original_explanation: NotRequired[Nullable[str]]
@@ -432,7 +506,7 @@ class InvokeEvalResponseBodyEvalsResponseValueTypedDict(TypedDict):
432
506
  class InvokeEvalResponseBodyEvalsResponseValue(BaseModel):
433
507
  workflow_run_id: str
434
508
 
435
- value: InvokeEvalResponseBodyEvalsResponse200ApplicationJSON7Value
509
+ value: Nullable[InvokeEvalResponseBodyEvalsResponse200ApplicationJSON7Value]
436
510
 
437
511
  explanation: OptionalNullable[str] = UNSET
438
512
 
@@ -442,31 +516,28 @@ class InvokeEvalResponseBodyEvalsResponseValue(BaseModel):
442
516
 
443
517
  @model_serializer(mode="wrap")
444
518
  def serialize_model(self, handler):
445
- optional_fields = ["explanation", "original_value", "original_explanation"]
446
- nullable_fields = ["explanation", "original_value", "original_explanation"]
447
- null_default_fields = []
448
-
519
+ optional_fields = set(["explanation", "original_value", "original_explanation"])
520
+ nullable_fields = set(
521
+ ["value", "explanation", "original_value", "original_explanation"]
522
+ )
449
523
  serialized = handler(self)
450
-
451
524
  m = {}
452
525
 
453
526
  for n, f in type(self).model_fields.items():
454
527
  k = f.alias or n
455
528
  val = serialized.get(k)
456
- serialized.pop(k, None)
457
-
458
- optional_nullable = k in optional_fields and k in nullable_fields
459
- is_set = (
460
- self.__pydantic_fields_set__.intersection({n})
461
- or k in null_default_fields
462
- ) # pylint: disable=no-member
463
-
464
- if val is not None and val != UNSET_SENTINEL:
465
- m[k] = val
466
- elif val != UNSET_SENTINEL and (
467
- not k in optional_fields or (optional_nullable and is_set)
468
- ):
469
- m[k] = val
529
+ is_nullable_and_explicitly_set = (
530
+ k in nullable_fields
531
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
532
+ )
533
+
534
+ if val != UNSET_SENTINEL:
535
+ if (
536
+ val is not None
537
+ or k not in optional_fields
538
+ or is_nullable_and_explicitly_set
539
+ ):
540
+ m[k] = val
470
541
 
471
542
  return m
472
543
 
@@ -483,30 +554,14 @@ class InvokeEvalResponseBodyLLM(BaseModel):
483
554
 
484
555
  @model_serializer(mode="wrap")
485
556
  def serialize_model(self, handler):
486
- optional_fields = []
487
- nullable_fields = ["value"]
488
- null_default_fields = []
489
-
490
557
  serialized = handler(self)
491
-
492
558
  m = {}
493
559
 
494
560
  for n, f in type(self).model_fields.items():
495
561
  k = f.alias or n
496
562
  val = serialized.get(k)
497
- serialized.pop(k, None)
498
563
 
499
- optional_nullable = k in optional_fields and k in nullable_fields
500
- is_set = (
501
- self.__pydantic_fields_set__.intersection({n})
502
- or k in null_default_fields
503
- ) # pylint: disable=no-member
504
-
505
- if val is not None and val != UNSET_SENTINEL:
506
- m[k] = val
507
- elif val != UNSET_SENTINEL and (
508
- not k in optional_fields or (optional_nullable and is_set)
509
- ):
564
+ if val != UNSET_SENTINEL:
510
565
  m[k] = val
511
566
 
512
567
  return m
@@ -647,30 +702,14 @@ class ResponseBodyBoolean(BaseModel):
647
702
 
648
703
  @model_serializer(mode="wrap")
649
704
  def serialize_model(self, handler):
650
- optional_fields = []
651
- nullable_fields = ["value"]
652
- null_default_fields = []
653
-
654
705
  serialized = handler(self)
655
-
656
706
  m = {}
657
707
 
658
708
  for n, f in type(self).model_fields.items():
659
709
  k = f.alias or n
660
710
  val = serialized.get(k)
661
- serialized.pop(k, None)
662
-
663
- optional_nullable = k in optional_fields and k in nullable_fields
664
- is_set = (
665
- self.__pydantic_fields_set__.intersection({n})
666
- or k in null_default_fields
667
- ) # pylint: disable=no-member
668
711
 
669
- if val is not None and val != UNSET_SENTINEL:
670
- m[k] = val
671
- elif val != UNSET_SENTINEL and (
672
- not k in optional_fields or (optional_nullable and is_set)
673
- ):
712
+ if val != UNSET_SENTINEL:
674
713
  m[k] = val
675
714
 
676
715
  return m
@@ -730,31 +769,26 @@ class ResponseBodyNumber(BaseModel):
730
769
 
731
770
  @model_serializer(mode="wrap")
732
771
  def serialize_model(self, handler):
733
- optional_fields = ["original_value", "format_options"]
734
- nullable_fields = ["original_value", "value"]
735
- null_default_fields = []
736
-
772
+ optional_fields = set(["original_value", "format_options"])
773
+ nullable_fields = set(["original_value", "value"])
737
774
  serialized = handler(self)
738
-
739
775
  m = {}
740
776
 
741
777
  for n, f in type(self).model_fields.items():
742
778
  k = f.alias or n
743
779
  val = serialized.get(k)
744
- serialized.pop(k, None)
745
-
746
- optional_nullable = k in optional_fields and k in nullable_fields
747
- is_set = (
748
- self.__pydantic_fields_set__.intersection({n})
749
- or k in null_default_fields
750
- ) # pylint: disable=no-member
751
-
752
- if val is not None and val != UNSET_SENTINEL:
753
- m[k] = val
754
- elif val != UNSET_SENTINEL and (
755
- not k in optional_fields or (optional_nullable and is_set)
756
- ):
757
- m[k] = val
780
+ is_nullable_and_explicitly_set = (
781
+ k in nullable_fields
782
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
783
+ )
784
+
785
+ if val != UNSET_SENTINEL:
786
+ if (
787
+ val is not None
788
+ or k not in optional_fields
789
+ or is_nullable_and_explicitly_set
790
+ ):
791
+ m[k] = val
758
792
 
759
793
  return m
760
794
 
@@ -777,31 +811,26 @@ class String(BaseModel):
777
811
 
778
812
  @model_serializer(mode="wrap")
779
813
  def serialize_model(self, handler):
780
- optional_fields = ["original_value", "value"]
781
- nullable_fields = ["original_value", "value"]
782
- null_default_fields = []
783
-
814
+ optional_fields = set(["original_value", "value"])
815
+ nullable_fields = set(["original_value", "value"])
784
816
  serialized = handler(self)
785
-
786
817
  m = {}
787
818
 
788
819
  for n, f in type(self).model_fields.items():
789
820
  k = f.alias or n
790
821
  val = serialized.get(k)
791
- serialized.pop(k, None)
792
-
793
- optional_nullable = k in optional_fields and k in nullable_fields
794
- is_set = (
795
- self.__pydantic_fields_set__.intersection({n})
796
- or k in null_default_fields
797
- ) # pylint: disable=no-member
798
-
799
- if val is not None and val != UNSET_SENTINEL:
800
- m[k] = val
801
- elif val != UNSET_SENTINEL and (
802
- not k in optional_fields or (optional_nullable and is_set)
803
- ):
804
- m[k] = val
822
+ is_nullable_and_explicitly_set = (
823
+ k in nullable_fields
824
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
825
+ )
826
+
827
+ if val != UNSET_SENTINEL:
828
+ if (
829
+ val is not None
830
+ or k not in optional_fields
831
+ or is_nullable_and_explicitly_set
832
+ ):
833
+ m[k] = val
805
834
 
806
835
  return m
807
836