Compare commits

...

4 Commits

Author SHA1 Message Date
renovate[bot]
7ab9d9b2ba fix(deps): update dependency pillow-heif to v1.3.0 2026-02-27 14:50:45 +00:00
renovate[bot]
3ee64c930c chore(deps): update dependency ruff to v0.15.4 (#7152)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 22:46:53 +00:00
Hayden
189e98fb1f chore(l10n): New Crowdin updates (#7153) 2026-02-26 21:19:36 +00:00
renovate[bot]
7da01f7873 chore(deps): update dependency ruff to v0.15.3 (#7151)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 17:08:10 +00:00
45 changed files with 282 additions and 118 deletions

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "Manage Aliases",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "إدارة الأسماء المستعارة",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Данни за действия с рецепти",
"new-recipe-action": "Ново действие с рецепта",
"edit-recipe-action": "Редактиране на действието с рецепта",
"action-type": "Вид действие"
"action-type": "Вид действие",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Създаване на псевдоним",
"manage-aliases": "Управление на псевдоними",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Dades d'accions de receptes",
"new-recipe-action": "Nova acció de receptes",
"edit-recipe-action": "Edita acció de receptes",
"action-type": "Tipus d'acció"
"action-type": "Tipus d'acció",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Crea un àlies",
"manage-aliases": "Gestiona els àlies",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Data akcí receptu",
"new-recipe-action": "Nová akce receptu",
"edit-recipe-action": "Upravit akci receptu",
"action-type": "Typ akce"
"action-type": "Typ akce",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Vytvořit alias",
"manage-aliases": "Spravovat aliasy",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Opskriftshandlinger",
"new-recipe-action": "Ny opskriftshandling",
"edit-recipe-action": "Rediger opskriftshandling",
"action-type": "Handlingstype"
"action-type": "Handlingstype",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Opret alias",
"manage-aliases": "Administrer aliaser",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Rezept-Aktionen Daten",
"new-recipe-action": "Neue Rezept-Aktion",
"edit-recipe-action": "Rezept-Aktion bearbeiten",
"action-type": "Aktionstyp"
"action-type": "Aktionstyp",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Alias erstellen",
"manage-aliases": "Aliasse verwalten",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Δεδομένα Ενεργειών Συνταγής",
"new-recipe-action": "Νέα Ενέργεια Συνταγής",
"edit-recipe-action": "Επεξεργασία Ενέργειας Συνταγής",
"action-type": "Τύπος Ενέργειας"
"action-type": "Τύπος Ενέργειας",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Δημιουργία ψευδώνυμου",
"manage-aliases": "Διαχείριση ψευδωνύμων",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "Manage Aliases",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Datos de Acciones de Receta",
"new-recipe-action": "Nueva Acción de Receta",
"edit-recipe-action": "Editar Acción de Receta",
"action-type": "Tipo de Acción"
"action-type": "Tipo de Acción",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Crear un Alias",
"manage-aliases": "Administrar Alias",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Retsepti kasutusteave",
"new-recipe-action": "Uus retsepti tegevus",
"edit-recipe-action": "Muuda retsepti tegevust",
"action-type": "Tegevuse tüüp"
"action-type": "Tegevuse tüüp",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Loo alias",
"manage-aliases": "Halda aliaseid",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Reseptin toimintojen käyttötiedot",
"new-recipe-action": "Uusi reseptin toiminto",
"edit-recipe-action": "Muuta reseptin toimintoa",
"action-type": "Toiminnon tyyppi"
"action-type": "Toiminnon tyyppi",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Luo alias",
"manage-aliases": "Hallitse aliaksia",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Données des actions de recette",
"new-recipe-action": "Nouvelle action de recette",
"edit-recipe-action": "Modifier l'action de recette",
"action-type": "Type d'action"
"action-type": "Type d'action",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Créer un alias",
"manage-aliases": "Gérer les alias",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Données des actions de recette",
"new-recipe-action": "Nouvelle action de recette",
"edit-recipe-action": "Modifier l'action de recette",
"action-type": "Type d'action"
"action-type": "Type d'action",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Créer un alias",
"manage-aliases": "Gérer les alias",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Données des actions de recette",
"new-recipe-action": "Nouvelle action de recette",
"edit-recipe-action": "Modifier l'action de recette",
"action-type": "Type d'action"
"action-type": "Type d'action",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Créer un alias",
"manage-aliases": "Gérer les alias",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Datos das Acións da Receita",
"new-recipe-action": "Nova Ación da Receita",
"edit-recipe-action": "Editar Ación da Receita",
"action-type": "Tipo de Ación"
"action-type": "Tipo de Ación",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Crear Pseudónimo",
"manage-aliases": "Xestionar Pseudónimos",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "מידע על הפעולות במתכון",
"new-recipe-action": "פעולת-מתכון חדשה",
"edit-recipe-action": "עריכת פעולת-מתכון",
"action-type": "סוג פעולה"
"action-type": "סוג פעולה",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "יצירת שם נרדף",
"manage-aliases": "נהל שמות נרדפים",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "Manage Aliases",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Receptekkel kapcsolatos tevékenységek adatai",
"new-recipe-action": "Új recept tevékenység",
"edit-recipe-action": "Recept tevékenység szerkesztése",
"action-type": "Művelet típusa"
"action-type": "Művelet típusa",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Alias készítése",
"manage-aliases": "Alias kezelése",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Gögn fyrir uppskriftaaðgerðir",
"new-recipe-action": "Nú uppskriftaaðgerð",
"edit-recipe-action": "Breyta uppskriftaaðgerð",
"action-type": "Aðgerð"
"action-type": "Aðgerð",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Stofna samheiti",
"manage-aliases": "Vinna með samheiti",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Dati Azioni Ricetta",
"new-recipe-action": "Nuova Azione Ricetta",
"edit-recipe-action": "Modifica Azione Ricetta",
"action-type": "Tipo Di Azione"
"action-type": "Tipo Di Azione",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Crea Alias",
"manage-aliases": "Gestisci Alias",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "レシピ操作データ",
"new-recipe-action": "新しいレシピ操作",
"edit-recipe-action": "レシピ操作の編集",
"action-type": "操作タイプ"
"action-type": "操作タイプ",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "エイリアスを作成",
"manage-aliases": "エイリアスの管理",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "레시피 액션 데이터",
"new-recipe-action": "새 레시피 액션",
"edit-recipe-action": "레시피 액션 편집",
"action-type": "액션 종류"
"action-type": "액션 종류",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "별칭 생성",
"manage-aliases": "별칭 관리",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "Manage Aliases",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recepšu darbību dati",
"new-recipe-action": "Jaunas receptes darbība",
"edit-recipe-action": "Rediģēt receptes darbību",
"action-type": "Darbības veids"
"action-type": "Darbības veids",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Izveidot aizstājvārdu",
"manage-aliases": "Pārvaldīt aizstājvārdus",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Gegevens voor acties met recepten",
"new-recipe-action": "Nieuwe actie met recept",
"edit-recipe-action": "Pas actie met recept aan",
"action-type": "Soort actie"
"action-type": "Soort actie",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Maak alias",
"manage-aliases": "Beheer aliassen ",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Opppgavehandlings-data",
"new-recipe-action": "Ny oppskriftshandling",
"edit-recipe-action": "Rediger oppskriftshandling",
"action-type": "Handlingstype"
"action-type": "Handlingstype",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Opprett alias",
"manage-aliases": "Administrer aliaser",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Dane akcji przepisu",
"new-recipe-action": "",
"edit-recipe-action": "Edycja akcji przepisu",
"action-type": "Typ akcji"
"action-type": "Typ akcji",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Utwórz alias",
"manage-aliases": "Zarządzaj aliasami",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Dados de Ações de Receita",
"new-recipe-action": "Nova Ação de Receita",
"edit-recipe-action": "Alterar Ação de Receita",
"action-type": "Tipo de Ação"
"action-type": "Tipo de Ação",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Criar Apelido",
"manage-aliases": "Gerenciar apelidos",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Dados das Ações da Receita",
"new-recipe-action": "Nova Ação da Receita",
"edit-recipe-action": "Editar Ação da Receita",
"action-type": "Tipo de Ação"
"action-type": "Tipo de Ação",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Criar Pseudónimo",
"manage-aliases": "Gerir Pseudónimos",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Date acțiuni rețetă",
"new-recipe-action": "Acțiune rețetă nouă",
"edit-recipe-action": "Editează Acțiune Rețetă",
"action-type": "Tip de acțiune"
"action-type": "Tip de acțiune",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Creează Alias",
"manage-aliases": "Gestionare Aliasuri",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Данные действий рецепта",
"new-recipe-action": "Новое действие с рецептом",
"edit-recipe-action": "Редактировать действие рецепта",
"action-type": "Тип Действия"
"action-type": "Тип Действия",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Создать псевдоним",
"manage-aliases": "Управление псевдонимами",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Dáta akcií receptu",
"new-recipe-action": "Nová akcia receptu",
"edit-recipe-action": "Upraviť akciu receptu",
"action-type": "Typ akcie"
"action-type": "Typ akcie",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Vytvoriť alias",
"manage-aliases": "Spravovať aliasy",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Podatki o opravilu na receptu",
"new-recipe-action": "Novo opravilo na receptu",
"edit-recipe-action": "Urejaj opravilo na receptu",
"action-type": "Tip opravila"
"action-type": "Tip opravila",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Ustvari alias",
"manage-aliases": "Upravljanje z aliasi",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "Manage Aliases",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Data för receptåtgärder",
"new-recipe-action": "Ny receptåtgärd",
"edit-recipe-action": "Redigera receptåtgärd",
"action-type": "Åtgärdstyp"
"action-type": "Åtgärdstyp",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Skapa alias",
"manage-aliases": "Hantera alias",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Tarif İşlemleri Verisi",
"new-recipe-action": "Yeni Tarif İşlemi",
"edit-recipe-action": "Tarif İşlemini Düzenle",
"action-type": "İşlem Türü"
"action-type": "İşlem Türü",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Takma Ad Oluştur",
"manage-aliases": "Takma Adları Yönet",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Дані дій рецепта",
"new-recipe-action": "Нова дія рецепту",
"edit-recipe-action": "Редагувати дії рецепта",
"action-type": "Тип Дії"
"action-type": "Тип Дії",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Створити псевдонім",
"manage-aliases": "Керувати псевдонімами",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "Manage Aliases",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "食谱行为数据",
"new-recipe-action": "新建食谱行为",
"edit-recipe-action": "编辑食谱行为",
"action-type": "行为种类"
"action-type": "行为种类",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "创建别名",
"manage-aliases": "管理别名",

View File

@@ -1168,7 +1168,11 @@
"recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action",
"edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type"
"action-type": "Action Type",
"action-types": {
"link": "Link",
"post": "Post"
}
},
"create-alias": "Create Alias",
"manage-aliases": "Manage Aliases",

View File

@@ -5377,8 +5377,8 @@
"shark meat": {
"aliases": [],
"description": "",
"name": "shark meat",
"plural_name": "shark meats"
"name": "haaienvlees",
"plural_name": "haaienvlees"
},
"garoupa": {
"aliases": [],
@@ -5687,7 +5687,7 @@
"salted shrimp": {
"aliases": [],
"description": "",
"name": "salted shrimp",
"name": "gezouten garnalen",
"plural_name": "gezouten garnalen"
},
"yaki-nori": {

View File

@@ -1,6 +1,6 @@
[
{
"name": "Landbrugsprodukt"
"name": "Landbrugsprodukter"
},
{
"name": "Korn"

View File

@@ -40,7 +40,7 @@ dependencies = [
"html2text==2025.4.15",
"paho-mqtt==1.6.1",
"pydantic-settings==2.13.1",
"pillow-heif==1.2.1",
"pillow-heif==1.3.0",
"pyjwt==2.11.0",
"openai==2.24.0",
"typing-extensions==4.15.0",
@@ -70,7 +70,7 @@ dev = [
"pytest==9.0.2",
"pytest-asyncio==1.3.0",
"rich==14.3.3",
"ruff==0.15.2",
"ruff==0.15.4",
"types-PyYAML==6.0.12.20250915",
"types-python-dateutil==2.9.0.20260124",
"types-python-slugify==8.0.2.20240310",

60
uv.lock generated
View File

@@ -922,7 +922,7 @@ requires-dist = [
{ name = "orjson", specifier = "==3.11.7" },
{ name = "paho-mqtt", specifier = "==1.6.1" },
{ name = "pillow", specifier = "==12.1.1" },
{ name = "pillow-heif", specifier = "==1.2.1" },
{ name = "pillow-heif", specifier = "==1.3.0" },
{ name = "psycopg2-binary", marker = "extra == 'pgsql'", specifier = "==2.9.11" },
{ name = "pydantic", specifier = "==2.12.5" },
{ name = "pydantic-settings", specifier = "==2.13.1" },
@@ -958,7 +958,7 @@ dev = [
{ name = "pytest", specifier = "==9.0.2" },
{ name = "pytest-asyncio", specifier = "==1.3.0" },
{ name = "rich", specifier = "==14.3.3" },
{ name = "ruff", specifier = "==0.15.2" },
{ name = "ruff", specifier = "==0.15.4" },
{ name = "types-python-dateutil", specifier = "==2.9.0.20260124" },
{ name = "types-python-slugify", specifier = "==8.0.2.20240310" },
{ name = "types-pyyaml", specifier = "==6.0.12.20250915" },
@@ -1237,20 +1237,20 @@ wheels = [
[[package]]
name = "pillow-heif"
version = "1.2.1"
version = "1.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pillow" },
]
sdist = { url = "https://files.pythonhosted.org/packages/22/f4/68bd0465dc0494c22e23334dde0a9c52dec5afe98cf5a40abb47f75e1b08/pillow_heif-1.2.1.tar.gz", hash = "sha256:29be44d636269e2d779b4aec629bc056ec7260b734a16b4d3bb284c49c200274", size = 17128668, upload-time = "2026-02-18T11:20:48.643Z" }
sdist = { url = "https://files.pythonhosted.org/packages/cd/58/2df4fc42840633e01c97b75965cb1bc6e14425973b92382391650e97e4b7/pillow_heif-1.3.0.tar.gz", hash = "sha256:af8d2bda85e395677d5bb50d7bda3b5655c946cc95b913b5e7222fabacbb467f", size = 17133211, upload-time = "2026-02-27T12:21:36.465Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/0e/4a/8d674f384d1d9d2d84193dcb7f6b41eeb240ed127f45f07114770205c8a1/pillow_heif-1.2.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:c5a3c8fec8cf63f6d9170f092a210e76d584beef5a5b0f5e8fbfa171eb27520a", size = 4666941, upload-time = "2026-02-18T11:20:03.957Z" },
{ url = "https://files.pythonhosted.org/packages/f9/4b/f08a3c535bb116ed74b7851eb5cc0ae105338f4d5e921d7547137322e68e/pillow_heif-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:add430cf7f5340eaa70c2e57af59655515fd415b2b93dde0baec87be48debd0f", size = 3392297, upload-time = "2026-02-18T11:20:06.167Z" },
{ url = "https://files.pythonhosted.org/packages/92/eb/39f38534894c1e12cd4526683b7aec5a1d403cd8f76efc4efce762826658/pillow_heif-1.2.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9a6daa0f88fe5fa76b72c848615836368d0577a108059e3070615c1e50551dc", size = 5843458, upload-time = "2026-02-18T11:20:07.737Z" },
{ url = "https://files.pythonhosted.org/packages/f9/07/431be5fc0d34d67dedc918a1a0f9f9aa7f3973557698fb7d35b5d136c45c/pillow_heif-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:35a355df6024f09b0e46b56bb5805c275a8ca7dc67e1da2be245aee3a70c82ec", size = 5577826, upload-time = "2026-02-18T11:20:09.407Z" },
{ url = "https://files.pythonhosted.org/packages/e5/1b/ecdedae3225b75e870980bc6f505af2387e38f9ca85a110e59b4328e7263/pillow_heif-1.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:33d84eb1c40d9c63d2ea869e6290f5b59ebf4421ed16090796be60b8e3b2a061", size = 6885202, upload-time = "2026-02-18T11:20:11.421Z" },
{ url = "https://files.pythonhosted.org/packages/b6/27/a9a2ca1aa874166064ced4c8fbb03f106ef71b9eda0cc45688c3e12376d4/pillow_heif-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2522a54df26f996993189326208513a6c8458ac89de51644a89b19fcda712539", size = 6510193, upload-time = "2026-02-18T11:20:13.435Z" },
{ url = "https://files.pythonhosted.org/packages/41/63/7d1f5358b6a4c1214e5ef25e2166992381e6a30c0da933ab56ce2c278ea9/pillow_heif-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:0c965277fde806c7c628b16f9a45f4a7b10c32c390ce7d70c0572499a5d8426f", size = 5483265, upload-time = "2026-02-18T11:20:15.741Z" },
{ url = "https://files.pythonhosted.org/packages/67/f7/e0b13500470421536fdfe01acfc4c56daccd3d23655605aa04cfb30cc58c/pillow_heif-1.3.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:079abbcaeb42ef0849a33f35c1a96ccd431feb56b242a0d4f8435a1c8ca02c7d", size = 4667382, upload-time = "2026-02-27T12:20:45.149Z" },
{ url = "https://files.pythonhosted.org/packages/a6/fb/beb62f26231e7c76d235e993d18b4ddb3d2d427e93539b8e6eb8dc188fa7/pillow_heif-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76c33f80ec111492642b98309db98516a7fba9677dcda9ec5fe9111b7e38d720", size = 3392733, upload-time = "2026-02-27T12:20:46.606Z" },
{ url = "https://files.pythonhosted.org/packages/14/58/3d86e237b3a20c909f62a50e8cb3492ed6206675136d1ebddb168920261b/pillow_heif-1.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33b838d06e2fd730f806af5a76bfc4cd3de9d146d88d37572e40f7a4c4ff8221", size = 5844247, upload-time = "2026-02-27T12:20:49.669Z" },
{ url = "https://files.pythonhosted.org/packages/58/2a/826faf3df8c9ef9a19dc96bdfff34cf76f8b025540d5f931903d2c64f25c/pillow_heif-1.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f92b387af891cf5d98f52e79eeaf51ee7955a54fe2deeec12bfb7519e41464b5", size = 5578692, upload-time = "2026-02-27T12:20:51.219Z" },
{ url = "https://files.pythonhosted.org/packages/f1/4e/59f74fede18e3e06f98a448488df2fa4e5de1c159419d47ca345a51a0da0/pillow_heif-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f9f73246836f93f99343cbc3052b61d212d27e59ddf40262d494a1e3e54af31a", size = 6885928, upload-time = "2026-02-27T12:20:52.934Z" },
{ url = "https://files.pythonhosted.org/packages/0a/e4/bce83d2f4d703f418d252b509a6c9d6de52dc7c4eedcf6a286f871dea824/pillow_heif-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84c3816742c2e49176e651895e73c555b9c3b0f3561d60230242f3be0c9d272b", size = 6511151, upload-time = "2026-02-27T12:20:54.236Z" },
{ url = "https://files.pythonhosted.org/packages/41/c2/87d433a9681c79e0926d8a113ea153d592ec49d1d7aa7278ee798bc490f2/pillow_heif-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:5f0db0bf49162fb1d73d13340a9576b3a2805bde026a9a40038bcc1a0878d710", size = 5483578, upload-time = "2026-02-27T12:20:55.715Z" },
]
[[package]]
@@ -1740,27 +1740,27 @@ wheels = [
[[package]]
name = "ruff"
version = "0.15.2"
version = "0.15.4"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/06/04/eab13a954e763b0606f460443fcbf6bb5a0faf06890ea3754ff16523dce5/ruff-0.15.2.tar.gz", hash = "sha256:14b965afee0969e68bb871eba625343b8673375f457af4abe98553e8bbb98342", size = 4558148, upload-time = "2026-02-19T22:32:20.271Z" }
sdist = { url = "https://files.pythonhosted.org/packages/da/31/d6e536cdebb6568ae75a7f00e4b4819ae0ad2640c3604c305a0428680b0c/ruff-0.15.4.tar.gz", hash = "sha256:3412195319e42d634470cc97aa9803d07e9d5c9223b99bcb1518f0c725f26ae1", size = 4569550, upload-time = "2026-02-26T20:04:14.959Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/2f/70/3a4dc6d09b13cb3e695f28307e5d889b2e1a66b7af9c5e257e796695b0e6/ruff-0.15.2-py3-none-linux_armv6l.whl", hash = "sha256:120691a6fdae2f16d65435648160f5b81a9625288f75544dc40637436b5d3c0d", size = 10430565, upload-time = "2026-02-19T22:32:41.824Z" },
{ url = "https://files.pythonhosted.org/packages/71/0b/bb8457b56185ece1305c666dc895832946d24055be90692381c31d57466d/ruff-0.15.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a89056d831256099658b6bba4037ac6dd06f49d194199215befe2bb10457ea5e", size = 10820354, upload-time = "2026-02-19T22:32:07.366Z" },
{ url = "https://files.pythonhosted.org/packages/2d/c1/e0532d7f9c9e0b14c46f61b14afd563298b8b83f337b6789ddd987e46121/ruff-0.15.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e36dee3a64be0ebd23c86ffa3aa3fd3ac9a712ff295e192243f814a830b6bd87", size = 10170767, upload-time = "2026-02-19T22:32:13.188Z" },
{ url = "https://files.pythonhosted.org/packages/47/e8/da1aa341d3af017a21c7a62fb5ec31d4e7ad0a93ab80e3a508316efbcb23/ruff-0.15.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9fb47b6d9764677f8c0a193c0943ce9a05d6763523f132325af8a858eadc2b9", size = 10529591, upload-time = "2026-02-19T22:32:02.547Z" },
{ url = "https://files.pythonhosted.org/packages/93/74/184fbf38e9f3510231fbc5e437e808f0b48c42d1df9434b208821efcd8d6/ruff-0.15.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f376990f9d0d6442ea9014b19621d8f2aaf2b8e39fdbfc79220b7f0c596c9b80", size = 10260771, upload-time = "2026-02-19T22:32:36.938Z" },
{ url = "https://files.pythonhosted.org/packages/05/ac/605c20b8e059a0bc4b42360414baa4892ff278cec1c91fff4be0dceedefd/ruff-0.15.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dcc987551952d73cbf5c88d9fdee815618d497e4df86cd4c4824cc59d5dd75f", size = 11045791, upload-time = "2026-02-19T22:32:31.642Z" },
{ url = "https://files.pythonhosted.org/packages/fd/52/db6e419908f45a894924d410ac77d64bdd98ff86901d833364251bd08e22/ruff-0.15.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42a47fd785cbe8c01b9ff45031af875d101b040ad8f4de7bbb716487c74c9a77", size = 11879271, upload-time = "2026-02-19T22:32:29.305Z" },
{ url = "https://files.pythonhosted.org/packages/3e/d8/7992b18f2008bdc9231d0f10b16df7dda964dbf639e2b8b4c1b4e91b83af/ruff-0.15.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbe9f49354866e575b4c6943856989f966421870e85cd2ac94dccb0a9dcb2fea", size = 11303707, upload-time = "2026-02-19T22:32:22.492Z" },
{ url = "https://files.pythonhosted.org/packages/d7/02/849b46184bcfdd4b64cde61752cc9a146c54759ed036edd11857e9b8443b/ruff-0.15.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7a672c82b5f9887576087d97be5ce439f04bbaf548ee987b92d3a7dede41d3a", size = 11149151, upload-time = "2026-02-19T22:32:44.234Z" },
{ url = "https://files.pythonhosted.org/packages/70/04/f5284e388bab60d1d3b99614a5a9aeb03e0f333847e2429bebd2aaa1feec/ruff-0.15.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:72ecc64f46f7019e2bcc3cdc05d4a7da958b629a5ab7033195e11a438403d956", size = 11091132, upload-time = "2026-02-19T22:32:24.691Z" },
{ url = "https://files.pythonhosted.org/packages/fa/ae/88d844a21110e14d92cf73d57363fab59b727ebeabe78009b9ccb23500af/ruff-0.15.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8dcf243b15b561c655c1ef2f2b0050e5d50db37fe90115507f6ff37d865dc8b4", size = 10504717, upload-time = "2026-02-19T22:32:26.75Z" },
{ url = "https://files.pythonhosted.org/packages/64/27/867076a6ada7f2b9c8292884ab44d08fd2ba71bd2b5364d4136f3cd537e1/ruff-0.15.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dab6941c862c05739774677c6273166d2510d254dac0695c0e3f5efa1b5585de", size = 10263122, upload-time = "2026-02-19T22:32:10.036Z" },
{ url = "https://files.pythonhosted.org/packages/e7/ef/faf9321d550f8ebf0c6373696e70d1758e20ccdc3951ad7af00c0956be7c/ruff-0.15.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1b9164f57fc36058e9a6806eb92af185b0697c9fe4c7c52caa431c6554521e5c", size = 10735295, upload-time = "2026-02-19T22:32:39.227Z" },
{ url = "https://files.pythonhosted.org/packages/2f/55/e8089fec62e050ba84d71b70e7834b97709ca9b7aba10c1a0b196e493f97/ruff-0.15.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:80d24fcae24d42659db7e335b9e1531697a7102c19185b8dc4a028b952865fd8", size = 11241641, upload-time = "2026-02-19T22:32:34.617Z" },
{ url = "https://files.pythonhosted.org/packages/23/01/1c30526460f4d23222d0fabd5888868262fd0e2b71a00570ca26483cd993/ruff-0.15.2-py3-none-win32.whl", hash = "sha256:fd5ff9e5f519a7e1bd99cbe8daa324010a74f5e2ebc97c6242c08f26f3714f6f", size = 10507885, upload-time = "2026-02-19T22:32:15.635Z" },
{ url = "https://files.pythonhosted.org/packages/5c/10/3d18e3bbdf8fc50bbb4ac3cc45970aa5a9753c5cb51bf9ed9a3cd8b79fa3/ruff-0.15.2-py3-none-win_amd64.whl", hash = "sha256:d20014e3dfa400f3ff84830dfb5755ece2de45ab62ecea4af6b7262d0fb4f7c5", size = 11623725, upload-time = "2026-02-19T22:32:04.947Z" },
{ url = "https://files.pythonhosted.org/packages/6d/78/097c0798b1dab9f8affe73da9642bb4500e098cb27fd8dc9724816ac747b/ruff-0.15.2-py3-none-win_arm64.whl", hash = "sha256:cabddc5822acdc8f7b5527b36ceac55cc51eec7b1946e60181de8fe83ca8876e", size = 10941649, upload-time = "2026-02-19T22:32:18.108Z" },
{ url = "https://files.pythonhosted.org/packages/f2/82/c11a03cfec3a4d26a0ea1e571f0f44be5993b923f905eeddfc397c13d360/ruff-0.15.4-py3-none-linux_armv6l.whl", hash = "sha256:a1810931c41606c686bae8b5b9a8072adac2f611bb433c0ba476acba17a332e0", size = 10453333, upload-time = "2026-02-26T20:04:20.093Z" },
{ url = "https://files.pythonhosted.org/packages/ce/5d/6a1f271f6e31dffb31855996493641edc3eef8077b883eaf007a2f1c2976/ruff-0.15.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5a1632c66672b8b4d3e1d1782859e98d6e0b4e70829530666644286600a33992", size = 10853356, upload-time = "2026-02-26T20:04:05.808Z" },
{ url = "https://files.pythonhosted.org/packages/b1/d8/0fab9f8842b83b1a9c2bf81b85063f65e93fb512e60effa95b0be49bfc54/ruff-0.15.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a4386ba2cd6c0f4ff75252845906acc7c7c8e1ac567b7bc3d373686ac8c222ba", size = 10187434, upload-time = "2026-02-26T20:03:54.656Z" },
{ url = "https://files.pythonhosted.org/packages/85/cc/cc220fd9394eff5db8d94dec199eec56dd6c9f3651d8869d024867a91030/ruff-0.15.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2496488bdfd3732747558b6f95ae427ff066d1fcd054daf75f5a50674411e75", size = 10535456, upload-time = "2026-02-26T20:03:52.738Z" },
{ url = "https://files.pythonhosted.org/packages/fa/0f/bced38fa5cf24373ec767713c8e4cadc90247f3863605fb030e597878661/ruff-0.15.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f1c4893841ff2d54cbda1b2860fa3260173df5ddd7b95d370186f8a5e66a4ac", size = 10287772, upload-time = "2026-02-26T20:04:08.138Z" },
{ url = "https://files.pythonhosted.org/packages/2b/90/58a1802d84fed15f8f281925b21ab3cecd813bde52a8ca033a4de8ab0e7a/ruff-0.15.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:820b8766bd65503b6c30aaa6331e8ef3a6e564f7999c844e9a547c40179e440a", size = 11049051, upload-time = "2026-02-26T20:04:03.53Z" },
{ url = "https://files.pythonhosted.org/packages/d2/ac/b7ad36703c35f3866584564dc15f12f91cb1a26a897dc2fd13d7cb3ae1af/ruff-0.15.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9fb74bab47139c1751f900f857fa503987253c3ef89129b24ed375e72873e85", size = 11890494, upload-time = "2026-02-26T20:04:10.497Z" },
{ url = "https://files.pythonhosted.org/packages/93/3d/3eb2f47a39a8b0da99faf9c54d3eb24720add1e886a5309d4d1be73a6380/ruff-0.15.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f80c98765949c518142b3a50a5db89343aa90f2c2bf7799de9986498ae6176db", size = 11326221, upload-time = "2026-02-26T20:04:12.84Z" },
{ url = "https://files.pythonhosted.org/packages/ff/90/bf134f4c1e5243e62690e09d63c55df948a74084c8ac3e48a88468314da6/ruff-0.15.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451a2e224151729b3b6c9ffb36aed9091b2996fe4bdbd11f47e27d8f2e8888ec", size = 11168459, upload-time = "2026-02-26T20:04:00.969Z" },
{ url = "https://files.pythonhosted.org/packages/b5/e5/a64d27688789b06b5d55162aafc32059bb8c989c61a5139a36e1368285eb/ruff-0.15.4-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a8f157f2e583c513c4f5f896163a93198297371f34c04220daf40d133fdd4f7f", size = 11104366, upload-time = "2026-02-26T20:03:48.099Z" },
{ url = "https://files.pythonhosted.org/packages/f1/f6/32d1dcb66a2559763fc3027bdd65836cad9eb09d90f2ed6a63d8e9252b02/ruff-0.15.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:917cc68503357021f541e69b35361c99387cdbbf99bd0ea4aa6f28ca99ff5338", size = 10510887, upload-time = "2026-02-26T20:03:45.771Z" },
{ url = "https://files.pythonhosted.org/packages/ff/92/22d1ced50971c5b6433aed166fcef8c9343f567a94cf2b9d9089f6aa80fe/ruff-0.15.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e9737c8161da79fd7cfec19f1e35620375bd8b2a50c3e77fa3d2c16f574105cc", size = 10285939, upload-time = "2026-02-26T20:04:22.42Z" },
{ url = "https://files.pythonhosted.org/packages/e6/f4/7c20aec3143837641a02509a4668fb146a642fd1211846634edc17eb5563/ruff-0.15.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:291258c917539e18f6ba40482fe31d6f5ac023994ee11d7bdafd716f2aab8a68", size = 10765471, upload-time = "2026-02-26T20:03:58.924Z" },
{ url = "https://files.pythonhosted.org/packages/d0/09/6d2f7586f09a16120aebdff8f64d962d7c4348313c77ebb29c566cefc357/ruff-0.15.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3f83c45911da6f2cd5936c436cf86b9f09f09165f033a99dcf7477e34041cbc3", size = 11263382, upload-time = "2026-02-26T20:04:24.424Z" },
{ url = "https://files.pythonhosted.org/packages/1b/fa/2ef715a1cd329ef47c1a050e10dee91a9054b7ce2fcfdd6a06d139afb7ec/ruff-0.15.4-py3-none-win32.whl", hash = "sha256:65594a2d557d4ee9f02834fcdf0a28daa8b3b9f6cb2cb93846025a36db47ef22", size = 10506664, upload-time = "2026-02-26T20:03:50.56Z" },
{ url = "https://files.pythonhosted.org/packages/d0/a8/c688ef7e29983976820d18710f955751d9f4d4eb69df658af3d006e2ba3e/ruff-0.15.4-py3-none-win_amd64.whl", hash = "sha256:04196ad44f0df220c2ece5b0e959c2f37c777375ec744397d21d15b50a75264f", size = 11651048, upload-time = "2026-02-26T20:04:17.191Z" },
{ url = "https://files.pythonhosted.org/packages/3e/0a/9e1be9035b37448ce2e68c978f0591da94389ade5a5abafa4cf99985d1b2/ruff-0.15.4-py3-none-win_arm64.whl", hash = "sha256:60d5177e8cfc70e51b9c5fad936c634872a74209f934c1e79107d11787ad5453", size = 10966776, upload-time = "2026-02-26T20:03:56.908Z" },
]
[[package]]