diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f19e95a03..55db0cf56 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: exclude: ^tests/data/ - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.11.12 + rev: v0.11.13 hooks: - id: ruff - id: ruff-format diff --git a/frontend/lang/messages/fr-CA.json b/frontend/lang/messages/fr-CA.json index e2a94d85e..d99748baf 100644 --- a/frontend/lang/messages/fr-CA.json +++ b/frontend/lang/messages/fr-CA.json @@ -1049,7 +1049,7 @@ "merge-dialog-text": "La combinaison des aliments sélectionnés fusionnera l’aliment source et l’aliment cible en un seul aliment. L’aliment source sera supprimé et toutes les références à l’aliment source seront mises à jour pour pointer vers l’aliment cible.", "merge-food-example": "Fusion de {food1} dans {food2}", "seed-dialog-text": "Initialisez la base de données avec des aliments basés sur votre langue locale. Cela permettra de créer plus de 200 aliments communs qui pourront être utilisés pour organiser votre base de données. Les aliments sont traduits grâce à un effort communautaire.", - "seed-dialog-warning": "Vous avez déjà des éléments dans votre base de données. Cette action ne fusionnera pas les doublons, vous devrez les gérer manuellement.", + "seed-dialog-warning": "Vous avez déjà des éléments dans votre base de données. Cette action ne conciliera pas les doublons, vous devrez les gérer manuellement.", "combine-food": "Combiner les aliments", "source-food": "Aliment source", "target-food": "Aliment cible", diff --git a/frontend/lang/messages/hu-HU.json b/frontend/lang/messages/hu-HU.json index 43a0e6ec5..9c1ea1e8f 100644 --- a/frontend/lang/messages/hu-HU.json +++ b/frontend/lang/messages/hu-HU.json @@ -45,13 +45,13 @@ "category-filter": "Kategória szűrő", "category-update-failed": "Kategória frissítése sikertelen", "category-updated": "Kategória frissítve", - "uncategorized-count": "Kategórizálatlan {count}", + "uncategorized-count": "Kategorizálatlan {count}", "create-a-category": "Kategória létrehozása", "category-name": "Kategória név", "category": "Kategória" }, "events": { - "apprise-url": "Apprise URL", + "apprise-url": "Apprise cím (URL)", "database": "Adatbázis", "delete-event": "Esemény törlése", "event-delete-confirmation": "Biztosan törölni szeretné ezt az eseményt?", @@ -638,7 +638,7 @@ "tree-view": "Fa nézet", "recipe-servings": "Recept tálalások", "recipe-yield": "Adagonkénti információk", - "recipe-yield-text": "Recipe Yield Text", + "recipe-yield-text": "Recept Késleltetés szöveg", "unit": "Mennyiségi egység", "upload-image": "Kép feltöltése", "screen-awake": "Képernyő ébren tartása", @@ -720,7 +720,7 @@ "backup-restore": "Biztonsági Mentés/Visszaállítás", "back-restore-description": "A biztonsági mentés visszaállítása felülírja az adatbázisban és az adatkönyvtárban lévő összes aktuális adatot, és a biztonsági mentés tartalmával helyettesíti azokat. {cannot-be-undone} Ha a visszaállítás sikeres, akkor a rendszer kilépteti Önt.", "cannot-be-undone": "Ezt a műveletet visszavonható - óvatosan használja.", - "postgresql-note": "If you are using PostgreSQL, please review the {backup-restore-process} prior to restoring.", + "postgresql-note": "Ha PostgreSQL-t használ, kérjük, a visszaállítás előtt tekintse át a {backup-restore-process}-t.", "backup-restore-process-in-the-documentation": "biztonsági mentés/visszaállítás folyamata a dokumentációban", "irreversible-acknowledgment": "Tudomásul veszem, hogy ez a művelet visszafordíthatatlan, helyrehozhatatlan, és adatvesztéssel járhat", "restore-backup": "Biztonsági mentés visszaállítása" diff --git a/frontend/lang/messages/nl-NL.json b/frontend/lang/messages/nl-NL.json index eaf0f9b9c..be878ec5f 100644 --- a/frontend/lang/messages/nl-NL.json +++ b/frontend/lang/messages/nl-NL.json @@ -26,7 +26,7 @@ "sponsor": "Sponsor" }, "asset": { - "assets": "Bijlagen", + "assets": "Onderdelen", "code": "Code", "file": "Bestand", "image": "Afbeelding", diff --git a/mealie/lang/messages/hu-HU.json b/mealie/lang/messages/hu-HU.json index 3577b86f5..e93de259e 100644 --- a/mealie/lang/messages/hu-HU.json +++ b/mealie/lang/messages/hu-HU.json @@ -15,7 +15,7 @@ "serving": "Adag", "servings": "Adag", "yield": "Adag", - "yields": "Yields" + "yields": "Késleltetve" } }, "mealplan": { diff --git a/mealie/repos/seed/resources/foods/locales/hu-HU.json b/mealie/repos/seed/resources/foods/locales/hu-HU.json index 4e33225c0..26f59115a 100644 --- a/mealie/repos/seed/resources/foods/locales/hu-HU.json +++ b/mealie/repos/seed/resources/foods/locales/hu-HU.json @@ -3,10 +3,10 @@ "name": "acorn squash" }, "alfalfa-sprouts": { - "name": "alfalfa sprouts" + "name": "lucernacsíra" }, "anchovies": { - "name": "anchovies" + "name": "szardella" }, "apples": { "name": "alma", @@ -16,7 +16,7 @@ "name": "articsóka" }, "arugula": { - "name": "arugula" + "name": "borsmustár" }, "asparagus": { "name": "spárga" @@ -63,16 +63,16 @@ "name": "kenyér" }, "breadfruit": { - "name": "breadfruit" + "name": "kenyérfa" }, "broccoflower": { - "name": "broccoflower" + "name": "brokkoli" }, "broccoli": { "name": "brokkoli" }, "broccoli-rabe": { - "name": "broccoli rabe" + "name": "rapini" }, "broccolini": { "name": "broccolini" @@ -138,109 +138,109 @@ "name": "zeller" }, "celery": { - "name": "celery" + "name": "zeller" }, "cereal-grains": { - "name": "cereal grains" + "name": "darált zeller" }, "chard": { - "name": "chard" + "name": "mángold" }, "cheese": { - "name": "cheese" + "name": "sajt" }, "chicory": { - "name": "chicory" + "name": "katáng" }, "chilli-peppers": { - "name": "chilli pepper", - "plural_name": "chilli peppers" + "name": "chili paprika", + "plural_name": "chili paprikák" }, "chinese-leaves": { - "name": "chinese leaves" + "name": "kínai kel" }, "chives": { - "name": "chives" + "name": "metélőhagyma" }, "chocolate": { - "name": "chocolate" + "name": "csoki" }, "cilantro": { "name": "cilantro" }, "cinnamon": { - "name": "cinnamon" + "name": "fahéj" }, "clarified-butter": { - "name": "clarified butter" + "name": "tisztított vaj" }, "coconut": { - "name": "coconut", - "plural_name": "coconuts" + "name": "kókusz", + "plural_name": "kókuszok" }, "coconut-milk": { - "name": "coconut milk" + "name": "kókusztej" }, "cod": { - "name": "cod" + "name": "tőkehal" }, "coffee": { - "name": "coffee" + "name": "kávé" }, "collard-greens": { - "name": "collard greens" + "name": "kelkáposzta" }, "confectioners-sugar": { - "name": "confectioners' sugar" + "name": "porcukor" }, "coriander": { - "name": "coriander" + "name": "koriander" }, "corn": { - "name": "corn", - "plural_name": "corns" + "name": "kukorica", + "plural_name": "kukoricák" }, "corn-syrup": { - "name": "corn syrup" + "name": "kukorica szirup" }, "cottonseed-oil": { - "name": "cottonseed oil" + "name": "gyapotmag-olaj" }, "courgette": { - "name": "courgette" + "name": "cukkini" }, "cream-of-tartar": { "name": "cream of tartar" }, "cucumber": { - "name": "cucumber", - "plural_name": "cucumbers" + "name": "uborka", + "plural_name": "uborkák" }, "cumin": { - "name": "cumin" + "name": "kömény" }, "daikon": { - "name": "daikon", - "plural_name": "daikons" + "name": "jégcsapretek", + "plural_name": "jégcsapretkek" }, "dairy-products-and-dairy-substitutes": { - "name": "dairy products and dairy substitutes" + "name": "tejtermékek és tej helyettesítők" }, "dandelion": { - "name": "dandelion" + "name": "pitypang" }, "demerara-sugar": { - "name": "demerara sugar" + "name": "demerara cukor" }, "dough": { - "name": "dough" + "name": "tészta" }, "edible-cactus": { - "name": "edible cactus" + "name": "ehető kaktusz" }, "eggplant": { - "name": "eggplant", - "plural_name": "eggplants" + "name": "padlizsán", + "plural_name": "padlizsánok" }, "eggs": { "name": "tojás", @@ -421,42 +421,42 @@ "name": "nutritional yeast flakes" }, "nuts": { - "name": "nuts" + "name": "diófélék" }, "octopuses": { - "name": "octopus", - "plural_name": "octopuses" + "name": "polip", + "plural_name": "polipok" }, "oils": { - "name": "oils" + "name": "olajok" }, "okra": { "name": "okra" }, "olive": { - "name": "olive" + "name": "olívabogyó" }, "olive-oil": { - "name": "olive oil" + "name": "olivaolaj" }, "onion": { - "name": "onion" + "name": "hagyma" }, "onion-family": { - "name": "onion family" + "name": "hagymafélék" }, "orange-blossom-water": { "name": "orange blossom water" }, "oranges": { - "name": "orange", - "plural_name": "oranges" + "name": "narancs", + "plural_name": "narancsok" }, "oregano": { - "name": "oregano" + "name": "oregánó" }, "oysters": { - "name": "oysters" + "name": "osztriga" }, "panch-puran": { "name": "panch puran" @@ -465,66 +465,66 @@ "name": "paprika" }, "parsley": { - "name": "parsley" + "name": "petrezselyem" }, "parsnip": { - "name": "parsnip", - "plural_name": "parsnips" + "name": "paszternák", + "plural_name": "paszternákok" }, "pear": { - "name": "pear", - "plural_name": "pears" + "name": "körte", + "plural_name": "körték" }, "peas": { - "name": "peas" + "name": "borsó" }, "pepper": { - "name": "pepper", - "plural_name": "peppers" + "name": "bors", + "plural_name": "bors" }, "pineapple": { - "name": "pineapple", - "plural_name": "pineapples" + "name": "ananász", + "plural_name": "ananász" }, "plantain": { "name": "plantain", "plural_name": "plantains" }, "poppy-seeds": { - "name": "poppy seeds" + "name": "mák" }, "potato": { - "name": "potato", - "plural_name": "potatoes" + "name": "burgonya", + "plural_name": "burgonyák" }, "poultry": { - "name": "poultry" + "name": "baromfi" }, "powdered-sugar": { - "name": "powdered sugar" + "name": "porcukor" }, "pumpkin": { - "name": "pumpkin", - "plural_name": "pumpkins" + "name": "tök", + "plural_name": "tökök" }, "pumpkin-seeds": { - "name": "pumpkin seeds" + "name": "tökmag" }, "radish": { - "name": "radish", - "plural_name": "radishes" + "name": "retek", + "plural_name": "retkek" }, "raw-sugar": { - "name": "raw sugar" + "name": "barna cukor" }, "refined-sugar": { - "name": "refined sugar" + "name": "finomitott cukor" }, "rice": { - "name": "rice" + "name": "rizs" }, "rice-flour": { - "name": "rice flour" + "name": "rízsliszt" }, "rock-sugar": { "name": "rock sugar" @@ -533,13 +533,13 @@ "name": "rum" }, "salmon": { - "name": "salmon" + "name": "lazac" }, "salt": { - "name": "salt" + "name": "só" }, "salt-cod": { - "name": "salt cod" + "name": "sózott tőkehal" }, "scallion": { "name": "scallion", @@ -649,44 +649,44 @@ "name": "turbanado sugar" }, "turnip": { - "name": "turnip", - "plural_name": "turnips" + "name": "fehér répa", + "plural_name": "fehérrépák" }, "unrefined-sugar": { - "name": "unrefined sugar" + "name": "finomitatlan cukor" }, "vanilla": { - "name": "vanilla" + "name": "vanília" }, "vegetables": { - "name": "vegetables" + "name": "zöldségek" }, "watercress": { "name": "watercress" }, "watermelon": { - "name": "watermelon", - "plural_name": "watermelons" + "name": "görögdinnye", + "plural_name": "görögdinnyék" }, "white-mushroom": { - "name": "white mushroom", - "plural_name": "white mushrooms" + "name": "fehér gomba", + "plural_name": "fehér gombák" }, "white-sugar": { - "name": "white sugar" + "name": "fehér cukor" }, "xanthan-gum": { - "name": "xanthan gum" + "name": "xantángumi" }, "yam": { - "name": "yam", - "plural_name": "yams" + "name": "jamgyökér", + "plural_name": "jamgyökerek" }, "yeast": { - "name": "yeast" + "name": "élesztő" }, "zucchini": { - "name": "zucchini", - "plural_name": "zucchinis" + "name": "cukkini", + "plural_name": "cukkinik" } } \ No newline at end of file diff --git a/mealie/repos/seed/resources/foods/locales/nl-NL.json b/mealie/repos/seed/resources/foods/locales/nl-NL.json index fbdfac28a..82368281f 100644 --- a/mealie/repos/seed/resources/foods/locales/nl-NL.json +++ b/mealie/repos/seed/resources/foods/locales/nl-NL.json @@ -23,7 +23,7 @@ }, "avocado": { "name": "avocado", - "plural_name": "avocado" + "plural_name": "avocados" }, "bacon": { "name": "spek\nontbijtspek\nbacon" @@ -47,7 +47,7 @@ "name": "bonen" }, "bell-peppers": { - "name": "paprikas", + "name": "paprika", "plural_name": "paprikas" }, "blackberries": { @@ -132,10 +132,10 @@ "plural_name": "bloemkolen" }, "cayenne-pepper": { - "name": "cayenne peper" + "name": "cayennepeper" }, "celeriac": { - "name": "knolselder" + "name": "knolselderij" }, "celery": { "name": "selderij" @@ -153,8 +153,8 @@ "name": "witlof" }, "chilli-peppers": { - "name": "chili peper", - "plural_name": "chili pepers" + "name": "chilipeper", + "plural_name": "chilipepers" }, "chinese-leaves": { "name": "chinese kool" @@ -201,7 +201,7 @@ "plural_name": "maïs" }, "corn-syrup": { - "name": "maisstroop" + "name": "maïsstroop" }, "cottonseed-oil": { "name": "katoenzaadolie" @@ -282,7 +282,7 @@ "name": "fruit" }, "fruit-sugar": { - "name": "fruit suiker" + "name": "fruitsuiker" }, "ful": { "name": "peul" @@ -402,7 +402,7 @@ "name": "mortadella" }, "mushroom": { - "name": "paddestoel", + "name": "paddenstoel", "plural_name": "paddenstoelen" }, "mussels": { @@ -443,7 +443,7 @@ "name": "ui" }, "onion-family": { - "name": "uien familie" + "name": "uienfamilie" }, "orange-blossom-water": { "name": "oranjebloesemwater" @@ -491,7 +491,7 @@ "plural_name": "bakbananen" }, "poppy-seeds": { - "name": "papaver zaden" + "name": "papaverzaden" }, "potato": { "name": "aardappel", @@ -518,7 +518,7 @@ "name": "ruwe suiker" }, "refined-sugar": { - "name": "gerafineerde suiker" + "name": "geraffineerde suiker" }, "rice": { "name": "rijst" @@ -539,7 +539,7 @@ "name": "zout" }, "salt-cod": { - "name": "gezoute kabeljauw" + "name": "gezouten kabeljauw" }, "scallion": { "name": "lente-ui", @@ -555,7 +555,7 @@ "name": "sesamzaad" }, "shallot": { - "name": "sjalotte", + "name": "sjalot", "plural_name": "sjalotjes" }, "skate": { @@ -571,8 +571,8 @@ "name": "sojaboon" }, "spaghetti-squash": { - "name": "spaghetti pompoen", - "plural_name": "spaghetti pompoenen" + "name": "spaghettipompoen", + "plural_name": "spaghettipompoenen" }, "speck": { "name": "spek" @@ -585,14 +585,14 @@ }, "spring-onion": { "name": "lente-ui", - "plural_name": "lente-uitjes" + "plural_name": "lente-uien" }, "squash": { "name": "pompoen", "plural_name": "pompoenen" }, "squash-family": { - "name": "pompoen familie" + "name": "pompoenfamilie" }, "stockfish": { "name": "stokvis" @@ -626,7 +626,7 @@ }, "taro": { "name": "taro", - "plural_name": "taroes" + "plural_name": "taros" }, "teff": { "name": "abessijns liefdegras" @@ -639,7 +639,7 @@ "name": "forel" }, "tubers": { - "name": "knolgewassen", + "name": "knolgewas", "plural_name": "knolgewassen" }, "tuna": { @@ -653,7 +653,7 @@ "plural_name": "knolrapen" }, "unrefined-sugar": { - "name": "ongerafineerde suiker" + "name": "ongeraffineerde suiker" }, "vanilla": { "name": "vanille" diff --git a/mealie/routes/shared/__init__.py b/mealie/routes/shared/__init__.py index 61bb31efd..99ee1a083 100644 --- a/mealie/routes/shared/__init__.py +++ b/mealie/routes/shared/__init__.py @@ -46,5 +46,5 @@ class RecipeSharedController(BaseUserController): return self.mixins.get_one(item_id) @router.delete("/{item_id}") - def delete_one(self, item_id: UUID4 | None = None) -> None: + def delete_one(self, item_id: UUID4) -> None: return self.mixins.delete_one(item_id) diff --git a/mealie/services/scraper/cleaner.py b/mealie/services/scraper/cleaner.py index b5acb88b7..0e1040742 100644 --- a/mealie/services/scraper/cleaner.py +++ b/mealie/services/scraper/cleaner.py @@ -2,6 +2,7 @@ import contextlib import functools import html import json +import numbers import operator import re import typing @@ -392,7 +393,7 @@ def clean_yield(yields: str | list[str] | None) -> tuple[float, float, str]: return servings_qty, yld_qty, yld_str -def clean_time(time_entry: str | timedelta | None, translator: Translator) -> None | str: +def clean_time(time_entry: str | timedelta | int | float | None, translator: Translator) -> None | str: """_summary_ Supported Structures: @@ -401,6 +402,7 @@ def clean_time(time_entry: str | timedelta | None, translator: Translator) -> No - `"PT1H30M"` - returns "1 hour 30 minutes" - `timedelta(hours=1, minutes=30)` - returns "1 hour 30 minutes" - `{"minValue": "PT1H30M"}` - returns "1 hour 30 minutes" + - `30` - as a `int` or `float` assumed to be in minutes, returns "30 minutes" Raises: TypeError: if the type is not supported a TypeError is raised @@ -412,6 +414,10 @@ def clean_time(time_entry: str | timedelta | None, translator: Translator) -> No return None match time_entry: + case numbers.Number(): + # type checked by case statement + time_delta = timedelta(minutes=time_entry) # type: ignore + return pretty_print_timedelta(time_delta, translator) case str(time_entry): if not time_entry.strip(): return None @@ -431,7 +437,9 @@ def clean_time(time_entry: str | timedelta | None, translator: Translator) -> No # TODO: Not sure what to do here return str(time_entry) case _: - logger.warning("[SCRAPER] Unexpected type or structure for variable time_entry") + logger.warning( + "[SCRAPER] Unexpected type(%s) or structure for variable time_entry: %s", type(time_entry), time_entry + ) return None diff --git a/poetry.lock b/poetry.lock index c7e6a3416..502746399 100644 --- a/poetry.lock +++ b/poetry.lock @@ -684,14 +684,14 @@ cli = ["requests"] [[package]] name = "fastapi" -version = "0.115.12" +version = "0.115.13" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d"}, - {file = "fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681"}, + {file = "fastapi-0.115.13-py3-none-any.whl", hash = "sha256:0a0cab59afa7bab22f5eb347f8c9864b681558c278395e94035a741fc10cd865"}, + {file = "fastapi-0.115.13.tar.gz", hash = "sha256:55d1d25c2e1e0a0a50aceb1c8705cd932def273c102bff0b1c1da88b3c6eb307"}, ] [package.dependencies] @@ -1666,44 +1666,44 @@ files = [ [[package]] name = "mypy" -version = "1.16.0" +version = "1.16.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mypy-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7909541fef256527e5ee9c0a7e2aeed78b6cda72ba44298d1334fe7881b05c5c"}, - {file = "mypy-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e71d6f0090c2256c713ed3d52711d01859c82608b5d68d4fa01a3fe30df95571"}, - {file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:936ccfdd749af4766be824268bfe22d1db9eb2f34a3ea1d00ffbe5b5265f5491"}, - {file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4086883a73166631307fdd330c4a9080ce24913d4f4c5ec596c601b3a4bdd777"}, - {file = "mypy-1.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:feec38097f71797da0231997e0de3a58108c51845399669ebc532c815f93866b"}, - {file = "mypy-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:09a8da6a0ee9a9770b8ff61b39c0bb07971cda90e7297f4213741b48a0cc8d93"}, - {file = "mypy-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9f826aaa7ff8443bac6a494cf743f591488ea940dd360e7dd330e30dd772a5ab"}, - {file = "mypy-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82d056e6faa508501af333a6af192c700b33e15865bda49611e3d7d8358ebea2"}, - {file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:089bedc02307c2548eb51f426e085546db1fa7dd87fbb7c9fa561575cf6eb1ff"}, - {file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6a2322896003ba66bbd1318c10d3afdfe24e78ef12ea10e2acd985e9d684a666"}, - {file = "mypy-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:021a68568082c5b36e977d54e8f1de978baf401a33884ffcea09bd8e88a98f4c"}, - {file = "mypy-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:54066fed302d83bf5128632d05b4ec68412e1f03ef2c300434057d66866cea4b"}, - {file = "mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13"}, - {file = "mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090"}, - {file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d045d33c284e10a038f5e29faca055b90eee87da3fc63b8889085744ebabb5a1"}, - {file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8"}, - {file = "mypy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb14a4a871bb8efb1e4a50360d4e3c8d6c601e7a31028a2c79f9bb659b63d730"}, - {file = "mypy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec"}, - {file = "mypy-1.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a9e056237c89f1587a3be1a3a70a06a698d25e2479b9a2f57325ddaaffc3567b"}, - {file = "mypy-1.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b07e107affb9ee6ce1f342c07f51552d126c32cd62955f59a7db94a51ad12c0"}, - {file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6fb60cbd85dc65d4d63d37cb5c86f4e3a301ec605f606ae3a9173e5cf34997b"}, - {file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7e32297a437cc915599e0578fa6bc68ae6a8dc059c9e009c628e1c47f91495d"}, - {file = "mypy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:afe420c9380ccec31e744e8baff0d406c846683681025db3531b32db56962d52"}, - {file = "mypy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:55f9076c6ce55dd3f8cd0c6fff26a008ca8e5131b89d5ba6d86bd3f47e736eeb"}, - {file = "mypy-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f56236114c425620875c7cf71700e3d60004858da856c6fc78998ffe767b73d3"}, - {file = "mypy-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:15486beea80be24ff067d7d0ede673b001d0d684d0095803b3e6e17a886a2a92"}, - {file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f2ed0e0847a80655afa2c121835b848ed101cc7b8d8d6ecc5205aedc732b1436"}, - {file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb5fbc8063cb4fde7787e4c0406aa63094a34a2daf4673f359a1fb64050e9cb2"}, - {file = "mypy-1.16.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a5fcfdb7318c6a8dd127b14b1052743b83e97a970f0edb6c913211507a255e20"}, - {file = "mypy-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e7e0ad35275e02797323a5aa1be0b14a4d03ffdb2e5f2b0489fa07b89c67b21"}, - {file = "mypy-1.16.0-py3-none-any.whl", hash = "sha256:29e1499864a3888bca5c1542f2d7232c6e586295183320caa95758fc84034031"}, - {file = "mypy-1.16.0.tar.gz", hash = "sha256:84b94283f817e2aa6350a14b4a8fb2a35a53c286f97c9d30f53b63620e7af8ab"}, + {file = "mypy-1.16.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b4f0fed1022a63c6fec38f28b7fc77fca47fd490445c69d0a66266c59dd0b88a"}, + {file = "mypy-1.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:86042bbf9f5a05ea000d3203cf87aa9d0ccf9a01f73f71c58979eb9249f46d72"}, + {file = "mypy-1.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ea7469ee5902c95542bea7ee545f7006508c65c8c54b06dc2c92676ce526f3ea"}, + {file = "mypy-1.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:352025753ef6a83cb9e7f2427319bb7875d1fdda8439d1e23de12ab164179574"}, + {file = "mypy-1.16.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ff9fa5b16e4c1364eb89a4d16bcda9987f05d39604e1e6c35378a2987c1aac2d"}, + {file = "mypy-1.16.1-cp310-cp310-win_amd64.whl", hash = "sha256:1256688e284632382f8f3b9e2123df7d279f603c561f099758e66dd6ed4e8bd6"}, + {file = "mypy-1.16.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:472e4e4c100062488ec643f6162dd0d5208e33e2f34544e1fc931372e806c0cc"}, + {file = "mypy-1.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea16e2a7d2714277e349e24d19a782a663a34ed60864006e8585db08f8ad1782"}, + {file = "mypy-1.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08e850ea22adc4d8a4014651575567b0318ede51e8e9fe7a68f25391af699507"}, + {file = "mypy-1.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22d76a63a42619bfb90122889b903519149879ddbf2ba4251834727944c8baca"}, + {file = "mypy-1.16.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c7ce0662b6b9dc8f4ed86eb7a5d505ee3298c04b40ec13b30e572c0e5ae17c4"}, + {file = "mypy-1.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:211287e98e05352a2e1d4e8759c5490925a7c784ddc84207f4714822f8cf99b6"}, + {file = "mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d"}, + {file = "mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9"}, + {file = "mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79"}, + {file = "mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15"}, + {file = "mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd"}, + {file = "mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b"}, + {file = "mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438"}, + {file = "mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536"}, + {file = "mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f"}, + {file = "mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359"}, + {file = "mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be"}, + {file = "mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee"}, + {file = "mypy-1.16.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fc688329af6a287567f45cc1cefb9db662defeb14625213a5b7da6e692e2069"}, + {file = "mypy-1.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e198ab3f55924c03ead626ff424cad1732d0d391478dfbf7bb97b34602395da"}, + {file = "mypy-1.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09aa4f91ada245f0a45dbc47e548fd94e0dd5a8433e0114917dc3b526912a30c"}, + {file = "mypy-1.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13c7cd5b1cb2909aa318a90fd1b7e31f17c50b242953e7dd58345b2a814f6383"}, + {file = "mypy-1.16.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:58e07fb958bc5d752a280da0e890c538f1515b79a65757bbdc54252ba82e0b40"}, + {file = "mypy-1.16.1-cp39-cp39-win_amd64.whl", hash = "sha256:f895078594d918f93337a505f8add9bd654d1a24962b4c6ed9390e12531eb31b"}, + {file = "mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37"}, + {file = "mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab"}, ] [package.dependencies] @@ -1855,14 +1855,14 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "openai" -version = "1.82.1" +version = "1.86.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "openai-1.82.1-py3-none-any.whl", hash = "sha256:334eb5006edf59aa464c9e932b9d137468d810b2659e5daea9b3a8c39d052395"}, - {file = "openai-1.82.1.tar.gz", hash = "sha256:ffc529680018e0417acac85f926f92aa0bbcbc26e82e2621087303c66bc7f95d"}, + {file = "openai-1.86.0-py3-none-any.whl", hash = "sha256:c8889c39410621fe955c230cc4c21bfe36ec887f4e60a957de05f507d7e1f349"}, + {file = "openai-1.86.0.tar.gz", hash = "sha256:c64d5b788359a8fdf69bd605ae804ce41c1ce2e78b8dd93e2542e0ee267f1e4b"}, ] [package.dependencies] @@ -2377,14 +2377,14 @@ files = [ [[package]] name = "pydantic" -version = "2.11.5" +version = "2.11.7" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7"}, - {file = "pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a"}, + {file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b"}, + {file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db"}, ] [package.dependencies] @@ -2675,24 +2675,25 @@ requests = ">=2.32.3" [[package]] name = "pytest" -version = "8.3.5" +version = "8.4.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"}, - {file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"}, + {file = "pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"}, + {file = "pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1" +packaging = ">=20" pluggy = ">=1.5,<2" +pygments = ">=2.7.2" [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-asyncio" @@ -3065,14 +3066,14 @@ orjson = ["orjson (>=3.9.14,<4)"] [[package]] name = "recipe-scrapers" -version = "15.7.1" +version = "15.8.0" description = "Python package, scraping recipes from all over the internet" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "recipe_scrapers-15.7.1-py3-none-any.whl", hash = "sha256:f5131c3c9ce7c7a261ffe25514334c2b86b911fc3e53935c91cf7dd420b80855"}, - {file = "recipe_scrapers-15.7.1.tar.gz", hash = "sha256:7657a743994712fdb1f7ff463891e593a55c6f9597be4e64425dcadd3b9aa75f"}, + {file = "recipe_scrapers-15.8.0-py3-none-any.whl", hash = "sha256:65015802f3d6e60493b9a9de4737c0aa42eb67c6d2ced43a1f32ffaf4fb9c48e"}, + {file = "recipe_scrapers-15.8.0.tar.gz", hash = "sha256:938d0510b88809fa181e49d95498bbc40db40d8d973637b3f7b77da837bcda12"}, ] [package.dependencies] @@ -3188,19 +3189,19 @@ files = [ [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" @@ -3248,30 +3249,30 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "ruff" -version = "0.11.12" +version = "0.11.13" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.11.12-py3-none-linux_armv6l.whl", hash = "sha256:c7680aa2f0d4c4f43353d1e72123955c7a2159b8646cd43402de6d4a3a25d7cc"}, - {file = "ruff-0.11.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2cad64843da9f134565c20bcc430642de897b8ea02e2e79e6e02a76b8dcad7c3"}, - {file = "ruff-0.11.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9b6886b524a1c659cee1758140138455d3c029783d1b9e643f3624a5ee0cb0aa"}, - {file = "ruff-0.11.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc3a3690aad6e86c1958d3ec3c38c4594b6ecec75c1f531e84160bd827b2012"}, - {file = "ruff-0.11.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f97fdbc2549f456c65b3b0048560d44ddd540db1f27c778a938371424b49fe4a"}, - {file = "ruff-0.11.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74adf84960236961090e2d1348c1a67d940fd12e811a33fb3d107df61eef8fc7"}, - {file = "ruff-0.11.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b56697e5b8bcf1d61293ccfe63873aba08fdbcbbba839fc046ec5926bdb25a3a"}, - {file = "ruff-0.11.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d47afa45e7b0eaf5e5969c6b39cbd108be83910b5c74626247e366fd7a36a13"}, - {file = "ruff-0.11.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bf9603fe1bf949de8b09a2da896f05c01ed7a187f4a386cdba6760e7f61be"}, - {file = "ruff-0.11.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08033320e979df3b20dba567c62f69c45e01df708b0f9c83912d7abd3e0801cd"}, - {file = "ruff-0.11.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:929b7706584f5bfd61d67d5070f399057d07c70585fa8c4491d78ada452d3bef"}, - {file = "ruff-0.11.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7de4a73205dc5756b8e09ee3ed67c38312dce1aa28972b93150f5751199981b5"}, - {file = "ruff-0.11.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2635c2a90ac1b8ca9e93b70af59dfd1dd2026a40e2d6eebaa3efb0465dd9cf02"}, - {file = "ruff-0.11.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d05d6a78a89166f03f03a198ecc9d18779076ad0eec476819467acb401028c0c"}, - {file = "ruff-0.11.12-py3-none-win32.whl", hash = "sha256:f5a07f49767c4be4772d161bfc049c1f242db0cfe1bd976e0f0886732a4765d6"}, - {file = "ruff-0.11.12-py3-none-win_amd64.whl", hash = "sha256:5a4d9f8030d8c3a45df201d7fb3ed38d0219bccd7955268e863ee4a115fa0832"}, - {file = "ruff-0.11.12-py3-none-win_arm64.whl", hash = "sha256:65194e37853158d368e333ba282217941029a28ea90913c67e558c611d04daa5"}, - {file = "ruff-0.11.12.tar.gz", hash = "sha256:43cf7f69c7d7c7d7513b9d59c5d8cafd704e05944f978614aa9faff6ac202603"}, + {file = "ruff-0.11.13-py3-none-linux_armv6l.whl", hash = "sha256:4bdfbf1240533f40042ec00c9e09a3aade6f8c10b6414cf11b519488d2635d46"}, + {file = "ruff-0.11.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aef9c9ed1b5ca28bb15c7eac83b8670cf3b20b478195bd49c8d756ba0a36cf48"}, + {file = "ruff-0.11.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53b15a9dfdce029c842e9a5aebc3855e9ab7771395979ff85b7c1dedb53ddc2b"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab153241400789138d13f362c43f7edecc0edfffce2afa6a68434000ecd8f69a"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c51f93029d54a910d3d24f7dd0bb909e31b6cd989a5e4ac513f4eb41629f0dc"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1808b3ed53e1a777c2ef733aca9051dc9bf7c99b26ece15cb59a0320fbdbd629"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d28ce58b5ecf0f43c1b71edffabe6ed7f245d5336b17805803312ec9bc665933"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55e4bc3a77842da33c16d55b32c6cac1ec5fb0fbec9c8c513bdce76c4f922165"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:633bf2c6f35678c56ec73189ba6fa19ff1c5e4807a78bf60ef487b9dd272cc71"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ffbc82d70424b275b089166310448051afdc6e914fdab90e08df66c43bb5ca9"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a9ddd3ec62a9a89578c85842b836e4ac832d4a2e0bfaad3b02243f930ceafcc"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492"}, + {file = "ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250"}, + {file = "ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3"}, + {file = "ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b"}, + {file = "ruff-0.11.13.tar.gz", hash = "sha256:26fa247dc68d1d4e72c179e08889a25ac0c7ba4d78aecfc835d49cbfd60bf514"}, ] [[package]] @@ -3555,14 +3556,14 @@ files = [ [[package]] name = "typing-extensions" -version = "4.13.2" -description = "Backported and Experimental Type Hints for Python 3.8+" +version = "4.14.0" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, - {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, + {file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"}, + {file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"}, ] [[package]]