Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor(types): add generic type parameters to override schemas
- Add `_OverrideRuleT` type variable for override rule type constraints
- Make `OverrideCreateSchema` generic with `_OverrideRuleT` parameter
- Make `OverrideSchema` inherit generic parameter from `OverrideCreateSchema`
- Add `OverrideCreateSchemaCompat` and `OverrideSchemaCompat` type aliases for backward compatibility
- Replace hardcoded union type with generic `_OverrideRuleT` parameter in rule field
  • Loading branch information
tharropoulos committed Jun 18, 2025
commit d7338d0399b9465955e1153c49927f83a43d3090
24 changes: 20 additions & 4 deletions src/typesense/types/override.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
import typing_extensions as typing


_OverrideRuleT = typing.TypeVar(
"_OverrideRuleT",
bound=typing.Union["OverrideQueryRuleSchema", "OverrideFilterSchema"],
)


class OverrideQueryRuleSchema(typing.TypedDict):
"""
The schema for the rule field in the Overrides.upsert method.
Expand Down Expand Up @@ -51,12 +57,12 @@ class IncludesSchema(typing.TypedDict):
position: int


class OverrideCreateSchema(typing.TypedDict):
class OverrideCreateSchema(typing.Generic[_OverrideRuleT], typing.TypedDict):
"""
The schema for the request of the Overrides.upsert method.

Attributes:
rule (OverrideQueryRuleSchema | OverrideFilterSchema): The rule.
rule (_OverrideRuleT): The rule.
sort_by (str): The sort by string.
filter_by (str): The filter by string.
excludes (list[str]): The excludes list.
Expand All @@ -69,7 +75,7 @@ class OverrideCreateSchema(typing.TypedDict):
stop_processing (bool): Whether to stop processing.
"""

rule: typing.Union[OverrideQueryRuleSchema, OverrideFilterSchema]
rule: _OverrideRuleT
sort_by: typing.NotRequired[str]
filter_by: typing.NotRequired[str]
excludes: typing.NotRequired[typing.List[str]]
Expand All @@ -82,12 +88,22 @@ class OverrideCreateSchema(typing.TypedDict):
stop_processing: typing.NotRequired[bool]


class OverrideSchema(OverrideCreateSchema):
OverrideCreateSchemaCompat = OverrideCreateSchema[
typing.Union[OverrideQueryRuleSchema, OverrideFilterSchema]
]


class OverrideSchema(OverrideCreateSchema[_OverrideRuleT]):
"""The schema for the response of the Overrides.upsert method."""

id: str


OverrideSchemaCompat = OverrideSchema[
typing.Union[OverrideQueryRuleSchema, OverrideFilterSchema]
]


class OverrideDeleteSchema(typing.TypedDict):
"""The schema for the response of the Overrides.delete method."""

Expand Down