| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- from imgui_bundle import ImVec4, ImVec2, ImColor
- from typing_extensions import Annotated
- from pydantic_core import core_schema
- from pydantic import (
- GetCoreSchemaHandler,
- GetJsonSchemaHandler,
- )
- from pydantic.json_schema import JsonSchemaValue
- from typing import Any
- class _ImVec4PydanticAnnotation:
- @classmethod
- def __get_pydantic_core_schema__(
- cls,
- _source_type: Any,
- _handler: GetCoreSchemaHandler,
- ) -> core_schema.CoreSchema:
- def validate_from_tuple(value: tuple[float, float, float, float]) -> ImVec4:
- result = ImVec4()
- result.x = value[0]
- result.y = value[1]
- result.z = value[2]
- result.w = value[3]
- return result
- from_tuple_schema = core_schema.chain_schema(
- [
- core_schema.tuple_schema([core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema()]),
- core_schema.no_info_plain_validator_function(validate_from_tuple),
- ]
- )
- return core_schema.json_or_python_schema(
- json_schema=from_tuple_schema,
- python_schema=core_schema.union_schema(
- [
- core_schema.is_instance_schema(ImVec4),
- from_tuple_schema,
- ]
- ),
- serialization=core_schema.plain_serializer_function_ser_schema(
- lambda instance: [instance.x, instance.y, instance.z, instance.w]
- ),
- )
- @classmethod
- def __get_pydantic_json_schema__(
- cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler
- ) -> JsonSchemaValue:
- return handler(core_schema.tuple_schema([core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema()]))
- # ImVec4_Pydantic is a synonym for ImVec4, which is compatible with Pydantic
- ImVec4_Pydantic = Annotated[
- ImVec4, _ImVec4PydanticAnnotation
- ]
- class _ImVec2PydanticAnnotation:
- @classmethod
- def __get_pydantic_core_schema__(
- cls,
- _source_type: Any,
- _handler: GetCoreSchemaHandler,
- ) -> core_schema.CoreSchema:
- def validate_from_tuple(value: tuple[float, float]) -> ImVec2:
- result = ImVec2()
- result.x = value[0]
- result.y = value[1]
- return result
- from_tuple_schema = core_schema.chain_schema(
- [
- core_schema.tuple_schema([core_schema.float_schema(), core_schema.float_schema()]),
- core_schema.no_info_plain_validator_function(validate_from_tuple),
- ]
- )
- return core_schema.json_or_python_schema(
- json_schema=from_tuple_schema,
- python_schema=core_schema.union_schema(
- [
- core_schema.is_instance_schema(ImVec2),
- from_tuple_schema,
- ]
- ),
- serialization=core_schema.plain_serializer_function_ser_schema(
- lambda instance: [instance.x, instance.y]
- ),
- )
- @classmethod
- def __get_pydantic_json_schema__(
- cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler
- ) -> JsonSchemaValue:
- return handler(core_schema.tuple_schema([core_schema.float_schema(), core_schema.float_schema()]))
- # ImVec2_Pydantic is a synonym for ImVec2, which is compatible with Pydantic
- ImVec2_Pydantic = Annotated[
- ImVec2, _ImVec2PydanticAnnotation
- ]
- class _ImColorPydanticAnnotation:
- @classmethod
- def __get_pydantic_core_schema__(
- cls,
- _source_type: Any,
- _handler: GetCoreSchemaHandler,
- ) -> core_schema.CoreSchema:
- def validate_from_tuple(value: tuple[float, float, float, float]) -> ImColor:
- result = ImColor()
- result.value.x = value[0]
- result.value.y = value[1]
- result.value.z = value[2]
- result.value.w = value[3]
- return result
- from_tuple_schema = core_schema.chain_schema(
- [
- core_schema.tuple_schema([core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema()]),
- core_schema.no_info_plain_validator_function(validate_from_tuple),
- ]
- )
- return core_schema.json_or_python_schema(
- json_schema=from_tuple_schema,
- python_schema=core_schema.union_schema(
- [
- core_schema.is_instance_schema(ImVec4),
- from_tuple_schema,
- ]
- ),
- serialization=core_schema.plain_serializer_function_ser_schema(
- lambda instance: [instance.value.x, instance.value.y, instance.value.z, instance.value.w]
- ),
- )
- @classmethod
- def __get_pydantic_json_schema__(
- cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler
- ) -> JsonSchemaValue:
- return handler(core_schema.tuple_schema([core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema(), core_schema.float_schema()]))
- # ImColor_Pydantic is a synonym for ImColor, which is compatible with Pydantic
- ImColor_Pydantic = Annotated[
- ImColor, _ImColorPydanticAnnotation
- ]
|