diff --git a/frontend/composables/use-locales/available-locales.ts b/frontend/composables/use-locales/available-locales.ts index 7615813fc0aa..b1322df04fca 100644 --- a/frontend/composables/use-locales/available-locales.ts +++ b/frontend/composables/use-locales/available-locales.ts @@ -3,12 +3,12 @@ export const LOCALES = [ { name: "繁體中文 (Chinese traditional)", value: "zh-TW", - progress: 50, + progress: 26, }, { name: "简体中文 (Chinese simplified)", value: "zh-CN", - progress: 41, + progress: 34, }, { name: "Tiếng Việt (Vietnamese)", @@ -18,57 +18,57 @@ export const LOCALES = [ { name: "Українська (Ukrainian)", value: "uk-UA", - progress: 88, + progress: 100, }, { name: "Türkçe (Turkish)", value: "tr-TR", - progress: 41, + progress: 47, }, { name: "Svenska (Swedish)", value: "sv-SE", - progress: 66, + progress: 60, }, { name: "српски (Serbian)", value: "sr-SP", - progress: 8, + progress: 2, }, { name: "Slovenian", value: "sl-SI", - progress: 73, + progress: 47, }, { name: "Slovak", value: "sk-SK", - progress: 78, + progress: 99, }, { name: "Pусский (Russian)", value: "ru-RU", - progress: 49, + progress: 31, }, { name: "Română (Romanian)", value: "ro-RO", - progress: 7, + progress: 12, }, { name: "Português (Portuguese)", value: "pt-PT", - progress: 27, + progress: 69, }, { name: "Português do Brasil (Brazilian Portuguese)", value: "pt-BR", - progress: 31, + progress: 97, }, { name: "Polski (Polish)", value: "pl-PL", - progress: 69, + progress: 99, }, { name: "Norsk (Norwegian)", @@ -78,37 +78,52 @@ export const LOCALES = [ { name: "Nederlands (Dutch)", value: "nl-NL", - progress: 81, + progress: 100, + }, + { + name: "Latvian", + value: "lv-LV", + progress: 0, }, { name: "Lithuanian", value: "lt-LT", - progress: 65, + progress: 99, }, { name: "한국어 (Korean)", value: "ko-KR", - progress: 0, + progress: 3, }, { name: "日本語 (Japanese)", value: "ja-JP", - progress: 0, + progress: 9, }, { name: "Italiano (Italian)", value: "it-IT", - progress: 81, + progress: 98, }, { name: "Magyar (Hungarian)", value: "hu-HU", - progress: 60, + progress: 43, + }, + { + name: "Croatian", + value: "hr-HR", + progress: 100, }, { name: "עברית (Hebrew)", value: "he-IL", - progress: 24, + progress: 99, + }, + { + name: "Galician", + value: "gl-ES", + progress: 0, }, { name: "Français (French)", @@ -118,17 +133,17 @@ export const LOCALES = [ { name: "French, Canada", value: "fr-CA", - progress: 61, + progress: 54, }, { name: "Suomi (Finnish)", value: "fi-FI", - progress: 45, + progress: 31, }, { name: "Español (Spanish)", value: "es-ES", - progress: 70, + progress: 59, }, { name: "American English", @@ -138,46 +153,46 @@ export const LOCALES = [ { name: "British English", value: "en-GB", - progress: 23, + progress: 2, }, { name: "Ελληνικά (Greek)", value: "el-GR", - progress: 51, + progress: 33, }, { name: "Deutsch (German)", value: "de-DE", - progress: 99, + progress: 100, }, { name: "Dansk (Danish)", value: "da-DK", - progress: 76, + progress: 90, }, { name: "Čeština (Czech)", value: "cs-CZ", - progress: 75, + progress: 60, }, { name: "Català (Catalan)", value: "ca-ES", - progress: 69, + progress: 54, }, { name: "Bulgarian", value: "bg-BG", - progress: 25, + progress: 13, }, { name: "العربية (Arabic)", value: "ar-SA", - progress: 18, + progress: 7, }, { name: "Afrikaans (Afrikaans)", value: "af-ZA", - progress: 6, + progress: 0, }, ] diff --git a/frontend/lib/api/types/recipe.ts b/frontend/lib/api/types/recipe.ts index 6b73e604a81d..5ed3126b6b29 100644 --- a/frontend/lib/api/types/recipe.ts +++ b/frontend/lib/api/types/recipe.ts @@ -357,7 +357,7 @@ export interface RecipeTimelineEventCreate { subject: string; eventType: TimelineEventType; eventMessage?: string; - image?: TimelineEventImage; + image?: TimelineEventImage & string; timestamp?: string; } export interface RecipeTimelineEventIn { @@ -366,7 +366,7 @@ export interface RecipeTimelineEventIn { subject: string; eventType: TimelineEventType; eventMessage?: string; - image?: TimelineEventImage; + image?: TimelineEventImage & string; timestamp?: string; } export interface RecipeTimelineEventOut { @@ -375,7 +375,7 @@ export interface RecipeTimelineEventOut { subject: string; eventType: TimelineEventType; eventMessage?: string; - image?: TimelineEventImage; + image?: TimelineEventImage & string; timestamp?: string; id: string; createdAt: string; diff --git a/frontend/lib/api/types/response.ts b/frontend/lib/api/types/response.ts index 0f2c7dab8478..1ce11f11d853 100644 --- a/frontend/lib/api/types/response.ts +++ b/frontend/lib/api/types/response.ts @@ -21,6 +21,15 @@ export interface PaginationQuery { orderBy?: string; orderDirection?: OrderDirection & string; queryFilter?: string; + paginationSeed?: string; +} +export interface RecipeSearchQuery { + cookbook?: string; + requireAllCategories?: boolean; + requireAllTags?: boolean; + requireAllTools?: boolean; + requireAllFoods?: boolean; + search?: string; } export interface SuccessResponse { message: string; diff --git a/frontend/lib/api/types/user.ts b/frontend/lib/api/types/user.ts index d7e6d5dfcb96..6871dbb83afe 100644 --- a/frontend/lib/api/types/user.ts +++ b/frontend/lib/api/types/user.ts @@ -119,6 +119,9 @@ export interface PrivateUser { loginAttemps?: number; lockedAt?: string; } +export interface PasswordResetToken { + token: string; +} export interface PrivatePasswordResetToken { userId: string; token: string; @@ -148,6 +151,7 @@ export interface UnlockResults { export interface UpdateGroup { name: string; id: string; + slug: string; categories?: CategoryBase[]; webhooks?: unknown[]; } @@ -234,6 +238,3 @@ export interface UserIn { export interface ValidateResetToken { token: string; } -export interface PasswordResetToken { - token: string; -} diff --git a/frontend/nuxt.config.js b/frontend/nuxt.config.js index 732d3aaf2335..533448fba486 100644 --- a/frontend/nuxt.config.js +++ b/frontend/nuxt.config.js @@ -158,6 +158,7 @@ export default { i18n: { locales: [ // CODE_GEN_ID: MESSAGE_LOCALES + { code: "lv-LV", file: "lv-LV.json" }, { code: "el-GR", file: "el-GR.json" }, { code: "it-IT", file: "it-IT.json" }, { code: "ko-KR", file: "ko-KR.json" }, @@ -177,12 +178,14 @@ export default { { code: "lt-LT", file: "lt-LT.json" }, { code: "fr-CA", file: "fr-CA.json" }, { code: "pl-PL", file: "pl-PL.json" }, + { code: "hr-HR", file: "hr-HR.json" }, { code: "da-DK", file: "da-DK.json" }, { code: "pt-BR", file: "pt-BR.json" }, { code: "de-DE", file: "de-DE.json" }, { code: "ca-ES", file: "ca-ES.json" }, { code: "sr-SP", file: "sr-SP.json" }, { code: "cs-CZ", file: "cs-CZ.json" }, + { code: "gl-ES", file: "gl-ES.json" }, { code: "fr-FR", file: "fr-FR.json" }, { code: "zh-TW", file: "zh-TW.json" }, { code: "af-ZA", file: "af-ZA.json" }, diff --git a/frontend/types/components.d.ts b/frontend/types/components.d.ts index 4faffb666254..85725e4dd3bd 100644 --- a/frontend/types/components.d.ts +++ b/frontend/types/components.d.ts @@ -18,6 +18,7 @@ import ButtonLink from "@/components/global/ButtonLink.vue"; import ContextMenu from "@/components/global/ContextMenu.vue"; import CrudTable from "@/components/global/CrudTable.vue"; import DevDumpJson from "@/components/global/DevDumpJson.vue"; +import DocLink from "@/components/global/DocLink.vue"; import DropZone from "@/components/global/DropZone.vue"; import HelpIcon from "@/components/global/HelpIcon.vue"; import InputColor from "@/components/global/InputColor.vue"; @@ -57,6 +58,7 @@ declare module "vue" { ContextMenu: typeof ContextMenu; CrudTable: typeof CrudTable; DevDumpJson: typeof DevDumpJson; + DocLink: typeof DocLink; DropZone: typeof DropZone; HelpIcon: typeof HelpIcon; InputColor: typeof InputColor; diff --git a/mealie/schema/group/__init__.py b/mealie/schema/group/__init__.py index 18cb0f97226e..3e7d86ae3e46 100644 --- a/mealie/schema/group/__init__.py +++ b/mealie/schema/group/__init__.py @@ -45,7 +45,15 @@ from .invite_token import CreateInviteToken, EmailInitationResponse, EmailInvita from .webhook import CreateWebhook, ReadWebhook, SaveWebhook, WebhookPagination, WebhookType __all__ = [ - "GroupAdminUpdate", + "CreateGroupPreferences", + "ReadGroupPreferences", + "UpdateGroupPreferences", + "GroupDataExport", + "CreateWebhook", + "ReadWebhook", + "SaveWebhook", + "WebhookPagination", + "WebhookType", "GroupEventNotifierCreate", "GroupEventNotifierOptions", "GroupEventNotifierOptionsOut", @@ -55,13 +63,8 @@ __all__ = [ "GroupEventNotifierSave", "GroupEventNotifierUpdate", "GroupEventPagination", - "GroupDataExport", "DataMigrationCreate", "SupportedMigrations", - "SetPermissions", - "CreateGroupPreferences", - "ReadGroupPreferences", - "UpdateGroupPreferences", "SeederConfig", "ShoppingListAddRecipeParams", "ShoppingListCreate", @@ -85,6 +88,8 @@ __all__ = [ "ShoppingListSave", "ShoppingListSummary", "ShoppingListUpdate", + "GroupAdminUpdate", + "SetPermissions", "GroupStatistics", "GroupStorage", "CreateInviteToken", @@ -92,9 +97,4 @@ __all__ = [ "EmailInvitation", "ReadInviteToken", "SaveInviteToken", - "CreateWebhook", - "ReadWebhook", - "SaveWebhook", - "WebhookPagination", - "WebhookType", ] diff --git a/mealie/schema/recipe/__init__.py b/mealie/schema/recipe/__init__.py index b080b81b2ec5..4c4f8c69c0df 100644 --- a/mealie/schema/recipe/__init__.py +++ b/mealie/schema/recipe/__init__.py @@ -84,27 +84,29 @@ from .recipe_tool import RecipeToolCreate, RecipeToolOut, RecipeToolResponse, Re from .request_helpers import RecipeDuplicate, RecipeSlug, RecipeZipTokenResponse, SlugResponse, UpdateImageResponse __all__ = [ - "CreateRecipe", - "CreateRecipeBulk", - "CreateRecipeByUrlBulk", - "Recipe", - "RecipeCategory", - "RecipeCategoryPagination", - "RecipeLastMade", - "RecipePagination", - "RecipeSummary", - "RecipeTag", - "RecipeTagPagination", - "RecipeTool", - "RecipeToolPagination", + "RecipeToolCreate", + "RecipeToolOut", + "RecipeToolResponse", + "RecipeToolSave", + "RecipeTimelineEventCreate", + "RecipeTimelineEventIn", + "RecipeTimelineEventOut", + "RecipeTimelineEventPagination", + "RecipeTimelineEventUpdate", + "TimelineEventImage", + "TimelineEventType", "RecipeAsset", - "AssignCategories", - "AssignSettings", - "AssignTags", - "DeleteRecipes", - "ExportBase", - "ExportRecipes", - "ExportTypes", + "RecipeSettings", + "RecipeShareToken", + "RecipeShareTokenCreate", + "RecipeShareTokenSave", + "RecipeShareTokenSummary", + "RecipeDuplicate", + "RecipeSlug", + "RecipeZipTokenResponse", + "SlugResponse", + "UpdateImageResponse", + "RecipeNote", "CategoryBase", "CategoryIn", "CategoryOut", @@ -121,7 +123,17 @@ __all__ = [ "RecipeCommentSave", "RecipeCommentUpdate", "UserBase", + "AssignCategories", + "AssignSettings", + "AssignTags", + "DeleteRecipes", + "ExportBase", + "ExportRecipes", + "ExportTypes", + "IngredientReferences", + "RecipeStep", "RecipeImageTypes", + "Nutrition", "CreateIngredientFood", "CreateIngredientUnit", "IngredientConfidence", @@ -140,31 +152,19 @@ __all__ = [ "SaveIngredientFood", "SaveIngredientUnit", "UnitFoodBase", - "RecipeNote", - "Nutrition", + "CreateRecipe", + "CreateRecipeBulk", + "CreateRecipeByUrlBulk", + "Recipe", + "RecipeCategory", + "RecipeCategoryPagination", + "RecipeLastMade", + "RecipePagination", + "RecipeSummary", + "RecipeTag", + "RecipeTagPagination", + "RecipeTool", + "RecipeToolPagination", "ScrapeRecipe", "ScrapeRecipeTest", - "RecipeSettings", - "RecipeShareToken", - "RecipeShareTokenCreate", - "RecipeShareTokenSave", - "RecipeShareTokenSummary", - "IngredientReferences", - "RecipeStep", - "RecipeTimelineEventCreate", - "RecipeTimelineEventIn", - "RecipeTimelineEventOut", - "RecipeTimelineEventPagination", - "RecipeTimelineEventUpdate", - "TimelineEventImage", - "TimelineEventType", - "RecipeToolCreate", - "RecipeToolOut", - "RecipeToolResponse", - "RecipeToolSave", - "RecipeDuplicate", - "RecipeSlug", - "RecipeZipTokenResponse", - "SlugResponse", - "UpdateImageResponse", ] diff --git a/mealie/schema/response/__init__.py b/mealie/schema/response/__init__.py index a9a7b36333b9..fc5cab6378eb 100644 --- a/mealie/schema/response/__init__.py +++ b/mealie/schema/response/__init__.py @@ -1,6 +1,7 @@ # This file is auto-generated by gen_schema_exports.py -from .pagination import OrderDirection, PaginationBase, PaginationQuery -from .query_filter import LogicalOperator, QueryFilter, QueryFilterComponent, RelationalOperator +from .pagination import OrderDirection, PaginationBase, PaginationQuery, RecipeSearchQuery +from .query_filter import LogicalOperator, QueryFilter, QueryFilterComponent, RelationalKeyword, RelationalOperator +from .query_search import SearchFilter from .responses import ErrorResponse, FileTokenResponse, SuccessResponse from .validation import ValidationResponse @@ -8,12 +9,15 @@ __all__ = [ "ErrorResponse", "FileTokenResponse", "SuccessResponse", + "SearchFilter", "LogicalOperator", "QueryFilter", "QueryFilterComponent", + "RelationalKeyword", "RelationalOperator", "OrderDirection", "PaginationBase", "PaginationQuery", + "RecipeSearchQuery", "ValidationResponse", ] diff --git a/mealie/schema/user/__init__.py b/mealie/schema/user/__init__.py index d4cabec9f418..9600df2f1a54 100644 --- a/mealie/schema/user/__init__.py +++ b/mealie/schema/user/__init__.py @@ -21,6 +21,7 @@ from .user import ( ) from .user_passwords import ( ForgotPassword, + PasswordResetToken, PrivatePasswordResetToken, ResetPassword, SavePasswordResetToken, @@ -49,6 +50,7 @@ __all__ = [ "UserOut", "UserPagination", "ForgotPassword", + "PasswordResetToken", "PrivatePasswordResetToken", "ResetPassword", "SavePasswordResetToken", diff --git a/poetry.lock b/poetry.lock index daff9952084d..e5205be6284d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -13,13 +13,13 @@ files = [ [[package]] name = "alembic" -version = "1.10.3" +version = "1.11.3" description = "A database migration tool for SQLAlchemy." optional = false python-versions = ">=3.7" files = [ - {file = "alembic-1.10.3-py3-none-any.whl", hash = "sha256:b2e0a6cfd3a8ce936a1168320bcbe94aefa3f4463cd773a968a55071beb3cd37"}, - {file = "alembic-1.10.3.tar.gz", hash = "sha256:32a69b13a613aeb7e8093f242da60eff9daed13c0df02fff279c1b06c32965d2"}, + {file = "alembic-1.11.3-py3-none-any.whl", hash = "sha256:d6c96c2482740592777c400550a523bc7a9aada4e210cae2e733354ddae6f6f8"}, + {file = "alembic-1.11.3.tar.gz", hash = "sha256:3db4ce81a9072e1b5aa44c2d202add24553182672a12daf21608d6f62a8f9cf9"}, ] [package.dependencies] @@ -77,13 +77,13 @@ files = [ [[package]] name = "apprise" -version = "1.3.0" +version = "1.4.5" description = "Push Notifications that work with just about every platform!" optional = false python-versions = ">=3.6" files = [ - {file = "apprise-1.3.0-py2.py3-none-any.whl", hash = "sha256:ef0c1413a32182272b6ed60ddcee6057744dc683725651015332e063b9a6a4ad"}, - {file = "apprise-1.3.0.tar.gz", hash = "sha256:2c50c19a5dd41317b1f659c52b21a990febe6c15e08464228a1ce8e6098f11bf"}, + {file = "apprise-1.4.5-py3-none-any.whl", hash = "sha256:01c9949327d94c11c886bd1ae387ba7f61cdb9d6247b8096686920685e40fb47"}, + {file = "apprise-1.4.5.tar.gz", hash = "sha256:b7c66513c5456690a298ed887c9016ded42f15e365d16142e728b74f7cffee82"}, ] [package.dependencies] @@ -185,36 +185,33 @@ lxml = ["lxml"] [[package]] name = "black" -version = "23.3.0" +version = "23.7.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, + {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, + {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, + {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, + {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, + {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, + {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, + {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, + {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, + {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, + {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, ] [package.dependencies] @@ -811,24 +808,24 @@ test = ["Cython (>=0.29.24,<0.30.0)"] [[package]] name = "httpx" -version = "0.23.3" +version = "0.24.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.7" files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, + {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"}, + {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"}, ] [package.dependencies] certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = ">=0.15.0,<0.18.0" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -1307,48 +1304,48 @@ files = [ [[package]] name = "mypy" -version = "1.1.1" +version = "1.5.1" description = "Optional static typing for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mypy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39c7119335be05630611ee798cc982623b9e8f0cff04a0b48dfc26100e0b97af"}, - {file = "mypy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61bf08362e93b6b12fad3eab68c4ea903a077b87c90ac06c11e3d7a09b56b9c1"}, - {file = "mypy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbb19c9f662e41e474e0cff502b7064a7edc6764f5262b6cd91d698163196799"}, - {file = "mypy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:315ac73cc1cce4771c27d426b7ea558fb4e2836f89cb0296cbe056894e3a1f78"}, - {file = "mypy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5cb14ff9919b7df3538590fc4d4c49a0f84392237cbf5f7a816b4161c061829e"}, - {file = "mypy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:26cdd6a22b9b40b2fd71881a8a4f34b4d7914c679f154f43385ca878a8297389"}, - {file = "mypy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b5f81b40d94c785f288948c16e1f2da37203c6006546c5d947aab6f90aefef2"}, - {file = "mypy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b437be1c02712a605591e1ed1d858aba681757a1e55fe678a15c2244cd68a5"}, - {file = "mypy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d809f88734f44a0d44959d795b1e6f64b2bbe0ea4d9cc4776aa588bb4229fc1c"}, - {file = "mypy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:a380c041db500e1410bb5b16b3c1c35e61e773a5c3517926b81dfdab7582be54"}, - {file = "mypy-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b7c7b708fe9a871a96626d61912e3f4ddd365bf7f39128362bc50cbd74a634d5"}, - {file = "mypy-1.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1c10fa12df1232c936830839e2e935d090fc9ee315744ac33b8a32216b93707"}, - {file = "mypy-1.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0a28a76785bf57655a8ea5eb0540a15b0e781c807b5aa798bd463779988fa1d5"}, - {file = "mypy-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ef6a01e563ec6a4940784c574d33f6ac1943864634517984471642908b30b6f7"}, - {file = "mypy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d64c28e03ce40d5303450f547e07418c64c241669ab20610f273c9e6290b4b0b"}, - {file = "mypy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64cc3afb3e9e71a79d06e3ed24bb508a6d66f782aff7e56f628bf35ba2e0ba51"}, - {file = "mypy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce61663faf7a8e5ec6f456857bfbcec2901fbdb3ad958b778403f63b9e606a1b"}, - {file = "mypy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2b0c373d071593deefbcdd87ec8db91ea13bd8f1328d44947e88beae21e8d5e9"}, - {file = "mypy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:2888ce4fe5aae5a673386fa232473014056967f3904f5abfcf6367b5af1f612a"}, - {file = "mypy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:19ba15f9627a5723e522d007fe708007bae52b93faab00f95d72f03e1afa9598"}, - {file = "mypy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:59bbd71e5c58eed2e992ce6523180e03c221dcd92b52f0e792f291d67b15a71c"}, - {file = "mypy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9401e33814cec6aec8c03a9548e9385e0e228fc1b8b0a37b9ea21038e64cdd8a"}, - {file = "mypy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b398d8b1f4fba0e3c6463e02f8ad3346f71956b92287af22c9b12c3ec965a9f"}, - {file = "mypy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:69b35d1dcb5707382810765ed34da9db47e7f95b3528334a3c999b0c90fe523f"}, - {file = "mypy-1.1.1-py3-none-any.whl", hash = "sha256:4e4e8b362cdf99ba00c2b218036002bdcdf1e0de085cdb296a49df03fb31dfc4"}, - {file = "mypy-1.1.1.tar.gz", hash = "sha256:ae9ceae0f5b9059f33dbc62dea087e942c0ccab4b7a003719cb70f9b8abfa32f"}, + {file = "mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"}, + {file = "mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"}, + {file = "mypy-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12"}, + {file = "mypy-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d"}, + {file = "mypy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4"}, + {file = "mypy-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243"}, + {file = "mypy-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275"}, + {file = "mypy-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373"}, + {file = "mypy-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161"}, + {file = "mypy-1.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a"}, + {file = "mypy-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160"}, + {file = "mypy-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2"}, + {file = "mypy-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb"}, + {file = "mypy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14"}, + {file = "mypy-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb"}, + {file = "mypy-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693"}, + {file = "mypy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770"}, + {file = "mypy-1.5.1-py3-none-any.whl", hash = "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5"}, + {file = "mypy-1.5.1.tar.gz", hash = "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92"}, ] [package.dependencies] mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=3.10" +typing-extensions = ">=4.1.0" [package.extras] dmypy = ["psutil (>=4.0)"] install-types = ["pip"] -python2 = ["typed-ast (>=1.4.0,<2)"] reports = ["lxml"] [[package]] @@ -1600,13 +1597,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.2.2" +version = "3.3.3" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.8" files = [ - {file = "pre_commit-3.2.2-py2.py3-none-any.whl", hash = "sha256:0b4210aea813fe81144e87c5a291f09ea66f199f367fa1df41b55e1d26e1e2b4"}, - {file = "pre_commit-3.2.2.tar.gz", hash = "sha256:5b808fcbda4afbccf6d6633a56663fed35b6c2bc08096fd3d47ce197ac351d9d"}, + {file = "pre_commit-3.3.3-py2.py3-none-any.whl", hash = "sha256:10badb65d6a38caff29703362271d7dca483d01da88f9d7e05d0b97171c136cb"}, + {file = "pre_commit-3.3.3.tar.gz", hash = "sha256:a2256f489cd913d575c145132ae196fe335da32d91a8294b7afe6622335dd023"}, ] [package.dependencies] @@ -2116,13 +2113,13 @@ tests = ["html5lib", "pytest", "pytest-cov"] [[package]] name = "recipe-scrapers" -version = "14.36.0" +version = "14.42.0" description = "Python package, scraping recipes from all over the internet" optional = false python-versions = ">=3.6" files = [ - {file = "recipe_scrapers-14.36.0-py3-none-any.whl", hash = "sha256:2ab9a085e914905e8d78d5f494f34ec42d8a0b6fc70b10905dcffa8f2af1a1fc"}, - {file = "recipe_scrapers-14.36.0.tar.gz", hash = "sha256:8153f4fd56d62cb7c3205ee2ff8558aa49c9a1686a49000a75b45a743bbb7f33"}, + {file = "recipe_scrapers-14.42.0-py3-none-any.whl", hash = "sha256:02704e423fcb0219a62ae2e3500eede5050d7a7ceada0e41b96df107bb93a523"}, + {file = "recipe_scrapers-14.42.0.tar.gz", hash = "sha256:8e82dec359460d3ce3b721d86064f81b3cddbc2af90530384b42b5a85263f4e7"}, ] [package.dependencies] @@ -2230,20 +2227,20 @@ files = [ [[package]] name = "requests" -version = "2.28.2" +version = "2.31.0" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" files = [ - {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, - {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -2267,32 +2264,15 @@ requests = ">=2.0.0" [package.extras] rsa = ["oauthlib[signedtoken] (>=3.0.0)"] -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - [[package]] name = "rich" -version = "13.4.2" +version = "13.5.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"}, - {file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"}, + {file = "rich-13.5.2-py3-none-any.whl", hash = "sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808"}, + {file = "rich-13.5.2.tar.gz", hash = "sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39"}, ] [package.dependencies] @@ -2953,4 +2933,4 @@ pgsql = ["psycopg2-binary"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "6ec46a82cad73c78013d1729df179a3fb5c4e12eb2a11ca04b2412d6b8e5b25f" +content-hash = "b18a48b2cf3cf26a5eea456056c9dcaf527fb9a6aabf493f25fedb73917175c5" diff --git a/pyproject.toml b/pyproject.toml index f6601bb6d18e..bea70eac017f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,15 +14,15 @@ Pillow = "^9.2.0" PyYAML = "^6.0.1" SQLAlchemy = "^2" aiofiles = "^23.0.0" -alembic = "^1.7.5" +alembic = "^1.11.3" aniso8601 = "9.0.1" appdirs = "1.4.4" -apprise = "^1.2.0" +apprise = "^1.4.5" bcrypt = "^4.0.1" extruct = "^0.14.0" fastapi = "^0.95.0" gunicorn = "^20.1.0" -httpx = "^0.23.1" +httpx = "^0.24.1" lxml = "^4.7.1" orjson = "^3.8.0" passlib = "^1.7.4" @@ -37,25 +37,26 @@ python-jose = "^3.3.0" python-ldap = "^3.3.1" python-multipart = "^0.0.6" python-slugify = "^8.0.0" -recipe-scrapers = "^14.26.0" -requests = "^2.25.1" +recipe-scrapers = "^14.42.0" +requests = "^2.31.0" tzdata = "^2022.7" uvicorn = {extras = ["standard"], version = "^0.21.0"} beautifulsoup4 = "^4.11.2" isodate = "^0.6.1" +text-unidecode = "^1.3" [tool.poetry.group.dev.dependencies] -black = "^23.1.0" +black = "^23.7.0" coverage = "^7.0" coveragepy-lcov = "^0.1.1" mkdocs-material = "^9.0.0" -mypy = "^1.0" -pre-commit = "^3.0.4" +mypy = "^1.5.1" +pre-commit = "^3.3.3" pydantic-to-typescript = "^1.0.7" pylint = "^2.6.0" pytest = "^7.2.0" pytest-asyncio = "^0.21.0" -rich = "^13.0.0" +rich = "^13.5.2" ruff = "^0.0.265" types-PyYAML = "^6.0.4" types-python-dateutil = "^2.8.18"