Skip to content

Commit

Permalink
Remove models.KwOnly
Browse files Browse the repository at this point in the history
  • Loading branch information
reznakt committed Jan 31, 2025
1 parent 41f3948 commit 2d271a0
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 34 deletions.
5 changes: 1 addition & 4 deletions svglab/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

import pydantic
import pydantic_core.core_schema
from pydantic import Field
from typing_extensions import (
Annotated,
Protocol,
Expand All @@ -27,10 +26,8 @@
_T3 = TypeVar("_T3")
_T4 = TypeVar("_T4")

KwOnly: TypeAlias = Annotated[_T_co, Field(kw_only=True)]
""" Pydantic field for a keyword-only attribute. """

Attr: TypeAlias = KwOnly[_T_co | None]
Attr: TypeAlias = _T_co | None
""" Pydantic field for an attribute. """


Expand Down
52 changes: 22 additions & 30 deletions svglab/serialize.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
runtime_checkable,
)

from svglab import models, utils
from svglab import utils


_ColorMode: TypeAlias = Literal[
Expand Down Expand Up @@ -68,7 +68,7 @@ def _is_serializable(value: object, /) -> TypeIs[Serializable]:
)


@pydantic.dataclasses.dataclass(frozen=True)
@pydantic.dataclasses.dataclass(frozen=True, kw_only=True)
class Formatter:
"""Formatter for serializing SVG elements.
Expand Down Expand Up @@ -167,46 +167,38 @@ class Formatter:
"""

# colors
color_mode: models.KwOnly[_ColorMode] = "auto"
alpha_channel: models.KwOnly[AlphaChannelMode] = "float"
color_mode: _ColorMode = "auto"
alpha_channel: AlphaChannelMode = "float"

# numbers
show_decimal_part_if_int: models.KwOnly[bool] = False
max_precision: models.KwOnly[int] = pydantic.Field(
default=15, ge=0, le=15
show_decimal_part_if_int: bool = False
max_precision: int = pydantic.Field(default=15, ge=0, le=15)
small_number_scientific_threshold: float | None = pydantic.Field(
default=1e-6, gt=0, le=0.1
)
small_number_scientific_threshold: models.KwOnly[float | None] = (
pydantic.Field(default=1e-6, gt=0, le=0.1)
large_number_scientific_threshold: int | None = pydantic.Field(
default=int(1e6), gt=0
)
large_number_scientific_threshold: models.KwOnly[int | None] = (
pydantic.Field(default=int(1e6), gt=0)
)
strip_leading_zero: models.KwOnly[bool] = True
strip_leading_zero: bool = True

# path data
path_data_coordinates: models.KwOnly[_PathDataCoordinateMode] = (
"absolute"
)
path_data_shorthand_line_commands: models.KwOnly[
_PathDataShorthandMode
] = "always"
path_data_shorthand_curve_commands: models.KwOnly[
_PathDataShorthandMode
] = "always"
path_data_commands: models.KwOnly[_PathDataCommandMode] = "implicit"
path_data_space_before_args: models.KwOnly[bool] = False
path_data_coordinates: _PathDataCoordinateMode = "absolute"
path_data_shorthand_line_commands: _PathDataShorthandMode = "always"
path_data_shorthand_curve_commands: _PathDataShorthandMode = "always"
path_data_commands: _PathDataCommandMode = "implicit"
path_data_space_before_args: bool = False

# separators
list_separator: models.KwOnly[_Separator] = " "
point_separator: models.KwOnly[_Separator] = ","
list_separator: _Separator = " "
point_separator: _Separator = ","

# whitespace
indent: models.KwOnly[int] = pydantic.Field(default=2, ge=0)
spaces_around_attrs: models.KwOnly[bool] = False
spaces_around_function_args: models.KwOnly[bool] = False
indent: int = pydantic.Field(default=2, ge=0)
spaces_around_attrs: bool = False
spaces_around_function_args: bool = False

# misc
xmlns: models.KwOnly[_Xmlns] = "original"
xmlns: _Xmlns = "original"


DEFAULT_FORMATTER: Final = Formatter()
Expand Down

0 comments on commit 2d271a0

Please sign in to comment.