Skip to content

Commit 8834f86

Browse files
authored
fix: ruff python 3.10 config (#1615)
1 parent 9c71a26 commit 8834f86

File tree

22 files changed

+167
-171
lines changed

22 files changed

+167
-171
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ python-semantic-release = "^10.4"
3939
[tool.ruff]
4040
fix = true
4141
line-length = 88
42+
target-version = "py310"
4243

4344
[tool.ruff.lint]
4445
select = [

src/unfold/admin.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from functools import update_wrapper
2-
from typing import Any, Optional
2+
from typing import Any
33

44
from django import forms
55
from django.contrib.admin import ModelAdmin as BaseModelAdmin
@@ -78,7 +78,7 @@ def media(self):
7878

7979
for filter in self.get_list_filter(self.request):
8080
if (
81-
isinstance(filter, (tuple, list))
81+
isinstance(filter, tuple | list)
8282
and hasattr(filter[1], "form_class")
8383
and hasattr(filter[1].form_class, "Media")
8484
):
@@ -89,7 +89,7 @@ def media(self):
8989
return media
9090

9191
def changelist_view(
92-
self, request: HttpRequest, extra_context: Optional[dict[str, str]] = None
92+
self, request: HttpRequest, extra_context: dict[str, str] | None = None
9393
) -> TemplateResponse:
9494
self.request = request
9595

@@ -103,9 +103,9 @@ def changelist_view(
103103
def changeform_view(
104104
self,
105105
request: HttpRequest,
106-
object_id: Optional[str] = None,
106+
object_id: str | None = None,
107107
form_url: str = "",
108-
extra_context: Optional[dict[str, Any]] = None,
108+
extra_context: dict[str, Any] | None = None,
109109
) -> TemplateResponse:
110110
self.request = request
111111
extra_context = extra_context or {}
@@ -142,7 +142,7 @@ def get_list_display(self, request: HttpRequest) -> list[str]:
142142
return list_display
143143

144144
def get_fieldsets(
145-
self, request: HttpRequest, obj: Optional[Model] = None
145+
self, request: HttpRequest, obj: Model | None = None
146146
) -> FieldsetsType:
147147
if not obj and self.add_fieldsets:
148148
return self.add_fieldsets
@@ -234,7 +234,7 @@ def response_change(self, request: HttpRequest, obj: Model) -> HttpResponse:
234234
return res
235235

236236
def response_add(
237-
self, request: HttpRequest, obj: Model, post_url_continue: Optional[str] = None
237+
self, request: HttpRequest, obj: Model, post_url_continue: str | None = None
238238
) -> HttpResponse:
239239
res = super().response_add(request, obj, post_url_continue)
240240
if "next" in request.GET:

src/unfold/components.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Optional
1+
from typing import Any
22

33
from django.http import HttpRequest
44

@@ -21,7 +21,7 @@ def register_class(cls, component_cls: type) -> None:
2121
cls._registry[class_name] = component_cls
2222

2323
@classmethod
24-
def get_class(cls, class_name: str) -> Optional[type]:
24+
def get_class(cls, class_name: str) -> type | None:
2525
return cls._registry.get(class_name)
2626

2727
@classmethod

src/unfold/contrib/filters/admin/mixins.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from collections.abc import Generator
2-
from typing import Any, Optional
2+
from typing import Any
33

44
from django.contrib.admin.views.main import ChangeList
55
from django.core.validators import EMPTY_VALUES
@@ -18,7 +18,7 @@
1818

1919

2020
class ValueMixin:
21-
def value(self) -> Optional[str]:
21+
def value(self) -> str | None:
2222
return (
2323
self.lookup_val[0]
2424
if self.lookup_val not in EMPTY_VALUES
@@ -29,7 +29,7 @@ def value(self) -> Optional[str]:
2929

3030

3131
class MultiValueMixin:
32-
def value(self) -> Optional[list[str]]:
32+
def value(self) -> list[str] | None:
3333
return (
3434
self.lookup_val
3535
if self.lookup_val not in EMPTY_VALUES

src/unfold/contrib/filters/admin/numeric_filters.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Optional
1+
from typing import Any
22

33
from django.contrib import admin
44
from django.contrib.admin.options import ModelAdmin
@@ -35,7 +35,7 @@ def __init__(
3535
) -> None:
3636
super().__init__(field, request, params, model, model_admin, field_path)
3737

38-
if not isinstance(field, (DecimalField, IntegerField, FloatField, AutoField)):
38+
if not isinstance(field, DecimalField | IntegerField | FloatField | AutoField):
3939
raise TypeError(
4040
f"Class {type(self.field)} is not supported for {self.__class__.__name__}."
4141
)
@@ -54,7 +54,7 @@ def __init__(
5454

5555
def queryset(
5656
self, request: HttpRequest, queryset: QuerySet[Any]
57-
) -> Optional[QuerySet]:
57+
) -> QuerySet | None:
5858
if self.value():
5959
try:
6060
return queryset.filter(**{self.parameter_name: self.value()})
@@ -64,7 +64,7 @@ def queryset(
6464
def value(self) -> Any:
6565
return self.used_parameters.get(self.parameter_name, None)
6666

67-
def expected_parameters(self) -> list[Optional[str]]:
67+
def expected_parameters(self) -> list[str | None]:
6868
return [self.parameter_name]
6969

7070
def choices(self, changelist: ChangeList) -> tuple[dict[str, Any], ...]:
@@ -111,7 +111,7 @@ def __init__(
111111
field_path: str,
112112
) -> None:
113113
super().__init__(field, request, params, model, model_admin, field_path)
114-
if not isinstance(field, (DecimalField, IntegerField, FloatField, AutoField)):
114+
if not isinstance(field, DecimalField | IntegerField | FloatField | AutoField):
115115
raise TypeError(
116116
f"Class {type(self.field)} is not supported for {self.__class__.__name__}."
117117
)
@@ -156,7 +156,7 @@ def choices(self, changelist: ChangeList) -> tuple[dict[str, Any], ...]:
156156
else:
157157
max_value = None
158158

159-
if isinstance(self.field, (FloatField, DecimalField)):
159+
if isinstance(self.field, FloatField | DecimalField):
160160
decimals = self.MAX_DECIMALS
161161
step = self.STEP if self.STEP else self._get_min_step(self.MAX_DECIMALS)
162162
else:

src/unfold/contrib/forms/widgets.py

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

33
from django.core.validators import EMPTY_VALUES
44
from django.forms import MultiWidget, Widget
@@ -35,7 +35,7 @@ class ArrayWidget(MultiWidget):
3535

3636
def __init__(
3737
self,
38-
widget_class: Optional[type[Widget]] = None,
38+
widget_class: type[Widget] | None = None,
3939
*args: Any,
4040
**kwargs: Any,
4141
) -> None:
@@ -81,15 +81,15 @@ def value_omitted_from_data(
8181
) -> list:
8282
return data.getlist(name) not in [[""], *EMPTY_VALUES]
8383

84-
def decompress(self, value: Union[str, list]) -> list:
84+
def decompress(self, value: str | list) -> list:
8585
if isinstance(value, list):
8686
return value
8787
elif isinstance(value, str):
8888
return value.split(",")
8989

9090
return []
9191

92-
def _resolve_widgets(self, value: Optional[Union[list, str]]) -> None:
92+
def _resolve_widgets(self, value: list | str | None) -> None:
9393
if value is None:
9494
value = []
9595

@@ -112,7 +112,7 @@ class Media:
112112
"unfold/forms/js/trix.config.js",
113113
)
114114

115-
def __init__(self, attrs: Optional[dict[str, Any]] = None) -> None:
115+
def __init__(self, attrs: dict[str, Any] | None = None) -> None:
116116
super().__init__(attrs)
117117

118118
self.attrs.update(

src/unfold/contrib/inlines/admin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from functools import partial
2-
from typing import Any, Optional
2+
from typing import Any
33

44
from django import forms
55
from django.contrib.admin.utils import NestedObjects, flatten_fieldsets
@@ -28,7 +28,7 @@ class NonrelatedInlineMixin:
2828
formset = NonrelatedInlineModelFormSet
2929

3030
def get_formset(
31-
self, request: HttpRequest, obj: Optional[Model] = None, **kwargs: Any
31+
self, request: HttpRequest, obj: Model | None = None, **kwargs: Any
3232
):
3333
defaults = self._get_formset_defaults(request, obj, **kwargs)
3434

@@ -41,7 +41,7 @@ def get_formset(
4141
)
4242

4343
def _get_formset_defaults(
44-
self, request: HttpRequest, obj: Optional[Model] = None, **kwargs: Any
44+
self, request: HttpRequest, obj: Model | None = None, **kwargs: Any
4545
):
4646
"""Return a BaseInlineFormSet class for use in admin add/change views."""
4747
if "fields" in kwargs:

src/unfold/contrib/inlines/forms.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from typing import Any, Callable, Optional
1+
from collections.abc import Callable
2+
from typing import Any
23

34
from django.db.models import Model, QuerySet
45
from django.forms import BaseModelFormSet, ModelForm, modelformset_factory
@@ -9,7 +10,7 @@
910
class NonrelatedInlineModelFormSet(PaginationFormSetMixin, BaseModelFormSet):
1011
def __init__(
1112
self,
12-
instance: Optional[Model] = None,
13+
instance: Model | None = None,
1314
save_as_new: bool = False,
1415
**kwargs: Any,
1516
) -> None:
@@ -33,9 +34,9 @@ def save_new(self, form: ModelForm, commit: bool = True):
3334

3435
def nonrelated_inline_formset_factory(
3536
model: Model,
36-
queryset: Optional[QuerySet] = None,
37+
queryset: QuerySet | None = None,
3738
formset: BaseModelFormSet = NonrelatedInlineModelFormSet,
38-
save_new_instance: Optional[Callable] = None,
39+
save_new_instance: Callable | None = None,
3940
**kwargs: Any,
4041
) -> BaseModelFormSet:
4142
inline_formset = modelformset_factory(model, formset=formset, **kwargs)

src/unfold/dataclasses.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
from collections.abc import Callable
12
from dataclasses import dataclass
2-
from typing import Callable, Optional, Union
33

44
from unfold.enums import ActionVariant
55

@@ -12,31 +12,31 @@ class UnfoldAction:
1212
method: ActionFunction
1313
description: str
1414
path: str
15-
attrs: Optional[dict] = None
16-
object_id: Optional[Union[int, str]] = None
17-
icon: Optional[str] = None
18-
variant: Optional[ActionVariant] = ActionVariant.DEFAULT
15+
attrs: dict | None = None
16+
object_id: int | str | None = None
17+
icon: str | None = None
18+
variant: ActionVariant | None = ActionVariant.DEFAULT
1919

2020

2121
@dataclass
2222
class SearchResult:
2323
title: str
2424
description: str
2525
link: str
26-
icon: Optional[str]
26+
icon: str | None
2727

2828

2929
@dataclass
3030
class Favicon:
31-
href: Union[str, Callable]
32-
rel: Optional[str] = None
33-
type: Optional[str] = None
34-
sizes: Optional[str] = None
31+
href: str | Callable
32+
rel: str | None = None
33+
type: str | None = None
34+
sizes: str | None = None
3535

3636

3737
@dataclass
3838
class DropdownItem:
3939
title: str
40-
link: Union[str, Callable]
41-
icon: Optional[str] = None
42-
attrs: Optional[dict] = None
40+
link: str | Callable
41+
icon: str | None = None
42+
attrs: dict | None = None

src/unfold/datasets.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Optional
1+
from typing import Any
22

33
from django.contrib import admin
44
from django.http import HttpRequest
@@ -11,7 +11,7 @@ class BaseDataset:
1111
tab = False
1212

1313
def __init__(
14-
self, request: HttpRequest, extra_context: Optional[dict[str, Any]]
14+
self, request: HttpRequest, extra_context: dict[str, Any] | None
1515
) -> None:
1616
self.request = request
1717
self.extra_context = extra_context

0 commit comments

Comments
 (0)