Skip to content

Commit 00a727e

Browse files
author
Nikolay Dolzhenkov
committed
Prefer old-school Union[] for backward compatibility
1 parent c2e3871 commit 00a727e

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

ninja/filter_schema.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, List, Optional, TypeVar, cast
1+
from typing import Any, List, Optional, TypeVar, Union, cast
22

33
from django.core.exceptions import ImproperlyConfigured
44
from django.db.models import Q, QuerySet
@@ -21,13 +21,13 @@ class FilterLookup:
2121
2222
Example usage:
2323
class MyFilterSchema(FilterSchema):
24-
name: Annotated[str | None, FilterLookup("name__icontains")] = None
25-
search: Annotated[str | None, FilterLookup(["name__icontains", "email__icontains"])] = None
24+
name: Annotated[Union[str, None], FilterLookup("name__icontains")] = None
25+
search: Annotated[Union[str, None], FilterLookup(["name__icontains", "email__icontains"])] = None
2626
"""
2727

2828
def __init__(
2929
self,
30-
q: str | List[str],
30+
q: Union[str, List[str]],
3131
*,
3232
expression_connector: ExpressionConnector = DEFAULT_FIELD_LEVEL_EXPRESSION_CONNECTOR,
3333
ignore_none: bool = DEFAULT_IGNORE_NONE,
@@ -102,42 +102,43 @@ def _get_field_q_expression(
102102
self,
103103
field_name: str,
104104
field_info: FieldInfo,
105-
default: str | list[str] | None = None,
106-
) -> str | List[str] | None:
105+
default: Union[str, list[str], None] = None,
106+
) -> Union[str, List[str], None]:
107107
filter_lookup = self._get_filter_lookup(field_name, field_info)
108108
if filter_lookup:
109109
return filter_lookup.q if filter_lookup.q is not None else default
110110

111111
# Legacy approach, consider removing in future versions
112112
field_extra = cast(dict, field_info.json_schema_extra) or {}
113-
return cast(str | list[str] | None, field_extra.get("q", default))
113+
return cast(Union[str, list[str], None], field_extra.get("q", default))
114114

115115
def _get_field_expression_connector(
116116
self,
117117
field_name: str,
118118
field_info: FieldInfo,
119-
default: ExpressionConnector | None = None,
120-
) -> ExpressionConnector | None:
119+
default: Union[ExpressionConnector, None] = None,
120+
) -> Union[ExpressionConnector, None]:
121121
filter_lookup = self._get_filter_lookup(field_name, field_info)
122122
if filter_lookup:
123123
return filter_lookup.expression_connector or default
124124

125125
# Legacy approach, consider removing in future versions
126126
field_extra = cast(dict, field_info.json_schema_extra) or {}
127127
return cast(
128-
ExpressionConnector | None, field_extra.get("expression_connector", default)
128+
Union[ExpressionConnector, None],
129+
field_extra.get("expression_connector", default),
129130
)
130131

131132
def _get_field_ignore_none(
132-
self, field_name: str, field_info: FieldInfo, default: bool | None = None
133-
) -> bool | None:
133+
self, field_name: str, field_info: FieldInfo, default: Union[bool, None] = None
134+
) -> Union[bool, None]:
134135
filter_lookup = self._get_filter_lookup(field_name, field_info)
135136
if filter_lookup:
136137
return filter_lookup.ignore_none
137138

138139
# Legacy approach, consider removing in future versions
139140
field_extra = cast(dict, field_info.json_schema_extra) or {}
140-
return cast(bool | None, field_extra.get("ignore_none", default))
141+
return cast(Union[bool, None], field_extra.get("ignore_none", default))
141142

142143
def _resolve_field_expression(
143144
self, field_name: str, field_value: Any, field_info: FieldInfo

0 commit comments

Comments
 (0)