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.
- syllable_sdk/_version.py +3 -3
- syllable_sdk/basesdk.py +20 -6
- syllable_sdk/models/__init__.py +5 -0
- syllable_sdk/models/agent_listop.py +35 -36
- syllable_sdk/models/agentcreate.py +38 -39
- syllable_sdk/models/agentresponse.py +49 -50
- syllable_sdk/models/agentupdate.py +38 -39
- syllable_sdk/models/available_targetsop.py +35 -36
- syllable_sdk/models/availabletarget.py +1 -17
- syllable_sdk/models/batchdetails.py +38 -39
- syllable_sdk/models/body_directory_member_bulk_load.py +18 -1
- syllable_sdk/models/body_insights_folder_upload_file.py +34 -1
- syllable_sdk/models/body_organizations_create.py +30 -19
- syllable_sdk/models/body_organizations_delete.py +14 -19
- syllable_sdk/models/body_organizations_update.py +34 -30
- syllable_sdk/models/body_outbound_batch_upload.py +34 -1
- syllable_sdk/models/body_pronunciations_upload_csv.py +18 -1
- syllable_sdk/models/bridgephrasesconfig.py +20 -1
- syllable_sdk/models/callaction.py +14 -19
- syllable_sdk/models/celexpression.py +18 -1
- syllable_sdk/models/channel.py +14 -19
- syllable_sdk/models/channel_targets_listop.py +35 -36
- syllable_sdk/models/channelconfigview.py +20 -19
- syllable_sdk/models/channels_listop.py +35 -36
- syllable_sdk/models/channeltargetcreaterequest.py +14 -19
- syllable_sdk/models/channeltargetresponse.py +14 -19
- syllable_sdk/models/channeltargetupdaterequest.py +14 -19
- syllable_sdk/models/communicationbatch.py +36 -37
- syllable_sdk/models/communicationbatchinput.py +14 -19
- syllable_sdk/models/communicationbatchupdate.py +14 -19
- syllable_sdk/models/communicationrequestresult.py +37 -38
- syllable_sdk/models/conditionaltext.py +14 -19
- syllable_sdk/models/conditionalvalue.py +14 -19
- syllable_sdk/models/context.py +14 -19
- syllable_sdk/models/contexttaskmetadata.py +14 -19
- syllable_sdk/models/contexttoolinfo.py +14 -19
- syllable_sdk/models/conversation.py +44 -45
- syllable_sdk/models/conversations_listop.py +35 -36
- syllable_sdk/models/custom_messages_listop.py +35 -36
- syllable_sdk/models/custommessagecreaterequest.py +14 -19
- syllable_sdk/models/custommessageresponse.py +14 -19
- syllable_sdk/models/custommessagerule.py +18 -19
- syllable_sdk/models/custommessageupdaterequest.py +14 -19
- syllable_sdk/models/daotoolresponse.py +18 -29
- syllable_sdk/models/data_sources_listop.py +35 -36
- syllable_sdk/models/datasourcecreaterequest.py +14 -19
- syllable_sdk/models/datasourcedetailresponse.py +18 -24
- syllable_sdk/models/datasourcemetadataresponse.py +18 -24
- syllable_sdk/models/datasourceupdaterequest.py +16 -19
- syllable_sdk/models/dialogtoolcall.py +1 -17
- syllable_sdk/models/dictionarymetadata.py +18 -1
- syllable_sdk/models/directory_member_createop.py +18 -1
- syllable_sdk/models/directory_member_downloadop.py +18 -1
- syllable_sdk/models/directory_member_get_by_idop.py +18 -1
- syllable_sdk/models/directory_member_listop.py +36 -37
- syllable_sdk/models/directory_member_test_extensionop.py +13 -18
- syllable_sdk/models/directory_member_updateop.py +18 -1
- syllable_sdk/models/directoryextension.py +14 -19
- syllable_sdk/models/directoryextensionnumber.py +14 -19
- syllable_sdk/models/directorymember.py +14 -19
- syllable_sdk/models/directorymembercreate.py +14 -19
- syllable_sdk/models/directorymembertestresponse.py +14 -19
- syllable_sdk/models/directorymemberupdate.py +14 -19
- syllable_sdk/models/emailconfigurations.py +19 -0
- syllable_sdk/models/event.py +38 -39
- syllable_sdk/models/events_listop.py +35 -36
- syllable_sdk/models/eventtask.py +16 -28
- syllable_sdk/models/eventtaskevents.py +14 -19
- syllable_sdk/models/expressiontask.py +30 -39
- syllable_sdk/models/expressiontaskevents.py +14 -19
- syllable_sdk/models/folderdetails.py +14 -19
- syllable_sdk/models/get_bridge_phrases_configop.py +14 -19
- syllable_sdk/models/getvalueaction.py +16 -19
- syllable_sdk/models/incident_listop.py +35 -36
- syllable_sdk/models/incidentcreaterequest.py +18 -19
- syllable_sdk/models/incidentresponse.py +31 -32
- syllable_sdk/models/incidentupdaterequest.py +18 -19
- syllable_sdk/models/incrementaction.py +14 -19
- syllable_sdk/models/inputparameter.py +27 -36
- syllable_sdk/models/insight_tool_listop.py +35 -36
- syllable_sdk/models/insights_folder_listop.py +35 -36
- syllable_sdk/models/insights_folder_upload_fileop.py +33 -34
- syllable_sdk/models/insights_listop.py +35 -36
- syllable_sdk/models/insights_upload_list_filesop.py +35 -36
- syllable_sdk/models/insights_workflow_listop.py +35 -36
- syllable_sdk/models/insightsfolder.py +14 -19
- syllable_sdk/models/insightsfolderinput.py +14 -19
- syllable_sdk/models/insightsoutput.py +26 -32
- syllable_sdk/models/insightsuploadfile.py +37 -38
- syllable_sdk/models/insightsworkflowqueuesession.py +14 -19
- syllable_sdk/models/insighttooloutput.py +14 -19
- syllable_sdk/models/insighttooltestinput.py +14 -19
- syllable_sdk/models/insightworkflowcondition.py +34 -35
- syllable_sdk/models/insightworkflowinput.py +14 -19
- syllable_sdk/models/insightworkflowoutput.py +22 -25
- syllable_sdk/models/inspectlatencyresponse.py +18 -1
- syllable_sdk/models/internaltool.py +18 -1
- syllable_sdk/models/jmespathexpression.py +18 -1
- syllable_sdk/models/language_groups_listop.py +35 -36
- syllable_sdk/models/languageconfig.py +14 -19
- syllable_sdk/models/languagegroupcreaterequest.py +14 -19
- syllable_sdk/models/languagegroupresponse.py +14 -19
- syllable_sdk/models/languagegroupupdaterequest.py +14 -19
- syllable_sdk/models/languagesamplecreaterequest.py +16 -24
- syllable_sdk/models/latencyentry.py +14 -19
- syllable_sdk/models/listresponse_agentresponse_.py +14 -19
- syllable_sdk/models/listresponse_availabletarget_.py +14 -19
- syllable_sdk/models/listresponse_channel_.py +14 -19
- syllable_sdk/models/listresponse_channeltargetresponse_.py +14 -19
- syllable_sdk/models/listresponse_communicationbatch_.py +14 -19
- syllable_sdk/models/listresponse_conversation_.py +14 -19
- syllable_sdk/models/listresponse_custommessageresponse_.py +14 -19
- syllable_sdk/models/listresponse_dashboardresponse_.py +14 -19
- syllable_sdk/models/listresponse_datasourcemetadataresponse_.py +14 -19
- syllable_sdk/models/listresponse_directorymember_.py +14 -19
- syllable_sdk/models/listresponse_event_.py +14 -19
- syllable_sdk/models/listresponse_incidentresponse_.py +14 -19
- syllable_sdk/models/listresponse_insightsfolder_.py +14 -19
- syllable_sdk/models/listresponse_insightsoutput_.py +14 -19
- syllable_sdk/models/listresponse_insightsuploadfile_.py +14 -19
- syllable_sdk/models/listresponse_insighttooloutput_.py +14 -19
- syllable_sdk/models/listresponse_insightworkflowoutput_.py +14 -19
- syllable_sdk/models/listresponse_languagegroupresponse_.py +14 -19
- syllable_sdk/models/listresponse_outboundcampaign_.py +14 -19
- syllable_sdk/models/listresponse_promptresponse_.py +14 -19
- syllable_sdk/models/listresponse_roleresponse_.py +14 -19
- syllable_sdk/models/listresponse_serviceresponse_.py +14 -19
- syllable_sdk/models/listresponse_session_.py +14 -19
- syllable_sdk/models/listresponse_sessionlabel_.py +14 -19
- syllable_sdk/models/listresponse_toolresponse_.py +14 -19
- syllable_sdk/models/listresponse_userresponse_.py +14 -19
- syllable_sdk/models/listresponse_voicegroupresponse_.py +14 -19
- syllable_sdk/models/loadtoolfromfiletask.py +16 -27
- syllable_sdk/models/nextstep.py +14 -19
- syllable_sdk/models/organizationchannelconfig.py +24 -29
- syllable_sdk/models/organizationchannelcreaterequest.py +14 -19
- syllable_sdk/models/organizationchannelupdaterequest.py +14 -19
- syllable_sdk/models/organizationresponse.py +32 -33
- syllable_sdk/models/outbound_batch_listop.py +35 -36
- syllable_sdk/models/outbound_batch_resultsop.py +13 -18
- syllable_sdk/models/outbound_batch_uploadop.py +18 -1
- syllable_sdk/models/outbound_campaign_listop.py +35 -36
- syllable_sdk/models/outboundcampaign.py +47 -48
- syllable_sdk/models/outboundcampaigninput.py +43 -44
- syllable_sdk/models/permissionresponse.py +14 -19
- syllable_sdk/models/post_list_dashboardop.py +35 -36
- syllable_sdk/models/promptcreaterequest.py +26 -32
- syllable_sdk/models/prompthistory.py +24 -30
- syllable_sdk/models/promptllmconfig.py +16 -26
- syllable_sdk/models/promptresponse.py +41 -42
- syllable_sdk/models/prompts_listop.py +35 -36
- syllable_sdk/models/promptupdaterequest.py +26 -32
- syllable_sdk/models/pronunciationoverride.py +28 -1
- syllable_sdk/models/pronunciationoverridesdictionary.py +18 -1
- syllable_sdk/models/pronunciationscsvuploadresponse.py +18 -1
- syllable_sdk/models/rolecreaterequest.py +14 -19
- syllable_sdk/models/roleresponse.py +14 -19
- syllable_sdk/models/roles_deleteop.py +13 -18
- syllable_sdk/models/roles_listop.py +35 -36
- syllable_sdk/models/roleupdaterequest.py +14 -19
- syllable_sdk/models/saveaction.py +14 -19
- syllable_sdk/models/sayaction.py +14 -19
- syllable_sdk/models/security.py +18 -1
- syllable_sdk/models/service_listop.py +35 -36
- syllable_sdk/models/servicecreaterequest.py +14 -19
- syllable_sdk/models/serviceresponse.py +14 -19
- syllable_sdk/models/serviceupdaterequest.py +14 -19
- syllable_sdk/models/session.py +60 -61
- syllable_sdk/models/session_labels_listop.py +35 -36
- syllable_sdk/models/sessionaction.py +18 -19
- syllable_sdk/models/sessionlabel.py +14 -19
- syllable_sdk/models/sessionlabelcreate.py +14 -19
- syllable_sdk/models/sessionrecordingresponse.py +14 -19
- syllable_sdk/models/sessions_listop.py +35 -36
- syllable_sdk/models/sessionsummaryresponse.py +14 -19
- syllable_sdk/models/sessiontext.py +14 -19
- syllable_sdk/models/setvalueaction.py +14 -19
- syllable_sdk/models/statictoolparameter.py +14 -19
- syllable_sdk/models/step.py +18 -1
- syllable_sdk/models/stepeventactions.py +14 -19
- syllable_sdk/models/stepstask.py +25 -28
- syllable_sdk/models/steptools.py +14 -19
- syllable_sdk/models/summaryentry.py +14 -19
- syllable_sdk/models/supportedllm.py +14 -19
- syllable_sdk/models/takeoutstatusresponse.py +14 -19
- syllable_sdk/models/telephonyconfigurations.py +38 -39
- syllable_sdk/models/testmessage.py +16 -19
- syllable_sdk/models/testmessageresponse.py +14 -19
- syllable_sdk/models/tool_listop.py +35 -36
- syllable_sdk/models/tooldefinition.py +34 -35
- syllable_sdk/models/tooldetailresponse.py +18 -29
- syllable_sdk/models/tooloptions.py +18 -1
- syllable_sdk/models/toolparametertransform.py +14 -19
- syllable_sdk/models/toolparametertransformcondition.py +14 -19
- syllable_sdk/models/toolresponse.py +18 -29
- syllable_sdk/models/toolupdaterequest.py +14 -19
- syllable_sdk/models/twiliochannelconfigupdate.py +14 -19
- syllable_sdk/models/twiliochannelupdaterequest.py +14 -19
- syllable_sdk/models/update_bridge_phrases_configop.py +13 -18
- syllable_sdk/models/usercreaterequest.py +14 -19
- syllable_sdk/models/userresponse.py +30 -31
- syllable_sdk/models/users_listop.py +35 -36
- syllable_sdk/models/users_send_emailop.py +18 -1
- syllable_sdk/models/userupdaterequest.py +14 -19
- syllable_sdk/models/variable.py +38 -39
- syllable_sdk/models/voice_groups_listop.py +35 -36
- syllable_sdk/models/voicegroupcreaterequest.py +14 -19
- syllable_sdk/models/voicegroupresponse.py +14 -19
- syllable_sdk/models/voicegroupupdaterequest.py +14 -19
- syllable_sdk/models/voicesamplecreaterequest.py +16 -24
- syllable_sdk/utils/__init__.py +13 -4
- syllable_sdk/utils/enums.py +60 -0
- syllable_sdk/utils/requestbodies.py +3 -3
- syllable_sdk/utils/serializers.py +0 -20
- {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/METADATA +1 -1
- {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/RECORD +217 -216
- {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/WHEEL +0 -0
|
@@ -94,47 +94,46 @@ class UsersListRequest(BaseModel):
|
|
|
94
94
|
|
|
95
95
|
@model_serializer(mode="wrap")
|
|
96
96
|
def serialize_model(self, handler):
|
|
97
|
-
optional_fields =
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
from
|
|
4
|
+
from pydantic import model_serializer
|
|
5
|
+
from syllable_sdk.types import BaseModel, UNSET_SENTINEL
|
|
5
6
|
from syllable_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata
|
|
6
7
|
from typing import Optional
|
|
7
8
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
@@ -21,3 +22,19 @@ class UsersSendEmailRequest(BaseModel):
|
|
|
21
22
|
Optional[bool],
|
|
22
23
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
23
24
|
] = False
|
|
25
|
+
|
|
26
|
+
@model_serializer(mode="wrap")
|
|
27
|
+
def serialize_model(self, handler):
|
|
28
|
+
optional_fields = set(["skip_auth"])
|
|
29
|
+
serialized = handler(self)
|
|
30
|
+
m = {}
|
|
31
|
+
|
|
32
|
+
for n, f in type(self).model_fields.items():
|
|
33
|
+
k = f.alias or n
|
|
34
|
+
val = serialized.get(k)
|
|
35
|
+
|
|
36
|
+
if val != UNSET_SENTINEL:
|
|
37
|
+
if val is not None or k not in optional_fields:
|
|
38
|
+
m[k] = val
|
|
39
|
+
|
|
40
|
+
return m
|
|
@@ -47,30 +47,25 @@ class UserUpdateRequest(BaseModel):
|
|
|
47
47
|
|
|
48
48
|
@model_serializer(mode="wrap")
|
|
49
49
|
def serialize_model(self, handler):
|
|
50
|
-
optional_fields = ["first_name", "last_name", "last_updated_comments"]
|
|
51
|
-
nullable_fields = ["first_name", "last_name", "last_updated_comments"]
|
|
52
|
-
null_default_fields = []
|
|
53
|
-
|
|
50
|
+
optional_fields = set(["first_name", "last_name", "last_updated_comments"])
|
|
51
|
+
nullable_fields = set(["first_name", "last_name", "last_updated_comments"])
|
|
54
52
|
serialized = handler(self)
|
|
55
|
-
|
|
56
53
|
m = {}
|
|
57
54
|
|
|
58
55
|
for n, f in type(self).model_fields.items():
|
|
59
56
|
k = f.alias or n
|
|
60
57
|
val = serialized.get(k)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
):
|
|
74
|
-
m[k] = val
|
|
58
|
+
is_nullable_and_explicitly_set = (
|
|
59
|
+
k in nullable_fields
|
|
60
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
if val != UNSET_SENTINEL:
|
|
64
|
+
if (
|
|
65
|
+
val is not None
|
|
66
|
+
or k not in optional_fields
|
|
67
|
+
or is_nullable_and_explicitly_set
|
|
68
|
+
):
|
|
69
|
+
m[k] = val
|
|
75
70
|
|
|
76
71
|
return m
|
syllable_sdk/models/variable.py
CHANGED
|
@@ -100,50 +100,49 @@ class Variable(BaseModel):
|
|
|
100
100
|
|
|
101
101
|
@model_serializer(mode="wrap")
|
|
102
102
|
def serialize_model(self, handler):
|
|
103
|
-
optional_fields =
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
103
|
+
optional_fields = set(
|
|
104
|
+
[
|
|
105
|
+
"value",
|
|
106
|
+
"value_from",
|
|
107
|
+
"type",
|
|
108
|
+
"description",
|
|
109
|
+
"title",
|
|
110
|
+
"format",
|
|
111
|
+
"pattern",
|
|
112
|
+
"enum",
|
|
113
|
+
"examples",
|
|
114
|
+
]
|
|
115
|
+
)
|
|
116
|
+
nullable_fields = set(
|
|
117
|
+
[
|
|
118
|
+
"value",
|
|
119
|
+
"value_from",
|
|
120
|
+
"type",
|
|
121
|
+
"description",
|
|
122
|
+
"title",
|
|
123
|
+
"format",
|
|
124
|
+
"pattern",
|
|
125
|
+
"enum",
|
|
126
|
+
"examples",
|
|
127
|
+
]
|
|
128
|
+
)
|
|
127
129
|
serialized = handler(self)
|
|
128
|
-
|
|
129
130
|
m = {}
|
|
130
131
|
|
|
131
132
|
for n, f in type(self).model_fields.items():
|
|
132
133
|
k = f.alias or n
|
|
133
134
|
val = serialized.get(k)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
):
|
|
147
|
-
m[k] = val
|
|
135
|
+
is_nullable_and_explicitly_set = (
|
|
136
|
+
k in nullable_fields
|
|
137
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
if val != UNSET_SENTINEL:
|
|
141
|
+
if (
|
|
142
|
+
val is not None
|
|
143
|
+
or k not in optional_fields
|
|
144
|
+
or is_nullable_and_explicitly_set
|
|
145
|
+
):
|
|
146
|
+
m[k] = val
|
|
148
147
|
|
|
149
148
|
return m
|
|
@@ -94,47 +94,46 @@ class VoiceGroupsListRequest(BaseModel):
|
|
|
94
94
|
|
|
95
95
|
@model_serializer(mode="wrap")
|
|
96
96
|
def serialize_model(self, handler):
|
|
97
|
-
optional_fields =
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
|
@@ -44,30 +44,25 @@ class VoiceGroupCreateRequest(BaseModel):
|
|
|
44
44
|
|
|
45
45
|
@model_serializer(mode="wrap")
|
|
46
46
|
def serialize_model(self, handler):
|
|
47
|
-
optional_fields = ["description"]
|
|
48
|
-
nullable_fields = ["description"]
|
|
49
|
-
null_default_fields = []
|
|
50
|
-
|
|
47
|
+
optional_fields = set(["description"])
|
|
48
|
+
nullable_fields = set(["description"])
|
|
51
49
|
serialized = handler(self)
|
|
52
|
-
|
|
53
50
|
m = {}
|
|
54
51
|
|
|
55
52
|
for n, f in type(self).model_fields.items():
|
|
56
53
|
k = f.alias or n
|
|
57
54
|
val = serialized.get(k)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
):
|
|
71
|
-
m[k] = val
|
|
55
|
+
is_nullable_and_explicitly_set = (
|
|
56
|
+
k in nullable_fields
|
|
57
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
if val != UNSET_SENTINEL:
|
|
61
|
+
if (
|
|
62
|
+
val is not None
|
|
63
|
+
or k not in optional_fields
|
|
64
|
+
or is_nullable_and_explicitly_set
|
|
65
|
+
):
|
|
66
|
+
m[k] = val
|
|
72
67
|
|
|
73
68
|
return m
|
|
@@ -82,30 +82,25 @@ class VoiceGroupResponse(BaseModel):
|
|
|
82
82
|
|
|
83
83
|
@model_serializer(mode="wrap")
|
|
84
84
|
def serialize_model(self, handler):
|
|
85
|
-
optional_fields = ["description", "edit_comments", "agents_info"]
|
|
86
|
-
nullable_fields = ["description", "edit_comments", "agents_info"]
|
|
87
|
-
null_default_fields = []
|
|
88
|
-
|
|
85
|
+
optional_fields = set(["description", "edit_comments", "agents_info"])
|
|
86
|
+
nullable_fields = set(["description", "edit_comments", "agents_info"])
|
|
89
87
|
serialized = handler(self)
|
|
90
|
-
|
|
91
88
|
m = {}
|
|
92
89
|
|
|
93
90
|
for n, f in type(self).model_fields.items():
|
|
94
91
|
k = f.alias or n
|
|
95
92
|
val = serialized.get(k)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
):
|
|
109
|
-
m[k] = val
|
|
93
|
+
is_nullable_and_explicitly_set = (
|
|
94
|
+
k in nullable_fields
|
|
95
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
if val != UNSET_SENTINEL:
|
|
99
|
+
if (
|
|
100
|
+
val is not None
|
|
101
|
+
or k not in optional_fields
|
|
102
|
+
or is_nullable_and_explicitly_set
|
|
103
|
+
):
|
|
104
|
+
m[k] = val
|
|
110
105
|
|
|
111
106
|
return m
|
|
@@ -54,30 +54,25 @@ class VoiceGroupUpdateRequest(BaseModel):
|
|
|
54
54
|
|
|
55
55
|
@model_serializer(mode="wrap")
|
|
56
56
|
def serialize_model(self, handler):
|
|
57
|
-
optional_fields = ["description", "edit_comments"]
|
|
58
|
-
nullable_fields = ["description", "edit_comments"]
|
|
59
|
-
null_default_fields = []
|
|
60
|
-
|
|
57
|
+
optional_fields = set(["description", "edit_comments"])
|
|
58
|
+
nullable_fields = set(["description", "edit_comments"])
|
|
61
59
|
serialized = handler(self)
|
|
62
|
-
|
|
63
60
|
m = {}
|
|
64
61
|
|
|
65
62
|
for n, f in type(self).model_fields.items():
|
|
66
63
|
k = f.alias or n
|
|
67
64
|
val = serialized.get(k)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
):
|
|
81
|
-
m[k] = val
|
|
65
|
+
is_nullable_and_explicitly_set = (
|
|
66
|
+
k in nullable_fields
|
|
67
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
if val != UNSET_SENTINEL:
|
|
71
|
+
if (
|
|
72
|
+
val is not None
|
|
73
|
+
or k not in optional_fields
|
|
74
|
+
or is_nullable_and_explicitly_set
|
|
75
|
+
):
|
|
76
|
+
m[k] = val
|
|
82
77
|
|
|
83
78
|
return m
|
|
@@ -61,35 +61,27 @@ class VoiceSampleCreateRequest(BaseModel):
|
|
|
61
61
|
|
|
62
62
|
@model_serializer(mode="wrap")
|
|
63
63
|
def serialize_model(self, handler):
|
|
64
|
-
optional_fields =
|
|
65
|
-
"voice_speed",
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"apply_pronunciation_overrides",
|
|
69
|
-
]
|
|
70
|
-
nullable_fields = ["voice_speed", "voice_pitch"]
|
|
71
|
-
null_default_fields = []
|
|
72
|
-
|
|
64
|
+
optional_fields = set(
|
|
65
|
+
["voice_speed", "voice_pitch", "text", "apply_pronunciation_overrides"]
|
|
66
|
+
)
|
|
67
|
+
nullable_fields = set(["voice_speed", "voice_pitch"])
|
|
73
68
|
serialized = handler(self)
|
|
74
|
-
|
|
75
69
|
m = {}
|
|
76
70
|
|
|
77
71
|
for n, f in type(self).model_fields.items():
|
|
78
72
|
k = f.alias or n
|
|
79
73
|
val = serialized.get(k)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
):
|
|
93
|
-
m[k] = val
|
|
74
|
+
is_nullable_and_explicitly_set = (
|
|
75
|
+
k in nullable_fields
|
|
76
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
if val != UNSET_SENTINEL:
|
|
80
|
+
if (
|
|
81
|
+
val is not None
|
|
82
|
+
or k not in optional_fields
|
|
83
|
+
or is_nullable_and_explicitly_set
|
|
84
|
+
):
|
|
85
|
+
m[k] = val
|
|
94
86
|
|
|
95
87
|
return m
|
syllable_sdk/utils/__init__.py
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
3
|
+
from typing import TYPE_CHECKING, Callable, TypeVar
|
|
4
4
|
from importlib import import_module
|
|
5
|
+
import asyncio
|
|
5
6
|
import builtins
|
|
6
7
|
import sys
|
|
7
8
|
|
|
9
|
+
_T = TypeVar("_T")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T:
|
|
13
|
+
"""Run a synchronous function in a thread pool to avoid blocking the event loop."""
|
|
14
|
+
if sys.version_info >= (3, 9):
|
|
15
|
+
return await asyncio.to_thread(func, *args)
|
|
16
|
+
loop = asyncio.get_event_loop()
|
|
17
|
+
return await loop.run_in_executor(None, func, *args)
|
|
18
|
+
|
|
19
|
+
|
|
8
20
|
if TYPE_CHECKING:
|
|
9
21
|
from .annotations import get_discriminator
|
|
10
22
|
from .datetimes import parse_datetime
|
|
@@ -42,7 +54,6 @@ if TYPE_CHECKING:
|
|
|
42
54
|
validate_decimal,
|
|
43
55
|
validate_float,
|
|
44
56
|
validate_int,
|
|
45
|
-
validate_open_enum,
|
|
46
57
|
)
|
|
47
58
|
from .url import generate_url, template_url, remove_suffix
|
|
48
59
|
from .values import (
|
|
@@ -104,7 +115,6 @@ __all__ = [
|
|
|
104
115
|
"validate_const",
|
|
105
116
|
"validate_float",
|
|
106
117
|
"validate_int",
|
|
107
|
-
"validate_open_enum",
|
|
108
118
|
"cast_partial",
|
|
109
119
|
]
|
|
110
120
|
|
|
@@ -158,7 +168,6 @@ _dynamic_imports: dict[str, str] = {
|
|
|
158
168
|
"validate_const": ".serializers",
|
|
159
169
|
"validate_float": ".serializers",
|
|
160
170
|
"validate_int": ".serializers",
|
|
161
|
-
"validate_open_enum": ".serializers",
|
|
162
171
|
"cast_partial": ".values",
|
|
163
172
|
}
|
|
164
173
|
|
syllable_sdk/utils/enums.py
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import enum
|
|
4
4
|
import sys
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from pydantic_core import core_schema
|
|
8
|
+
|
|
5
9
|
|
|
6
10
|
class OpenEnumMeta(enum.EnumMeta):
|
|
7
11
|
# The __call__ method `boundary` kwarg was added in 3.11 and must be present
|
|
@@ -72,3 +76,59 @@ class OpenEnumMeta(enum.EnumMeta):
|
|
|
72
76
|
)
|
|
73
77
|
except ValueError:
|
|
74
78
|
return value
|
|
79
|
+
|
|
80
|
+
def __new__(mcs, name, bases, namespace, **kwargs):
|
|
81
|
+
cls = super().__new__(mcs, name, bases, namespace, **kwargs)
|
|
82
|
+
|
|
83
|
+
# Add __get_pydantic_core_schema__ to make open enums work correctly
|
|
84
|
+
# in union discrimination. In strict mode (used by Pydantic for unions),
|
|
85
|
+
# only known enum values match. In lax mode, unknown values are accepted.
|
|
86
|
+
def __get_pydantic_core_schema__(
|
|
87
|
+
cls_inner: Any, _source_type: Any, _handler: Any
|
|
88
|
+
) -> core_schema.CoreSchema:
|
|
89
|
+
# Create a validator that only accepts known enum values (for strict mode)
|
|
90
|
+
def validate_strict(v: Any) -> Any:
|
|
91
|
+
if isinstance(v, cls_inner):
|
|
92
|
+
return v
|
|
93
|
+
# Use the parent EnumMeta's __call__ which raises ValueError for unknown values
|
|
94
|
+
return enum.EnumMeta.__call__(cls_inner, v)
|
|
95
|
+
|
|
96
|
+
# Create a lax validator that accepts unknown values
|
|
97
|
+
def validate_lax(v: Any) -> Any:
|
|
98
|
+
if isinstance(v, cls_inner):
|
|
99
|
+
return v
|
|
100
|
+
try:
|
|
101
|
+
return enum.EnumMeta.__call__(cls_inner, v)
|
|
102
|
+
except ValueError:
|
|
103
|
+
# Return the raw value for unknown enum values
|
|
104
|
+
return v
|
|
105
|
+
|
|
106
|
+
# Determine the base type schema (str or int)
|
|
107
|
+
is_int_enum = False
|
|
108
|
+
for base in cls_inner.__mro__:
|
|
109
|
+
if base is int:
|
|
110
|
+
is_int_enum = True
|
|
111
|
+
break
|
|
112
|
+
if base is str:
|
|
113
|
+
break
|
|
114
|
+
|
|
115
|
+
base_schema = (
|
|
116
|
+
core_schema.int_schema()
|
|
117
|
+
if is_int_enum
|
|
118
|
+
else core_schema.str_schema()
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
# Use lax_or_strict_schema:
|
|
122
|
+
# - strict mode: only known enum values match (raises ValueError for unknown)
|
|
123
|
+
# - lax mode: accept any value, return enum member or raw value
|
|
124
|
+
return core_schema.lax_or_strict_schema(
|
|
125
|
+
lax_schema=core_schema.chain_schema(
|
|
126
|
+
[base_schema, core_schema.no_info_plain_validator_function(validate_lax)]
|
|
127
|
+
),
|
|
128
|
+
strict_schema=core_schema.chain_schema(
|
|
129
|
+
[base_schema, core_schema.no_info_plain_validator_function(validate_strict)]
|
|
130
|
+
),
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
setattr(cls, "__get_pydantic_core_schema__", classmethod(__get_pydantic_core_schema__))
|
|
134
|
+
return cls
|