syllable-sdk 0.44.17__py3-none-any.whl → 0.44.24__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 (217) hide show
  1. syllable_sdk/_version.py +3 -3
  2. syllable_sdk/basesdk.py +20 -6
  3. syllable_sdk/models/__init__.py +5 -0
  4. syllable_sdk/models/agent_listop.py +35 -36
  5. syllable_sdk/models/agentcreate.py +38 -39
  6. syllable_sdk/models/agentresponse.py +49 -50
  7. syllable_sdk/models/agentupdate.py +38 -39
  8. syllable_sdk/models/available_targetsop.py +35 -36
  9. syllable_sdk/models/availabletarget.py +1 -17
  10. syllable_sdk/models/batchdetails.py +38 -39
  11. syllable_sdk/models/body_directory_member_bulk_load.py +18 -1
  12. syllable_sdk/models/body_insights_folder_upload_file.py +34 -1
  13. syllable_sdk/models/body_organizations_create.py +30 -19
  14. syllable_sdk/models/body_organizations_delete.py +14 -19
  15. syllable_sdk/models/body_organizations_update.py +34 -30
  16. syllable_sdk/models/body_outbound_batch_upload.py +34 -1
  17. syllable_sdk/models/body_pronunciations_upload_csv.py +18 -1
  18. syllable_sdk/models/bridgephrasesconfig.py +20 -1
  19. syllable_sdk/models/callaction.py +14 -19
  20. syllable_sdk/models/celexpression.py +18 -1
  21. syllable_sdk/models/channel.py +14 -19
  22. syllable_sdk/models/channel_targets_listop.py +35 -36
  23. syllable_sdk/models/channelconfigview.py +20 -19
  24. syllable_sdk/models/channels_listop.py +35 -36
  25. syllable_sdk/models/channeltargetcreaterequest.py +14 -19
  26. syllable_sdk/models/channeltargetresponse.py +14 -19
  27. syllable_sdk/models/channeltargetupdaterequest.py +14 -19
  28. syllable_sdk/models/communicationbatch.py +36 -37
  29. syllable_sdk/models/communicationbatchinput.py +14 -19
  30. syllable_sdk/models/communicationbatchupdate.py +14 -19
  31. syllable_sdk/models/communicationrequestresult.py +37 -38
  32. syllable_sdk/models/conditionaltext.py +14 -19
  33. syllable_sdk/models/conditionalvalue.py +14 -19
  34. syllable_sdk/models/context.py +14 -19
  35. syllable_sdk/models/contexttaskmetadata.py +14 -19
  36. syllable_sdk/models/contexttoolinfo.py +14 -19
  37. syllable_sdk/models/conversation.py +44 -45
  38. syllable_sdk/models/conversations_listop.py +35 -36
  39. syllable_sdk/models/custom_messages_listop.py +35 -36
  40. syllable_sdk/models/custommessagecreaterequest.py +14 -19
  41. syllable_sdk/models/custommessageresponse.py +14 -19
  42. syllable_sdk/models/custommessagerule.py +18 -19
  43. syllable_sdk/models/custommessageupdaterequest.py +14 -19
  44. syllable_sdk/models/daotoolresponse.py +18 -29
  45. syllable_sdk/models/data_sources_listop.py +35 -36
  46. syllable_sdk/models/datasourcecreaterequest.py +14 -19
  47. syllable_sdk/models/datasourcedetailresponse.py +18 -24
  48. syllable_sdk/models/datasourcemetadataresponse.py +18 -24
  49. syllable_sdk/models/datasourceupdaterequest.py +16 -19
  50. syllable_sdk/models/dialogtoolcall.py +1 -17
  51. syllable_sdk/models/dictionarymetadata.py +18 -1
  52. syllable_sdk/models/directory_member_createop.py +18 -1
  53. syllable_sdk/models/directory_member_downloadop.py +18 -1
  54. syllable_sdk/models/directory_member_get_by_idop.py +18 -1
  55. syllable_sdk/models/directory_member_listop.py +36 -37
  56. syllable_sdk/models/directory_member_test_extensionop.py +13 -18
  57. syllable_sdk/models/directory_member_updateop.py +18 -1
  58. syllable_sdk/models/directoryextension.py +14 -19
  59. syllable_sdk/models/directoryextensionnumber.py +14 -19
  60. syllable_sdk/models/directorymember.py +14 -19
  61. syllable_sdk/models/directorymembercreate.py +14 -19
  62. syllable_sdk/models/directorymembertestresponse.py +14 -19
  63. syllable_sdk/models/directorymemberupdate.py +14 -19
  64. syllable_sdk/models/emailconfigurations.py +19 -0
  65. syllable_sdk/models/event.py +38 -39
  66. syllable_sdk/models/events_listop.py +35 -36
  67. syllable_sdk/models/eventtask.py +16 -28
  68. syllable_sdk/models/eventtaskevents.py +14 -19
  69. syllable_sdk/models/expressiontask.py +30 -39
  70. syllable_sdk/models/expressiontaskevents.py +14 -19
  71. syllable_sdk/models/folderdetails.py +14 -19
  72. syllable_sdk/models/get_bridge_phrases_configop.py +14 -19
  73. syllable_sdk/models/getvalueaction.py +16 -19
  74. syllable_sdk/models/incident_listop.py +35 -36
  75. syllable_sdk/models/incidentcreaterequest.py +18 -19
  76. syllable_sdk/models/incidentresponse.py +31 -32
  77. syllable_sdk/models/incidentupdaterequest.py +18 -19
  78. syllable_sdk/models/incrementaction.py +14 -19
  79. syllable_sdk/models/inputparameter.py +27 -36
  80. syllable_sdk/models/insight_tool_listop.py +35 -36
  81. syllable_sdk/models/insights_folder_listop.py +35 -36
  82. syllable_sdk/models/insights_folder_upload_fileop.py +33 -34
  83. syllable_sdk/models/insights_listop.py +35 -36
  84. syllable_sdk/models/insights_upload_list_filesop.py +35 -36
  85. syllable_sdk/models/insights_workflow_listop.py +35 -36
  86. syllable_sdk/models/insightsfolder.py +14 -19
  87. syllable_sdk/models/insightsfolderinput.py +14 -19
  88. syllable_sdk/models/insightsoutput.py +26 -32
  89. syllable_sdk/models/insightsuploadfile.py +37 -38
  90. syllable_sdk/models/insightsworkflowqueuesession.py +14 -19
  91. syllable_sdk/models/insighttooloutput.py +14 -19
  92. syllable_sdk/models/insighttooltestinput.py +14 -19
  93. syllable_sdk/models/insightworkflowcondition.py +34 -35
  94. syllable_sdk/models/insightworkflowinput.py +14 -19
  95. syllable_sdk/models/insightworkflowoutput.py +22 -25
  96. syllable_sdk/models/inspectlatencyresponse.py +18 -1
  97. syllable_sdk/models/internaltool.py +18 -1
  98. syllable_sdk/models/jmespathexpression.py +18 -1
  99. syllable_sdk/models/language_groups_listop.py +35 -36
  100. syllable_sdk/models/languageconfig.py +14 -19
  101. syllable_sdk/models/languagegroupcreaterequest.py +14 -19
  102. syllable_sdk/models/languagegroupresponse.py +14 -19
  103. syllable_sdk/models/languagegroupupdaterequest.py +14 -19
  104. syllable_sdk/models/languagesamplecreaterequest.py +16 -24
  105. syllable_sdk/models/latencyentry.py +14 -19
  106. syllable_sdk/models/listresponse_agentresponse_.py +14 -19
  107. syllable_sdk/models/listresponse_availabletarget_.py +14 -19
  108. syllable_sdk/models/listresponse_channel_.py +14 -19
  109. syllable_sdk/models/listresponse_channeltargetresponse_.py +14 -19
  110. syllable_sdk/models/listresponse_communicationbatch_.py +14 -19
  111. syllable_sdk/models/listresponse_conversation_.py +14 -19
  112. syllable_sdk/models/listresponse_custommessageresponse_.py +14 -19
  113. syllable_sdk/models/listresponse_dashboardresponse_.py +14 -19
  114. syllable_sdk/models/listresponse_datasourcemetadataresponse_.py +14 -19
  115. syllable_sdk/models/listresponse_directorymember_.py +14 -19
  116. syllable_sdk/models/listresponse_event_.py +14 -19
  117. syllable_sdk/models/listresponse_incidentresponse_.py +14 -19
  118. syllable_sdk/models/listresponse_insightsfolder_.py +14 -19
  119. syllable_sdk/models/listresponse_insightsoutput_.py +14 -19
  120. syllable_sdk/models/listresponse_insightsuploadfile_.py +14 -19
  121. syllable_sdk/models/listresponse_insighttooloutput_.py +14 -19
  122. syllable_sdk/models/listresponse_insightworkflowoutput_.py +14 -19
  123. syllable_sdk/models/listresponse_languagegroupresponse_.py +14 -19
  124. syllable_sdk/models/listresponse_outboundcampaign_.py +14 -19
  125. syllable_sdk/models/listresponse_promptresponse_.py +14 -19
  126. syllable_sdk/models/listresponse_roleresponse_.py +14 -19
  127. syllable_sdk/models/listresponse_serviceresponse_.py +14 -19
  128. syllable_sdk/models/listresponse_session_.py +14 -19
  129. syllable_sdk/models/listresponse_sessionlabel_.py +14 -19
  130. syllable_sdk/models/listresponse_toolresponse_.py +14 -19
  131. syllable_sdk/models/listresponse_userresponse_.py +14 -19
  132. syllable_sdk/models/listresponse_voicegroupresponse_.py +14 -19
  133. syllable_sdk/models/loadtoolfromfiletask.py +16 -27
  134. syllable_sdk/models/nextstep.py +14 -19
  135. syllable_sdk/models/organizationchannelconfig.py +24 -29
  136. syllable_sdk/models/organizationchannelcreaterequest.py +14 -19
  137. syllable_sdk/models/organizationchannelupdaterequest.py +14 -19
  138. syllable_sdk/models/organizationresponse.py +32 -33
  139. syllable_sdk/models/outbound_batch_listop.py +35 -36
  140. syllable_sdk/models/outbound_batch_resultsop.py +13 -18
  141. syllable_sdk/models/outbound_batch_uploadop.py +18 -1
  142. syllable_sdk/models/outbound_campaign_listop.py +35 -36
  143. syllable_sdk/models/outboundcampaign.py +47 -48
  144. syllable_sdk/models/outboundcampaigninput.py +43 -44
  145. syllable_sdk/models/permissionresponse.py +14 -19
  146. syllable_sdk/models/post_list_dashboardop.py +35 -36
  147. syllable_sdk/models/promptcreaterequest.py +26 -32
  148. syllable_sdk/models/prompthistory.py +24 -30
  149. syllable_sdk/models/promptllmconfig.py +16 -26
  150. syllable_sdk/models/promptresponse.py +41 -42
  151. syllable_sdk/models/prompts_listop.py +35 -36
  152. syllable_sdk/models/promptupdaterequest.py +26 -32
  153. syllable_sdk/models/pronunciationoverride.py +28 -1
  154. syllable_sdk/models/pronunciationoverridesdictionary.py +18 -1
  155. syllable_sdk/models/pronunciationscsvuploadresponse.py +18 -1
  156. syllable_sdk/models/rolecreaterequest.py +14 -19
  157. syllable_sdk/models/roleresponse.py +14 -19
  158. syllable_sdk/models/roles_deleteop.py +13 -18
  159. syllable_sdk/models/roles_listop.py +35 -36
  160. syllable_sdk/models/roleupdaterequest.py +14 -19
  161. syllable_sdk/models/saveaction.py +14 -19
  162. syllable_sdk/models/sayaction.py +14 -19
  163. syllable_sdk/models/security.py +18 -1
  164. syllable_sdk/models/service_listop.py +35 -36
  165. syllable_sdk/models/servicecreaterequest.py +14 -19
  166. syllable_sdk/models/serviceresponse.py +14 -19
  167. syllable_sdk/models/serviceupdaterequest.py +14 -19
  168. syllable_sdk/models/session.py +60 -61
  169. syllable_sdk/models/session_labels_listop.py +35 -36
  170. syllable_sdk/models/sessionaction.py +18 -19
  171. syllable_sdk/models/sessionlabel.py +14 -19
  172. syllable_sdk/models/sessionlabelcreate.py +14 -19
  173. syllable_sdk/models/sessionrecordingresponse.py +14 -19
  174. syllable_sdk/models/sessions_listop.py +35 -36
  175. syllable_sdk/models/sessionsummaryresponse.py +14 -19
  176. syllable_sdk/models/sessiontext.py +14 -19
  177. syllable_sdk/models/setvalueaction.py +14 -19
  178. syllable_sdk/models/statictoolparameter.py +14 -19
  179. syllable_sdk/models/step.py +18 -1
  180. syllable_sdk/models/stepeventactions.py +14 -19
  181. syllable_sdk/models/stepstask.py +25 -28
  182. syllable_sdk/models/steptools.py +14 -19
  183. syllable_sdk/models/summaryentry.py +14 -19
  184. syllable_sdk/models/supportedllm.py +14 -19
  185. syllable_sdk/models/takeoutstatusresponse.py +14 -19
  186. syllable_sdk/models/telephonyconfigurations.py +38 -39
  187. syllable_sdk/models/testmessage.py +16 -19
  188. syllable_sdk/models/testmessageresponse.py +14 -19
  189. syllable_sdk/models/tool_listop.py +35 -36
  190. syllable_sdk/models/tooldefinition.py +34 -35
  191. syllable_sdk/models/tooldetailresponse.py +18 -29
  192. syllable_sdk/models/tooloptions.py +18 -1
  193. syllable_sdk/models/toolparametertransform.py +14 -19
  194. syllable_sdk/models/toolparametertransformcondition.py +14 -19
  195. syllable_sdk/models/toolresponse.py +18 -29
  196. syllable_sdk/models/toolupdaterequest.py +14 -19
  197. syllable_sdk/models/twiliochannelconfigupdate.py +14 -19
  198. syllable_sdk/models/twiliochannelupdaterequest.py +14 -19
  199. syllable_sdk/models/update_bridge_phrases_configop.py +13 -18
  200. syllable_sdk/models/usercreaterequest.py +14 -19
  201. syllable_sdk/models/userresponse.py +30 -31
  202. syllable_sdk/models/users_listop.py +35 -36
  203. syllable_sdk/models/users_send_emailop.py +18 -1
  204. syllable_sdk/models/userupdaterequest.py +14 -19
  205. syllable_sdk/models/variable.py +38 -39
  206. syllable_sdk/models/voice_groups_listop.py +35 -36
  207. syllable_sdk/models/voicegroupcreaterequest.py +14 -19
  208. syllable_sdk/models/voicegroupresponse.py +14 -19
  209. syllable_sdk/models/voicegroupupdaterequest.py +14 -19
  210. syllable_sdk/models/voicesamplecreaterequest.py +16 -24
  211. syllable_sdk/utils/__init__.py +13 -4
  212. syllable_sdk/utils/enums.py +60 -0
  213. syllable_sdk/utils/requestbodies.py +3 -3
  214. syllable_sdk/utils/serializers.py +0 -20
  215. {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/METADATA +1 -1
  216. {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/RECORD +217 -216
  217. {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/WHEEL +0 -0
syllable_sdk/_version.py CHANGED
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "syllable-sdk"
6
- __version__: str = "0.44.17"
6
+ __version__: str = "0.44.24"
7
7
  __openapi_doc_version__: str = "0.0.3"
8
- __gen_version__: str = "2.791.1"
9
- __user_agent__: str = "speakeasy-sdk/python 0.44.17 2.791.1 0.0.3 syllable-sdk"
8
+ __gen_version__: str = "2.801.0"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.44.24 2.801.0 0.0.3 syllable-sdk"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
syllable_sdk/basesdk.py CHANGED
@@ -8,7 +8,12 @@ from syllable_sdk._hooks import (
8
8
  AfterSuccessContext,
9
9
  BeforeRequestContext,
10
10
  )
11
- from syllable_sdk.utils import RetryConfig, SerializedRequestBody, get_body_content
11
+ from syllable_sdk.utils import (
12
+ RetryConfig,
13
+ SerializedRequestBody,
14
+ get_body_content,
15
+ run_sync_in_thread,
16
+ )
12
17
  from typing import Callable, List, Mapping, Optional, Tuple
13
18
  from urllib.parse import parse_qs, urlparse
14
19
 
@@ -311,7 +316,10 @@ class BaseSDK:
311
316
  async def do():
312
317
  http_res = None
313
318
  try:
314
- req = hooks.before_request(BeforeRequestContext(hook_ctx), request)
319
+ req = await run_sync_in_thread(
320
+ hooks.before_request, BeforeRequestContext(hook_ctx), request
321
+ )
322
+
315
323
  logger.debug(
316
324
  "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s",
317
325
  req.method,
@@ -325,7 +333,10 @@ class BaseSDK:
325
333
 
326
334
  http_res = await client.send(req, stream=stream)
327
335
  except Exception as e:
328
- _, e = hooks.after_error(AfterErrorContext(hook_ctx), None, e)
336
+ _, e = await run_sync_in_thread(
337
+ hooks.after_error, AfterErrorContext(hook_ctx), None, e
338
+ )
339
+
329
340
  if e is not None:
330
341
  logger.debug("Request Exception", exc_info=True)
331
342
  raise e
@@ -343,9 +354,10 @@ class BaseSDK:
343
354
  )
344
355
 
345
356
  if utils.match_status_codes(error_status_codes, http_res.status_code):
346
- result, err = hooks.after_error(
347
- AfterErrorContext(hook_ctx), http_res, None
357
+ result, err = await run_sync_in_thread(
358
+ hooks.after_error, AfterErrorContext(hook_ctx), http_res, None
348
359
  )
360
+
349
361
  if err is not None:
350
362
  logger.debug("Request Exception", exc_info=True)
351
363
  raise err
@@ -365,6 +377,8 @@ class BaseSDK:
365
377
  http_res = await do()
366
378
 
367
379
  if not utils.match_status_codes(error_status_codes, http_res.status_code):
368
- http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res)
380
+ http_res = await run_sync_in_thread(
381
+ hooks.after_success, AfterSuccessContext(hook_ctx), http_res
382
+ )
369
383
 
370
384
  return http_res
@@ -322,6 +322,7 @@ if TYPE_CHECKING:
322
322
  DirectoryMemberUpdateTypedDict,
323
323
  )
324
324
  from .directoryresponseformat import DirectoryResponseFormat
325
+ from .emailconfigurations import EmailConfigurations, EmailConfigurationsTypedDict
325
326
  from .event import Attributes, AttributesTypedDict, Event, EventTypedDict
326
327
  from .eventproperties import EventProperties
327
328
  from .events_listop import EventsListRequest, EventsListRequestTypedDict
@@ -1352,6 +1353,8 @@ __all__ = [
1352
1353
  "DirectoryMemberUpdateRequestTypedDict",
1353
1354
  "DirectoryMemberUpdateTypedDict",
1354
1355
  "DirectoryResponseFormat",
1356
+ "EmailConfigurations",
1357
+ "EmailConfigurationsTypedDict",
1355
1358
  "Enter",
1356
1359
  "EnterTypedDict",
1357
1360
  "Event",
@@ -2139,6 +2142,8 @@ _dynamic_imports: dict[str, str] = {
2139
2142
  "DirectoryMemberUpdate": ".directorymemberupdate",
2140
2143
  "DirectoryMemberUpdateTypedDict": ".directorymemberupdate",
2141
2144
  "DirectoryResponseFormat": ".directoryresponseformat",
2145
+ "EmailConfigurations": ".emailconfigurations",
2146
+ "EmailConfigurationsTypedDict": ".emailconfigurations",
2142
2147
  "Attributes": ".event",
2143
2148
  "AttributesTypedDict": ".event",
2144
2149
  "Event": ".event",
@@ -94,47 +94,46 @@ class AgentListRequest(BaseModel):
94
94
 
95
95
  @model_serializer(mode="wrap")
96
96
  def serialize_model(self, handler):
97
- optional_fields = [
98
- "page",
99
- "limit",
100
- "search_fields",
101
- "search_field_values",
102
- "order_by",
103
- "order_by_direction",
104
- "fields",
105
- "start_datetime",
106
- "end_datetime",
107
- ]
108
- nullable_fields = [
109
- "page",
110
- "order_by",
111
- "order_by_direction",
112
- "fields",
113
- "start_datetime",
114
- "end_datetime",
115
- ]
116
- null_default_fields = []
117
-
97
+ optional_fields = set(
98
+ [
99
+ "page",
100
+ "limit",
101
+ "search_fields",
102
+ "search_field_values",
103
+ "order_by",
104
+ "order_by_direction",
105
+ "fields",
106
+ "start_datetime",
107
+ "end_datetime",
108
+ ]
109
+ )
110
+ nullable_fields = set(
111
+ [
112
+ "page",
113
+ "order_by",
114
+ "order_by_direction",
115
+ "fields",
116
+ "start_datetime",
117
+ "end_datetime",
118
+ ]
119
+ )
118
120
  serialized = handler(self)
119
-
120
121
  m = {}
121
122
 
122
123
  for n, f in type(self).model_fields.items():
123
124
  k = f.alias or n
124
125
  val = serialized.get(k)
125
- serialized.pop(k, None)
126
-
127
- optional_nullable = k in optional_fields and k in nullable_fields
128
- is_set = (
129
- self.__pydantic_fields_set__.intersection({n})
130
- or k in null_default_fields
131
- ) # pylint: disable=no-member
132
-
133
- if val is not None and val != UNSET_SENTINEL:
134
- m[k] = val
135
- elif val != UNSET_SENTINEL and (
136
- not k in optional_fields or (optional_nullable and is_set)
137
- ):
138
- m[k] = val
126
+ is_nullable_and_explicitly_set = (
127
+ k in nullable_fields
128
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
129
+ )
130
+
131
+ if val != UNSET_SENTINEL:
132
+ if (
133
+ val is not None
134
+ or k not in optional_fields
135
+ or is_nullable_and_explicitly_set
136
+ ):
137
+ m[k] = val
139
138
 
140
139
  return m
@@ -117,50 +117,49 @@ class AgentCreate(BaseModel):
117
117
 
118
118
  @model_serializer(mode="wrap")
119
119
  def serialize_model(self, handler):
120
- optional_fields = [
121
- "description",
122
- "label",
123
- "labels",
124
- "custom_message_id",
125
- "language_group_id",
126
- "prompt_tool_defaults",
127
- "languages",
128
- "agent_initiated",
129
- "stt_provider",
130
- "wait_sound",
131
- ]
132
- nullable_fields = [
133
- "description",
134
- "label",
135
- "labels",
136
- "custom_message_id",
137
- "language_group_id",
138
- "tool_headers",
139
- "stt_provider",
140
- "wait_sound",
141
- ]
142
- null_default_fields = []
143
-
120
+ optional_fields = set(
121
+ [
122
+ "description",
123
+ "label",
124
+ "labels",
125
+ "custom_message_id",
126
+ "language_group_id",
127
+ "prompt_tool_defaults",
128
+ "languages",
129
+ "agent_initiated",
130
+ "stt_provider",
131
+ "wait_sound",
132
+ ]
133
+ )
134
+ nullable_fields = set(
135
+ [
136
+ "description",
137
+ "label",
138
+ "labels",
139
+ "custom_message_id",
140
+ "language_group_id",
141
+ "tool_headers",
142
+ "stt_provider",
143
+ "wait_sound",
144
+ ]
145
+ )
144
146
  serialized = handler(self)
145
-
146
147
  m = {}
147
148
 
148
149
  for n, f in type(self).model_fields.items():
149
150
  k = f.alias or n
150
151
  val = serialized.get(k)
151
- serialized.pop(k, None)
152
-
153
- optional_nullable = k in optional_fields and k in nullable_fields
154
- is_set = (
155
- self.__pydantic_fields_set__.intersection({n})
156
- or k in null_default_fields
157
- ) # pylint: disable=no-member
158
-
159
- if val is not None and val != UNSET_SENTINEL:
160
- m[k] = val
161
- elif val != UNSET_SENTINEL and (
162
- not k in optional_fields or (optional_nullable and is_set)
163
- ):
164
- m[k] = val
152
+ is_nullable_and_explicitly_set = (
153
+ k in nullable_fields
154
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
155
+ )
156
+
157
+ if val != UNSET_SENTINEL:
158
+ if (
159
+ val is not None
160
+ or k not in optional_fields
161
+ or is_nullable_and_explicitly_set
162
+ ):
163
+ m[k] = val
165
164
 
166
165
  return m
@@ -176,61 +176,60 @@ class AgentResponse(BaseModel):
176
176
 
177
177
  @model_serializer(mode="wrap")
178
178
  def serialize_model(self, handler):
179
- optional_fields = [
180
- "description",
181
- "label",
182
- "labels",
183
- "custom_message_id",
184
- "language_group_id",
185
- "prompt_tool_defaults",
186
- "languages",
187
- "agent_initiated",
188
- "stt_provider",
189
- "wait_sound",
190
- "prompt",
191
- "custom_message",
192
- "channel_targets",
193
- "tools",
194
- "language_group",
195
- ]
196
- nullable_fields = [
197
- "description",
198
- "label",
199
- "labels",
200
- "custom_message_id",
201
- "language_group_id",
202
- "tool_headers",
203
- "stt_provider",
204
- "wait_sound",
205
- "last_updated_by",
206
- "prompt",
207
- "custom_message",
208
- "channel_targets",
209
- "tools",
210
- "language_group",
211
- ]
212
- null_default_fields = []
213
-
179
+ optional_fields = set(
180
+ [
181
+ "description",
182
+ "label",
183
+ "labels",
184
+ "custom_message_id",
185
+ "language_group_id",
186
+ "prompt_tool_defaults",
187
+ "languages",
188
+ "agent_initiated",
189
+ "stt_provider",
190
+ "wait_sound",
191
+ "prompt",
192
+ "custom_message",
193
+ "channel_targets",
194
+ "tools",
195
+ "language_group",
196
+ ]
197
+ )
198
+ nullable_fields = set(
199
+ [
200
+ "description",
201
+ "label",
202
+ "labels",
203
+ "custom_message_id",
204
+ "language_group_id",
205
+ "tool_headers",
206
+ "stt_provider",
207
+ "wait_sound",
208
+ "last_updated_by",
209
+ "prompt",
210
+ "custom_message",
211
+ "channel_targets",
212
+ "tools",
213
+ "language_group",
214
+ ]
215
+ )
214
216
  serialized = handler(self)
215
-
216
217
  m = {}
217
218
 
218
219
  for n, f in type(self).model_fields.items():
219
220
  k = f.alias or n
220
221
  val = serialized.get(k)
221
- serialized.pop(k, None)
222
-
223
- optional_nullable = k in optional_fields and k in nullable_fields
224
- is_set = (
225
- self.__pydantic_fields_set__.intersection({n})
226
- or k in null_default_fields
227
- ) # pylint: disable=no-member
228
-
229
- if val is not None and val != UNSET_SENTINEL:
230
- m[k] = val
231
- elif val != UNSET_SENTINEL and (
232
- not k in optional_fields or (optional_nullable and is_set)
233
- ):
234
- m[k] = val
222
+ is_nullable_and_explicitly_set = (
223
+ k in nullable_fields
224
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
225
+ )
226
+
227
+ if val != UNSET_SENTINEL:
228
+ if (
229
+ val is not None
230
+ or k not in optional_fields
231
+ or is_nullable_and_explicitly_set
232
+ ):
233
+ m[k] = val
235
234
 
236
235
  return m
@@ -122,50 +122,49 @@ class AgentUpdate(BaseModel):
122
122
 
123
123
  @model_serializer(mode="wrap")
124
124
  def serialize_model(self, handler):
125
- optional_fields = [
126
- "description",
127
- "label",
128
- "labels",
129
- "custom_message_id",
130
- "language_group_id",
131
- "prompt_tool_defaults",
132
- "languages",
133
- "agent_initiated",
134
- "stt_provider",
135
- "wait_sound",
136
- ]
137
- nullable_fields = [
138
- "description",
139
- "label",
140
- "labels",
141
- "custom_message_id",
142
- "language_group_id",
143
- "tool_headers",
144
- "stt_provider",
145
- "wait_sound",
146
- ]
147
- null_default_fields = []
148
-
125
+ optional_fields = set(
126
+ [
127
+ "description",
128
+ "label",
129
+ "labels",
130
+ "custom_message_id",
131
+ "language_group_id",
132
+ "prompt_tool_defaults",
133
+ "languages",
134
+ "agent_initiated",
135
+ "stt_provider",
136
+ "wait_sound",
137
+ ]
138
+ )
139
+ nullable_fields = set(
140
+ [
141
+ "description",
142
+ "label",
143
+ "labels",
144
+ "custom_message_id",
145
+ "language_group_id",
146
+ "tool_headers",
147
+ "stt_provider",
148
+ "wait_sound",
149
+ ]
150
+ )
149
151
  serialized = handler(self)
150
-
151
152
  m = {}
152
153
 
153
154
  for n, f in type(self).model_fields.items():
154
155
  k = f.alias or n
155
156
  val = serialized.get(k)
156
- serialized.pop(k, None)
157
-
158
- optional_nullable = k in optional_fields and k in nullable_fields
159
- is_set = (
160
- self.__pydantic_fields_set__.intersection({n})
161
- or k in null_default_fields
162
- ) # pylint: disable=no-member
163
-
164
- if val is not None and val != UNSET_SENTINEL:
165
- m[k] = val
166
- elif val != UNSET_SENTINEL and (
167
- not k in optional_fields or (optional_nullable and is_set)
168
- ):
169
- m[k] = val
157
+ is_nullable_and_explicitly_set = (
158
+ k in nullable_fields
159
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
160
+ )
161
+
162
+ if val != UNSET_SENTINEL:
163
+ if (
164
+ val is not None
165
+ or k not in optional_fields
166
+ or is_nullable_and_explicitly_set
167
+ ):
168
+ m[k] = val
170
169
 
171
170
  return m
@@ -94,47 +94,46 @@ class AvailableTargetsRequest(BaseModel):
94
94
 
95
95
  @model_serializer(mode="wrap")
96
96
  def serialize_model(self, handler):
97
- optional_fields = [
98
- "page",
99
- "limit",
100
- "search_fields",
101
- "search_field_values",
102
- "order_by",
103
- "order_by_direction",
104
- "fields",
105
- "start_datetime",
106
- "end_datetime",
107
- ]
108
- nullable_fields = [
109
- "page",
110
- "order_by",
111
- "order_by_direction",
112
- "fields",
113
- "start_datetime",
114
- "end_datetime",
115
- ]
116
- null_default_fields = []
117
-
97
+ optional_fields = set(
98
+ [
99
+ "page",
100
+ "limit",
101
+ "search_fields",
102
+ "search_field_values",
103
+ "order_by",
104
+ "order_by_direction",
105
+ "fields",
106
+ "start_datetime",
107
+ "end_datetime",
108
+ ]
109
+ )
110
+ nullable_fields = set(
111
+ [
112
+ "page",
113
+ "order_by",
114
+ "order_by_direction",
115
+ "fields",
116
+ "start_datetime",
117
+ "end_datetime",
118
+ ]
119
+ )
118
120
  serialized = handler(self)
119
-
120
121
  m = {}
121
122
 
122
123
  for n, f in type(self).model_fields.items():
123
124
  k = f.alias or n
124
125
  val = serialized.get(k)
125
- serialized.pop(k, None)
126
-
127
- optional_nullable = k in optional_fields and k in nullable_fields
128
- is_set = (
129
- self.__pydantic_fields_set__.intersection({n})
130
- or k in null_default_fields
131
- ) # pylint: disable=no-member
132
-
133
- if val is not None and val != UNSET_SENTINEL:
134
- m[k] = val
135
- elif val != UNSET_SENTINEL and (
136
- not k in optional_fields or (optional_nullable and is_set)
137
- ):
138
- m[k] = val
126
+ is_nullable_and_explicitly_set = (
127
+ k in nullable_fields
128
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
129
+ )
130
+
131
+ if val != UNSET_SENTINEL:
132
+ if (
133
+ val is not None
134
+ or k not in optional_fields
135
+ or is_nullable_and_explicitly_set
136
+ ):
137
+ m[k] = val
139
138
 
140
139
  return m
@@ -40,30 +40,14 @@ class AvailableTarget(BaseModel):
40
40
 
41
41
  @model_serializer(mode="wrap")
42
42
  def serialize_model(self, handler):
43
- optional_fields = []
44
- nullable_fields = ["channel_name"]
45
- null_default_fields = []
46
-
47
43
  serialized = handler(self)
48
-
49
44
  m = {}
50
45
 
51
46
  for n, f in type(self).model_fields.items():
52
47
  k = f.alias or n
53
48
  val = serialized.get(k)
54
- serialized.pop(k, None)
55
49
 
56
- optional_nullable = k in optional_fields and k in nullable_fields
57
- is_set = (
58
- self.__pydantic_fields_set__.intersection({n})
59
- or k in null_default_fields
60
- ) # pylint: disable=no-member
61
-
62
- if val is not None and val != UNSET_SENTINEL:
63
- m[k] = val
64
- elif val != UNSET_SENTINEL and (
65
- not k in optional_fields or (optional_nullable and is_set)
66
- ):
50
+ if val != UNSET_SENTINEL:
67
51
  m[k] = val
68
52
 
69
53
  return m