unique_toolkit 0.7.7__py3-none-any.whl → 1.23.0__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.
Potentially problematic release.
This version of unique_toolkit might be problematic. Click here for more details.
- unique_toolkit/__init__.py +28 -1
- unique_toolkit/_common/api_calling/human_verification_manager.py +343 -0
- unique_toolkit/_common/base_model_type_attribute.py +303 -0
- unique_toolkit/_common/chunk_relevancy_sorter/config.py +49 -0
- unique_toolkit/_common/chunk_relevancy_sorter/exception.py +5 -0
- unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +46 -0
- unique_toolkit/_common/chunk_relevancy_sorter/service.py +374 -0
- unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +275 -0
- unique_toolkit/_common/default_language_model.py +12 -0
- unique_toolkit/_common/docx_generator/__init__.py +7 -0
- unique_toolkit/_common/docx_generator/config.py +12 -0
- unique_toolkit/_common/docx_generator/schemas.py +80 -0
- unique_toolkit/_common/docx_generator/service.py +252 -0
- unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- unique_toolkit/_common/endpoint_builder.py +305 -0
- unique_toolkit/_common/endpoint_requestor.py +430 -0
- unique_toolkit/_common/exception.py +24 -0
- unique_toolkit/_common/feature_flags/schema.py +9 -0
- unique_toolkit/_common/pydantic/rjsf_tags.py +936 -0
- unique_toolkit/_common/pydantic_helpers.py +154 -0
- unique_toolkit/_common/referencing.py +53 -0
- unique_toolkit/_common/string_utilities.py +140 -0
- unique_toolkit/_common/tests/test_referencing.py +521 -0
- unique_toolkit/_common/tests/test_string_utilities.py +506 -0
- unique_toolkit/_common/token/image_token_counting.py +67 -0
- unique_toolkit/_common/token/token_counting.py +204 -0
- unique_toolkit/_common/utils/__init__.py +1 -0
- unique_toolkit/_common/utils/files.py +43 -0
- unique_toolkit/_common/utils/structured_output/__init__.py +1 -0
- unique_toolkit/_common/utils/structured_output/schema.py +5 -0
- unique_toolkit/_common/utils/write_configuration.py +51 -0
- unique_toolkit/_common/validators.py +101 -4
- unique_toolkit/agentic/__init__.py +1 -0
- unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +28 -0
- unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +278 -0
- unique_toolkit/agentic/evaluation/config.py +36 -0
- unique_toolkit/{evaluators → agentic/evaluation}/context_relevancy/prompts.py +25 -0
- unique_toolkit/agentic/evaluation/context_relevancy/schema.py +80 -0
- unique_toolkit/agentic/evaluation/context_relevancy/service.py +273 -0
- unique_toolkit/agentic/evaluation/evaluation_manager.py +218 -0
- unique_toolkit/agentic/evaluation/hallucination/constants.py +61 -0
- unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +111 -0
- unique_toolkit/{evaluators → agentic/evaluation}/hallucination/prompts.py +1 -1
- unique_toolkit/{evaluators → agentic/evaluation}/hallucination/service.py +16 -15
- unique_toolkit/{evaluators → agentic/evaluation}/hallucination/utils.py +30 -20
- unique_toolkit/{evaluators → agentic/evaluation}/output_parser.py +20 -2
- unique_toolkit/{evaluators → agentic/evaluation}/schemas.py +27 -7
- unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +253 -0
- unique_toolkit/agentic/evaluation/tests/test_output_parser.py +87 -0
- unique_toolkit/agentic/history_manager/history_construction_with_contents.py +297 -0
- unique_toolkit/agentic/history_manager/history_manager.py +242 -0
- unique_toolkit/agentic/history_manager/loop_token_reducer.py +484 -0
- unique_toolkit/agentic/history_manager/utils.py +96 -0
- unique_toolkit/agentic/postprocessor/postprocessor_manager.py +212 -0
- unique_toolkit/agentic/reference_manager/reference_manager.py +103 -0
- unique_toolkit/agentic/responses_api/__init__.py +19 -0
- unique_toolkit/agentic/responses_api/postprocessors/code_display.py +63 -0
- unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +145 -0
- unique_toolkit/agentic/responses_api/stream_handler.py +15 -0
- unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +141 -0
- unique_toolkit/agentic/thinking_manager/thinking_manager.py +103 -0
- unique_toolkit/agentic/tools/__init__.py +1 -0
- unique_toolkit/agentic/tools/a2a/__init__.py +36 -0
- unique_toolkit/agentic/tools/a2a/config.py +17 -0
- unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +15 -0
- unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +66 -0
- unique_toolkit/agentic/tools/a2a/evaluation/config.py +55 -0
- unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +260 -0
- unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +9 -0
- unique_toolkit/agentic/tools/a2a/manager.py +55 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +21 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +185 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +73 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/config.py +45 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/display.py +180 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/references.py +101 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +1335 -0
- unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +603 -0
- unique_toolkit/agentic/tools/a2a/prompts.py +46 -0
- unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +6 -0
- unique_toolkit/agentic/tools/a2a/response_watcher/service.py +91 -0
- unique_toolkit/agentic/tools/a2a/tool/__init__.py +4 -0
- unique_toolkit/agentic/tools/a2a/tool/_memory.py +26 -0
- unique_toolkit/agentic/tools/a2a/tool/_schema.py +9 -0
- unique_toolkit/agentic/tools/a2a/tool/config.py +73 -0
- unique_toolkit/agentic/tools/a2a/tool/service.py +306 -0
- unique_toolkit/agentic/tools/agent_chunks_hanlder.py +65 -0
- unique_toolkit/agentic/tools/config.py +167 -0
- unique_toolkit/agentic/tools/factory.py +44 -0
- unique_toolkit/agentic/tools/mcp/__init__.py +4 -0
- unique_toolkit/agentic/tools/mcp/manager.py +71 -0
- unique_toolkit/agentic/tools/mcp/models.py +28 -0
- unique_toolkit/agentic/tools/mcp/tool_wrapper.py +234 -0
- unique_toolkit/agentic/tools/openai_builtin/__init__.py +11 -0
- unique_toolkit/agentic/tools/openai_builtin/base.py +30 -0
- unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +8 -0
- unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +57 -0
- unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +230 -0
- unique_toolkit/agentic/tools/openai_builtin/manager.py +62 -0
- unique_toolkit/agentic/tools/schemas.py +141 -0
- unique_toolkit/agentic/tools/test/test_mcp_manager.py +536 -0
- unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +445 -0
- unique_toolkit/agentic/tools/tool.py +183 -0
- unique_toolkit/agentic/tools/tool_manager.py +523 -0
- unique_toolkit/agentic/tools/tool_progress_reporter.py +285 -0
- unique_toolkit/agentic/tools/utils/__init__.py +19 -0
- unique_toolkit/agentic/tools/utils/execution/__init__.py +1 -0
- unique_toolkit/agentic/tools/utils/execution/execution.py +286 -0
- unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- unique_toolkit/agentic/tools/utils/source_handling/schema.py +21 -0
- unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +207 -0
- unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +216 -0
- unique_toolkit/app/__init__.py +6 -0
- unique_toolkit/app/dev_util.py +180 -0
- unique_toolkit/app/init_sdk.py +32 -1
- unique_toolkit/app/schemas.py +198 -31
- unique_toolkit/app/unique_settings.py +367 -0
- unique_toolkit/chat/__init__.py +8 -1
- unique_toolkit/chat/deprecated/service.py +232 -0
- unique_toolkit/chat/functions.py +642 -77
- unique_toolkit/chat/rendering.py +34 -0
- unique_toolkit/chat/responses_api.py +461 -0
- unique_toolkit/chat/schemas.py +133 -2
- unique_toolkit/chat/service.py +115 -767
- unique_toolkit/content/functions.py +153 -4
- unique_toolkit/content/schemas.py +122 -15
- unique_toolkit/content/service.py +278 -44
- unique_toolkit/content/smart_rules.py +301 -0
- unique_toolkit/content/utils.py +8 -3
- unique_toolkit/embedding/service.py +102 -11
- unique_toolkit/framework_utilities/__init__.py +1 -0
- unique_toolkit/framework_utilities/langchain/client.py +71 -0
- unique_toolkit/framework_utilities/langchain/history.py +19 -0
- unique_toolkit/framework_utilities/openai/__init__.py +6 -0
- unique_toolkit/framework_utilities/openai/client.py +83 -0
- unique_toolkit/framework_utilities/openai/message_builder.py +229 -0
- unique_toolkit/framework_utilities/utils.py +23 -0
- unique_toolkit/language_model/__init__.py +3 -0
- unique_toolkit/language_model/builder.py +27 -11
- unique_toolkit/language_model/default_language_model.py +3 -0
- unique_toolkit/language_model/functions.py +327 -43
- unique_toolkit/language_model/infos.py +992 -50
- unique_toolkit/language_model/reference.py +242 -0
- unique_toolkit/language_model/schemas.py +475 -48
- unique_toolkit/language_model/service.py +228 -27
- unique_toolkit/protocols/support.py +145 -0
- unique_toolkit/services/__init__.py +7 -0
- unique_toolkit/services/chat_service.py +1630 -0
- unique_toolkit/services/knowledge_base.py +861 -0
- unique_toolkit/short_term_memory/service.py +178 -41
- unique_toolkit/smart_rules/__init__.py +0 -0
- unique_toolkit/smart_rules/compile.py +56 -0
- unique_toolkit/test_utilities/events.py +197 -0
- {unique_toolkit-0.7.7.dist-info → unique_toolkit-1.23.0.dist-info}/METADATA +606 -7
- unique_toolkit-1.23.0.dist-info/RECORD +182 -0
- unique_toolkit/evaluators/__init__.py +0 -1
- unique_toolkit/evaluators/config.py +0 -35
- unique_toolkit/evaluators/constants.py +0 -1
- unique_toolkit/evaluators/context_relevancy/constants.py +0 -32
- unique_toolkit/evaluators/context_relevancy/service.py +0 -53
- unique_toolkit/evaluators/context_relevancy/utils.py +0 -142
- unique_toolkit/evaluators/hallucination/constants.py +0 -41
- unique_toolkit-0.7.7.dist-info/RECORD +0 -64
- /unique_toolkit/{evaluators → agentic/evaluation}/exception.py +0 -0
- {unique_toolkit-0.7.7.dist-info → unique_toolkit-1.23.0.dist-info}/LICENSE +0 -0
- {unique_toolkit-0.7.7.dist-info → unique_toolkit-1.23.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This module provides a minimal framework for building endpoint classes such that a client can use
|
|
3
|
+
the endpoints without having to know the details of the endpoints.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import warnings
|
|
7
|
+
from enum import StrEnum
|
|
8
|
+
from string import Template
|
|
9
|
+
from typing import (
|
|
10
|
+
Any,
|
|
11
|
+
Callable,
|
|
12
|
+
Generic,
|
|
13
|
+
ParamSpec,
|
|
14
|
+
Protocol,
|
|
15
|
+
TypeVar,
|
|
16
|
+
cast,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
from pydantic import BaseModel, ValidationError
|
|
20
|
+
|
|
21
|
+
# Paramspecs
|
|
22
|
+
PayloadParamSpec = ParamSpec("PayloadParamSpec")
|
|
23
|
+
PathParamsSpec = ParamSpec("PathParamsSpec")
|
|
24
|
+
|
|
25
|
+
# Type variables
|
|
26
|
+
ResponseType = TypeVar("ResponseType", bound=BaseModel, covariant=True)
|
|
27
|
+
PathParamsType = TypeVar("PathParamsType", bound=BaseModel)
|
|
28
|
+
PayloadType = TypeVar("PayloadType", bound=BaseModel)
|
|
29
|
+
|
|
30
|
+
# Helper type to extract constructor parameters
|
|
31
|
+
|
|
32
|
+
# Type for the constructor of a Pydantic model
|
|
33
|
+
ModelConstructor = Callable[..., BaseModel]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class HttpMethods(StrEnum):
|
|
37
|
+
GET = "GET"
|
|
38
|
+
POST = "POST"
|
|
39
|
+
PUT = "PUT"
|
|
40
|
+
DELETE = "DELETE"
|
|
41
|
+
PATCH = "PATCH"
|
|
42
|
+
OPTIONS = "OPTIONS"
|
|
43
|
+
HEAD = "HEAD"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# Backward compatibility TODO: Remove in 2.0.0.
|
|
47
|
+
EndpointMethods = HttpMethods
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class ResponseValidationException(Exception):
|
|
51
|
+
"""
|
|
52
|
+
This exception is raised when the response validation fails.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
def __init__(
|
|
56
|
+
self, operation_name: str, response: dict[str, Any], pydantic_error: str
|
|
57
|
+
):
|
|
58
|
+
super().__init__(
|
|
59
|
+
f"Response validation failed for operation {operation_name}\n"
|
|
60
|
+
f"Response: {response}\n"
|
|
61
|
+
f"Pydantic error: {pydantic_error}"
|
|
62
|
+
)
|
|
63
|
+
self._operation_name = operation_name
|
|
64
|
+
self._response = response
|
|
65
|
+
self._pydantic_error = pydantic_error
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def operation_name(self) -> str:
|
|
69
|
+
return self._operation_name
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def response(self) -> dict[str, Any]:
|
|
73
|
+
return self._response
|
|
74
|
+
|
|
75
|
+
@property
|
|
76
|
+
def pydantic_error(self) -> str:
|
|
77
|
+
return self._pydantic_error
|
|
78
|
+
|
|
79
|
+
def __str__(self):
|
|
80
|
+
return (
|
|
81
|
+
f"Response validation failed for {self._operation_name}\n"
|
|
82
|
+
+ f"Response: {self._response}"
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class ApiOperationProtocol(
|
|
87
|
+
Protocol,
|
|
88
|
+
Generic[
|
|
89
|
+
PathParamsSpec,
|
|
90
|
+
PathParamsType,
|
|
91
|
+
PayloadParamSpec,
|
|
92
|
+
PayloadType,
|
|
93
|
+
ResponseType,
|
|
94
|
+
],
|
|
95
|
+
):
|
|
96
|
+
@staticmethod
|
|
97
|
+
def path_dump_options() -> dict[str, Any]: ...
|
|
98
|
+
|
|
99
|
+
@staticmethod
|
|
100
|
+
def path_params_model() -> type[PathParamsType]: ...
|
|
101
|
+
|
|
102
|
+
@staticmethod
|
|
103
|
+
def payload_dump_options() -> dict[str, Any]: ...
|
|
104
|
+
|
|
105
|
+
@staticmethod
|
|
106
|
+
def payload_model() -> type[PayloadType]: ...
|
|
107
|
+
|
|
108
|
+
@staticmethod
|
|
109
|
+
def response_validate_options() -> dict[str, Any]: ...
|
|
110
|
+
|
|
111
|
+
@staticmethod
|
|
112
|
+
def response_model() -> type[ResponseType]: ...
|
|
113
|
+
|
|
114
|
+
@staticmethod
|
|
115
|
+
def create_path(
|
|
116
|
+
*args: PathParamsSpec.args, **kwargs: PathParamsSpec.kwargs
|
|
117
|
+
) -> str: ...
|
|
118
|
+
|
|
119
|
+
@staticmethod
|
|
120
|
+
def create_path_from_model(
|
|
121
|
+
path_params: PathParamsType, *, model_dump_options: dict | None = None
|
|
122
|
+
) -> str: ...
|
|
123
|
+
|
|
124
|
+
@staticmethod
|
|
125
|
+
def create_payload(
|
|
126
|
+
*args: PayloadParamSpec.args, **kwargs: PayloadParamSpec.kwargs
|
|
127
|
+
) -> dict[str, Any]: ...
|
|
128
|
+
|
|
129
|
+
@staticmethod
|
|
130
|
+
def create_payload_from_model(
|
|
131
|
+
payload: PayloadType, *, model_dump_options: dict | None = None
|
|
132
|
+
) -> dict[str, Any]: ...
|
|
133
|
+
|
|
134
|
+
@staticmethod
|
|
135
|
+
def handle_response(
|
|
136
|
+
response: dict[str, Any], *, model_validate_options: dict | None = None
|
|
137
|
+
) -> ResponseType: ...
|
|
138
|
+
|
|
139
|
+
@staticmethod
|
|
140
|
+
def request_method() -> EndpointMethods: ...
|
|
141
|
+
|
|
142
|
+
@staticmethod
|
|
143
|
+
def models_from_combined(
|
|
144
|
+
combined: dict[str, Any],
|
|
145
|
+
) -> tuple[PathParamsType, PayloadType]: ...
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
# Model for any client to implement
|
|
149
|
+
def build_api_operation(
|
|
150
|
+
*,
|
|
151
|
+
method: HttpMethods,
|
|
152
|
+
path_template: Template,
|
|
153
|
+
path_params_constructor: Callable[PathParamsSpec, PathParamsType],
|
|
154
|
+
payload_constructor: Callable[PayloadParamSpec, PayloadType],
|
|
155
|
+
response_model_type: type[ResponseType],
|
|
156
|
+
payload_dump_options: dict | None = None,
|
|
157
|
+
path_dump_options: dict | None = None,
|
|
158
|
+
response_validate_options: dict | None = None,
|
|
159
|
+
dump_options: dict | None = None, # Deprecated
|
|
160
|
+
) -> type[
|
|
161
|
+
ApiOperationProtocol[
|
|
162
|
+
PathParamsSpec,
|
|
163
|
+
PathParamsType,
|
|
164
|
+
PayloadParamSpec,
|
|
165
|
+
PayloadType,
|
|
166
|
+
ResponseType,
|
|
167
|
+
]
|
|
168
|
+
]:
|
|
169
|
+
"""Generate a class with static methods for endpoint handling.
|
|
170
|
+
|
|
171
|
+
Uses separate models for path parameters and request body for clean API design.
|
|
172
|
+
|
|
173
|
+
Returns a class with static methods:
|
|
174
|
+
- create_url: Creates URL from path parameters
|
|
175
|
+
- create_payload: Creates request body payload
|
|
176
|
+
"""
|
|
177
|
+
|
|
178
|
+
# Verify that the path_params_constructor and payload_constructor are valid pydantic models
|
|
179
|
+
if not dump_options:
|
|
180
|
+
dump_options = {
|
|
181
|
+
"exclude_unset": True,
|
|
182
|
+
"by_alias": True,
|
|
183
|
+
"exclude_defaults": True,
|
|
184
|
+
}
|
|
185
|
+
else:
|
|
186
|
+
warnings.warn(
|
|
187
|
+
"dump_options is deprecated. Use payload_dump_options instead.",
|
|
188
|
+
DeprecationWarning,
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
class Operation(ApiOperationProtocol):
|
|
192
|
+
@staticmethod
|
|
193
|
+
def path_dump_options() -> dict[str, Any]:
|
|
194
|
+
return path_dump_options or {}
|
|
195
|
+
|
|
196
|
+
@staticmethod
|
|
197
|
+
def path_params_model() -> type[PathParamsType]:
|
|
198
|
+
return cast(type[PathParamsType], path_params_constructor)
|
|
199
|
+
|
|
200
|
+
@staticmethod
|
|
201
|
+
def payload_dump_options() -> dict[str, Any]:
|
|
202
|
+
return payload_dump_options or {}
|
|
203
|
+
|
|
204
|
+
@staticmethod
|
|
205
|
+
def payload_model() -> type[PayloadType]:
|
|
206
|
+
return cast(type[PayloadType], payload_constructor)
|
|
207
|
+
|
|
208
|
+
@staticmethod
|
|
209
|
+
def response_validate_options() -> dict[str, Any]:
|
|
210
|
+
return response_validate_options or {}
|
|
211
|
+
|
|
212
|
+
@staticmethod
|
|
213
|
+
def response_model() -> type[ResponseType]:
|
|
214
|
+
return response_model_type
|
|
215
|
+
|
|
216
|
+
@staticmethod
|
|
217
|
+
def path_template() -> Template:
|
|
218
|
+
return path_template
|
|
219
|
+
|
|
220
|
+
@staticmethod
|
|
221
|
+
def create_path_from_model(
|
|
222
|
+
path_params: PathParamsType, *, model_dump_options: dict | None = None
|
|
223
|
+
) -> str:
|
|
224
|
+
if model_dump_options is None:
|
|
225
|
+
if path_dump_options is None:
|
|
226
|
+
model_dump_options = dump_options
|
|
227
|
+
else:
|
|
228
|
+
model_dump_options = path_dump_options
|
|
229
|
+
|
|
230
|
+
return path_template.substitute(
|
|
231
|
+
**path_params.model_dump(**model_dump_options)
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
@staticmethod
|
|
235
|
+
def create_path(
|
|
236
|
+
*args: PathParamsSpec.args, **kwargs: PathParamsSpec.kwargs
|
|
237
|
+
) -> str:
|
|
238
|
+
model = Operation.path_params_model()(*args, **kwargs)
|
|
239
|
+
return Operation.create_path_from_model(model)
|
|
240
|
+
|
|
241
|
+
@staticmethod
|
|
242
|
+
def create_payload(
|
|
243
|
+
*args: PayloadParamSpec.args,
|
|
244
|
+
**kwargs: PayloadParamSpec.kwargs,
|
|
245
|
+
) -> dict[str, Any]:
|
|
246
|
+
"""Create request body payload."""
|
|
247
|
+
if payload_dump_options is None:
|
|
248
|
+
model_dump_options = dump_options
|
|
249
|
+
else:
|
|
250
|
+
model_dump_options = payload_dump_options
|
|
251
|
+
|
|
252
|
+
request_model = Operation.payload_model()(*args, **kwargs)
|
|
253
|
+
return request_model.model_dump(**model_dump_options)
|
|
254
|
+
|
|
255
|
+
@staticmethod
|
|
256
|
+
def create_payload_from_model(
|
|
257
|
+
payload: PayloadType, *, model_dump_options: dict | None = None
|
|
258
|
+
) -> dict[str, Any]:
|
|
259
|
+
if model_dump_options is None:
|
|
260
|
+
if payload_dump_options is None:
|
|
261
|
+
model_dump_options = dump_options
|
|
262
|
+
else:
|
|
263
|
+
model_dump_options = payload_dump_options
|
|
264
|
+
|
|
265
|
+
return payload.model_dump(**model_dump_options)
|
|
266
|
+
|
|
267
|
+
@staticmethod
|
|
268
|
+
def handle_response(
|
|
269
|
+
response: dict[str, Any],
|
|
270
|
+
*,
|
|
271
|
+
model_validate_options: dict[str, Any] | None = None,
|
|
272
|
+
) -> ResponseType:
|
|
273
|
+
if model_validate_options is None:
|
|
274
|
+
if response_validate_options is None:
|
|
275
|
+
model_validate_options = {}
|
|
276
|
+
else:
|
|
277
|
+
model_validate_options = response_validate_options
|
|
278
|
+
try:
|
|
279
|
+
return Operation.response_model().model_validate(
|
|
280
|
+
response, **model_validate_options
|
|
281
|
+
)
|
|
282
|
+
except ValidationError as e:
|
|
283
|
+
raise ResponseValidationException(
|
|
284
|
+
operation_name=Operation.__name__,
|
|
285
|
+
response=response,
|
|
286
|
+
pydantic_error=str(e),
|
|
287
|
+
) from e
|
|
288
|
+
|
|
289
|
+
@staticmethod
|
|
290
|
+
def request_method() -> HttpMethods:
|
|
291
|
+
return method
|
|
292
|
+
|
|
293
|
+
@staticmethod
|
|
294
|
+
def models_from_combined(
|
|
295
|
+
combined: dict[str, Any],
|
|
296
|
+
) -> tuple[PathParamsType, PayloadType]:
|
|
297
|
+
path_params = Operation.path_params_model().model_validate(
|
|
298
|
+
combined, by_alias=True, by_name=True
|
|
299
|
+
)
|
|
300
|
+
payload = Operation.payload_model().model_validate(
|
|
301
|
+
combined, by_alias=True, by_name=True
|
|
302
|
+
)
|
|
303
|
+
return path_params, payload
|
|
304
|
+
|
|
305
|
+
return Operation
|