Skip to content

Commit d779341

Browse files
committed
feat: unify color validation methods across models; rename validate_colors to validate_color
1 parent 428f63a commit d779341

File tree

5 files changed

+319
-256
lines changed

5 files changed

+319
-256
lines changed

deadlock_assets_api/models/v1/generic_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class FlashDataV1(BaseModel):
2020

2121
@field_validator("color", mode="before")
2222
@classmethod
23-
def validate_colors(cls, v: ColorV1 | list[int] | dict[str, int]) -> ColorV1:
23+
def validate_color(cls, v: ColorV1 | list[int] | dict[str, int]) -> ColorV1:
2424
if isinstance(v, ColorV1):
2525
return v
2626
if isinstance(v, dict):

deadlock_assets_api/models/v2/misc.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
from typing import Annotated
33

44
from murmurhash2 import murmurhash2
5-
from pydantic import ConfigDict, Field, BaseModel, computed_field, WithJsonSchema
5+
from pydantic import ConfigDict, Field, BaseModel, computed_field, WithJsonSchema, field_validator
66

7-
LOGGER = logging.getLogger(__name__)
7+
from deadlock_assets_api.models.v1.colors import ColorV1
88

9-
Color = tuple[int, int, int] | tuple[int, int, int, int]
9+
LOGGER = logging.getLogger(__name__)
1010

1111

1212
class ModifierValue(BaseModel):
@@ -70,7 +70,7 @@ class MiscV2(BaseModel):
7070
model_config = ConfigDict(populate_by_name=True)
7171

7272
class_name: str
73-
color: Color | None = Field(None, validation_alias="m_Color")
73+
color: ColorV1 | None = Field(None, validation_alias="m_Color")
7474

7575
# Spawning & Timing
7676
initial_spawn_time: float | None = Field(None, validation_alias="m_flInitialSpawnTime")
@@ -134,3 +134,16 @@ class MiscV2(BaseModel):
134134
@property
135135
def id(self) -> Annotated[int, WithJsonSchema({"format": "int64", "type": "integer"})]:
136136
return murmurhash2(self.class_name.encode(), 0x31415926)
137+
138+
@field_validator("color", mode="before")
139+
@classmethod
140+
def validate_color(cls, v: ColorV1 | list[int] | None | dict[str, int]) -> ColorV1 | None:
141+
if v is None:
142+
return v
143+
if isinstance(v, ColorV1):
144+
return v
145+
if isinstance(v, dict):
146+
return ColorV1.model_validate(v)
147+
if isinstance(v, list):
148+
return ColorV1.from_list(v)
149+
raise TypeError(f"Invalid type for color field: {type(v)}")

deadlock_assets_api/models/v2/npc_unit.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def id(self) -> Annotated[int, WithJsonSchema({"format": "int64", "type": "integ
124124
mode="before",
125125
)
126126
@classmethod
127-
def validate_colors(cls, v: ColorV1 | list[int] | None | dict[str, int]) -> ColorV1 | None:
127+
def validate_color(cls, v: ColorV1 | list[int] | None | dict[str, int]) -> ColorV1 | None:
128128
if v is None:
129129
return v
130130
if isinstance(v, ColorV1):

0 commit comments

Comments
 (0)