mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-18 07:07:46 +01:00
220 lines
5.1 KiB
Python
220 lines
5.1 KiB
Python
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
|
|
from decimal import Decimal
|
|
import json
|
|
from typing import Any, Dict, List, Union, get_args
|
|
import httpx
|
|
from typing_extensions import get_origin
|
|
from pydantic import ConfigDict, create_model
|
|
from pydantic_core import from_json
|
|
from typing_inspection.typing_objects import is_union
|
|
|
|
from ..types.basemodel import BaseModel, Nullable, OptionalNullable, Unset
|
|
|
|
|
|
def serialize_decimal(as_str: bool):
|
|
def serialize(d):
|
|
# Optional[T] is a Union[T, None]
|
|
if is_union(type(d)) and type(None) in get_args(type(d)) and d is None:
|
|
return None
|
|
if isinstance(d, Unset):
|
|
return d
|
|
|
|
if not isinstance(d, Decimal):
|
|
raise ValueError("Expected Decimal object")
|
|
|
|
return str(d) if as_str else float(d)
|
|
|
|
return serialize
|
|
|
|
|
|
def validate_decimal(d):
|
|
if d is None:
|
|
return None
|
|
|
|
if isinstance(d, (Decimal, Unset)):
|
|
return d
|
|
|
|
if not isinstance(d, (str, int, float)):
|
|
raise ValueError("Expected string, int or float")
|
|
|
|
return Decimal(str(d))
|
|
|
|
|
|
def serialize_float(as_str: bool):
|
|
def serialize(f):
|
|
# Optional[T] is a Union[T, None]
|
|
if is_union(type(f)) and type(None) in get_args(type(f)) and f is None:
|
|
return None
|
|
if isinstance(f, Unset):
|
|
return f
|
|
|
|
if not isinstance(f, float):
|
|
raise ValueError("Expected float")
|
|
|
|
return str(f) if as_str else f
|
|
|
|
return serialize
|
|
|
|
|
|
def validate_float(f):
|
|
if f is None:
|
|
return None
|
|
|
|
if isinstance(f, (float, Unset)):
|
|
return f
|
|
|
|
if not isinstance(f, str):
|
|
raise ValueError("Expected string")
|
|
|
|
return float(f)
|
|
|
|
|
|
def serialize_int(as_str: bool):
|
|
def serialize(i):
|
|
# Optional[T] is a Union[T, None]
|
|
if is_union(type(i)) and type(None) in get_args(type(i)) and i is None:
|
|
return None
|
|
if isinstance(i, Unset):
|
|
return i
|
|
|
|
if not isinstance(i, int):
|
|
raise ValueError("Expected int")
|
|
|
|
return str(i) if as_str else i
|
|
|
|
return serialize
|
|
|
|
|
|
def validate_int(b):
|
|
if b is None:
|
|
return None
|
|
|
|
if isinstance(b, (int, Unset)):
|
|
return b
|
|
|
|
if not isinstance(b, str):
|
|
raise ValueError("Expected string")
|
|
|
|
return int(b)
|
|
|
|
|
|
def validate_open_enum(is_int: bool):
|
|
def validate(e):
|
|
if e is None:
|
|
return None
|
|
|
|
if isinstance(e, Unset):
|
|
return e
|
|
|
|
if is_int:
|
|
if not isinstance(e, int):
|
|
raise ValueError("Expected int")
|
|
else:
|
|
if not isinstance(e, str):
|
|
raise ValueError("Expected string")
|
|
|
|
return e
|
|
|
|
return validate
|
|
|
|
|
|
def validate_const(v):
|
|
def validate(c):
|
|
# Optional[T] is a Union[T, None]
|
|
if is_union(type(c)) and type(None) in get_args(type(c)) and c is None:
|
|
return None
|
|
|
|
if v != c:
|
|
raise ValueError(f"Expected {v}")
|
|
|
|
return c
|
|
|
|
return validate
|
|
|
|
|
|
def unmarshal_json(raw, typ: Any) -> Any:
|
|
return unmarshal(from_json(raw), typ)
|
|
|
|
|
|
def unmarshal(val, typ: Any) -> Any:
|
|
unmarshaller = create_model(
|
|
"Unmarshaller",
|
|
body=(typ, ...),
|
|
__config__=ConfigDict(populate_by_name=True, arbitrary_types_allowed=True),
|
|
)
|
|
|
|
m = unmarshaller(body=val)
|
|
|
|
# pyright: ignore[reportAttributeAccessIssue]
|
|
return m.body # type: ignore
|
|
|
|
|
|
def marshal_json(val, typ):
|
|
if is_nullable(typ) and val is None:
|
|
return "null"
|
|
|
|
marshaller = create_model(
|
|
"Marshaller",
|
|
body=(typ, ...),
|
|
__config__=ConfigDict(populate_by_name=True, arbitrary_types_allowed=True),
|
|
)
|
|
|
|
m = marshaller(body=val)
|
|
|
|
d = m.model_dump(by_alias=True, mode="json", exclude_none=True)
|
|
|
|
if len(d) == 0:
|
|
return ""
|
|
|
|
return json.dumps(d[next(iter(d))], separators=(",", ":"))
|
|
|
|
|
|
def is_nullable(field):
|
|
origin = get_origin(field)
|
|
if origin is Nullable or origin is OptionalNullable:
|
|
return True
|
|
|
|
if not origin is Union or type(None) not in get_args(field):
|
|
return False
|
|
|
|
for arg in get_args(field):
|
|
if get_origin(arg) is Nullable or get_origin(arg) is OptionalNullable:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def stream_to_text(stream: httpx.Response) -> str:
|
|
return "".join(stream.iter_text())
|
|
|
|
|
|
async def stream_to_text_async(stream: httpx.Response) -> str:
|
|
return "".join([chunk async for chunk in stream.aiter_text()])
|
|
|
|
|
|
def stream_to_bytes(stream: httpx.Response) -> bytes:
|
|
return stream.content
|
|
|
|
|
|
async def stream_to_bytes_async(stream: httpx.Response) -> bytes:
|
|
return await stream.aread()
|
|
|
|
|
|
def get_pydantic_model(data: Any, typ: Any) -> Any:
|
|
if not _contains_pydantic_model(data):
|
|
return unmarshal(data, typ)
|
|
|
|
return data
|
|
|
|
|
|
def _contains_pydantic_model(data: Any) -> bool:
|
|
if isinstance(data, BaseModel):
|
|
return True
|
|
if isinstance(data, List):
|
|
return any(_contains_pydantic_model(item) for item in data)
|
|
if isinstance(data, Dict):
|
|
return any(_contains_pydantic_model(value) for value in data.values())
|
|
|
|
return False
|