mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 02:03:35 -04:00 
			
		
		
		
	chore: mypy, ruff, extract, openapi, and recipes-scraper updates (#1968)
* bump ruff and mypy * mypy fixes * bump and fix openapi * drop debug statement * bump extruct * bump recipes-scrapers
This commit is contained in:
		| @@ -15,6 +15,6 @@ repos: | |||||||
|     hooks: |     hooks: | ||||||
|       - id: black |       - id: black | ||||||
|   - repo: https://github.com/charliermarsh/ruff-pre-commit |   - repo: https://github.com/charliermarsh/ruff-pre-commit | ||||||
|     rev: v0.0.202 |     rev: v0.0.205 | ||||||
|     hooks: |     hooks: | ||||||
|       - id: ruff |       - id: ruff | ||||||
|   | |||||||
| @@ -113,7 +113,6 @@ def main(): | |||||||
|         reload=True, |         reload=True, | ||||||
|         reload_dirs=["mealie"], |         reload_dirs=["mealie"], | ||||||
|         reload_delay=2, |         reload_delay=2, | ||||||
|         debug=True, |  | ||||||
|         log_level="info", |         log_level="info", | ||||||
|         use_colors=True, |         use_colors=True, | ||||||
|         log_config=None, |         log_config=None, | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ class UserLockedOut(Exception): | |||||||
|     ... |     ... | ||||||
|  |  | ||||||
|  |  | ||||||
| def create_access_token(data: dict, expires_delta: timedelta = None) -> str: | def create_access_token(data: dict, expires_delta: timedelta | None = None) -> str: | ||||||
|     settings = get_app_settings() |     settings = get_app_settings() | ||||||
|  |  | ||||||
|     to_encode = data.copy() |     to_encode = data.copy() | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ class BaseMixins: | |||||||
|         self.__init__(*args, **kwarg) |         self.__init__(*args, **kwarg) | ||||||
|  |  | ||||||
|     @classmethod |     @classmethod | ||||||
|     def get_ref(cls, match_value: str, match_attr: str = None, session: Session = None): |     def get_ref(cls, match_value: str, match_attr: str | None = None, session: Session | None = None): | ||||||
|         match_attr = match_attr or cls.Config.get_attr  # type: ignore |         match_attr = match_attr or cls.Config.get_attr  # type: ignore | ||||||
|  |  | ||||||
|         if match_value is None or session is None: |         if match_value is None or session is None: | ||||||
|   | |||||||
| @@ -136,12 +136,12 @@ class RecipeModel(SqlAlchemyBase, BaseMixins): | |||||||
|     def __init__( |     def __init__( | ||||||
|         self, |         self, | ||||||
|         session, |         session, | ||||||
|         assets: list = None, |         assets: list | None = None, | ||||||
|         notes: list[dict] = None, |         notes: list[dict] | None = None, | ||||||
|         nutrition: dict = None, |         nutrition: dict | None = None, | ||||||
|         recipe_ingredient: list[dict] = None, |         recipe_ingredient: list[dict] | None = None, | ||||||
|         recipe_instructions: list[dict] = None, |         recipe_instructions: list[dict] | None = None, | ||||||
|         settings: dict = None, |         settings: dict | None = None, | ||||||
|         **_, |         **_, | ||||||
|     ) -> None: |     ) -> None: | ||||||
|         self.nutrition = Nutrition(**nutrition) if nutrition else Nutrition() |         self.nutrition = Nutrition(**nutrition) if nutrition else Nutrition() | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ class User(SqlAlchemyBase, BaseMixins): | |||||||
|         } |         } | ||||||
|  |  | ||||||
|     @auto_init() |     @auto_init() | ||||||
|     def __init__(self, session, full_name, password, group: str = None, **kwargs) -> None: |     def __init__(self, session, full_name, password, group: str | None = None, **kwargs) -> None: | ||||||
|         if group is None: |         if group is None: | ||||||
|             settings = get_app_settings() |             settings = get_app_settings() | ||||||
|             group = settings.DEFAULT_GROUP |             group = settings.DEFAULT_GROUP | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ class MinifierOptions: | |||||||
|  |  | ||||||
|  |  | ||||||
| class ABCMinifier(ABC): | class ABCMinifier(ABC): | ||||||
|     def __init__(self, purge=False, opts: MinifierOptions = None, logger: Logger = None): |     def __init__(self, purge=False, opts: MinifierOptions | None = None, logger: Logger | None = None): | ||||||
|         self._purge = purge |         self._purge = purge | ||||||
|         self._opts = opts or MinifierOptions() |         self._opts = opts or MinifierOptions() | ||||||
|         self._logger = logger or Logger("Minifier") |         self._logger = logger or Logger("Minifier") | ||||||
| @@ -60,7 +60,7 @@ class ABCMinifier(ABC): | |||||||
|  |  | ||||||
| class PillowMinifier(ABCMinifier): | class PillowMinifier(ABCMinifier): | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def to_webp(image_file: Path, dest: Path = None, quality: int = 100) -> Path: |     def to_webp(image_file: Path, dest: Path | None = None, quality: int = 100) -> Path: | ||||||
|         """ |         """ | ||||||
|         Converts an image to the webp format in-place. The original image is not |         Converts an image to the webp format in-place. The original image is not | ||||||
|         removed By default, the quality is set to 100. |         removed By default, the quality is set to 100. | ||||||
|   | |||||||
| @@ -64,7 +64,12 @@ class RepositoryGeneric(Generic[Schema, Model]): | |||||||
|         return {**dct, **kwargs} |         return {**dct, **kwargs} | ||||||
|  |  | ||||||
|     def get_all( |     def get_all( | ||||||
|         self, limit: int = None, order_by: str = None, order_descending: bool = True, start=0, override=None |         self, | ||||||
|  |         limit: int | None = None, | ||||||
|  |         order_by: str | None = None, | ||||||
|  |         order_descending: bool = True, | ||||||
|  |         start=0, | ||||||
|  |         override=None, | ||||||
|     ) -> list[Schema]: |     ) -> list[Schema]: | ||||||
|         self.logger.warning('"get_all" method is deprecated; use "page_all" instead') |         self.logger.warning('"get_all" method is deprecated; use "page_all" instead') | ||||||
|  |  | ||||||
| @@ -95,9 +100,9 @@ class RepositoryGeneric(Generic[Schema, Model]): | |||||||
|         self, |         self, | ||||||
|         query_by: dict[str, str | bool | int | UUID4], |         query_by: dict[str, str | bool | int | UUID4], | ||||||
|         start=0, |         start=0, | ||||||
|         limit: int = None, |         limit: int | None = None, | ||||||
|         override_schema=None, |         override_schema=None, | ||||||
|         order_by: str = None, |         order_by: str | None = None, | ||||||
|     ) -> list[Schema]: |     ) -> list[Schema]: | ||||||
|         # sourcery skip: remove-unnecessary-cast |         # sourcery skip: remove-unnecessary-cast | ||||||
|         eff_schema = override_schema or self.schema |         eff_schema = override_schema or self.schema | ||||||
| @@ -112,7 +117,7 @@ class RepositoryGeneric(Generic[Schema, Model]): | |||||||
|  |  | ||||||
|         return [eff_schema.from_orm(x) for x in q.offset(start).limit(limit).all()] |         return [eff_schema.from_orm(x) for x in q.offset(start).limit(limit).all()] | ||||||
|  |  | ||||||
|     def _query_one(self, match_value: str | int | UUID4, match_key: str = None) -> Model: |     def _query_one(self, match_value: str | int | UUID4, match_key: str | None = None) -> Model: | ||||||
|         """ |         """ | ||||||
|         Query the sql database for one item an return the sql alchemy model |         Query the sql database for one item an return the sql alchemy model | ||||||
|         object. If no match key is provided the primary_key attribute will be used. |         object. If no match key is provided the primary_key attribute will be used. | ||||||
| @@ -123,7 +128,9 @@ class RepositoryGeneric(Generic[Schema, Model]): | |||||||
|         fltr = self._filter_builder(**{match_key: match_value}) |         fltr = self._filter_builder(**{match_key: match_value}) | ||||||
|         return self._query().filter_by(**fltr).one() |         return self._query().filter_by(**fltr).one() | ||||||
|  |  | ||||||
|     def get_one(self, value: str | int | UUID4, key: str = None, any_case=False, override_schema=None) -> Schema | None: |     def get_one( | ||||||
|  |         self, value: str | int | UUID4, key: str | None = None, any_case=False, override_schema=None | ||||||
|  |     ) -> Schema | None: | ||||||
|         key = key or self.primary_key |         key = key or self.primary_key | ||||||
|  |  | ||||||
|         q = self.session.query(self.model) |         q = self.session.query(self.model) | ||||||
| @@ -220,7 +227,7 @@ class RepositoryGeneric(Generic[Schema, Model]): | |||||||
|     def _count_attribute( |     def _count_attribute( | ||||||
|         self, |         self, | ||||||
|         attribute_name: str, |         attribute_name: str, | ||||||
|         attr_match: str = None, |         attr_match: str | None = None, | ||||||
|         count=True, |         count=True, | ||||||
|         override_schema=None, |         override_schema=None, | ||||||
|     ) -> int | list[Schema]:  # sourcery skip: assign-if-exp |     ) -> int | list[Schema]:  # sourcery skip: assign-if-exp | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ class RepositoryRecipes(RepositoryGeneric[Recipe, RecipeModel]): | |||||||
|     def by_group(self, group_id: UUID) -> "RepositoryRecipes": |     def by_group(self, group_id: UUID) -> "RepositoryRecipes": | ||||||
|         return super().by_group(group_id)  # type: ignore |         return super().by_group(group_id)  # type: ignore | ||||||
|  |  | ||||||
|     def get_all_public(self, limit: int = None, order_by: str = None, start=0, override_schema=None): |     def get_all_public(self, limit: int | None = None, order_by: str | None = None, start=0, override_schema=None): | ||||||
|         eff_schema = override_schema or self.schema |         eff_schema = override_schema or self.schema | ||||||
|  |  | ||||||
|         if order_by: |         if order_by: | ||||||
| @@ -69,7 +69,7 @@ class RepositoryRecipes(RepositoryGeneric[Recipe, RecipeModel]): | |||||||
|             .all() |             .all() | ||||||
|         ] |         ] | ||||||
|  |  | ||||||
|     def update_image(self, slug: str, _: str = None) -> int: |     def update_image(self, slug: str, _: str | None = None) -> int: | ||||||
|         entry: RecipeModel = self._query_one(match_value=slug) |         entry: RecipeModel = self._query_one(match_value=slug) | ||||||
|         entry.image = randint(0, 255) |         entry.image = randint(0, 255) | ||||||
|         self.session.commit() |         self.session.commit() | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ class AbstractSeeder(ABC): | |||||||
|     Abstract class for seeding data. |     Abstract class for seeding data. | ||||||
|     """ |     """ | ||||||
|  |  | ||||||
|     def __init__(self, db: AllRepositories, logger: Logger = None, group_id: UUID4 = None): |     def __init__(self, db: AllRepositories, logger: Logger | None = None, group_id: UUID4 | None = None): | ||||||
|         """ |         """ | ||||||
|         Initialize the abstract seeder. |         Initialize the abstract seeder. | ||||||
|         :param db_conn: Database connection. |         :param db_conn: Database connection. | ||||||
|   | |||||||
| @@ -36,7 +36,7 @@ def controller(router: APIRouter, *urls: str) -> Callable[[type[T]], type[T]]: | |||||||
|     return decorator |     return decorator | ||||||
|  |  | ||||||
|  |  | ||||||
| def _cbv(router: APIRouter, cls: type[T], *urls: str, instance: Any = None) -> type[T]: | def _cbv(router: APIRouter, cls: type[T], *urls: str, instance: Any | None = None) -> type[T]: | ||||||
|     """ |     """ | ||||||
|     Replaces any methods of the provided class `cls` that are endpoints of routes in `router` with updated |     Replaces any methods of the provided class `cls` that are endpoints of routes in `router` with updated | ||||||
|     function calls that will properly inject an instance of `cls`. |     function calls that will properly inject an instance of `cls`. | ||||||
| @@ -46,7 +46,7 @@ def _cbv(router: APIRouter, cls: type[T], *urls: str, instance: Any = None) -> t | |||||||
|     return cls |     return cls | ||||||
|  |  | ||||||
|  |  | ||||||
| def _init_cbv(cls: type[Any], instance: Any = None) -> None: | def _init_cbv(cls: type[Any], instance: Any | None = None) -> None: | ||||||
|     """ |     """ | ||||||
|     Idempotently modifies the provided `cls`, performing the following modifications: |     Idempotently modifies the provided `cls`, performing the following modifications: | ||||||
|     * The `__init__` function is updated to set any class-annotated dependencies as instance attributes |     * The `__init__` function is updated to set any class-annotated dependencies as instance attributes | ||||||
|   | |||||||
| @@ -34,8 +34,8 @@ class HttpRepo(Generic[C, R, U]): | |||||||
|         self, |         self, | ||||||
|         repo: RepositoryGeneric, |         repo: RepositoryGeneric, | ||||||
|         logger: Logger, |         logger: Logger, | ||||||
|         exception_msgs: Callable[[type[Exception]], str] = None, |         exception_msgs: Callable[[type[Exception]], str] | None = None, | ||||||
|         default_message: str = None, |         default_message: str | None = None, | ||||||
|     ) -> None: |     ) -> None: | ||||||
|  |  | ||||||
|         self.repo = repo |         self.repo = repo | ||||||
| @@ -72,7 +72,7 @@ class HttpRepo(Generic[C, R, U]): | |||||||
|  |  | ||||||
|         return item |         return item | ||||||
|  |  | ||||||
|     def get_one(self, item_id: int | str | UUID4, key: str = None) -> R: |     def get_one(self, item_id: int | str | UUID4, key: str | None = None) -> R: | ||||||
|         item = self.repo.get_one(item_id, key) |         item = self.repo.get_one(item_id, key) | ||||||
|  |  | ||||||
|         if not item: |         if not item: | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ class GroupReportsController(BaseUserController): | |||||||
|         ) |         ) | ||||||
|  |  | ||||||
|     @router.get("", response_model=list[ReportSummary]) |     @router.get("", response_model=list[ReportSummary]) | ||||||
|     def get_all(self, report_type: ReportCategory = None): |     def get_all(self, report_type: ReportCategory | None = None): | ||||||
|         return self.repo.multi_query({"group_id": self.group_id, "category": report_type}, limit=9999) |         return self.repo.multi_query({"group_id": self.group_id, "category": report_type}, limit=9999) | ||||||
|  |  | ||||||
|     @router.get("/{item_id}", response_model=ReportOut) |     @router.get("/{item_id}", response_model=ReportOut) | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ class RecipeSharedController(BaseUserController): | |||||||
|         return HttpRepo[RecipeShareTokenSave, RecipeShareToken, RecipeShareTokenCreate](self.repo, self.logger) |         return HttpRepo[RecipeShareTokenSave, RecipeShareToken, RecipeShareTokenCreate](self.repo, self.logger) | ||||||
|  |  | ||||||
|     @router.get("", response_model=list[RecipeShareTokenSummary]) |     @router.get("", response_model=list[RecipeShareTokenSummary]) | ||||||
|     def get_all(self, recipe_id: UUID4 = None): |     def get_all(self, recipe_id: UUID4 | None = None): | ||||||
|         if recipe_id: |         if recipe_id: | ||||||
|             return self.repo.multi_query({"recipe_id": recipe_id}, override_schema=RecipeShareTokenSummary) |             return self.repo.multi_query({"recipe_id": recipe_id}, override_schema=RecipeShareTokenSummary) | ||||||
|         else: |         else: | ||||||
| @@ -38,5 +38,5 @@ class RecipeSharedController(BaseUserController): | |||||||
|         return self.mixins.get_one(item_id) |         return self.mixins.get_one(item_id) | ||||||
|  |  | ||||||
|     @router.delete("/{item_id}") |     @router.delete("/{item_id}") | ||||||
|     def delete_one(self, item_id: UUID4 = None) -> None: |     def delete_one(self, item_id: UUID4 | None = None) -> None: | ||||||
|         return self.mixins.delete_one(item_id) |         return self.mixins.delete_one(item_id) | ||||||
|   | |||||||
| @@ -37,5 +37,5 @@ class UserImageController(BaseUserController): | |||||||
|  |  | ||||||
|         self.repos.users.patch(id, {"cache_key": cache.new_key()}) |         self.repos.users.patch(id, {"cache_key": cache.new_key()}) | ||||||
|  |  | ||||||
|         if not dest.is_file: |         if not dest.is_file(): | ||||||
|             raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR) |             raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR) | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ class BackupSchemaMismatch(Exception): | |||||||
|  |  | ||||||
|  |  | ||||||
| class BackupV2(BaseService): | class BackupV2(BaseService): | ||||||
|     def __init__(self, db_url: str = None) -> None: |     def __init__(self, db_url: str | None = None) -> None: | ||||||
|         super().__init__() |         super().__init__() | ||||||
|  |  | ||||||
|         # type - one of these has to be a string |         # type - one of these has to be a string | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ class EmailTemplate(BaseModel): | |||||||
|  |  | ||||||
|  |  | ||||||
| class EmailService(BaseService): | class EmailService(BaseService): | ||||||
|     def __init__(self, sender: ABCEmailSender = None) -> None: |     def __init__(self, sender: ABCEmailSender | None = None) -> None: | ||||||
|         self.templates_dir = CWD / "templates" |         self.templates_dir = CWD / "templates" | ||||||
|         self.default_template = self.templates_dir / "default.html" |         self.default_template = self.templates_dir / "default.html" | ||||||
|         self.sender: ABCEmailSender = sender or DefaultEmailSender() |         self.sender: ABCEmailSender = sender or DefaultEmailSender() | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ class ABCExporter(BaseService): | |||||||
|             zip (zipfile.ZipFile): |             zip (zipfile.ZipFile): | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         def func(source_dir: Path, dest_dir: str, ignore_ext: set[str] = None) -> None: |         def func(source_dir: Path, dest_dir: str, ignore_ext: set[str] | None = None) -> None: | ||||||
|             ignore_ext = ignore_ext or set() |             ignore_ext = ignore_ext or set() | ||||||
|  |  | ||||||
|             for source_file in source_dir.iterdir(): |             for source_file in source_dir.iterdir(): | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ class InvalidDomainError(Exception): | |||||||
| class RecipeDataService(BaseService): | class RecipeDataService(BaseService): | ||||||
|     minifier: img.ABCMinifier |     minifier: img.ABCMinifier | ||||||
|  |  | ||||||
|     def __init__(self, recipe_id: UUID4, group_id: UUID4 = None) -> None: |     def __init__(self, recipe_id: UUID4, group_id: UUID4 | None = None) -> None: | ||||||
|         """ |         """ | ||||||
|         RecipeDataService is a service that consolidates the reading/writing actions related |         RecipeDataService is a service that consolidates the reading/writing actions related | ||||||
|         to assets, and images for a recipe. |         to assets, and images for a recipe. | ||||||
|   | |||||||
| @@ -84,7 +84,7 @@ class RecipeService(BaseService): | |||||||
|         self.logger.info(f"Recipe Directory Removed: {recipe.slug}") |         self.logger.info(f"Recipe Directory Removed: {recipe.slug}") | ||||||
|  |  | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def _recipe_creation_factory(user: PrivateUser, name: str, additional_attrs: dict = None) -> Recipe: |     def _recipe_creation_factory(user: PrivateUser, name: str, additional_attrs: dict | None = None) -> Recipe: | ||||||
|         """ |         """ | ||||||
|         The main creation point for recipes. The factor method returns an instance of the |         The main creation point for recipes. The factor method returns an instance of the | ||||||
|         Recipe Schema class with the appropriate defaults set. Recipes should not be created |         Recipe Schema class with the appropriate defaults set. Recipes should not be created | ||||||
|   | |||||||
| @@ -96,7 +96,7 @@ class TemplateService(BaseService): | |||||||
|  |  | ||||||
|         return save_path |         return save_path | ||||||
|  |  | ||||||
|     def _render_jinja2(self, recipe: Recipe, j2_template: str = None) -> Path: |     def _render_jinja2(self, recipe: Recipe, j2_template: str | None = None) -> Path: | ||||||
|         """ |         """ | ||||||
|         Renders a Jinja2 Template in a temporary directory and returns |         Renders a Jinja2 Template in a temporary directory and returns | ||||||
|         the path to the file. |         the path to the file. | ||||||
|   | |||||||
| @@ -229,7 +229,7 @@ def _sanitize_instruction_text(line: str | dict) -> str: | |||||||
|     return clean_line |     return clean_line | ||||||
|  |  | ||||||
|  |  | ||||||
| def clean_ingredients(ingredients: list | str | None, default: list = None) -> list[str]: | def clean_ingredients(ingredients: list | str | None, default: list | None = None) -> list[str]: | ||||||
|     """ |     """ | ||||||
|     ingredient attempts to parse the ingredients field from a recipe and return a list of |     ingredient attempts to parse the ingredients field from a recipe and return a list of | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ class RecipeScraper: | |||||||
|     # List of recipe scrapers. Note that order matters |     # List of recipe scrapers. Note that order matters | ||||||
|     scrapers: list[type[ABCScraperStrategy]] |     scrapers: list[type[ABCScraperStrategy]] | ||||||
|  |  | ||||||
|     def __init__(self, scrapers: list[type[ABCScraperStrategy]] = None) -> None: |     def __init__(self, scrapers: list[type[ABCScraperStrategy]] | None = None) -> None: | ||||||
|         if scrapers is None: |         if scrapers is None: | ||||||
|             scrapers = [ |             scrapers = [ | ||||||
|                 RecipeScraperPackage, |                 RecipeScraperPackage, | ||||||
|   | |||||||
| @@ -20,9 +20,6 @@ class BackgroundExecutor: | |||||||
|         self.repos = repos |         self.repos = repos | ||||||
|         self.background_tasks = bg |         self.background_tasks = bg | ||||||
|  |  | ||||||
|     def populate_item(self, _: int) -> ServerTask: |  | ||||||
|         pass |  | ||||||
|  |  | ||||||
|     def dispatch(self, task_name: ServerTaskNames, func: Callable, *args: Any, **kwargs: Any) -> ServerTask: |     def dispatch(self, task_name: ServerTaskNames, func: Callable, *args: Any, **kwargs: Any) -> ServerTask: | ||||||
|         """The dispatch function is a wrapper around the BackgroundTasks class in Starlett. It directly calls |         """The dispatch function is a wrapper around the BackgroundTasks class in Starlett. It directly calls | ||||||
|         the add_task function and your task will be run in the background. This function all passes the id required |         the add_task function and your task will be run in the background. This function all passes the id required | ||||||
|   | |||||||
							
								
								
									
										207
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										207
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							| @@ -433,14 +433,14 @@ test = ["pytest (>=6)"] | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "extruct" | name = "extruct" | ||||||
| version = "0.13.0" | version = "0.14.0" | ||||||
| description = "Extract embedded metadata from HTML markup" | description = "Extract embedded metadata from HTML markup" | ||||||
| category = "main" | category = "main" | ||||||
| optional = false | optional = false | ||||||
| python-versions = "*" | python-versions = "*" | ||||||
| files = [ | files = [ | ||||||
|     {file = "extruct-0.13.0-py2.py3-none-any.whl", hash = "sha256:fe19b9aefdb4dfbf828c2b082b81a363a03a44c7591c2d6b62ca225cb8f8c0be"}, |     {file = "extruct-0.14.0-py2.py3-none-any.whl", hash = "sha256:22739b23a7fd66239137838b8cde7b15ce838ad7a0e0721dba86058df206a2da"}, | ||||||
|     {file = "extruct-0.13.0.tar.gz", hash = "sha256:50a5b5bac4c5e19ecf682bf63a28fde0b1bb57433df7057371f60b58c94a2c64"}, |     {file = "extruct-0.14.0.tar.gz", hash = "sha256:4c74a3f0c6829252fa40b3a1c7364c966265fd4c0f0dbcef019d1b839e3434bf"}, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [package.dependencies] | [package.dependencies] | ||||||
| @@ -449,8 +449,7 @@ jstyleson = "*" | |||||||
| lxml = "*" | lxml = "*" | ||||||
| mf2py = "*" | mf2py = "*" | ||||||
| pyrdfa3 = "*" | pyrdfa3 = "*" | ||||||
| rdflib = "*" | rdflib = {version = ">=6.0.0", markers = "python_version >= \"3.7\""} | ||||||
| rdflib-jsonld = "*" |  | ||||||
| six = "*" | six = "*" | ||||||
| w3lib = "*" | w3lib = "*" | ||||||
|  |  | ||||||
| @@ -798,6 +797,22 @@ docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] | |||||||
| perf = ["ipython"] | perf = ["ipython"] | ||||||
| testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] | testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "importlib-resources" | ||||||
|  | version = "5.10.2" | ||||||
|  | description = "Read resources from Python packages" | ||||||
|  | category = "dev" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.7" | ||||||
|  | files = [ | ||||||
|  |     {file = "importlib_resources-5.10.2-py3-none-any.whl", hash = "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6"}, | ||||||
|  |     {file = "importlib_resources-5.10.2.tar.gz", hash = "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] | ||||||
|  | testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "iniconfig" | name = "iniconfig" | ||||||
| version = "1.1.1" | version = "1.1.1" | ||||||
| @@ -881,6 +896,24 @@ pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" | |||||||
| format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] | format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] | ||||||
| format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] | format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "jsonschema-spec" | ||||||
|  | version = "0.1.2" | ||||||
|  | description = "JSONSchema Spec with object-oriented paths" | ||||||
|  | category = "dev" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.7.0,<4.0.0" | ||||||
|  | files = [ | ||||||
|  |     {file = "jsonschema-spec-0.1.2.tar.gz", hash = "sha256:780a22d517cdc857d9714a80d8349c546945063f20853ea32ba7f85bc643ec7d"}, | ||||||
|  |     {file = "jsonschema_spec-0.1.2-py3-none-any.whl", hash = "sha256:1e525177574c23ae0f55cd62382632a083a0339928f0ca846a975a4da9851cec"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | jsonschema = ">=4.0.0,<5.0.0" | ||||||
|  | pathable = ">=0.4.1,<0.5.0" | ||||||
|  | PyYAML = ">=5.1" | ||||||
|  | typing-extensions = ">=4.3.0,<5.0.0" | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "jstyleson" | name = "jstyleson" | ||||||
| version = "0.0.2" | version = "0.0.2" | ||||||
| @@ -1211,35 +1244,42 @@ files = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "mypy" | name = "mypy" | ||||||
| version = "0.960" | version = "0.991" | ||||||
| description = "Optional static typing for Python" | description = "Optional static typing for Python" | ||||||
| category = "dev" | category = "dev" | ||||||
| optional = false | optional = false | ||||||
| python-versions = ">=3.6" | python-versions = ">=3.7" | ||||||
| files = [ | files = [ | ||||||
|     {file = "mypy-0.960-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3a3e525cd76c2c4f90f1449fd034ba21fcca68050ff7c8397bb7dd25dd8b8248"}, |     {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, | ||||||
|     {file = "mypy-0.960-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7a76dc4f91e92db119b1be293892df8379b08fd31795bb44e0ff84256d34c251"}, |     {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, | ||||||
|     {file = "mypy-0.960-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffdad80a92c100d1b0fe3d3cf1a4724136029a29afe8566404c0146747114382"}, |     {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, | ||||||
|     {file = "mypy-0.960-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7d390248ec07fa344b9f365e6ed9d205bd0205e485c555bed37c4235c868e9d5"}, |     {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, | ||||||
|     {file = "mypy-0.960-cp310-cp310-win_amd64.whl", hash = "sha256:925aa84369a07846b7f3b8556ccade1f371aa554f2bd4fb31cb97a24b73b036e"}, |     {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, | ||||||
|     {file = "mypy-0.960-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:239d6b2242d6c7f5822163ee082ef7a28ee02e7ac86c35593ef923796826a385"}, |     {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, | ||||||
|     {file = "mypy-0.960-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f1ba54d440d4feee49d8768ea952137316d454b15301c44403db3f2cb51af024"}, |     {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, | ||||||
|     {file = "mypy-0.960-cp36-cp36m-win_amd64.whl", hash = "sha256:cb7752b24528c118a7403ee955b6a578bfcf5879d5ee91790667c8ea511d2085"}, |     {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, | ||||||
|     {file = "mypy-0.960-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:826a2917c275e2ee05b7c7b736c1e6549a35b7ea5a198ca457f8c2ebea2cbecf"}, |     {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, | ||||||
|     {file = "mypy-0.960-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3eabcbd2525f295da322dff8175258f3fc4c3eb53f6d1929644ef4d99b92e72d"}, |     {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, | ||||||
|     {file = "mypy-0.960-cp37-cp37m-win_amd64.whl", hash = "sha256:f47322796c412271f5aea48381a528a613f33e0a115452d03ae35d673e6064f8"}, |     {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, | ||||||
|     {file = "mypy-0.960-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2c7f8bb9619290836a4e167e2ef1f2cf14d70e0bc36c04441e41487456561409"}, |     {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, | ||||||
|     {file = "mypy-0.960-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fbfb873cf2b8d8c3c513367febde932e061a5f73f762896826ba06391d932b2a"}, |     {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, | ||||||
|     {file = "mypy-0.960-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc537885891382e08129d9862553b3d00d4be3eb15b8cae9e2466452f52b0117"}, |     {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, | ||||||
|     {file = "mypy-0.960-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:481f98c6b24383188c928f33dd2f0776690807e12e9989dd0419edd5c74aa53b"}, |     {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, | ||||||
|     {file = "mypy-0.960-cp38-cp38-win_amd64.whl", hash = "sha256:29dc94d9215c3eb80ac3c2ad29d0c22628accfb060348fd23d73abe3ace6c10d"}, |     {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, | ||||||
|     {file = "mypy-0.960-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:33d53a232bb79057f33332dbbb6393e68acbcb776d2f571ba4b1d50a2c8ba873"}, |     {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, | ||||||
|     {file = "mypy-0.960-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8d645e9e7f7a5da3ec3bbcc314ebb9bb22c7ce39e70367830eb3c08d0140b9ce"}, |     {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, | ||||||
|     {file = "mypy-0.960-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:85cf2b14d32b61db24ade8ac9ae7691bdfc572a403e3cb8537da936e74713275"}, |     {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, | ||||||
|     {file = "mypy-0.960-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a85a20b43fa69efc0b955eba1db435e2ffecb1ca695fe359768e0503b91ea89f"}, |     {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, | ||||||
|     {file = "mypy-0.960-cp39-cp39-win_amd64.whl", hash = "sha256:0ebfb3f414204b98c06791af37a3a96772203da60636e2897408517fcfeee7a8"}, |     {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, | ||||||
|     {file = "mypy-0.960-py3-none-any.whl", hash = "sha256:bfd4f6536bd384c27c392a8b8f790fd0ed5c0cf2f63fc2fed7bce56751d53026"}, |     {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, | ||||||
|     {file = "mypy-0.960.tar.gz", hash = "sha256:d4fccf04c1acf750babd74252e0f2db6bd2ac3aa8fe960797d9f3ef41cf2bfd4"}, |     {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, | ||||||
|  |     {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, | ||||||
|  |     {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, | ||||||
|  |     {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, | ||||||
|  |     {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, | ||||||
|  |     {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, | ||||||
|  |     {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, | ||||||
|  |     {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [package.dependencies] | [package.dependencies] | ||||||
| @@ -1249,6 +1289,7 @@ typing-extensions = ">=3.10" | |||||||
|  |  | ||||||
| [package.extras] | [package.extras] | ||||||
| dmypy = ["psutil (>=4.0)"] | dmypy = ["psutil (>=4.0)"] | ||||||
|  | install-types = ["pip"] | ||||||
| python2 = ["typed-ast (>=1.4.0,<2)"] | python2 = ["typed-ast (>=1.4.0,<2)"] | ||||||
| reports = ["lxml"] | reports = ["lxml"] | ||||||
|  |  | ||||||
| @@ -1298,18 +1339,19 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "openapi-schema-validator" | name = "openapi-schema-validator" | ||||||
| version = "0.2.3" | version = "0.3.4" | ||||||
| description = "OpenAPI schema validation for Python" | description = "OpenAPI schema validation for Python" | ||||||
| category = "dev" | category = "dev" | ||||||
| optional = false | optional = false | ||||||
| python-versions = ">=3.7.0,<4.0.0" | python-versions = ">=3.7.0,<4.0.0" | ||||||
| files = [ | files = [ | ||||||
|     {file = "openapi-schema-validator-0.2.3.tar.gz", hash = "sha256:2c64907728c3ef78e23711c8840a423f0b241588c9ed929855e4b2d1bb0cf5f2"}, |     {file = "openapi-schema-validator-0.3.4.tar.gz", hash = "sha256:7cf27585dd7970b7257cefe48e1a3a10d4e34421831bdb472d96967433bc27bd"}, | ||||||
|     {file = "openapi_schema_validator-0.2.3-py3-none-any.whl", hash = "sha256:9bae709212a19222892cabcc60cafd903cbf4b220223f48583afa3c0e3cc6fc4"}, |     {file = "openapi_schema_validator-0.3.4-py3-none-any.whl", hash = "sha256:34fbd14b7501abe25e64d7b4624a9db02cde1a578d285b3da6f34b290cdf0b3a"}, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [package.dependencies] | [package.dependencies] | ||||||
| jsonschema = ">=3.0.0,<5.0.0" | attrs = ">=19.2.0" | ||||||
|  | jsonschema = ">=4.0.0,<5.0.0" | ||||||
|  |  | ||||||
| [package.extras] | [package.extras] | ||||||
| isodate = ["isodate"] | isodate = ["isodate"] | ||||||
| @@ -1318,21 +1360,23 @@ strict-rfc3339 = ["strict-rfc3339"] | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "openapi-spec-validator" | name = "openapi-spec-validator" | ||||||
| version = "0.4.0" | version = "0.5.1" | ||||||
| description = "OpenAPI 2.0 (aka Swagger) and OpenAPI 3.0 spec validator" | description = "OpenAPI 2.0 (aka Swagger) and OpenAPI 3 spec validator" | ||||||
| category = "dev" | category = "dev" | ||||||
| optional = false | optional = false | ||||||
| python-versions = ">=3.7.0,<4.0.0" | python-versions = ">=3.7.0,<4.0.0" | ||||||
| files = [ | files = [ | ||||||
|     {file = "openapi-spec-validator-0.4.0.tar.gz", hash = "sha256:97f258850afc97b048f7c2653855e0f88fa66ac103c2be5077c7960aca2ad49a"}, |     {file = "openapi-spec-validator-0.5.1.tar.gz", hash = "sha256:8248634bad1f23cac5d5a34e193ab36e23914057ca69e91a1ede5af75552c465"}, | ||||||
|     {file = "openapi_spec_validator-0.4.0-py3-none-any.whl", hash = "sha256:06900ac4d546a1df3642a779da0055be58869c598e3042a2fef067cfd99d04d0"}, |     {file = "openapi_spec_validator-0.5.1-py3-none-any.whl", hash = "sha256:4a8aee1e45b1ac868e07ab25e18828fe9837baddd29a8e20fdb3d3c61c8eea3d"}, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [package.dependencies] | [package.dependencies] | ||||||
| jsonschema = ">=3.2.0,<5.0.0" | importlib-resources = ">=5.8.0,<6.0.0" | ||||||
| openapi-schema-validator = ">=0.2.0,<0.3.0" | jsonschema = ">=4.0.0,<5.0.0" | ||||||
|  | jsonschema-spec = ">=0.1.1,<0.2.0" | ||||||
|  | lazy-object-proxy = ">=1.7.1,<2.0.0" | ||||||
|  | openapi-schema-validator = ">=0.3.2,<0.4.0" | ||||||
| PyYAML = ">=5.1" | PyYAML = ">=5.1" | ||||||
| setuptools = "*" |  | ||||||
|  |  | ||||||
| [package.extras] | [package.extras] | ||||||
| requests = ["requests"] | requests = ["requests"] | ||||||
| @@ -1355,10 +1399,7 @@ files = [ | |||||||
|     {file = "orjson-3.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b68a42a31f8429728183c21fb440c21de1b62e5378d0d73f280e2d894ef8942e"}, |     {file = "orjson-3.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b68a42a31f8429728183c21fb440c21de1b62e5378d0d73f280e2d894ef8942e"}, | ||||||
|     {file = "orjson-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ff13410ddbdda5d4197a4a4c09969cb78c722a67550f0a63c02c07aadc624833"}, |     {file = "orjson-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ff13410ddbdda5d4197a4a4c09969cb78c722a67550f0a63c02c07aadc624833"}, | ||||||
|     {file = "orjson-3.8.0-cp310-none-win_amd64.whl", hash = "sha256:2d81e6e56bbea44be0222fb53f7b255b4e7426290516771592738ca01dbd053b"}, |     {file = "orjson-3.8.0-cp310-none-win_amd64.whl", hash = "sha256:2d81e6e56bbea44be0222fb53f7b255b4e7426290516771592738ca01dbd053b"}, | ||||||
|     {file = "orjson-3.8.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:200eae21c33f1f8b02a11f5d88d76950cd6fd986d88f1afe497a8ae2627c49aa"}, |  | ||||||
|     {file = "orjson-3.8.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:9529990f3eab54b976d327360aa1ff244a4b12cb5e4c5b3712fcdd96e8fe56d4"}, |  | ||||||
|     {file = "orjson-3.8.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e2defd9527651ad39ec20ae03c812adf47ef7662bdd6bc07dabb10888d70dc62"}, |     {file = "orjson-3.8.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e2defd9527651ad39ec20ae03c812adf47ef7662bdd6bc07dabb10888d70dc62"}, | ||||||
|     {file = "orjson-3.8.0-cp311-none-win_amd64.whl", hash = "sha256:b21c7af0ff6228ca7105f54f0800636eb49201133e15ddb80ac20c1ce973ef07"}, |  | ||||||
|     {file = "orjson-3.8.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9e6ac22cec72d5b39035b566e4b86c74b84866f12b5b0b6541506a080fb67d6d"}, |     {file = "orjson-3.8.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9e6ac22cec72d5b39035b566e4b86c74b84866f12b5b0b6541506a080fb67d6d"}, | ||||||
|     {file = "orjson-3.8.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e2f4a5542f50e3d336a18cb224fc757245ca66b1fd0b70b5dd4471b8ff5f2b0e"}, |     {file = "orjson-3.8.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e2f4a5542f50e3d336a18cb224fc757245ca66b1fd0b70b5dd4471b8ff5f2b0e"}, | ||||||
|     {file = "orjson-3.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1418feeb8b698b9224b1f024555895169d481604d5d884498c1838d7412794c"}, |     {file = "orjson-3.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1418feeb8b698b9224b1f024555895169d481604d5d884498c1838d7412794c"}, | ||||||
| @@ -1425,6 +1466,18 @@ bcrypt = ["bcrypt (>=3.1.0)"] | |||||||
| build-docs = ["cloud-sptheme (>=1.10.1)", "sphinx (>=1.6)", "sphinxcontrib-fulltoc (>=1.2.0)"] | build-docs = ["cloud-sptheme (>=1.10.1)", "sphinx (>=1.6)", "sphinxcontrib-fulltoc (>=1.2.0)"] | ||||||
| totp = ["cryptography"] | totp = ["cryptography"] | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "pathable" | ||||||
|  | version = "0.4.3" | ||||||
|  | description = "Object-oriented paths" | ||||||
|  | category = "dev" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.7.0,<4.0.0" | ||||||
|  | files = [ | ||||||
|  |     {file = "pathable-0.4.3-py3-none-any.whl", hash = "sha256:cdd7b1f9d7d5c8b8d3315dbf5a86b2596053ae845f056f57d97c0eefff84da14"}, | ||||||
|  |     {file = "pathable-0.4.3.tar.gz", hash = "sha256:5c869d315be50776cc8a993f3af43e0c60dc01506b399643f919034ebf4cdcab"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "pathspec" | name = "pathspec" | ||||||
| version = "0.9.0" | version = "0.9.0" | ||||||
| @@ -1571,7 +1624,6 @@ python-versions = ">=3.6" | |||||||
| files = [ | files = [ | ||||||
|     {file = "psycopg2-binary-2.9.3.tar.gz", hash = "sha256:761df5313dc15da1502b21453642d7599d26be88bff659382f8f9747c7ebea4e"}, |     {file = "psycopg2-binary-2.9.3.tar.gz", hash = "sha256:761df5313dc15da1502b21453642d7599d26be88bff659382f8f9747c7ebea4e"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp310-cp310-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:539b28661b71da7c0e428692438efbcd048ca21ea81af618d845e06ebfd29478"}, |     {file = "psycopg2_binary-2.9.3-cp310-cp310-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:539b28661b71da7c0e428692438efbcd048ca21ea81af618d845e06ebfd29478"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f2534ab7dc7e776a263b463a16e189eb30e85ec9bbe1bff9e78dae802608932"}, |  | ||||||
|     {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e82d38390a03da28c7985b394ec3f56873174e2c88130e6966cb1c946508e65"}, |     {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e82d38390a03da28c7985b394ec3f56873174e2c88130e6966cb1c946508e65"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57804fc02ca3ce0dbfbef35c4b3a4a774da66d66ea20f4bda601294ad2ea6092"}, |     {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57804fc02ca3ce0dbfbef35c4b3a4a774da66d66ea20f4bda601294ad2ea6092"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:083a55275f09a62b8ca4902dd11f4b33075b743cf0d360419e2051a8a5d5ff76"}, |     {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:083a55275f09a62b8ca4902dd11f4b33075b743cf0d360419e2051a8a5d5ff76"}, | ||||||
| @@ -1605,7 +1657,6 @@ files = [ | |||||||
|     {file = "psycopg2_binary-2.9.3-cp37-cp37m-win32.whl", hash = "sha256:adf20d9a67e0b6393eac162eb81fb10bc9130a80540f4df7e7355c2dd4af9fba"}, |     {file = "psycopg2_binary-2.9.3-cp37-cp37m-win32.whl", hash = "sha256:adf20d9a67e0b6393eac162eb81fb10bc9130a80540f4df7e7355c2dd4af9fba"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f9ffd643bc7349eeb664eba8864d9e01f057880f510e4681ba40a6532f93c71"}, |     {file = "psycopg2_binary-2.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f9ffd643bc7349eeb664eba8864d9e01f057880f510e4681ba40a6532f93c71"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp38-cp38-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:def68d7c21984b0f8218e8a15d514f714d96904265164f75f8d3a70f9c295667"}, |     {file = "psycopg2_binary-2.9.3-cp38-cp38-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:def68d7c21984b0f8218e8a15d514f714d96904265164f75f8d3a70f9c295667"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e6aa71ae45f952a2205377773e76f4e3f27951df38e69a4c95440c779e013560"}, |  | ||||||
|     {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dffc08ca91c9ac09008870c9eb77b00a46b3378719584059c034b8945e26b272"}, |     {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dffc08ca91c9ac09008870c9eb77b00a46b3378719584059c034b8945e26b272"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:280b0bb5cbfe8039205c7981cceb006156a675362a00fe29b16fbc264e242834"}, |     {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:280b0bb5cbfe8039205c7981cceb006156a675362a00fe29b16fbc264e242834"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:af9813db73395fb1fc211bac696faea4ca9ef53f32dc0cfa27e4e7cf766dcf24"}, |     {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:af9813db73395fb1fc211bac696faea4ca9ef53f32dc0cfa27e4e7cf766dcf24"}, | ||||||
| @@ -1617,7 +1668,6 @@ files = [ | |||||||
|     {file = "psycopg2_binary-2.9.3-cp38-cp38-win32.whl", hash = "sha256:6472a178e291b59e7f16ab49ec8b4f3bdada0a879c68d3817ff0963e722a82ce"}, |     {file = "psycopg2_binary-2.9.3-cp38-cp38-win32.whl", hash = "sha256:6472a178e291b59e7f16ab49ec8b4f3bdada0a879c68d3817ff0963e722a82ce"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:35168209c9d51b145e459e05c31a9eaeffa9a6b0fd61689b48e07464ffd1a83e"}, |     {file = "psycopg2_binary-2.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:35168209c9d51b145e459e05c31a9eaeffa9a6b0fd61689b48e07464ffd1a83e"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp39-cp39-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:47133f3f872faf28c1e87d4357220e809dfd3fa7c64295a4a148bcd1e6e34ec9"}, |     {file = "psycopg2_binary-2.9.3-cp39-cp39-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:47133f3f872faf28c1e87d4357220e809dfd3fa7c64295a4a148bcd1e6e34ec9"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b3a24a1982ae56461cc24f6680604fffa2c1b818e9dc55680da038792e004d18"}, |  | ||||||
|     {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91920527dea30175cc02a1099f331aa8c1ba39bf8b7762b7b56cbf54bc5cce42"}, |     {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91920527dea30175cc02a1099f331aa8c1ba39bf8b7762b7b56cbf54bc5cce42"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887dd9aac71765ac0d0bac1d0d4b4f2c99d5f5c1382d8b770404f0f3d0ce8a39"}, |     {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887dd9aac71765ac0d0bac1d0d4b4f2c99d5f5c1382d8b770404f0f3d0ce8a39"}, | ||||||
|     {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:1f14c8b0942714eb3c74e1e71700cbbcb415acbc311c730370e70c578a44a25c"}, |     {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:1f14c8b0942714eb3c74e1e71700cbbcb415acbc311c730370e70c578a44a25c"}, | ||||||
| @@ -2068,31 +2118,16 @@ docs = ["sphinx (<5)", "sphinxcontrib-apidoc"] | |||||||
| html = ["html5lib"] | html = ["html5lib"] | ||||||
| tests = ["berkeleydb", "html5lib", "networkx", "pytest", "pytest-cov", "pytest-subtests"] | tests = ["berkeleydb", "html5lib", "networkx", "pytest", "pytest-cov", "pytest-subtests"] | ||||||
|  |  | ||||||
| [[package]] |  | ||||||
| name = "rdflib-jsonld" |  | ||||||
| version = "0.6.2" |  | ||||||
| description = "rdflib extension adding JSON-LD parser and serializer" |  | ||||||
| category = "main" |  | ||||||
| optional = false |  | ||||||
| python-versions = "*" |  | ||||||
| files = [ |  | ||||||
|     {file = "rdflib-jsonld-0.6.2.tar.gz", hash = "sha256:107cd3019d41354c31687e64af5e3fd3c3e3fa5052ce635f5ce595fd31853a63"}, |  | ||||||
|     {file = "rdflib_jsonld-0.6.2-py2.py3-none-any.whl", hash = "sha256:011afe67672353ca9978ab9a4bee964dff91f14042f2d8a28c22a573779d2f8b"}, |  | ||||||
| ] |  | ||||||
|  |  | ||||||
| [package.dependencies] |  | ||||||
| rdflib = ">=5.0.0" |  | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "recipe-scrapers" | name = "recipe-scrapers" | ||||||
| version = "14.24.0" | version = "14.26.0" | ||||||
| description = "Python package, scraping recipes from all over the internet" | description = "Python package, scraping recipes from all over the internet" | ||||||
| category = "main" | category = "main" | ||||||
| optional = false | optional = false | ||||||
| python-versions = ">=3.6" | python-versions = ">=3.6" | ||||||
| files = [ | files = [ | ||||||
|     {file = "recipe_scrapers-14.24.0-py3-none-any.whl", hash = "sha256:1eed9d9010a771387a37aaec27b7c199cb3c4e74c6b9afaa00f1af6f43dc3e26"}, |     {file = "recipe_scrapers-14.26.0-py3-none-any.whl", hash = "sha256:bfda2cfa55c5169353cc3440c67cb874f0ef677fc99933263ec8bb9fe76bf360"}, | ||||||
|     {file = "recipe_scrapers-14.24.0.tar.gz", hash = "sha256:37ad2b8c113b4d530450ccb7406330e105ccad0dbc5666eb6fafa5ef4e16c408"}, |     {file = "recipe_scrapers-14.26.0.tar.gz", hash = "sha256:f5ffdba502e023ac06c8fad1346744a4a155e7851543c160a1e776ae82b4b1d5"}, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [package.dependencies] | [package.dependencies] | ||||||
| @@ -2196,28 +2231,28 @@ pyasn1 = ">=0.1.3" | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "ruff" | name = "ruff" | ||||||
| version = "0.0.202" | version = "0.0.206" | ||||||
| description = "An extremely fast Python linter, written in Rust." | description = "An extremely fast Python linter, written in Rust." | ||||||
| category = "dev" | category = "dev" | ||||||
| optional = false | optional = false | ||||||
| python-versions = ">=3.7" | python-versions = ">=3.7" | ||||||
| files = [ | files = [ | ||||||
|     {file = "ruff-0.0.202-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:4b79d4ba3530aee5f1de3add3096df7bd483bb3a8c8933f61fe0b16d2dbbf3d2"}, |     {file = "ruff-0.0.206-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:47fa81b999d960464e37135c5863cb0be97a05ba6ad8c5baa8163e5a0d7d2e20"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:81502b86d0608549f0cd8e5f6fb66a29f365013cdf3dfdaa6521d9307c01e614"}, |     {file = "ruff-0.0.206-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:457829500cec96d307b6dd537e983e148cf3788454ccda83aeef459dcdeccce3"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa5b92ab3dcf5355545adec731d64598663e5c38a94710a1a971fafdbd8ccb1"}, |     {file = "ruff-0.0.206-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b186fdb99b10a8d5ac112e8c10000eff61c3cc248ce9b87f80abf6e32408746d"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91f38496b3194ce1335cc50f4a439e55a66fa12615d0b57c0867f9136249472c"}, |     {file = "ruff-0.0.206-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b978f206135cf02d89a51d29b2134eecfb8c05e2533dc75c6554b29a5e7e0844"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6003f9ecc1cc10c5cad5f71072a4d98e10af6f73de148218323429996dd7c69"}, |     {file = "ruff-0.0.206-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632233444d597e02982dfdd1d34eab03943e9c6e042f0dfafab40a3ceb18a6fd"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d34d9b8f495ad3f1333819a3cbfbcbf9c96c4637b132038cd0f0786bc48e354d"}, |     {file = "ruff-0.0.206-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b70baa8904ff9e11859082eb691d7e087d8637f1bb569512f76a8b2cfb8b3eb6"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52fea12733b056b74ef7d0991d1f6bdf700fa0d4c15adec91dafba14a7718a3a"}, |     {file = "ruff-0.0.206-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d64f8452e71fadf9995dee7517a55f251c5a3c87879e08d231af5ef5b7abf076"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0b54a64ece6e8c7113cfa26368fe55864ddf286ae18cbb02e7c5ed39e7a27c92"}, |     {file = "ruff-0.0.206-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:66e198b71bd6f39b8adac5d2dcf47d8a3be8860d71680f36c7b7caba4e823ed0"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16d3708a2b758fa1b2ec2755e8850bc1e8327e1b4c15bdca7c19eb449077fdf5"}, |     {file = "ruff-0.0.206-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821b5cee2f5ebf27950580a7a09c1baeedd1659e0c85742ef085356f2ffe6035"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d62322974cb8a37d5b352c0337936284002b681ab4ca164dcf97a5c5c173e0a7"}, |     {file = "ruff-0.0.206-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85ab420465395f8e6a5057f8acd7990297fa23a7e20f667ff4d73479f8fd5ca5"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:eeb114e0b26ad92dcd31dc62610a66a76cbf151a7822f5624eb8faf0461fae1a"}, |     {file = "ruff-0.0.206-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c4cd2842cecb52464cb3d8b5386beeca029e6b7940d2720d5adaf9da94323b3"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-musllinux_1_2_i686.whl", hash = "sha256:adcf5dc49eba84ae037c47809b6069d6d4606f14bab1bb64086843a9dcbf2c01"}, |     {file = "ruff-0.0.206-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9064d59f83d1ddd4b45f1bc565846cf067bf4d0f3e8db5a73f14cc38a2403c49"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d7dd2d7850a88f482fd8144fdd9beeb179b2411c5203938979401a0f1ca53ea2"}, |     {file = "ruff-0.0.206-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cfd8977c264b3975e6cd893b62a20ee2cab6a1893cb0eda8418e0ef062a284c3"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-win32.whl", hash = "sha256:76f4cff5f8d39b594e9384a947a9733e847373babbe4bcaba06caa6484ade6a4"}, |     {file = "ruff-0.0.206-py3-none-win32.whl", hash = "sha256:c333f4062fd8c86a903f0e11780b529d786981b70de2d65102ee1765949592cd"}, | ||||||
|     {file = "ruff-0.0.202-py3-none-win_amd64.whl", hash = "sha256:68563fe0783265e694005adb81291b207fbf617635f35f34af5b481b713babfe"}, |     {file = "ruff-0.0.206-py3-none-win_amd64.whl", hash = "sha256:6e758ff7c9981b91113d6a0f44183ab5dbe33ee5a5ca2ec7db5a22f03f9568eb"}, | ||||||
|     {file = "ruff-0.0.202.tar.gz", hash = "sha256:cf9efa3a2d1a5072bae9e9c2dd453373c3169a0433809af1a0834472ea6d2fa0"}, |     {file = "ruff-0.0.206.tar.gz", hash = "sha256:b79b6ffac6ca713c5cad6e661495e77e1821d87c3fedd02139d13a857a6de92a"}, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @@ -2324,7 +2359,7 @@ greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platfo | |||||||
|  |  | ||||||
| [package.extras] | [package.extras] | ||||||
| aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] | aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] | ||||||
| aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] | aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] | ||||||
| asyncio = ["greenlet (!=0.4.17)"] | asyncio = ["greenlet (!=0.4.17)"] | ||||||
| asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] | asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] | ||||||
| mariadb-connector = ["mariadb (>=1.0.1)"] | mariadb-connector = ["mariadb (>=1.0.1)"] | ||||||
| @@ -2334,14 +2369,14 @@ mssql-pyodbc = ["pyodbc"] | |||||||
| mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] | mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] | ||||||
| mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] | mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] | ||||||
| mysql-connector = ["mysql-connector-python"] | mysql-connector = ["mysql-connector-python"] | ||||||
| oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] | oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] | ||||||
| postgresql = ["psycopg2 (>=2.7)"] | postgresql = ["psycopg2 (>=2.7)"] | ||||||
| postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] | postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] | ||||||
| postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] | postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] | ||||||
| postgresql-psycopg2binary = ["psycopg2-binary"] | postgresql-psycopg2binary = ["psycopg2-binary"] | ||||||
| postgresql-psycopg2cffi = ["psycopg2cffi"] | postgresql-psycopg2cffi = ["psycopg2cffi"] | ||||||
| pymysql = ["pymysql", "pymysql (<1)"] | pymysql = ["pymysql", "pymysql (<1)"] | ||||||
| sqlcipher = ["sqlcipher3-binary"] | sqlcipher = ["sqlcipher3_binary"] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "starlette" | name = "starlette" | ||||||
| @@ -2877,4 +2912,4 @@ pgsql = ["psycopg2-binary"] | |||||||
| [metadata] | [metadata] | ||||||
| lock-version = "2.0" | lock-version = "2.0" | ||||||
| python-versions = "^3.10" | python-versions = "^3.10" | ||||||
| content-hash = "b851bcf3e7e5e6f05ded62dad6d0657a2036f670121af2e21993fda2853575d1" | content-hash = "c294d55f8315eee1f58117354af0d73b0ff63c95629d784fd22969dca055c79a" | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ aniso8601 = "7.0.0" | |||||||
| appdirs = "1.4.4" | appdirs = "1.4.4" | ||||||
| apprise = "^1.2.0" | apprise = "^1.2.0" | ||||||
| bcrypt = "^4.0.1" | bcrypt = "^4.0.1" | ||||||
| extruct = "^0.13.0" | extruct = "^0.14.0" | ||||||
| fastapi = "^0.88.0" | fastapi = "^0.88.0" | ||||||
| gunicorn = "^20.1.0" | gunicorn = "^20.1.0" | ||||||
| lxml = "^4.7.1" | lxml = "^4.7.1" | ||||||
| @@ -36,7 +36,7 @@ python-jose = "^3.3.0" | |||||||
| python-ldap = "^3.3.1" | python-ldap = "^3.3.1" | ||||||
| python-multipart = "^0.0.5" | python-multipart = "^0.0.5" | ||||||
| python-slugify = "^6.1.2" | python-slugify = "^6.1.2" | ||||||
| recipe-scrapers = "^14.24.0" | recipe-scrapers = "^14.26.0" | ||||||
| requests = "^2.25.1" | requests = "^2.25.1" | ||||||
| tzdata = "^2022.7" | tzdata = "^2022.7" | ||||||
| uvicorn = {extras = ["standard"], version = "^0.20.0"} | uvicorn = {extras = ["standard"], version = "^0.20.0"} | ||||||
| @@ -47,14 +47,14 @@ black = "^21.12b0" | |||||||
| coverage = "^7.0" | coverage = "^7.0" | ||||||
| coveragepy-lcov = "^0.1.1" | coveragepy-lcov = "^0.1.1" | ||||||
| mkdocs-material = "^8.2.3" | mkdocs-material = "^8.2.3" | ||||||
| mypy = "^0.960" | mypy = "^0.991" | ||||||
| openapi-spec-validator = "^0.4.0" | openapi-spec-validator = "^0.5.0" | ||||||
| pre-commit = "^2.20.0" | pre-commit = "^2.20.0" | ||||||
| pydantic-to-typescript = "^1.0.7" | pydantic-to-typescript = "^1.0.7" | ||||||
| pylint = "^2.6.0" | pylint = "^2.6.0" | ||||||
| pytest = "^7.2.0" | pytest = "^7.2.0" | ||||||
| rich = "^13.0.0" | rich = "^13.0.0" | ||||||
| ruff = "^0.0.202" | ruff = "^0.0.206" | ||||||
| types-PyYAML = "^6.0.4" | types-PyYAML = "^6.0.4" | ||||||
| types-python-dateutil = "^2.8.18" | types-python-dateutil = "^2.8.18" | ||||||
| types-python-slugify = "^6.0.0" | types-python-slugify = "^6.0.0" | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| from openapi_spec_validator import validate_v3_spec | from openapi_spec_validator import openapi_v30_spec_validator, validate_spec | ||||||
|  |  | ||||||
| from mealie.app import app | from mealie.app import app | ||||||
|  |  | ||||||
|  |  | ||||||
| def test_validate_open_api_spec(): | def test_validate_open_api_spec(): | ||||||
|     open_api = app.openapi() |     open_api = app.openapi() | ||||||
|     validate_v3_spec(open_api) |     validate_spec(open_api, validator=openapi_v30_spec_validator) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user