mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-28 13:05:26 -05:00
chores: updates-and-linters (#1868)
* switch to ruff * add ruff * run ruff --fix * update ruff * resolve ruff errors * drop isort from CI * fix decorator order
This commit is contained in:
@@ -1,3 +1 @@
|
||||
from typing import Optional
|
||||
|
||||
NoneFloat = Optional[float]
|
||||
NoneFloat = float | None
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
@@ -20,9 +19,9 @@ class ImportJob(BackupOptions):
|
||||
|
||||
|
||||
class CreateBackup(BaseModel):
|
||||
tag: Optional[str]
|
||||
tag: str | None
|
||||
options: BackupOptions
|
||||
templates: Optional[list[str]]
|
||||
templates: list[str] | None
|
||||
|
||||
|
||||
class BackupFile(BaseModel):
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic.main import BaseModel
|
||||
|
||||
|
||||
class ImportBase(BaseModel):
|
||||
name: str
|
||||
status: bool
|
||||
exception: Optional[str]
|
||||
exception: str | None
|
||||
|
||||
|
||||
class RecipeImport(ImportBase):
|
||||
slug: Optional[str]
|
||||
slug: str | None
|
||||
|
||||
|
||||
class CommentImport(ImportBase):
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import validator
|
||||
from slugify import slugify
|
||||
|
||||
@@ -10,7 +8,7 @@ from ..recipe.recipe_category import RecipeCategoryResponse
|
||||
|
||||
class CustomPageBase(MealieModel):
|
||||
name: str
|
||||
slug: Optional[str]
|
||||
slug: str | None
|
||||
position: int
|
||||
categories: list[RecipeCategoryResponse] = []
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import UUID4
|
||||
|
||||
from mealie.schema._mealie import MealieModel
|
||||
@@ -10,4 +8,4 @@ from .group_preferences import UpdateGroupPreferences
|
||||
class GroupAdminUpdate(MealieModel):
|
||||
id: UUID4
|
||||
name: str
|
||||
preferences: Optional[UpdateGroupPreferences] = None
|
||||
preferences: UpdateGroupPreferences | None = None
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
from datetime import date
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import validator
|
||||
|
||||
@@ -7,16 +6,16 @@ from mealie.schema._mealie import MealieModel
|
||||
|
||||
|
||||
class MealIn(MealieModel):
|
||||
slug: Optional[str]
|
||||
name: Optional[str]
|
||||
description: Optional[str]
|
||||
slug: str | None
|
||||
name: str | None
|
||||
description: str | None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
|
||||
class MealDayIn(MealieModel):
|
||||
date: Optional[date]
|
||||
date: date | None
|
||||
meals: list[MealIn]
|
||||
|
||||
class Config:
|
||||
@@ -48,7 +47,7 @@ class MealPlanIn(MealieModel):
|
||||
|
||||
class MealPlanOut(MealPlanIn):
|
||||
id: int
|
||||
shopping_list: Optional[int]
|
||||
shopping_list: int | None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from datetime import date
|
||||
from enum import Enum
|
||||
from typing import Optional
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import validator
|
||||
@@ -27,7 +26,7 @@ class CreatePlanEntry(MealieModel):
|
||||
entry_type: PlanEntryType = PlanEntryType.breakfast
|
||||
title: str = ""
|
||||
text: str = ""
|
||||
recipe_id: Optional[UUID]
|
||||
recipe_id: UUID | None
|
||||
|
||||
@validator("recipe_id", always=True)
|
||||
@classmethod
|
||||
@@ -51,7 +50,7 @@ class SavePlanEntry(CreatePlanEntry):
|
||||
|
||||
|
||||
class ReadPlanEntry(UpdatePlanEntry):
|
||||
recipe: Optional[RecipeSummary]
|
||||
recipe: RecipeSummary | None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic.utils import GetterDict
|
||||
|
||||
from mealie.db.models.group.shopping_list import ShoppingList
|
||||
@@ -7,7 +5,7 @@ from mealie.schema._mealie import MealieModel
|
||||
|
||||
|
||||
class ListItem(MealieModel):
|
||||
title: Optional[str]
|
||||
title: str | None
|
||||
text: str = ""
|
||||
quantity: int = 1
|
||||
checked: bool = False
|
||||
@@ -18,7 +16,7 @@ class ListItem(MealieModel):
|
||||
|
||||
class ShoppingListIn(MealieModel):
|
||||
name: str
|
||||
group: Optional[str]
|
||||
group: str | None
|
||||
items: list[ListItem]
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
from typing import Optional
|
||||
|
||||
from mealie.schema._mealie import MealieModel
|
||||
|
||||
|
||||
class RecipeAsset(MealieModel):
|
||||
name: str
|
||||
icon: str
|
||||
file_name: Optional[str]
|
||||
file_name: str | None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
@@ -65,7 +65,7 @@ class RecipeTagResponse(RecipeCategoryResponse):
|
||||
pass
|
||||
|
||||
|
||||
from mealie.schema.recipe.recipe import RecipeSummary
|
||||
from mealie.schema.recipe.recipe import RecipeSummary # noqa: E402
|
||||
|
||||
RecipeCategoryResponse.update_forward_refs()
|
||||
RecipeTagResponse.update_forward_refs()
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import UUID4
|
||||
|
||||
@@ -9,7 +8,7 @@ from mealie.schema.response.pagination import PaginationBase
|
||||
|
||||
class UserBase(MealieModel):
|
||||
id: UUID4
|
||||
username: Optional[str]
|
||||
username: str | None
|
||||
admin: bool
|
||||
|
||||
class Config:
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
from typing import Optional
|
||||
|
||||
from mealie.schema._mealie import MealieModel
|
||||
|
||||
|
||||
class Nutrition(MealieModel):
|
||||
calories: Optional[str]
|
||||
fat_content: Optional[str]
|
||||
protein_content: Optional[str]
|
||||
carbohydrate_content: Optional[str]
|
||||
fiber_content: Optional[str]
|
||||
sodium_content: Optional[str]
|
||||
sugar_content: Optional[str]
|
||||
calories: str | None
|
||||
fat_content: str | None
|
||||
protein_content: str | None
|
||||
carbohydrate_content: str | None
|
||||
fiber_content: str | None
|
||||
sodium_content: str | None
|
||||
sugar_content: str | None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
from typing import Optional
|
||||
from uuid import UUID, uuid4
|
||||
|
||||
from pydantic import UUID4, Field
|
||||
@@ -11,15 +10,15 @@ class IngredientReferences(MealieModel):
|
||||
A list of ingredient references.
|
||||
"""
|
||||
|
||||
reference_id: Optional[UUID4]
|
||||
reference_id: UUID4 | None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
|
||||
class RecipeStep(MealieModel):
|
||||
id: Optional[UUID] = Field(default_factory=uuid4)
|
||||
title: Optional[str] = ""
|
||||
id: UUID | None = Field(default_factory=uuid4)
|
||||
title: str | None = ""
|
||||
text: str
|
||||
ingredient_references: list[IngredientReferences] = []
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import typing
|
||||
|
||||
from pydantic import UUID4
|
||||
|
||||
from mealie.schema._mealie import MealieModel
|
||||
@@ -23,7 +21,7 @@ class RecipeToolOut(RecipeToolCreate):
|
||||
|
||||
|
||||
class RecipeToolResponse(RecipeToolOut):
|
||||
recipes: typing.List["Recipe"] = []
|
||||
recipes: list["Recipe"] = []
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
@@ -62,7 +62,14 @@ class QueryFilter:
|
||||
self.filter_components = QueryFilter._parse_base_components_into_filter_components(base_components)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f'<<{" ".join([str(component.value if isinstance(component, LogicalOperator) else component) for component in self.filter_components])}>>'
|
||||
joined = " ".join(
|
||||
[
|
||||
str(component.value if isinstance(component, LogicalOperator) else component)
|
||||
for component in self.filter_components
|
||||
],
|
||||
)
|
||||
|
||||
return f"<<{joined}>>"
|
||||
|
||||
def filter_query(self, query: Query, model: type[Model]) -> Query:
|
||||
segments: list[str] = []
|
||||
@@ -76,8 +83,9 @@ class QueryFilter:
|
||||
segments.append(component.value)
|
||||
continue
|
||||
|
||||
# for some reason typing doesn't like the lsep and rsep literals, so we explicitly mark this as a filter component instead
|
||||
# cast doesn't actually do anything at runtime
|
||||
# for some reason typing doesn't like the lsep and rsep literals, so
|
||||
# we explicitly mark this as a filter component instead cast doesn't
|
||||
# actually do anything at runtime
|
||||
component = cast(QueryFilterComponent, component)
|
||||
|
||||
if not hasattr(model, component.attribute_name):
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from mealie.schema._mealie import MealieModel
|
||||
@@ -8,10 +6,10 @@ from mealie.schema._mealie import MealieModel
|
||||
class ErrorResponse(BaseModel):
|
||||
message: str
|
||||
error: bool = True
|
||||
exception: Optional[str] = None
|
||||
exception: str | None = None
|
||||
|
||||
@classmethod
|
||||
def respond(cls, message: str, exception: Optional[str] = None) -> dict:
|
||||
def respond(cls, message: str, exception: str | None = None) -> dict:
|
||||
"""
|
||||
This method is an helper to create an object and convert to a dictionary
|
||||
in the same call, for use while providing details to a HTTPException
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import UUID4, BaseModel
|
||||
from pydantic.types import constr
|
||||
|
||||
@@ -12,8 +10,8 @@ class Token(BaseModel):
|
||||
|
||||
|
||||
class TokenData(BaseModel):
|
||||
user_id: Optional[UUID4]
|
||||
username: Optional[constr(to_lower=True, strip_whitespace=True)] = None # type: ignore
|
||||
user_id: UUID4 | None
|
||||
username: constr(to_lower=True, strip_whitespace=True) | None = None # type: ignore
|
||||
|
||||
|
||||
class UnlockResults(MealieModel):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from datetime import datetime, timedelta
|
||||
from pathlib import Path
|
||||
from typing import Any, Optional
|
||||
from typing import Any
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import UUID4, Field, validator
|
||||
@@ -62,13 +62,13 @@ class GroupBase(MealieModel):
|
||||
|
||||
|
||||
class UserBase(MealieModel):
|
||||
username: Optional[str]
|
||||
full_name: Optional[str] = None
|
||||
username: str | None
|
||||
full_name: str | None = None
|
||||
email: constr(to_lower=True, strip_whitespace=True) # type: ignore
|
||||
admin: bool = False
|
||||
group: Optional[str]
|
||||
group: str | None
|
||||
advanced: bool = False
|
||||
favorite_recipes: Optional[list[str]] = []
|
||||
favorite_recipes: list[str] | None = []
|
||||
|
||||
can_invite: bool = False
|
||||
can_manage: bool = False
|
||||
@@ -103,9 +103,9 @@ class UserOut(UserBase):
|
||||
id: UUID4
|
||||
group: str
|
||||
group_id: UUID4
|
||||
tokens: Optional[list[LongLiveTokenOut]]
|
||||
tokens: list[LongLiveTokenOut] | None
|
||||
cache_key: str
|
||||
favorite_recipes: Optional[list[str]] = []
|
||||
favorite_recipes: list[str] | None = []
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
@@ -171,14 +171,14 @@ class PrivateUser(UserOut):
|
||||
class UpdateGroup(GroupBase):
|
||||
id: UUID4
|
||||
name: str
|
||||
categories: Optional[list[CategoryBase]] = []
|
||||
categories: list[CategoryBase] | None = []
|
||||
|
||||
webhooks: list[Any] = []
|
||||
|
||||
|
||||
class GroupInDB(UpdateGroup):
|
||||
users: Optional[list[UserOut]]
|
||||
preferences: Optional[ReadGroupPreferences] = None
|
||||
users: list[UserOut] | None
|
||||
preferences: ReadGroupPreferences | None = None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
Reference in New Issue
Block a user