11from __future__ import annotations
22
3- from pydantic import BaseModel , ConfigDict , Field
3+ import os
4+
5+ from pathlib import Path
6+ from pydantic import BaseModel , ConfigDict , Field , field_validator
7+
8+ from .utils import create_icon_src_from_file
49
510
611def fix_keys (d : dict ) -> dict :
@@ -29,10 +34,18 @@ class FlatStyle(BaseModel):
2934 circle_stroke_width : float | int | list | None = None
3035 circle_stroke_color : str | list | None = None
3136
32- icon_src : str | list | None = None
37+ icon_src : str | Path | list | None = None
38+ icon_scale : float | int | None = None
3339 icon_color : str | list | None = None
3440 icon_opacity : float | int | None = Field (None , gt = 0 , le = 1 )
3541
42+ @field_validator ("icon_src" )
43+ def validate_icon_src (cls , v ) -> str :
44+ if os .path .isfile (v ):
45+ return create_icon_src_from_file (v )
46+
47+ return v
48+
3649 def model_dump (self ) -> dict :
3750 return fix_keys (super ().model_dump (exclude_none = True ))
3851
@@ -54,7 +67,7 @@ def default_style(**kwargs) -> FlatStyle:
5467 ).model_copy (update = kwargs )
5568
5669
57- class CircleStyle (FlatStyle ): ...
70+ # class CircleStyle(FlatStyle): ...
5871
5972
6073class IconStyle (FlatStyle ):
@@ -64,4 +77,4 @@ class IconStyle(FlatStyle):
6477 icon_scale : float | int | None = None
6578
6679
67- class FillStyle (FlatStyle ): ...
80+ # class FillStyle(FlatStyle): ...
0 commit comments