Skip to content

Commit

Permalink
fix: remove extra filter imports (#43)
Browse files Browse the repository at this point in the history
This change removes a workaround that's no longer needed for the Litestar filters.
  • Loading branch information
cofin committed Sep 29, 2023
1 parent efc4561 commit 2295b3e
Show file tree
Hide file tree
Showing 9 changed files with 181 additions and 224 deletions.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ repos:
- id: unasyncd
additional_dependencies: ["ruff"]
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: "v0.0.290"
rev: "v0.0.291"
hooks:
- id: ruff
args: ["--fix"]
Expand Down
53 changes: 15 additions & 38 deletions advanced_alchemy/repository/_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,29 +34,6 @@
from advanced_alchemy.repository._util import get_instrumented_attr, wrap_sqlalchemy_exception
from advanced_alchemy.repository.typing import ModelT

# pyright: reportMissingImports=false
try:
from litestar.repository.filters import BeforeAfter as BeforeAfterLitestar
from litestar.repository.filters import CollectionFilter as CollectionFilterLitestar
from litestar.repository.filters import FilterTypes as FilterTypesLitestar
from litestar.repository.filters import LimitOffset as LimitOffsetLitestar
from litestar.repository.filters import NotInCollectionFilter as NotInCollectionFilterLitestar
from litestar.repository.filters import NotInSearchFilter as NotInSearchFilterLitestar
from litestar.repository.filters import OnBeforeAfter as OnBeforeAfterLitestar
from litestar.repository.filters import OrderBy as OrderByLitestar
from litestar.repository.filters import SearchFilter as SearchFilterLitestar
except ImportError:
from advanced_alchemy.filters import BeforeAfter as BeforeAfterLitestar
from advanced_alchemy.filters import CollectionFilter as CollectionFilterLitestar
from advanced_alchemy.filters import FilterTypes as FilterTypesLitestar
from advanced_alchemy.filters import LimitOffset as LimitOffsetLitestar
from advanced_alchemy.filters import NotInCollectionFilter as NotInCollectionFilterLitestar
from advanced_alchemy.filters import NotInSearchFilter as NotInSearchFilterLitestar
from advanced_alchemy.filters import OnBeforeAfter as OnBeforeAfterLitestar
from advanced_alchemy.filters import OrderBy as OrderByLitestar
from advanced_alchemy.filters import SearchFilter as SearchFilterLitestar


if TYPE_CHECKING:
from collections import abc
from datetime import datetime
Expand Down Expand Up @@ -324,7 +301,7 @@ def _get_insertmanyvalues_max_parameters(self, chunk_size: int | None = None) ->

async def exists(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
**kwargs: Any,
) -> bool:
"""Return true if the object specified by ``kwargs`` exists.
Expand Down Expand Up @@ -568,7 +545,7 @@ async def get_or_upsert(

async def count(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
) -> int:
Expand Down Expand Up @@ -702,7 +679,7 @@ def _get_update_many_statement(model_type: type[ModelT], supports_returning: boo

async def list_and_count(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
force_basic_query_mode: bool | None = None,
Expand Down Expand Up @@ -756,7 +733,7 @@ async def _refresh(

async def _list_and_count_window(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
Expand Down Expand Up @@ -792,7 +769,7 @@ async def _list_and_count_window(

async def _list_and_count_basic(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
Expand Down Expand Up @@ -955,7 +932,7 @@ async def upsert_many(

async def list(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
Expand Down Expand Up @@ -1058,7 +1035,7 @@ def _apply_limit_offset_pagination(

def _apply_filters(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
apply_pagination: bool = True,
statement: StatementLambdaElement,
) -> StatementLambdaElement:
Expand All @@ -1076,38 +1053,38 @@ def _apply_filters(
The select with filters applied.
"""
for filter_ in filters:
if isinstance(filter_, (LimitOffset, LimitOffsetLitestar)):
if isinstance(filter_, (LimitOffset,)):
if apply_pagination:
statement = self._apply_limit_offset_pagination(filter_.limit, filter_.offset, statement=statement)
elif isinstance(filter_, (BeforeAfter, BeforeAfterLitestar)):
elif isinstance(filter_, (BeforeAfter,)):
statement = self._filter_on_datetime_field(
field_name=filter_.field_name,
before=filter_.before,
after=filter_.after,
statement=statement,
)
elif isinstance(filter_, (OnBeforeAfter, OnBeforeAfterLitestar)):
elif isinstance(filter_, (OnBeforeAfter,)):
statement = self._filter_on_datetime_field(
field_name=filter_.field_name,
on_or_before=filter_.on_or_before,
on_or_after=filter_.on_or_after,
statement=statement,
)

elif isinstance(filter_, (NotInCollectionFilter, NotInCollectionFilterLitestar)):
elif isinstance(filter_, (NotInCollectionFilter,)):
statement = self._filter_not_in_collection(filter_.field_name, filter_.values, statement=statement)
elif isinstance(filter_, (CollectionFilter, CollectionFilterLitestar)):
elif isinstance(filter_, (CollectionFilter,)):
statement = self._filter_in_collection(filter_.field_name, filter_.values, statement=statement)
elif isinstance(filter_, (OrderBy, OrderByLitestar)):
elif isinstance(filter_, (OrderBy,)):
statement = self._order_by(statement, filter_.field_name, sort_desc=filter_.sort_order == "desc")
elif isinstance(filter_, (SearchFilter, SearchFilterLitestar)):
elif isinstance(filter_, (SearchFilter,)):
statement = self._filter_by_like(
statement,
filter_.field_name,
value=filter_.value,
ignore_case=bool(filter_.ignore_case),
)
elif isinstance(filter_, (NotInSearchFilter, NotInSearchFilterLitestar)):
elif isinstance(filter_, (NotInSearchFilter,)):
statement = self._filter_by_not_like(
statement,
filter_.field_name,
Expand Down
53 changes: 15 additions & 38 deletions advanced_alchemy/repository/_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,29 +36,6 @@
from advanced_alchemy.repository._util import get_instrumented_attr, wrap_sqlalchemy_exception
from advanced_alchemy.repository.typing import ModelT

# pyright: reportMissingImports=false
try:
from litestar.repository.filters import BeforeAfter as BeforeAfterLitestar
from litestar.repository.filters import CollectionFilter as CollectionFilterLitestar
from litestar.repository.filters import FilterTypes as FilterTypesLitestar
from litestar.repository.filters import LimitOffset as LimitOffsetLitestar
from litestar.repository.filters import NotInCollectionFilter as NotInCollectionFilterLitestar
from litestar.repository.filters import NotInSearchFilter as NotInSearchFilterLitestar
from litestar.repository.filters import OnBeforeAfter as OnBeforeAfterLitestar
from litestar.repository.filters import OrderBy as OrderByLitestar
from litestar.repository.filters import SearchFilter as SearchFilterLitestar
except ImportError:
from advanced_alchemy.filters import BeforeAfter as BeforeAfterLitestar
from advanced_alchemy.filters import CollectionFilter as CollectionFilterLitestar
from advanced_alchemy.filters import FilterTypes as FilterTypesLitestar
from advanced_alchemy.filters import LimitOffset as LimitOffsetLitestar
from advanced_alchemy.filters import NotInCollectionFilter as NotInCollectionFilterLitestar
from advanced_alchemy.filters import NotInSearchFilter as NotInSearchFilterLitestar
from advanced_alchemy.filters import OnBeforeAfter as OnBeforeAfterLitestar
from advanced_alchemy.filters import OrderBy as OrderByLitestar
from advanced_alchemy.filters import SearchFilter as SearchFilterLitestar


if TYPE_CHECKING:
from collections import abc
from datetime import datetime
Expand Down Expand Up @@ -325,7 +302,7 @@ def _get_insertmanyvalues_max_parameters(self, chunk_size: int | None = None) ->

def exists(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
**kwargs: Any,
) -> bool:
"""Return true if the object specified by ``kwargs`` exists.
Expand Down Expand Up @@ -569,7 +546,7 @@ def get_or_upsert(

def count(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
) -> int:
Expand Down Expand Up @@ -703,7 +680,7 @@ def _get_update_many_statement(model_type: type[ModelT], supports_returning: boo

def list_and_count(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
force_basic_query_mode: bool | None = None,
Expand Down Expand Up @@ -757,7 +734,7 @@ def _refresh(

def _list_and_count_window(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
Expand Down Expand Up @@ -793,7 +770,7 @@ def _list_and_count_window(

def _list_and_count_basic(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
Expand Down Expand Up @@ -956,7 +933,7 @@ def upsert_many(

def list(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
auto_expunge: bool | None = None,
statement: Select[tuple[ModelT]] | StatementLambdaElement | None = None,
**kwargs: Any,
Expand Down Expand Up @@ -1059,7 +1036,7 @@ def _apply_limit_offset_pagination(

def _apply_filters(
self,
*filters: FilterTypes | FilterTypesLitestar | ColumnElement[bool],
*filters: FilterTypes | ColumnElement[bool],
apply_pagination: bool = True,
statement: StatementLambdaElement,
) -> StatementLambdaElement:
Expand All @@ -1077,38 +1054,38 @@ def _apply_filters(
The select with filters applied.
"""
for filter_ in filters:
if isinstance(filter_, (LimitOffset, LimitOffsetLitestar)):
if isinstance(filter_, (LimitOffset,)):
if apply_pagination:
statement = self._apply_limit_offset_pagination(filter_.limit, filter_.offset, statement=statement)
elif isinstance(filter_, (BeforeAfter, BeforeAfterLitestar)):
elif isinstance(filter_, (BeforeAfter,)):
statement = self._filter_on_datetime_field(
field_name=filter_.field_name,
before=filter_.before,
after=filter_.after,
statement=statement,
)
elif isinstance(filter_, (OnBeforeAfter, OnBeforeAfterLitestar)):
elif isinstance(filter_, (OnBeforeAfter,)):
statement = self._filter_on_datetime_field(
field_name=filter_.field_name,
on_or_before=filter_.on_or_before,
on_or_after=filter_.on_or_after,
statement=statement,
)

elif isinstance(filter_, (NotInCollectionFilter, NotInCollectionFilterLitestar)):
elif isinstance(filter_, (NotInCollectionFilter,)):
statement = self._filter_not_in_collection(filter_.field_name, filter_.values, statement=statement)
elif isinstance(filter_, (CollectionFilter, CollectionFilterLitestar)):
elif isinstance(filter_, (CollectionFilter,)):
statement = self._filter_in_collection(filter_.field_name, filter_.values, statement=statement)
elif isinstance(filter_, (OrderBy, OrderByLitestar)):
elif isinstance(filter_, (OrderBy,)):
statement = self._order_by(statement, filter_.field_name, sort_desc=filter_.sort_order == "desc")
elif isinstance(filter_, (SearchFilter, SearchFilterLitestar)):
elif isinstance(filter_, (SearchFilter,)):
statement = self._filter_by_like(
statement,
filter_.field_name,
value=filter_.value,
ignore_case=bool(filter_.ignore_case),
)
elif isinstance(filter_, (NotInSearchFilter, NotInSearchFilterLitestar)):
elif isinstance(filter_, (NotInSearchFilter,)):
statement = self._filter_by_not_like(
statement,
filter_.field_name,
Expand Down

0 comments on commit 2295b3e

Please sign in to comment.