syllable-sdk 0.44.17__py3-none-any.whl → 0.44.20__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/utils/__init__.py +0 -3
- 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.20.dist-info}/METADATA +1 -1
- {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.20.dist-info}/RECORD +8 -8
- {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.20.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.
|
|
6
|
+
__version__: str = "0.44.20"
|
|
7
7
|
__openapi_doc_version__: str = "0.0.3"
|
|
8
|
-
__gen_version__: str = "2.
|
|
9
|
-
__user_agent__: str = "speakeasy-sdk/python 0.44.
|
|
8
|
+
__gen_version__: str = "2.794.1"
|
|
9
|
+
__user_agent__: str = "speakeasy-sdk/python 0.44.20 2.794.1 0.0.3 syllable-sdk"
|
|
10
10
|
|
|
11
11
|
try:
|
|
12
12
|
if __package__ is not None:
|
syllable_sdk/utils/__init__.py
CHANGED
|
@@ -42,7 +42,6 @@ if TYPE_CHECKING:
|
|
|
42
42
|
validate_decimal,
|
|
43
43
|
validate_float,
|
|
44
44
|
validate_int,
|
|
45
|
-
validate_open_enum,
|
|
46
45
|
)
|
|
47
46
|
from .url import generate_url, template_url, remove_suffix
|
|
48
47
|
from .values import (
|
|
@@ -104,7 +103,6 @@ __all__ = [
|
|
|
104
103
|
"validate_const",
|
|
105
104
|
"validate_float",
|
|
106
105
|
"validate_int",
|
|
107
|
-
"validate_open_enum",
|
|
108
106
|
"cast_partial",
|
|
109
107
|
]
|
|
110
108
|
|
|
@@ -158,7 +156,6 @@ _dynamic_imports: dict[str, str] = {
|
|
|
158
156
|
"validate_const": ".serializers",
|
|
159
157
|
"validate_float": ".serializers",
|
|
160
158
|
"validate_int": ".serializers",
|
|
161
|
-
"validate_open_enum": ".serializers",
|
|
162
159
|
"cast_partial": ".values",
|
|
163
160
|
}
|
|
164
161
|
|
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
|
|
@@ -44,15 +44,15 @@ def serialize_request_body(
|
|
|
44
44
|
|
|
45
45
|
serialized_request_body = SerializedRequestBody(media_type)
|
|
46
46
|
|
|
47
|
-
if re.match(r"(application|text)
|
|
47
|
+
if re.match(r"^(application|text)\/([^+]+\+)*json.*", media_type) is not None:
|
|
48
48
|
serialized_request_body.content = marshal_json(request_body, request_body_type)
|
|
49
|
-
elif re.match(r"multipart\/.*", media_type) is not None:
|
|
49
|
+
elif re.match(r"^multipart\/.*", media_type) is not None:
|
|
50
50
|
(
|
|
51
51
|
serialized_request_body.media_type,
|
|
52
52
|
serialized_request_body.data,
|
|
53
53
|
serialized_request_body.files,
|
|
54
54
|
) = serialize_multipart_form(media_type, request_body)
|
|
55
|
-
elif re.match(r"application\/x-www-form-urlencoded.*", media_type) is not None:
|
|
55
|
+
elif re.match(r"^application\/x-www-form-urlencoded.*", media_type) is not None:
|
|
56
56
|
serialized_request_body.data = serialize_form_data(request_body)
|
|
57
57
|
elif isinstance(request_body, (bytes, bytearray, io.BytesIO, io.BufferedReader)):
|
|
58
58
|
serialized_request_body.content = request_body
|
|
@@ -102,26 +102,6 @@ def validate_int(b):
|
|
|
102
102
|
return int(b)
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
def validate_open_enum(is_int: bool):
|
|
106
|
-
def validate(e):
|
|
107
|
-
if e is None:
|
|
108
|
-
return None
|
|
109
|
-
|
|
110
|
-
if isinstance(e, Unset):
|
|
111
|
-
return e
|
|
112
|
-
|
|
113
|
-
if is_int:
|
|
114
|
-
if not isinstance(e, int):
|
|
115
|
-
raise ValueError("Expected int")
|
|
116
|
-
else:
|
|
117
|
-
if not isinstance(e, str):
|
|
118
|
-
raise ValueError("Expected string")
|
|
119
|
-
|
|
120
|
-
return e
|
|
121
|
-
|
|
122
|
-
return validate
|
|
123
|
-
|
|
124
|
-
|
|
125
105
|
def validate_const(v):
|
|
126
106
|
def validate(c):
|
|
127
107
|
# Optional[T] is a Union[T, None]
|
|
@@ -3,7 +3,7 @@ syllable_sdk/_hooks/__init__.py,sha256=9_7W5jAYw8rcO8Kfc-Ty-lB82BHfksAJJpVFb_UeU
|
|
|
3
3
|
syllable_sdk/_hooks/registration.py,sha256=1QZB41w6If7I9dXiOSQx6dhSc6BPWrnI5Q5bMOr4iVA,624
|
|
4
4
|
syllable_sdk/_hooks/sdkhooks.py,sha256=aRu2TMpxilLKDrG6EIy6uQd6IrBH7kaHOoVkd7GIcus,2562
|
|
5
5
|
syllable_sdk/_hooks/types.py,sha256=uwJkn18g4_rLZhVtKdE6Ed5YcCjGWSqVgN9-PWqV7Ho,3053
|
|
6
|
-
syllable_sdk/_version.py,sha256=
|
|
6
|
+
syllable_sdk/_version.py,sha256=dSc0yPYX4SClXU72FVKHgaWw4CWMM6Sc9qcazJRWonQ,470
|
|
7
7
|
syllable_sdk/agents.py,sha256=5X4d7rstMwWCUTmNH76eX3dTFLGvUtO5fb36hYtXo9w,47252
|
|
8
8
|
syllable_sdk/basesdk.py,sha256=OZv9Uydmc41Bm5rsLYX8yZdHFZxLCS8f0lABAZkQNs0,12473
|
|
9
9
|
syllable_sdk/batches.py,sha256=jAL-2jfZqhuVGWd6gG7hzPk7mG_X1M1AuLsO14QRzM8,73743
|
|
@@ -420,26 +420,26 @@ syllable_sdk/twilio.py,sha256=suZO3rlKl-mBqqF68EzqwJ2WcSfH0qwRzP1DQUCZdNc,24300
|
|
|
420
420
|
syllable_sdk/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,377
|
|
421
421
|
syllable_sdk/types/basemodel.py,sha256=MULDVywSVxR0lo8h5wMnXnkBFXLK5DXmBKD1eXAVKgE,2879
|
|
422
422
|
syllable_sdk/users.py,sha256=jm_1MGY6X5_3GL9c15F3_E_YaA_A-fzlBS3heKssX74,53983
|
|
423
|
-
syllable_sdk/utils/__init__.py,sha256=
|
|
423
|
+
syllable_sdk/utils/__init__.py,sha256=rIeddnHALPXhBP408MS8XDH7kO53V3kiXv25yTOv2UY,5765
|
|
424
424
|
syllable_sdk/utils/annotations.py,sha256=FvfvVTUj8TUclm4HbGgY5yi2Ap7EzGmu2UPFU4FwC1w,2755
|
|
425
425
|
syllable_sdk/utils/datetimes.py,sha256=oppAA5e3V35pQov1-FNLKxAaNF1_XWi-bQtyjjql3H8,855
|
|
426
|
-
syllable_sdk/utils/enums.py,sha256=
|
|
426
|
+
syllable_sdk/utils/enums.py,sha256=wAgjjw7USk6IRpN2UJE5Sl8rfmEFiRwyrwMhhznnDIc,5147
|
|
427
427
|
syllable_sdk/utils/eventstreaming.py,sha256=SgFqMcUOYKlrTQ4gAp_dNcKLvDXukeiEMNU3DP8mXk8,6692
|
|
428
428
|
syllable_sdk/utils/forms.py,sha256=HzltKnYH5-ULoEz8JYfIUcw13I9dMZjw-1lQKNkH5fw,7178
|
|
429
429
|
syllable_sdk/utils/headers.py,sha256=cPxWSmUILrefTGDzTH1Hdj7_Hlsj-EY6K5Tyc4iH4dk,3663
|
|
430
430
|
syllable_sdk/utils/logger.py,sha256=nPc714a9tLm0QMEvK0KYGr2Sko2xjbqq-tPnNGLpFIE,682
|
|
431
431
|
syllable_sdk/utils/metadata.py,sha256=Per2KFXXOqOtoUWXrlIfjrSrBg199KrRW0nKQDgHIBU,3136
|
|
432
432
|
syllable_sdk/utils/queryparams.py,sha256=dxtFQDJ8dlbm_hh_fhdFC1qMWOOHR2MszNycKmME8bQ,6326
|
|
433
|
-
syllable_sdk/utils/requestbodies.py,sha256=
|
|
433
|
+
syllable_sdk/utils/requestbodies.py,sha256=7bi6slrGKAbmfg4BoOUjSVGrbg9NvIFvCKUEgjwyJEw,2108
|
|
434
434
|
syllable_sdk/utils/retries.py,sha256=stPJEFtmK8gOM6aT0DpEJp9Z39oXX1-8I69jpa2n3Ww,8130
|
|
435
435
|
syllable_sdk/utils/security.py,sha256=ISsENQVLMQAPDsJ09g-m67Bs9YaS1-H-Hhw89RBJA3E,6037
|
|
436
|
-
syllable_sdk/utils/serializers.py,sha256=
|
|
436
|
+
syllable_sdk/utils/serializers.py,sha256=ueUga5yv_08r10eQiaVIk0o726j0TRno8603jUksasA,5585
|
|
437
437
|
syllable_sdk/utils/unmarshal_json_response.py,sha256=DwB7Hxdo9JjWFMqsxsTznV6d_MIlLLLz-tq04at_X9s,877
|
|
438
438
|
syllable_sdk/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
|
|
439
439
|
syllable_sdk/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
|
|
440
440
|
syllable_sdk/v1.py,sha256=dA67n3aRVr-3VqqW4sFcIAqPRpEwsQqStv9EfJ-EPCc,53980
|
|
441
441
|
syllable_sdk/voice_groups.py,sha256=ChjGJJW1n7IHfiSenzi-HiIa51jHFjUAO5L5yzNMPFY,48944
|
|
442
442
|
syllable_sdk/workflows.py,sha256=vXaEaw29tOeMqUIBiJqN9S2XW4B3NP_ZDoUPMVDh_Ck,65385
|
|
443
|
-
syllable_sdk-0.44.
|
|
444
|
-
syllable_sdk-0.44.
|
|
445
|
-
syllable_sdk-0.44.
|
|
443
|
+
syllable_sdk-0.44.20.dist-info/METADATA,sha256=SW4EMalgyOdf3RJOT_0pQ7zYY6nPWIA1Yc9A0HGq8_g,50234
|
|
444
|
+
syllable_sdk-0.44.20.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
445
|
+
syllable_sdk-0.44.20.dist-info/RECORD,,
|
|
File without changes
|