From 8e17665841a09d60e7b533e92cae060311f6dd2b Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Wed, 10 May 2023 09:05:16 +0200 Subject: [PATCH 01/58] Initial implementation of AzureMLFolderDataSet with pipeline compilation and without versioning --- kedro_azureml/cli_functions.py | 1 + kedro_azureml/datasets/__init__.py | 2 ++ kedro_azureml/datasets/folder_dataset.py | 33 ++++++++++++++++++++++++ kedro_azureml/generator.py | 22 ++++++++++++++-- 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 kedro_azureml/datasets/folder_dataset.py diff --git a/kedro_azureml/cli_functions.py b/kedro_azureml/cli_functions.py index b874c17..a7dff84 100644 --- a/kedro_azureml/cli_functions.py +++ b/kedro_azureml/cli_functions.py @@ -50,6 +50,7 @@ def get_context_and_pipeline( ctx.env, mgr.plugin_config, mgr.context.params, + mgr.context.catalog, aml_env, docker_image, params, diff --git a/kedro_azureml/datasets/__init__.py b/kedro_azureml/datasets/__init__.py index 13400cf..a26d1e2 100644 --- a/kedro_azureml/datasets/__init__.py +++ b/kedro_azureml/datasets/__init__.py @@ -1,4 +1,5 @@ from kedro_azureml.datasets.file_dataset import AzureMLFileDataSet +from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet from kedro_azureml.datasets.pandas_dataset import AzureMLPandasDataSet from kedro_azureml.datasets.pipeline_dataset import AzureMLPipelineDataSet from kedro_azureml.datasets.runner_dataset import ( @@ -8,6 +9,7 @@ __all__ = [ "AzureMLFileDataSet", + "AzureMLFolderDataSet", "AzureMLPipelineDataSet", "AzureMLPandasDataSet", "KedroAzureRunnerDataset", diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py new file mode 100644 index 0000000..2f96178 --- /dev/null +++ b/kedro_azureml/datasets/folder_dataset.py @@ -0,0 +1,33 @@ +import logging +from typing import Any, Dict, Type, Union + +from kedro.io.core import ( + VERSION_KEY, + VERSIONED_FLAG_KEY, + AbstractDataSet, + DataSetError, +) + +from kedro_azureml.datasets.pipeline_dataset import AzureMLPipelineDataSet + +logger = logging.getLogger(__name__) + + +class AzureMLFolderDataSet(AzureMLPipelineDataSet): + def __init__( + self, + azureml_dataset: str, + dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], + filepath_arg: str = "filepath", + ): + super().__init__(dataset=dataset, filepath_arg=filepath_arg) + + self._azureml_dataset = azureml_dataset + + # TODO: remove and disable versioning in Azure ML runner? + if VERSION_KEY in self._dataset_config: + raise DataSetError( + f"'{self.__class__.__name__}' does not support versioning of the " + f"underlying dataset. Please remove '{VERSIONED_FLAG_KEY}' flag from " + f"the dataset definition." + ) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 07287a9..c1cff57 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -14,6 +14,7 @@ from azure.ai.ml.dsl import pipeline as azure_pipeline from azure.ai.ml.entities import Environment, Job from azure.ai.ml.entities._builders import Command +from kedro.io import DataCatalog from kedro.pipeline import Pipeline from kedro.pipeline.node import Node @@ -27,6 +28,7 @@ KEDRO_AZURE_RUNNER_CONFIG, PARAMS_PREFIX, ) +from kedro_azureml.datasets import AzureMLFolderDataSet from kedro_azureml.distributed import DistributedNodeConfig from kedro_azureml.distributed.config import Framework @@ -44,6 +46,7 @@ def __init__( kedro_environment: str, config: KedroAzureMLConfig, kedro_params: Dict[str, Any], + catalog: DataCatalog, aml_env: Optional[str] = None, docker_image: Optional[str] = None, params: Optional[str] = None, @@ -55,6 +58,7 @@ def __init__( self.params = params self.kedro_params = kedro_params + self.catalog = catalog self.aml_env = aml_env self.docker_image = docker_image self.config = config @@ -191,7 +195,12 @@ def _construct_azure_command( environment=self._resolve_azure_environment(), # TODO: check whether Environment exists inputs={ self._sanitize_param_name(name): ( - Input(type="string") if name in pipeline.inputs() else Input() + Input() + if name in self.catalog.list() + and isinstance( + self.catalog._get_dataset(name), AzureMLFolderDataSet + ) + else Input(type="string") ) for name in node.inputs }, @@ -280,9 +289,18 @@ def _connect_commands(self, pipeline: Pipeline, commands: Dict[str, Command]): parent_outputs = invoked_components[output_from_deps.name].outputs azure_output = parent_outputs[sanitized_input_name] azure_inputs[sanitized_input_name] = azure_output + elif node_input in self.catalog.list() and isinstance( + ds := self.catalog._get_dataset(node_input), AzureMLFolderDataSet + ): + # 2. try to find dataset in catalog + azure_inputs[sanitized_input_name] = Input( + # TODO: add versioning + path=f"{ds._azureml_dataset}@latest" + ) else: - # 2. if not found, provide dummy input + # 3. if not found, provide dummy input azure_inputs[sanitized_input_name] = node_input + # TODO: also add for outputs invoked_components[node.name] = commands[node.name](**azure_inputs) return invoked_components From be11ab94532b9c139f6240c9d07c7d20758b5e4f Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Wed, 10 May 2023 10:30:51 +0200 Subject: [PATCH 02/58] Fix missing az-input arguments in generator --- kedro_azureml/generator.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index c1cff57..c624a7e 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -28,7 +28,7 @@ KEDRO_AZURE_RUNNER_CONFIG, PARAMS_PREFIX, ) -from kedro_azureml.datasets import AzureMLFolderDataSet +from kedro_azureml.datasets import AzureMLFolderDataSet, AzureMLPipelineDataSet from kedro_azureml.distributed import DistributedNodeConfig from kedro_azureml.distributed.config import Framework @@ -312,7 +312,8 @@ def _prepare_command(self, node, pipeline): + self._sanitize_param_name(name) + "}}" for name in node.inputs - if not name.startswith("params:") and name not in pipeline.inputs() + if name in self.catalog.list() + and isinstance(self.catalog._get_dataset(name), AzureMLPipelineDataSet) ] if node.inputs else [] From a430428cf25daaf5e033550b155333fb4725c66a Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Wed, 10 May 2023 11:10:25 +0200 Subject: [PATCH 03/58] Make AzureMLPipelineDataSet work --- kedro_azureml/generator.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index c624a7e..8b71c53 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -198,7 +198,7 @@ def _construct_azure_command( Input() if name in self.catalog.list() and isinstance( - self.catalog._get_dataset(name), AzureMLFolderDataSet + self.catalog._get_dataset(name), AzureMLPipelineDataSet ) else Input(type="string") ) @@ -325,6 +325,8 @@ def _prepare_command(self, node, pipeline): + self._sanitize_param_name(name) + "}}" for name in node.outputs + if name in self.catalog.list() + and isinstance(self.catalog._get_dataset(name), AzureMLPipelineDataSet) ] if node.outputs else [] From c0036e710ec92d99ff6b7c4cb47477a1939dd104 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Wed, 10 May 2023 15:58:47 +0200 Subject: [PATCH 04/58] Fix conditions for inputs and outputs in generator --- kedro_azureml/generator.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 8b71c53..aad9c04 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -28,7 +28,7 @@ KEDRO_AZURE_RUNNER_CONFIG, PARAMS_PREFIX, ) -from kedro_azureml.datasets import AzureMLFolderDataSet, AzureMLPipelineDataSet +from kedro_azureml.datasets import AzureMLFolderDataSet from kedro_azureml.distributed import DistributedNodeConfig from kedro_azureml.distributed.config import Framework @@ -195,12 +195,16 @@ def _construct_azure_command( environment=self._resolve_azure_environment(), # TODO: check whether Environment exists inputs={ self._sanitize_param_name(name): ( - Input() - if name in self.catalog.list() - and isinstance( - self.catalog._get_dataset(name), AzureMLPipelineDataSet + Input(type="string") + if name.startswith(PARAMS_PREFIX) + or ( + name in pipeline.inputs() + and name in self.catalog.list() + and not isinstance( + self.catalog._get_dataset(name), AzureMLFolderDataSet + ) ) - else Input(type="string") + else Input() ) for name in node.inputs }, @@ -312,8 +316,14 @@ def _prepare_command(self, node, pipeline): + self._sanitize_param_name(name) + "}}" for name in node.inputs - if name in self.catalog.list() - and isinstance(self.catalog._get_dataset(name), AzureMLPipelineDataSet) + if not name.startswith(PARAMS_PREFIX) + and not ( + name in pipeline.inputs() + and name in self.catalog.list() + and not isinstance( + self.catalog._get_dataset(name), AzureMLFolderDataSet + ) + ) ] if node.inputs else [] @@ -325,8 +335,6 @@ def _prepare_command(self, node, pipeline): + self._sanitize_param_name(name) + "}}" for name in node.outputs - if name in self.catalog.list() - and isinstance(self.catalog._get_dataset(name), AzureMLPipelineDataSet) ] if node.outputs else [] From bcc40e868a27b65d5672c64765bd30fca379b858 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Thu, 18 May 2023 15:10:47 +0200 Subject: [PATCH 05/58] Add output registration --- kedro_azureml/generator.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index aad9c04..69a2121 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -209,7 +209,16 @@ def _construct_azure_command( for name in node.inputs }, outputs={ - self._sanitize_param_name(name): Output() for name in node.outputs + self._sanitize_param_name(name): ( + # TODO: add versioning + Output(name=ds._azureml_dataset) + if name in self.catalog.list() + and isinstance( + ds := self.catalog._get_dataset(name), AzureMLFolderDataSet + ) + else Output() + ) + for name in node.outputs }, code=self.config.azure.code_directory, is_deterministic=False, # TODO: allow setting this to true per node (e.g. by tags as for resources) @@ -293,18 +302,17 @@ def _connect_commands(self, pipeline: Pipeline, commands: Dict[str, Command]): parent_outputs = invoked_components[output_from_deps.name].outputs azure_output = parent_outputs[sanitized_input_name] azure_inputs[sanitized_input_name] = azure_output + # 2. try to find AzureMLFolderDataSet in catalog elif node_input in self.catalog.list() and isinstance( ds := self.catalog._get_dataset(node_input), AzureMLFolderDataSet ): - # 2. try to find dataset in catalog azure_inputs[sanitized_input_name] = Input( # TODO: add versioning path=f"{ds._azureml_dataset}@latest" ) + # 3. if not found, provide dummy input else: - # 3. if not found, provide dummy input azure_inputs[sanitized_input_name] = node_input - # TODO: also add for outputs invoked_components[node.name] = commands[node.name](**azure_inputs) return invoked_components From 45fe171f1825fc978ed151ee4261c42cfa91c208 Mon Sep 17 00:00:00 2001 From: Florian Date: Tue, 23 May 2023 22:42:59 +0200 Subject: [PATCH 06/58] initial hook implementation --- kedro_azureml/hooks.py | 40 ++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 3 +++ 2 files changed, 43 insertions(+) create mode 100644 kedro_azureml/hooks.py diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py new file mode 100644 index 0000000..0dbf0dd --- /dev/null +++ b/kedro_azureml/hooks.py @@ -0,0 +1,40 @@ +from pathlib import Path + +from kedro.framework.hooks import hook_impl + +from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet +from kedro_azureml.runner import AzurePipelinesRunner + + +class AzureMLLocalRunHook: + """Hook class that allows local runs using AML datasets.""" + + @hook_impl + def before_pipeline_run(self, run_params, pipeline, catalog): + """Hook implementation to change dataset path for local runs. + Args: + run_params: The parameters that are passed to the run command. + pipeline: The ``Pipeline`` object representing the pipeline to be run. + catalog: The ``DataCatalog`` from which to fetch data. + """ + # we don't want the hook to work when we are running on AML + if not isinstance(run_params["runner"], AzurePipelinesRunner): + for dataset_name, dataset in catalog._data_sets.items(): + # This limits support for azureml:// paths to AzureMLFolderDataSet + # because others have their filesystem already initalised and the + # complete configuration of the dataset is potentially unknown here + # we could support for using Pickle instead. + if isinstance(dataset, AzureMLFolderDataSet): + if dataset_name not in pipeline.inputs(): + project_path = Path(run_params["project_path"]) + new_filepath = ( + project_path + / "data" + / "local_run" + / Path(dataset._filepath).name + ) + dataset.path = str(new_filepath) + catalog.add(dataset_name, dataset, replace=True) + + +azureml_local_run_hook = AzureMLLocalRunHook() diff --git a/pyproject.toml b/pyproject.toml index 0d9517d..3883281 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,3 +61,6 @@ pandas = "^1.4.3" [tool.poetry.plugins."kedro.project_commands"] "azureml" = "kedro_azureml.cli:commands" + +[tool.poetry.plugins."kedro.hooks"] +"azure_local_run_hook" = "kedro_azureml.hooks:azureml_local_run_hook" \ No newline at end of file From a3156da60bf370ea623b53d3263d9a61cb9c029f Mon Sep 17 00:00:00 2001 From: froessler <11539266+fdroessler@users.noreply.github.com> Date: Thu, 25 May 2023 11:53:40 +0200 Subject: [PATCH 07/58] Update kedro_azureml/hooks.py Co-authored-by: Tomas Van Pottelbergh <85937396+tomasvanpottelbergh@users.noreply.github.com> --- kedro_azureml/hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 0dbf0dd..3b52b15 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -18,7 +18,7 @@ def before_pipeline_run(self, run_params, pipeline, catalog): catalog: The ``DataCatalog`` from which to fetch data. """ # we don't want the hook to work when we are running on AML - if not isinstance(run_params["runner"], AzurePipelinesRunner): + if run_params["runner"] != "AzurePipelinesRunner": for dataset_name, dataset in catalog._data_sets.items(): # This limits support for azureml:// paths to AzureMLFolderDataSet # because others have their filesystem already initalised and the From 53b639ee3386597ff2db68b41557eccb5fdfd960 Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 29 May 2023 14:54:13 +0200 Subject: [PATCH 08/58] hook aml fsspec download option --- kedro_azureml/cli.py | 9 ++++++ kedro_azureml/config.py | 11 ++++--- kedro_azureml/hooks.py | 68 +++++++++++++++++++++++++++++++++-------- 3 files changed, 72 insertions(+), 16 deletions(-) diff --git a/kedro_azureml/cli.py b/kedro_azureml/cli.py index 0cc49a3..f43187c 100644 --- a/kedro_azureml/cli.py +++ b/kedro_azureml/cli.py @@ -137,6 +137,15 @@ def init( } ) target_path.write_text(cfg) + with open(Path.cwd().joinpath("conf/base/config.json"), "w") as f: + json.dump( + { + "subscription_id": subscription_id, + "resource_group": resource_group, + "workspace_name": workspace_name, + }, + f, + ) click.echo(f"Configuration generated in {target_path}") diff --git a/kedro_azureml/config.py b/kedro_azureml/config.py index e233ab4..9bce2c8 100644 --- a/kedro_azureml/config.py +++ b/kedro_azureml/config.py @@ -31,7 +31,13 @@ class PipelineDataPassingConfig(BaseModel): enabled: bool = False -class AzureMLConfig(BaseModel): +class AzureMLBase(BaseModel): + subscription_id: str + resource_group: str + workspace_name: str + + +class AzureMLConfig(AzureMLBase): @staticmethod def _create_default_dict_with( value: dict, default, dict_cls: Type = DefaultConfigDict @@ -45,9 +51,6 @@ def _validate_compute(cls, value): value, ComputeConfig(cluster_name="{cluster_name}") ) - subscription_id: str - resource_group: str - workspace_name: str experiment_name: str compute: Optional[Dict[str, ComputeConfig]] temporary_storage: Optional[AzureTempStorageConfig] diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 3b52b15..bd3afda 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -1,9 +1,15 @@ from pathlib import Path +from azureml.fsspec import AzureMachineLearningFileSystem from kedro.framework.hooks import hook_impl +from kedro_azureml.client import _get_azureml_client +from kedro_azureml.config import AzureMLBase from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet -from kedro_azureml.runner import AzurePipelinesRunner + + +class TooManyFilesError(Exception): + pass class AzureMLLocalRunHook: @@ -19,20 +25,58 @@ def before_pipeline_run(self, run_params, pipeline, catalog): """ # we don't want the hook to work when we are running on AML if run_params["runner"] != "AzurePipelinesRunner": - for dataset_name, dataset in catalog._data_sets.items(): - # This limits support for azureml:// paths to AzureMLFolderDataSet - # because others have their filesystem already initalised and the - # complete configuration of the dataset is potentially unknown here - # we could support for using Pickle instead. - if isinstance(dataset, AzureMLFolderDataSet): - if dataset_name not in pipeline.inputs(): + config = AzureMLBase.parse_file( + Path(run_params["project_path"]) / "conf/base/config.json" + ) + with _get_azureml_client(subscription_id=None, config=config) as ml_client: + for dataset_name, dataset in catalog._data_sets.items(): + if isinstance(dataset, AzureMLFolderDataSet) and ( + dataset_name in pipeline.inputs() + ): + azure_ds = ml_client.data.get( + dataset._azureml_dataset, label="latest" + ) + if azure_ds.type == "uri_file": + # azure_path = azure_ds.path.rsplit("/", 1)[0] + # fs = AzureMachineLearningFileSystem(azure_path) + raise NotImplementedError( + "AzureMLFileDataSet not yet implemented" + ) + else: + azure_path = azure_ds.path + fs = AzureMachineLearningFileSystem(azure_path) + # TODO: See if there is a better way to isolate the right file + fpaths = [ + name for name in fs.ls() if Path(dataset.path).name in name + ] + if len(fpaths) < 1: + raise FileNotFoundError( + f"File {Path(dataset.path).name} not found uri_folder dataset" + ) + elif len(fpaths) > 1: + raise TooManyFilesError( + f"Multiple files with name: {Path(dataset.path).name} found in folder dataset" + ) + else: + fpath = fpaths[0] + # The datasets filepath is always absolute due to AbstractDataset + ds_local_absolute_fpath = Path(dataset._filepath) + # TODO: Figure out the best path structure depending on versioning implementation. project_path = Path(run_params["project_path"]) - new_filepath = ( + new_base_path = project_path / "data" / "local_run" + # I thought about adding `data/` to it and make it relative but that assumes + # that everyone uses a `data/` directory which might not be the case. + ds_local_relative_fpath = ds_local_absolute_fpath.relative_to( project_path - / "data" - / "local_run" - / Path(dataset._filepath).name ) + new_filepath = ( + new_base_path + / str(azure_ds.version) + / ds_local_relative_fpath + ) + # using APPEND will keep the local file if exists + # as versions are unique this will prevent unnecessary file download + fs.download(fpath, str(new_filepath.parent), overwrite="APPEND") dataset.path = str(new_filepath) catalog.add(dataset_name, dataset, replace=True) From 9388dc71b0795bfee0cea8be3f607305b2def6c0 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Wed, 31 May 2023 14:31:03 +0200 Subject: [PATCH 09/58] use hook state for config --- kedro_azureml/cli.py | 9 --------- kedro_azureml/config.py | 11 ++++------- kedro_azureml/hooks.py | 11 ++++++----- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/kedro_azureml/cli.py b/kedro_azureml/cli.py index f43187c..0cc49a3 100644 --- a/kedro_azureml/cli.py +++ b/kedro_azureml/cli.py @@ -137,15 +137,6 @@ def init( } ) target_path.write_text(cfg) - with open(Path.cwd().joinpath("conf/base/config.json"), "w") as f: - json.dump( - { - "subscription_id": subscription_id, - "resource_group": resource_group, - "workspace_name": workspace_name, - }, - f, - ) click.echo(f"Configuration generated in {target_path}") diff --git a/kedro_azureml/config.py b/kedro_azureml/config.py index 9bce2c8..e233ab4 100644 --- a/kedro_azureml/config.py +++ b/kedro_azureml/config.py @@ -31,13 +31,7 @@ class PipelineDataPassingConfig(BaseModel): enabled: bool = False -class AzureMLBase(BaseModel): - subscription_id: str - resource_group: str - workspace_name: str - - -class AzureMLConfig(AzureMLBase): +class AzureMLConfig(BaseModel): @staticmethod def _create_default_dict_with( value: dict, default, dict_cls: Type = DefaultConfigDict @@ -51,6 +45,9 @@ def _validate_compute(cls, value): value, ComputeConfig(cluster_name="{cluster_name}") ) + subscription_id: str + resource_group: str + workspace_name: str experiment_name: str compute: Optional[Dict[str, ComputeConfig]] temporary_storage: Optional[AzureTempStorageConfig] diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index bd3afda..6fcbcd6 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -3,8 +3,8 @@ from azureml.fsspec import AzureMachineLearningFileSystem from kedro.framework.hooks import hook_impl +from kedro_azureml.config import AzureMLConfig from kedro_azureml.client import _get_azureml_client -from kedro_azureml.config import AzureMLBase from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet @@ -15,6 +15,10 @@ class TooManyFilesError(Exception): class AzureMLLocalRunHook: """Hook class that allows local runs using AML datasets.""" + @hook_impl + def after_context_created(self, context) -> None: + self.azure_config = AzureMLConfig(**context.config_loader.get("azureml*")['azure']) + @hook_impl def before_pipeline_run(self, run_params, pipeline, catalog): """Hook implementation to change dataset path for local runs. @@ -25,10 +29,7 @@ def before_pipeline_run(self, run_params, pipeline, catalog): """ # we don't want the hook to work when we are running on AML if run_params["runner"] != "AzurePipelinesRunner": - config = AzureMLBase.parse_file( - Path(run_params["project_path"]) / "conf/base/config.json" - ) - with _get_azureml_client(subscription_id=None, config=config) as ml_client: + with _get_azureml_client(subscription_id=None, config=self.azure_config) as ml_client: for dataset_name, dataset in catalog._data_sets.items(): if isinstance(dataset, AzureMLFolderDataSet) and ( dataset_name in pipeline.inputs() From fd5d9658ad711658bfc8bf6c86a48fbb0b057e2b Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Thu, 1 Jun 2023 10:40:33 +0200 Subject: [PATCH 10/58] download all datasets in folder dataset --- kedro_azureml/hooks.py | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 6fcbcd6..167de81 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -46,20 +46,6 @@ def before_pipeline_run(self, run_params, pipeline, catalog): else: azure_path = azure_ds.path fs = AzureMachineLearningFileSystem(azure_path) - # TODO: See if there is a better way to isolate the right file - fpaths = [ - name for name in fs.ls() if Path(dataset.path).name in name - ] - if len(fpaths) < 1: - raise FileNotFoundError( - f"File {Path(dataset.path).name} not found uri_folder dataset" - ) - elif len(fpaths) > 1: - raise TooManyFilesError( - f"Multiple files with name: {Path(dataset.path).name} found in folder dataset" - ) - else: - fpath = fpaths[0] # The datasets filepath is always absolute due to AbstractDataset ds_local_absolute_fpath = Path(dataset._filepath) # TODO: Figure out the best path structure depending on versioning implementation. @@ -77,7 +63,8 @@ def before_pipeline_run(self, run_params, pipeline, catalog): ) # using APPEND will keep the local file if exists # as versions are unique this will prevent unnecessary file download - fs.download(fpath, str(new_filepath.parent), overwrite="APPEND") + for fpath in fs.ls(): + fs.download(fpath, str(new_filepath.parent), overwrite="APPEND") dataset.path = str(new_filepath) catalog.add(dataset_name, dataset, replace=True) From e212438628d9a437937bca67db08c38352796f48 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Fri, 2 Jun 2023 18:26:21 +0200 Subject: [PATCH 11/58] Add ability to load specific version of Azure ML dataset --- kedro_azureml/cli.py | 38 ++++++++++++++++++++++-- kedro_azureml/cli_functions.py | 2 ++ kedro_azureml/datasets/folder_dataset.py | 5 +++- kedro_azureml/generator.py | 15 ++++++++-- 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/kedro_azureml/cli.py b/kedro_azureml/cli.py index 0cc49a3..dc6e6dc 100644 --- a/kedro_azureml/cli.py +++ b/kedro_azureml/cli.py @@ -2,9 +2,11 @@ import logging import os from pathlib import Path -from typing import List, Optional, Tuple +from typing import Dict, List, Optional, Tuple import click +from kedro.framework.cli.project import LOAD_VERSION_HELP +from kedro.framework.cli.utils import _split_load_versions from kedro.framework.startup import ProjectMetadata from kedro_azureml.cli_functions import ( @@ -206,6 +208,14 @@ def init( multiple=True, help="Environment variables to be injected in the steps, format: KEY=VALUE", ) +@click.option( + "--load-versions", + "-lv", + type=str, + default="", + help=LOAD_VERSION_HELP, + callback=_split_load_versions, +) @click.pass_obj @click.pass_context def run( @@ -218,6 +228,7 @@ def run( params: str, wait_for_completion: bool, env_var: Tuple[str], + load_version: Dict[str, str], ): """Runs the specified pipeline in Azure ML Pipelines; Additional parameters can be passed from command line. Can be used with --wait-for-completion param to block the caller until the pipeline finishes in Azure ML. @@ -236,7 +247,9 @@ def run( mgr: KedroContextManager extra_env = parse_extra_env_params(env_var) - with get_context_and_pipeline(ctx, image, pipeline, params, aml_env, extra_env) as ( + with get_context_and_pipeline( + ctx, image, pipeline, params, aml_env, extra_env, load_version + ) as ( mgr, az_pipeline, ): @@ -302,6 +315,20 @@ def run( default="pipeline.yaml", help="Pipeline YAML definition file.", ) +@click.option( + "--env-var", + type=str, + multiple=True, + help="Environment variables to be injected in the steps, format: KEY=VALUE", +) +@click.option( + "--load-versions", + "-lv", + type=str, + default="", + help=LOAD_VERSION_HELP, + callback=_split_load_versions, +) @click.pass_obj def compile( ctx: CliContext, @@ -310,10 +337,15 @@ def compile( pipeline: str, params: list, output: str, + env_var: Tuple[str], + load_version: Dict[str, str], ): """Compiles the pipeline into YAML format""" params = json.dumps(p) if (p := parse_extra_params(params)) else "" - with get_context_and_pipeline(ctx, image, pipeline, params, aml_env) as ( + extra_env = parse_extra_env_params(env_var) + with get_context_and_pipeline( + ctx, image, pipeline, params, aml_env, extra_env, load_version + ) as ( _, az_pipeline, ): diff --git a/kedro_azureml/cli_functions.py b/kedro_azureml/cli_functions.py index a7dff84..f302050 100644 --- a/kedro_azureml/cli_functions.py +++ b/kedro_azureml/cli_functions.py @@ -23,6 +23,7 @@ def get_context_and_pipeline( params: str, aml_env: Optional[str] = None, extra_env: Dict[str, str] = {}, + load_versions: Dict[str, str] = {}, ): with KedroContextManager( ctx.metadata.package_name, ctx.env, parse_extra_params(params, True) @@ -56,6 +57,7 @@ def get_context_and_pipeline( params, storage_account_key, extra_env, + load_versions, ) az_pipeline = generator.generate() yield mgr, az_pipeline diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index 2f96178..fa847a4 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -1,11 +1,12 @@ import logging -from typing import Any, Dict, Type, Union +from typing import Any, Dict, Optional, Type, Union from kedro.io.core import ( VERSION_KEY, VERSIONED_FLAG_KEY, AbstractDataSet, DataSetError, + Version, ) from kedro_azureml.datasets.pipeline_dataset import AzureMLPipelineDataSet @@ -18,11 +19,13 @@ def __init__( self, azureml_dataset: str, dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], + version: Optional[Version] = None, filepath_arg: str = "filepath", ): super().__init__(dataset=dataset, filepath_arg=filepath_arg) self._azureml_dataset = azureml_dataset + self._version = version # TODO: remove and disable versioning in Azure ML runner? if VERSION_KEY in self._dataset_config: diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 69a2121..aa1faac 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -52,6 +52,7 @@ def __init__( params: Optional[str] = None, storage_account_key: Optional[str] = "", extra_env: Dict[str, str] = {}, + load_versions: Dict[str, str] = {}, ): self.storage_account_key = storage_account_key self.kedro_environment = kedro_environment @@ -64,6 +65,7 @@ def __init__( self.config = config self.pipeline_name = pipeline_name self.extra_env = extra_env + self.load_versions = load_versions def generate(self) -> Job: pipeline = self.get_kedro_pipeline() @@ -142,6 +144,14 @@ def _resolve_azure_environment(self) -> Union[Environment, str]: else: return self.aml_env or self.config.azure.environment_name + def _get_versioned_azureml_dataset_name(self, dataset_name: str): + version = self.load_versions.get(dataset_name) + if version is None or version == "latest": + suffix = "@latest" + else: + suffix = ":" + version + return dataset_name + suffix + def _from_params_or_value( self, namespace: Optional[str], @@ -307,8 +317,9 @@ def _connect_commands(self, pipeline: Pipeline, commands: Dict[str, Command]): ds := self.catalog._get_dataset(node_input), AzureMLFolderDataSet ): azure_inputs[sanitized_input_name] = Input( - # TODO: add versioning - path=f"{ds._azureml_dataset}@latest" + path=self._get_versioned_azureml_dataset_name( + ds._azureml_dataset + ) ) # 3. if not found, provide dummy input else: From b0c9e763530c5fc737bb954337302764ff3d2b27 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Fri, 2 Jun 2023 18:42:17 +0200 Subject: [PATCH 12/58] Refactor complex condition --- kedro_azureml/generator.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index aa1faac..f43c38b 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -174,6 +174,17 @@ def _from_params_or_value( msg += f", got {value_to_parse}" raise ValueError(msg) + def _is_param_or_root_non_azureml_folder_dataset( + self, dataset_name: str, pipeline: Pipeline + ) -> bool: + return dataset_name.startswith(PARAMS_PREFIX) or ( + dataset_name in pipeline.inputs() + and dataset_name in self.catalog.list() + and not isinstance( + self.catalog._get_dataset(dataset_name), AzureMLFolderDataSet + ) + ) + def _construct_azure_command( self, pipeline: Pipeline, @@ -206,14 +217,7 @@ def _construct_azure_command( inputs={ self._sanitize_param_name(name): ( Input(type="string") - if name.startswith(PARAMS_PREFIX) - or ( - name in pipeline.inputs() - and name in self.catalog.list() - and not isinstance( - self.catalog._get_dataset(name), AzureMLFolderDataSet - ) - ) + if self._is_param_or_root_non_azureml_folder_dataset(name, pipeline) else Input() ) for name in node.inputs @@ -335,14 +339,7 @@ def _prepare_command(self, node, pipeline): + self._sanitize_param_name(name) + "}}" for name in node.inputs - if not name.startswith(PARAMS_PREFIX) - and not ( - name in pipeline.inputs() - and name in self.catalog.list() - and not isinstance( - self.catalog._get_dataset(name), AzureMLFolderDataSet - ) - ) + if not self._is_param_or_root_non_azureml_folder_dataset(name, pipeline) ] if node.inputs else [] From b2cc6de7f44149c921d52add20cc40e7334ecc3a Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Mon, 5 Jun 2023 21:42:59 +0000 Subject: [PATCH 13/58] change version to azureml_version --- kedro_azureml/datasets/folder_dataset.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index fa847a4..7b8dd1d 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -19,13 +19,13 @@ def __init__( self, azureml_dataset: str, dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], - version: Optional[Version] = None, + azureml_version: Optional[Version] = None, filepath_arg: str = "filepath", ): super().__init__(dataset=dataset, filepath_arg=filepath_arg) self._azureml_dataset = azureml_dataset - self._version = version + self._version = azureml_version # TODO: remove and disable versioning in Azure ML runner? if VERSION_KEY in self._dataset_config: From 39206f3015db23e9d8f31dea896a23a61698efab Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Mon, 5 Jun 2023 21:44:32 +0000 Subject: [PATCH 14/58] update hook implementation with versioning --- kedro_azureml/hooks.py | 56 ++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 167de81..ee68029 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -1,4 +1,4 @@ -from pathlib import Path +from pathlib import Path, PurePosixPath from azureml.fsspec import AzureMachineLearningFileSystem from kedro.framework.hooks import hook_impl @@ -7,10 +7,19 @@ from kedro_azureml.client import _get_azureml_client from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet +import logging + +logger = logging.getLogger(__name__) class TooManyFilesError(Exception): pass +def get_versioned_path(filepath: PurePosixPath, version: str) -> PurePosixPath: + if filepath.is_dir(): + return filepath / version / filepath.parts[-1] + else: + return filepath / version / filepath.name + class AzureMLLocalRunHook: """Hook class that allows local runs using AML datasets.""" @@ -34,9 +43,19 @@ def before_pipeline_run(self, run_params, pipeline, catalog): if isinstance(dataset, AzureMLFolderDataSet) and ( dataset_name in pipeline.inputs() ): - azure_ds = ml_client.data.get( - dataset._azureml_dataset, label="latest" - ) + version = "latest" if dataset._version is None else str(dataset._version) + if version == "latest": + azure_ds = ml_client.data.get( + dataset._azureml_dataset, label="latest" + ) + # in case of latest there might be files already so + # we definitly want to overwrite on download + overwrite_mode = "MERGE_WITH_OVERWRITE" + else: + azure_ds = ml_client.data.get( + dataset._azureml_dataset, version=dataset._version + ) + overwrite_mode = "APPEND" if azure_ds.type == "uri_file": # azure_path = azure_ds.path.rsplit("/", 1)[0] # fs = AzureMachineLearningFileSystem(azure_path) @@ -48,23 +67,24 @@ def before_pipeline_run(self, run_params, pipeline, catalog): fs = AzureMachineLearningFileSystem(azure_path) # The datasets filepath is always absolute due to AbstractDataset ds_local_absolute_fpath = Path(dataset._filepath) - # TODO: Figure out the best path structure depending on versioning implementation. - project_path = Path(run_params["project_path"]) - new_base_path = project_path / "data" / "local_run" - # I thought about adding `data/` to it and make it relative but that assumes - # that everyone uses a `data/` directory which might not be the case. - ds_local_relative_fpath = ds_local_absolute_fpath.relative_to( - project_path - ) - new_filepath = ( - new_base_path - / str(azure_ds.version) - / ds_local_relative_fpath - ) + new_filepath = get_versioned_path(ds_local_absolute_fpath, version) + # if the path is a file we'll take the parent directory to download into + download_path = new_filepath.parent if ("." in new_filepath.name) else new_filepath # using APPEND will keep the local file if exists # as versions are unique this will prevent unnecessary file download for fpath in fs.ls(): - fs.download(fpath, str(new_filepath.parent), overwrite="APPEND") + logger.info(f"Downloading {fpath} for local execution") + fs.download(fpath, str(download_path), overwrite=overwrite_mode) + dataset.path = str(new_filepath) + catalog.add(dataset_name, dataset, replace=True) + + # we are adding this so that if an intermediate dataset in one + # run becomes the root dataset in another run we don't get problems + # with files being folder in the kedro verion way. + elif isinstance(dataset, AzureMLFolderDataSet) and ( + dataset_name not in pipeline.inputs() + ): + new_filepath = get_versioned_path(Path(dataset._filepath), "local") dataset.path = str(new_filepath) catalog.add(dataset_name, dataset, replace=True) From 71ef833f9d01cadb369873c36bf8518299a6875f Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Tue, 6 Jun 2023 21:24:46 +0000 Subject: [PATCH 15/58] fix runner condition --- kedro_azureml/hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index ee68029..a2ba51b 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -37,7 +37,7 @@ def before_pipeline_run(self, run_params, pipeline, catalog): catalog: The ``DataCatalog`` from which to fetch data. """ # we don't want the hook to work when we are running on AML - if run_params["runner"] != "AzurePipelinesRunner": + if "AzurePipelinesRunner" not in run_params["runner"]: with _get_azureml_client(subscription_id=None, config=self.azure_config) as ml_client: for dataset_name, dataset in catalog._data_sets.items(): if isinstance(dataset, AzureMLFolderDataSet) and ( From d8e920e3d369b9d7792948dfa8b4bff592b824ed Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Wed, 7 Jun 2023 12:46:09 +0200 Subject: [PATCH 16/58] Make load_version plural everywhere --- kedro_azureml/cli.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kedro_azureml/cli.py b/kedro_azureml/cli.py index dc6e6dc..0d38ac4 100644 --- a/kedro_azureml/cli.py +++ b/kedro_azureml/cli.py @@ -228,7 +228,7 @@ def run( params: str, wait_for_completion: bool, env_var: Tuple[str], - load_version: Dict[str, str], + load_versions: Dict[str, str], ): """Runs the specified pipeline in Azure ML Pipelines; Additional parameters can be passed from command line. Can be used with --wait-for-completion param to block the caller until the pipeline finishes in Azure ML. @@ -248,7 +248,7 @@ def run( mgr: KedroContextManager extra_env = parse_extra_env_params(env_var) with get_context_and_pipeline( - ctx, image, pipeline, params, aml_env, extra_env, load_version + ctx, image, pipeline, params, aml_env, extra_env, load_versions ) as ( mgr, az_pipeline, @@ -338,13 +338,13 @@ def compile( params: list, output: str, env_var: Tuple[str], - load_version: Dict[str, str], + load_versions: Dict[str, str], ): """Compiles the pipeline into YAML format""" params = json.dumps(p) if (p := parse_extra_params(params)) else "" extra_env = parse_extra_env_params(env_var) with get_context_and_pipeline( - ctx, image, pipeline, params, aml_env, extra_env, load_version + ctx, image, pipeline, params, aml_env, extra_env, load_versions ) as ( _, az_pipeline, From 8a00cf275d9803cab6688c1091a83dbc52146011 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Fri, 9 Jun 2023 16:53:17 +0200 Subject: [PATCH 17/58] Separate folder and filepath in datasets --- kedro_azureml/datasets/folder_dataset.py | 3 ++- kedro_azureml/datasets/pipeline_dataset.py | 20 +++++++++++++------- kedro_azureml/runner.py | 12 +++++++----- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index fa847a4..566b757 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -20,9 +20,10 @@ def __init__( azureml_dataset: str, dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], version: Optional[Version] = None, + folder: str = "data", filepath_arg: str = "filepath", ): - super().__init__(dataset=dataset, filepath_arg=filepath_arg) + super().__init__(dataset=dataset, folder=folder, filepath_arg=filepath_arg) self._azureml_dataset = azureml_dataset self._version = version diff --git a/kedro_azureml/datasets/pipeline_dataset.py b/kedro_azureml/datasets/pipeline_dataset.py index 4e7471e..e7a6c3b 100644 --- a/kedro_azureml/datasets/pipeline_dataset.py +++ b/kedro_azureml/datasets/pipeline_dataset.py @@ -1,4 +1,5 @@ import logging +from pathlib import Path from typing import Any, Dict, Type, Union from kedro.io.core import ( @@ -26,12 +27,14 @@ class AzureMLPipelineDataSet(AbstractDataSet): Args ---- - | - ``dataset``: dataset: Underlying dataset definition. + | - ``dataset``: Underlying dataset definition. Accepted formats are: a) object of a class that inherits from ``AbstractDataSet`` b) a string representing a fully qualified class name to such class c) a dictionary with ``type`` key pointing to a string from b), other keys are passed to the Dataset initializer. + | - ``folder``: Folder (path) to prepend to the filepath of the underlying dataset. + If unspecified, defaults to "data". | - ``filepath_arg``: Underlying dataset initializer argument that will set the filepath. If unspecified, defaults to "filepath". @@ -45,6 +48,7 @@ class AzureMLPipelineDataSet(AbstractDataSet): processed_images: type: kedro_azureml.datasets.AzureMLPipelineDataSet + folder: 'data/01_raw' dataset: type: pillow.ImageDataSet filepath: 'images.png' @@ -54,6 +58,7 @@ class AzureMLPipelineDataSet(AbstractDataSet): def __init__( self, dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], + folder: str = "data", filepath_arg: str = "filepath", ): """Creates a new instance of ``AzureMLPipelineDataSet``. @@ -78,6 +83,7 @@ def __init__( dataset = dataset if isinstance(dataset, dict) else {"type": dataset} self._dataset_type, self._dataset_config = parse_dataset_definition(dataset) + self.folder = folder self._filepath_arg = filepath_arg # TODO: remove and disable versioning in Azure ML runner? @@ -90,11 +96,7 @@ def __init__( @property def path(self) -> str: - return self._dataset_config[self._filepath_arg] - - @path.setter - def path(self, path: str) -> None: - self._dataset_config[self._filepath_arg] = path + return str(Path(self.folder) / Path(self._dataset_config[self._filepath_arg])) @property def _filepath(self) -> str: @@ -105,7 +107,9 @@ def _filepath(self) -> str: return self.path def _construct_dataset(self) -> AbstractDataSet: - return self._dataset_type(**self._dataset_config) + dataset_config = self._dataset_config.copy() + dataset_config[self._filepath_arg] = self.path + return self._dataset_type(**dataset_config) def _load(self) -> Any: return self._construct_dataset().load() @@ -120,6 +124,8 @@ def _describe(self) -> Dict[str, Any]: return { "dataset_type": self._dataset_type.__name__, "dataset_config": self._dataset_config, + "folder": self.folder, + "filepath_arg": self._filepath_arg, } def _exists(self) -> bool: diff --git a/kedro_azureml/runner.py b/kedro_azureml/runner.py index 93807c3..e1835c3 100644 --- a/kedro_azureml/runner.py +++ b/kedro_azureml/runner.py @@ -1,6 +1,5 @@ import logging import os -from pathlib import Path from typing import Any, Dict, Optional from kedro.io import AbstractDataSet, DataCatalog @@ -53,8 +52,7 @@ def run( if ds_name in catalog_set: ds = catalog._get_dataset(ds_name) if isinstance(ds, AzureMLPipelineDataSet): - file_name = Path(ds.path).name - ds.path = str(Path(azure_dataset_folder) / file_name) + ds.folder = azure_dataset_folder catalog.add(ds_name, ds, replace=True) else: catalog.add(ds_name, self.create_default_data_set(ds_name)) @@ -68,9 +66,13 @@ def run( def create_default_data_set(self, ds_name: str) -> AbstractDataSet: if self.pipeline_data_passing: - path = str(Path(self.data_paths[ds_name]) / f"{ds_name}.pickle") return AzureMLPipelineDataSet( - {"type": PickleDataSet, "backend": "cloudpickle", "filepath": path} + { + "type": PickleDataSet, + "backend": "cloudpickle", + "filepath": f"{ds_name}.pickle", + }, + folder=self.data_paths[ds_name], ) else: # TODO: handle credentials better (probably with built-in Kedro credentials From 4f4e39ab80e127046b611544212e4de5f69fe360 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Fri, 16 Jun 2023 16:02:18 +0200 Subject: [PATCH 18/58] Fix absolute filepath bug --- kedro_azureml/datasets/pipeline_dataset.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kedro_azureml/datasets/pipeline_dataset.py b/kedro_azureml/datasets/pipeline_dataset.py index e7a6c3b..7751fa5 100644 --- a/kedro_azureml/datasets/pipeline_dataset.py +++ b/kedro_azureml/datasets/pipeline_dataset.py @@ -85,6 +85,10 @@ def __init__( self.folder = folder self._filepath_arg = filepath_arg + # Convert filepath to relative path + self._dataset_config[self._filepath_arg] = str( + Path(self._dataset_config[self._filepath_arg]).relative_to(Path.cwd()) + ) # TODO: remove and disable versioning in Azure ML runner? if VERSION_KEY in self._dataset_config: From ac40d2dc812d8d0d4576abacdb5a74fe4ad47e4e Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Fri, 16 Jun 2023 16:30:53 +0200 Subject: [PATCH 19/58] Catch potential ValueError --- kedro_azureml/datasets/pipeline_dataset.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/kedro_azureml/datasets/pipeline_dataset.py b/kedro_azureml/datasets/pipeline_dataset.py index 7751fa5..ea310be 100644 --- a/kedro_azureml/datasets/pipeline_dataset.py +++ b/kedro_azureml/datasets/pipeline_dataset.py @@ -85,10 +85,14 @@ def __init__( self.folder = folder self._filepath_arg = filepath_arg - # Convert filepath to relative path - self._dataset_config[self._filepath_arg] = str( - Path(self._dataset_config[self._filepath_arg]).relative_to(Path.cwd()) - ) + try: + # Convert filepath to relative path + self._dataset_config[self._filepath_arg] = str( + Path(self._dataset_config[self._filepath_arg]).relative_to(Path.cwd()) + ) + except ValueError: + # If the path is not relative to the current working directory, do not modify it + pass # TODO: remove and disable versioning in Azure ML runner? if VERSION_KEY in self._dataset_config: From 8cc1c52da3a23338b5831f9cb659a0f7f156f050 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sun, 2 Jul 2023 10:38:37 +0000 Subject: [PATCH 20/58] move code into folder dataset and support nested filepaths for folder datasets --- kedro_azureml/datasets/folder_dataset.py | 79 +++++++++++++++++++++- kedro_azureml/datasets/pipeline_dataset.py | 6 +- kedro_azureml/hooks.py | 74 ++++++-------------- 3 files changed, 101 insertions(+), 58 deletions(-) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index 566b757..14cec40 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -1,20 +1,31 @@ import logging +from functools import partial +from operator import attrgetter from typing import Any, Dict, Optional, Type, Union +from pathlib import Path +from azure.core.exceptions import ResourceNotFoundError +from azureml.fsspec import AzureMachineLearningFileSystem +from cachetools import Cache, cachedmethod +from cachetools.keys import hashkey from kedro.io.core import ( VERSION_KEY, VERSIONED_FLAG_KEY, AbstractDataSet, + AbstractVersionedDataSet, DataSetError, + DataSetNotFoundError, Version, + VersionNotFoundError, ) +from kedro_azureml.client import _get_azureml_client from kedro_azureml.datasets.pipeline_dataset import AzureMLPipelineDataSet logger = logging.getLogger(__name__) -class AzureMLFolderDataSet(AzureMLPipelineDataSet): +class AzureMLFolderDataSet(AzureMLPipelineDataSet, AbstractVersionedDataSet): def __init__( self, azureml_dataset: str, @@ -27,6 +38,11 @@ def __init__( self._azureml_dataset = azureml_dataset self._version = version + # 1 entry for load version, 1 for save version + self._version_cache = Cache(maxsize=2) # type: Cache + self._download = False + self._local_run = False + self._azureml_config = None # TODO: remove and disable versioning in Azure ML runner? if VERSION_KEY in self._dataset_config: @@ -35,3 +51,64 @@ def __init__( f"underlying dataset. Please remove '{VERSIONED_FLAG_KEY}' flag from " f"the dataset definition." ) + + def _construct_dataset(self) -> AbstractDataSet: + dataset_config = self._dataset_config.copy() + dataset_config[self._filepath_arg] = str(self.path) + if self._local_run: + dataset_config["version"] = self._version + return self._dataset_type(**dataset_config) + + def _get_latest_version(self) -> str: + try: + with _get_azureml_client( + subscription_id=None, config=self._azureml_config + ) as ml_client: + return ml_client.data.get(self._azureml_dataset, label="latest").version + except ResourceNotFoundError: + raise DataSetNotFoundError(f"Did not find Azure ML Data Asset for {self}") + + @cachedmethod(cache=attrgetter("_version_cache"), key=partial(hashkey, "load")) + def _fetch_latest_load_version(self) -> str: + return self._get_latest_version() + + def _get_azureml_dataset(self): + with _get_azureml_client( + subscription_id=None, config=self._azureml_config + ) as ml_client: + return ml_client.data.get( + self._azureml_dataset, version=self.resolve_load_version() + ) + + def _load(self) -> Any: + if self._download: + try: + azureml_ds = self._get_azureml_dataset() + except ResourceNotFoundError: + raise VersionNotFoundError( + f"Did not find version {self.resolve_load_version()} for {self}" + ) + + if azureml_ds.type == "uri_file": + raise NotImplementedError("AzureMLFileDataSet not yet implemented") + fs = AzureMachineLearningFileSystem(azureml_ds.path) + # relative path of the folder dataset on azure + relative_path = fs._infer_storage_options(azureml_ds.path)[-1] + path_on_azure = str( + Path(relative_path) / self._dataset_config[self._filepath_arg] + ) + # if the path is a file we'll take the parent directory to download into + download_path = ( + self._get_load_path().parent + if ("." in self._get_load_path().name) + else self._get_load_path() + ) + for fpath in fs.ls(path_on_azure): + logger.info(f"Downloading {fpath} for local execution") + # using APPEND will keep the local file if exists + # as versions are unique this will prevent unnecessary file download + fs.download(fpath, str(download_path), overwrite="APPEND") + return self._construct_dataset().load() + + def _save(self, data: Any) -> None: + self._construct_dataset().save(data) diff --git a/kedro_azureml/datasets/pipeline_dataset.py b/kedro_azureml/datasets/pipeline_dataset.py index ea310be..2c87ca6 100644 --- a/kedro_azureml/datasets/pipeline_dataset.py +++ b/kedro_azureml/datasets/pipeline_dataset.py @@ -78,8 +78,6 @@ def __init__( DataSetError: If versioning is enabled for the underlying dataset. """ - super().__init__() - dataset = dataset if isinstance(dataset, dict) else {"type": dataset} self._dataset_type, self._dataset_config = parse_dataset_definition(dataset) @@ -104,7 +102,7 @@ def __init__( @property def path(self) -> str: - return str(Path(self.folder) / Path(self._dataset_config[self._filepath_arg])) + return Path(self.folder) / Path(self._dataset_config[self._filepath_arg]) @property def _filepath(self) -> str: @@ -116,7 +114,7 @@ def _filepath(self) -> str: def _construct_dataset(self) -> AbstractDataSet: dataset_config = self._dataset_config.copy() - dataset_config[self._filepath_arg] = self.path + dataset_config[self._filepath_arg] = str(self.path) return self._dataset_type(**dataset_config) def _load(self) -> Any: diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index a2ba51b..3f5cc75 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -1,24 +1,24 @@ -from pathlib import Path, PurePosixPath +import logging +from pathlib import PurePosixPath -from azureml.fsspec import AzureMachineLearningFileSystem from kedro.framework.hooks import hook_impl +from kedro.io.core import Version from kedro_azureml.config import AzureMLConfig -from kedro_azureml.client import _get_azureml_client from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet -import logging - logger = logging.getLogger(__name__) + class TooManyFilesError(Exception): pass + def get_versioned_path(filepath: PurePosixPath, version: str) -> PurePosixPath: - if filepath.is_dir(): - return filepath / version / filepath.parts[-1] - else: - return filepath / version / filepath.name + if filepath.is_dir(): + return filepath / version / filepath.parts[-1] + else: + return filepath / version / filepath.name class AzureMLLocalRunHook: @@ -26,7 +26,9 @@ class AzureMLLocalRunHook: @hook_impl def after_context_created(self, context) -> None: - self.azure_config = AzureMLConfig(**context.config_loader.get("azureml*")['azure']) + self.azure_config = AzureMLConfig( + **context.config_loader.get("azureml*")["azure"] + ) @hook_impl def before_pipeline_run(self, run_params, pipeline, catalog): @@ -38,54 +40,20 @@ def before_pipeline_run(self, run_params, pipeline, catalog): """ # we don't want the hook to work when we are running on AML if "AzurePipelinesRunner" not in run_params["runner"]: - with _get_azureml_client(subscription_id=None, config=self.azure_config) as ml_client: - for dataset_name, dataset in catalog._data_sets.items(): - if isinstance(dataset, AzureMLFolderDataSet) and ( - dataset_name in pipeline.inputs() - ): - version = "latest" if dataset._version is None else str(dataset._version) - if version == "latest": - azure_ds = ml_client.data.get( - dataset._azureml_dataset, label="latest" - ) - # in case of latest there might be files already so - # we definitly want to overwrite on download - overwrite_mode = "MERGE_WITH_OVERWRITE" - else: - azure_ds = ml_client.data.get( - dataset._azureml_dataset, version=dataset._version - ) - overwrite_mode = "APPEND" - if azure_ds.type == "uri_file": - # azure_path = azure_ds.path.rsplit("/", 1)[0] - # fs = AzureMachineLearningFileSystem(azure_path) - raise NotImplementedError( - "AzureMLFileDataSet not yet implemented" - ) - else: - azure_path = azure_ds.path - fs = AzureMachineLearningFileSystem(azure_path) - # The datasets filepath is always absolute due to AbstractDataset - ds_local_absolute_fpath = Path(dataset._filepath) - new_filepath = get_versioned_path(ds_local_absolute_fpath, version) - # if the path is a file we'll take the parent directory to download into - download_path = new_filepath.parent if ("." in new_filepath.name) else new_filepath - # using APPEND will keep the local file if exists - # as versions are unique this will prevent unnecessary file download - for fpath in fs.ls(): - logger.info(f"Downloading {fpath} for local execution") - fs.download(fpath, str(download_path), overwrite=overwrite_mode) - dataset.path = str(new_filepath) + for dataset_name, dataset in catalog._data_sets.items(): + if isinstance(dataset, AzureMLFolderDataSet): + if dataset_name in pipeline.inputs(): + dataset._local_run = True + dataset._download = True + dataset._azureml_config = self.azure_config catalog.add(dataset_name, dataset, replace=True) # we are adding this so that if an intermediate dataset in one # run becomes the root dataset in another run we don't get problems # with files being folder in the kedro verion way. - elif isinstance(dataset, AzureMLFolderDataSet) and ( - dataset_name not in pipeline.inputs() - ): - new_filepath = get_versioned_path(Path(dataset._filepath), "local") - dataset.path = str(new_filepath) + else: + dataset._local_run = True + dataset._version = Version("local", "local") catalog.add(dataset_name, dataset, replace=True) From 7270b527d1aa0c3fc4f7c1bc33e901bd36140f01 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sun, 2 Jul 2023 20:48:57 +0000 Subject: [PATCH 21/58] make file dataset working locally --- kedro_azureml/datasets/folder_dataset.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index 14cec40..2c80946 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -88,15 +88,16 @@ def _load(self) -> Any: raise VersionNotFoundError( f"Did not find version {self.resolve_load_version()} for {self}" ) - - if azureml_ds.type == "uri_file": - raise NotImplementedError("AzureMLFileDataSet not yet implemented") fs = AzureMachineLearningFileSystem(azureml_ds.path) - # relative path of the folder dataset on azure - relative_path = fs._infer_storage_options(azureml_ds.path)[-1] - path_on_azure = str( - Path(relative_path) / self._dataset_config[self._filepath_arg] - ) + if azureml_ds.type == "uri_file": + # relative path of the file dataset on azure + path_on_azure = fs._infer_storage_options(azureml_ds.path)[-1] + elif azureml_ds.type == "uri_folder": + # relative path of the folder dataset on azure + relative_path = fs._infer_storage_options(azureml_ds.path)[-1] + path_on_azure = str( + Path(relative_path) / self._dataset_config[self._filepath_arg] + ) # if the path is a file we'll take the parent directory to download into download_path = ( self._get_load_path().parent From 5dd6c295f8554e9b36062fe426108a1f84e807b8 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Thu, 6 Jul 2023 16:57:44 +0200 Subject: [PATCH 22/58] Support uri_file input type --- kedro_azureml/datasets/folder_dataset.py | 12 ++++++++++-- kedro_azureml/generator.py | 16 ++++++++++++---- kedro_azureml/runner.py | 12 ++++++++++-- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index 566b757..21f8d6c 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -1,5 +1,5 @@ import logging -from typing import Any, Dict, Optional, Type, Union +from typing import Any, Dict, Literal, Optional, Type, Union, get_args from kedro.io.core import ( VERSION_KEY, @@ -11,6 +11,7 @@ from kedro_azureml.datasets.pipeline_dataset import AzureMLPipelineDataSet +AzureMLDataAssetType = Literal["uri_file", "uri_folder"] logger = logging.getLogger(__name__) @@ -19,14 +20,21 @@ def __init__( self, azureml_dataset: str, dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], - version: Optional[Version] = None, folder: str = "data", filepath_arg: str = "filepath", + azureml_type: AzureMLDataAssetType = "uri_folder", + version: Optional[Version] = None, ): super().__init__(dataset=dataset, folder=folder, filepath_arg=filepath_arg) self._azureml_dataset = azureml_dataset self._version = version + self._azureml_type = azureml_type + if self._azureml_type not in get_args(AzureMLDataAssetType): + raise DataSetError( + f"Invalid azureml_type '{self._azureml_type}' in dataset definition. " + f"Valid values are: {get_args(AzureMLDataAssetType)}" + ) # TODO: remove and disable versioning in Azure ML runner? if VERSION_KEY in self._dataset_config: diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index f43c38b..7db2b45 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -152,6 +152,16 @@ def _get_versioned_azureml_dataset_name(self, dataset_name: str): suffix = ":" + version return dataset_name + suffix + def _get_input_type(self, dataset_name: str, pipeline: Pipeline) -> Input: + if self._is_param_or_root_non_azureml_folder_dataset(dataset_name, pipeline): + return "string" + elif dataset_name in self.catalog.list() and isinstance( + ds := self.catalog._get_dataset(dataset_name), AzureMLFolderDataSet + ): + return ds._azureml_type + else: + return "uri_folder" + def _from_params_or_value( self, namespace: Optional[str], @@ -215,10 +225,8 @@ def _construct_azure_command( }, environment=self._resolve_azure_environment(), # TODO: check whether Environment exists inputs={ - self._sanitize_param_name(name): ( - Input(type="string") - if self._is_param_or_root_non_azureml_folder_dataset(name, pipeline) - else Input() + self._sanitize_param_name(name): Input( + type=self._get_input_type(name, pipeline) ) for name in node.inputs }, diff --git a/kedro_azureml/runner.py b/kedro_azureml/runner.py index e1835c3..e2bea30 100644 --- a/kedro_azureml/runner.py +++ b/kedro_azureml/runner.py @@ -1,5 +1,6 @@ import logging import os +from pathlib import Path from typing import Any, Dict, Optional from kedro.io import AbstractDataSet, DataCatalog @@ -15,6 +16,7 @@ KedroAzureRunnerDataset, KedroAzureRunnerDistributedDataset, ) +from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet from kedro_azureml.distributed.utils import is_distributed_environment logger = logging.getLogger(__name__) @@ -48,11 +50,17 @@ def run( catalog_set = set(catalog.list()) # Loop over datasets in arguments to set their paths - for ds_name, azure_dataset_folder in self.data_paths.items(): + for ds_name, azure_dataset_path in self.data_paths.items(): if ds_name in catalog_set: ds = catalog._get_dataset(ds_name) if isinstance(ds, AzureMLPipelineDataSet): - ds.folder = azure_dataset_folder + if ( + isinstance(ds, AzureMLFolderDataSet) + and ds._azureml_type == "uri_file" + ): + ds.folder = str(Path(azure_dataset_path).parent) + else: + ds.folder = azure_dataset_path catalog.add(ds_name, ds, replace=True) else: catalog.add(ds_name, self.create_default_data_set(ds_name)) From ac74fe8f0650d4d4910dd4835a5d157c0c6e3a2d Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Thu, 6 Jul 2023 17:25:41 +0200 Subject: [PATCH 23/58] Fix input type specification --- kedro_azureml/generator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 7db2b45..2057353 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -329,9 +329,10 @@ def _connect_commands(self, pipeline: Pipeline, commands: Dict[str, Command]): ds := self.catalog._get_dataset(node_input), AzureMLFolderDataSet ): azure_inputs[sanitized_input_name] = Input( + type=ds._azureml_type, path=self._get_versioned_azureml_dataset_name( ds._azureml_dataset - ) + ), ) # 3. if not found, provide dummy input else: From 6748fd764bd28d0c04d634eda32a8d191303bc01 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Thu, 6 Jul 2023 17:26:00 +0200 Subject: [PATCH 24/58] Accept file paths in CLI args --- kedro_azureml/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kedro_azureml/cli.py b/kedro_azureml/cli.py index 0d38ac4..4b29988 100644 --- a/kedro_azureml/cli.py +++ b/kedro_azureml/cli.py @@ -374,14 +374,14 @@ def compile( @click.option( "--az-input", "azure_inputs", - type=(str, click.Path(exists=True, file_okay=False, dir_okay=True)), + type=(str, click.Path(exists=True, file_okay=True, dir_okay=True)), multiple=True, help="Name and path of Azure ML Pipeline input", ) @click.option( "--az-output", "azure_outputs", - type=(str, click.Path(exists=True, file_okay=False, dir_okay=True)), + type=(str, click.Path(exists=True, file_okay=True, dir_okay=True)), multiple=True, help="Name and path of Azure ML Pipeline output", ) From 243bfa63b6a989d0c47c72ed5b31911c469cfde7 Mon Sep 17 00:00:00 2001 From: Tomas Van Pottelbergh Date: Thu, 6 Jul 2023 17:57:49 +0200 Subject: [PATCH 25/58] Do not support uri_file as intermediate dataset --- kedro_azureml/generator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 2057353..0f49e3e 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -158,6 +158,10 @@ def _get_input_type(self, dataset_name: str, pipeline: Pipeline) -> Input: elif dataset_name in self.catalog.list() and isinstance( ds := self.catalog._get_dataset(dataset_name), AzureMLFolderDataSet ): + if ds._azureml_type == "uri_file" and dataset_name not in pipeline.inputs(): + raise ValueError( + "AzureMLFolderDataSets with azureml_type 'uri_file' can only be used as pipeline inputs" + ) return ds._azureml_type else: return "uri_folder" From 63e7b7d1ffd890de415f077dfd8843e5d8996d59 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sat, 8 Jul 2023 11:20:53 +0000 Subject: [PATCH 26/58] clean up paths and docstrings --- kedro_azureml/datasets/folder_dataset.py | 46 +++++++++++++++++------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index 2c80946..fc826df 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -52,11 +52,33 @@ def __init__( f"the dataset definition." ) + @property + def path(self) -> str: + # For local runs we want to replicate the folder structure of the remote dataset. + # Otherwise kedros versioning would version at the file/folder level and not the + # AzureML dataset level + if self._local_run: + return ( + Path(self.folder) + / self._azureml_dataset + / self.resolve_load_version() + / Path(self._dataset_config[self._filepath_arg]) + ) + else: + return Path(self.folder) / Path(self._dataset_config[self._filepath_arg]) + + @property + def download_path(self) -> str: + # Because `is_dir` and `is_file` don't work if the path does not + # exist, we use this heuristic to identify paths vs folders. + if self.path.suffix != "": + return str(self.path.parent) + else: + return str(self.path) + def _construct_dataset(self) -> AbstractDataSet: dataset_config = self._dataset_config.copy() dataset_config[self._filepath_arg] = str(self.path) - if self._local_run: - dataset_config["version"] = self._version return self._dataset_type(**dataset_config) def _get_latest_version(self) -> str: @@ -90,25 +112,23 @@ def _load(self) -> Any: ) fs = AzureMachineLearningFileSystem(azureml_ds.path) if azureml_ds.type == "uri_file": - # relative path of the file dataset on azure + # relative (to storage account root) path of the file dataset on azure path_on_azure = fs._infer_storage_options(azureml_ds.path)[-1] elif azureml_ds.type == "uri_folder": - # relative path of the folder dataset on azure - relative_path = fs._infer_storage_options(azureml_ds.path)[-1] + # relative (to storage account root) path of the folder dataset on azure + dataset_root_on_azure = fs._infer_storage_options(azureml_ds.path)[-1] + # relative (to storage account root) path of the dataset in the folder on azure path_on_azure = str( - Path(relative_path) / self._dataset_config[self._filepath_arg] + Path(dataset_root_on_azure) + / self._dataset_config[self._filepath_arg] ) - # if the path is a file we'll take the parent directory to download into - download_path = ( - self._get_load_path().parent - if ("." in self._get_load_path().name) - else self._get_load_path() - ) + # we take the relative within the Azure dataset to avoid downloading + # all files in a folder dataset. for fpath in fs.ls(path_on_azure): logger.info(f"Downloading {fpath} for local execution") # using APPEND will keep the local file if exists # as versions are unique this will prevent unnecessary file download - fs.download(fpath, str(download_path), overwrite="APPEND") + fs.download(fpath, self.download_path, overwrite="APPEND") return self._construct_dataset().load() def _save(self, data: Any) -> None: From bf377129e2abf4cba04fc0cfb87eaf65a277dedc Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Tue, 11 Jul 2023 00:00:38 +0200 Subject: [PATCH 27/58] add folder dataset tests --- kedro_azureml/datasets/folder_dataset.py | 2 + tests/conftest.py | 108 +++++++++++++ tests/test_datasets.py | 183 +++++++++++++++++++++++ 3 files changed, 293 insertions(+) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index fc826df..24d409e 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -122,6 +122,8 @@ def _load(self) -> Any: Path(dataset_root_on_azure) / self._dataset_config[self._filepath_arg] ) + else: + raise ValueError("Unsupported AzureMLDataset type") # we take the relative within the Azure dataset to avoid downloading # all files in a folder dataset. for fpath in fs.ls(path_on_azure): diff --git a/tests/conftest.py b/tests/conftest.py index cf19f67..7e03445 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,6 +3,9 @@ from tempfile import TemporaryDirectory from unittest.mock import MagicMock, patch from uuid import uuid4 +import fsspec +from azureml.fsspec import AzureMachineLearningFileSystem +import pandas as pd import pytest from kedro.pipeline import Pipeline, node, pipeline @@ -102,3 +105,108 @@ def patched_azure_runner(patched_azure_dataset): @pytest.fixture() def patched_azure_pipeline_data_passing_runner(): yield AzurePipelinesRunner(pipeline_data_passing=True) + + +@pytest.fixture +def mock_azureml_config(): + mock_config = MagicMock() + mock_config.subscription_id = "123" + mock_config.resource_group = "456" + mock_config.workspace_name = "best" + return mock_config + + +@pytest.fixture +def simulated_azureml_dataset(tmp_path): + df = pd.DataFrame({"data": [1, 2, 3], "partition_idx": [1, 2, 3]}) + + + test_data_file = tmp_path / "test_file" + test_data_file.mkdir(parents=True) + df.to_pickle(test_data_file / "test.pickle") + + test_data_nested = test_data_file / "random" / "subfolder" + test_data_nested.mkdir(parents=True) + + df.to_pickle(test_data_nested / "test.pickle") + + test_data_folder_nested = tmp_path / "test_folder_nested" / "random" / "subfolder" + test_data_folder_root = tmp_path / "test_folder" + test_data_folder_nested.mkdir(parents=True) + test_data_folder_root.mkdir(parents=True) + + for _, sub_df in df.groupby("partition_idx"): + filename = test_data_folder_nested / f"partition_{_}.parquet" + filename2 = test_data_folder_root / f"partition_{_}.parquet" + sub_df.to_parquet(filename) + sub_df.to_parquet(filename2) + + return tmp_path + + +class AzureMLFileSystemMock(fsspec.implementations.local.LocalFileSystem): + _prefix = Path(".") + + def __init__(self, uri): + super().__init__() + + def _infer_storage_options(self, uri): + path_on_azure = Path( + AzureMachineLearningFileSystem._infer_storage_options(uri)[-1] + ) + if path_on_azure.suffix != "": + path_on_azure = str(path_on_azure.parent) + else: + path_on_azure = str(path_on_azure) + return [self._prefix / path_on_azure] + + def download(self, *args, **kwargs): + p = Path(args[1]) + p.mkdir(parents=True, exist_ok=True) + super().download(args[0], args[1], *args[2:], **kwargs) + + +@pytest.fixture +def mock_azureml_fs(simulated_azureml_dataset): + with patch( + "kedro_azureml.datasets.folder_dataset.AzureMachineLearningFileSystem", + new=AzureMLFileSystemMock, + ): + with patch.object( + AzureMLFileSystemMock, "_prefix", new=simulated_azureml_dataset + ): + yield mock_azureml_fs + + +@pytest.fixture +def mock_azureml_client(request): + mock_data_asset = MagicMock() + mock_data_asset.version = "1" + mock_data_asset.path = request.param["path"] + mock_data_asset.type = request.param["type"] + + with patch( + "kedro_azureml.datasets.folder_dataset._get_azureml_client" + ) as mock_get_client: + mock_client = MagicMock() + mock_client.data.get.return_value = mock_data_asset + + mock_context_manager = MagicMock() + mock_context_manager.__enter__.return_value = mock_client + mock_context_manager.__exit__.return_value = None + + mock_get_client.return_value = mock_context_manager + + yield mock_get_client + + +@pytest.fixture +def in_temp_dir(tmp_path): + original_cwd = os.getcwd() + + os.chdir(tmp_path) + + yield + + os.chdir(original_cwd) + diff --git a/tests/test_datasets.py b/tests/test_datasets.py index f31577c..45dba79 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -7,9 +7,12 @@ import pandas as pd import pytest from kedro.extras.datasets.pickle import PickleDataSet +from kedro.extras.datasets.pandas import ParquetDataSet +from kedro.io.core import Version from kedro_azureml.constants import KEDRO_AZURE_BLOB_TEMP_DIR_NAME from kedro_azureml.datasets import ( + AzureMLFolderDataSet, AzureMLPandasDataSet, AzureMLPipelineDataSet, KedroAzureRunnerDataset, @@ -44,6 +47,186 @@ def test_azure_dataset_config(dataset_class: Type): assert all(k in cfg for k in ("account_name", "account_key")), "Invalid ABFS config" +@pytest.mark.parametrize( + "dataset_type,path_in_aml,path_locally,download_path,local_run,download,mock_azureml_client", + [ + ( + PickleDataSet, + "test.pickle", + "data/test.pickle", + "data", + False, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle", + "type": "uri_file", + }, + ), + ( + PickleDataSet, + "test.pickle", + "data/test_dataset/1/test.pickle", + "data/test_dataset/1", + True, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle", + "type": "uri_file", + }, + ), + ( + PickleDataSet, + "test.pickle", + "data/test_dataset/1/test.pickle", + "data/test_dataset/1", + True, + True, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle", + "type": "uri_file", + }, + ), + ( + PickleDataSet, + "random/subfolder/test.pickle", + "data/random/subfolder/test.pickle", + "data/random/subfolder", + False, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/random/subfolder/test.pickle", + "type": "uri_file", + }, + ), + ( + PickleDataSet, + "random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder", + True, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/random/subfolder/test.pickle", + "type": "uri_file", + }, + ), + ( + PickleDataSet, + "random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder", + True, + True, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/random/subfolder/test.pickle", + "type": "uri_file", + }, + ), + ( + ParquetDataSet, + ".", + "data/", + "data", + False, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder/", + "type": "uri_file", + }, + ), + ( + ParquetDataSet, + ".", + "data/test_dataset/1/", + "data/test_dataset/1", + True, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder/", + "type": "uri_folder", + }, + ), + ( + ParquetDataSet, + ".", + "data/test_dataset/1/", + "data/test_dataset/1", + True, + True, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder/", + "type": "uri_folder", + }, + ), + ( + ParquetDataSet, + "random/subfolder/", + "data/random/subfolder/", + "data/random/subfolder", + False, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder_nested/", + "type": "uri_folder", + }, + ), + ( + ParquetDataSet, + "random/subfolder/", + "data/test_dataset/1/random/subfolder/", + "data/test_dataset/1/random/subfolder", + True, + False, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder_nested/", + "type": "uri_folder", + }, + ), + ( + ParquetDataSet, + "random/subfolder/", + "data/test_dataset/1/random/subfolder/", + "data/test_dataset/1/random/subfolder", + True, + True, + { + "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder_nested/", + "type": "uri_folder", + }, + ), + ], + indirect=["mock_azureml_client"], +) +def test_azureml_folder_dataset( + in_temp_dir, + mock_azureml_client, + mock_azureml_config, + mock_azureml_fs, + dataset_type, + path_in_aml, + path_locally, + download_path, + local_run, + download, +): + ds = AzureMLFolderDataSet( + dataset={ + "type": dataset_type, + "filepath": path_in_aml, + }, + azureml_dataset="test_dataset", + version=Version(None, None), + ) + ds._local_run = local_run + ds._download = download + ds._azureml_config = Path(mock_azureml_config) + assert ds.path == Path(path_locally) + assert ds.download_path == download_path + if download: + df = pd.DataFrame({"data": [1, 2, 3], "partition_idx": [1, 2, 3]}) + assert (ds._load()["data"] == df["data"]).all() + + def test_azureml_pipeline_dataset(tmp_path: Path): ds = AzureMLPipelineDataSet( { From 69712ecae6ec5ae5ea7d5797744c89f08054b145 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Tue, 11 Jul 2023 13:35:42 +0200 Subject: [PATCH 28/58] add tests for hook --- kedro_azureml/hooks.py | 14 ------------- tests/conftest.py | 43 +++++++++++++++++++++++++++++++++----- tests/test_datasets.py | 2 +- tests/test_hook.py | 47 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 20 deletions(-) create mode 100644 tests/test_hook.py diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 3f5cc75..9772f31 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -7,20 +7,6 @@ from kedro_azureml.config import AzureMLConfig from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet -logger = logging.getLogger(__name__) - - -class TooManyFilesError(Exception): - pass - - -def get_versioned_path(filepath: PurePosixPath, version: str) -> PurePosixPath: - if filepath.is_dir(): - return filepath / version / filepath.parts[-1] - else: - return filepath / version / filepath.name - - class AzureMLLocalRunHook: """Hook class that allows local runs using AML datasets.""" diff --git a/tests/conftest.py b/tests/conftest.py index 7e03445..abb40d1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,11 +3,14 @@ from tempfile import TemporaryDirectory from unittest.mock import MagicMock, patch from uuid import uuid4 + import fsspec -from azureml.fsspec import AzureMachineLearningFileSystem import pandas as pd - import pytest +from azureml.fsspec import AzureMachineLearningFileSystem +from kedro.extras.datasets.pandas import CSVDataSet, ParquetDataSet +from kedro.io import DataCatalog +from kedro.io.core import Version from kedro.pipeline import Pipeline, node, pipeline from kedro_azureml.config import ( @@ -17,7 +20,7 @@ KedroAzureRunnerConfig, ) from kedro_azureml.constants import KEDRO_AZURE_RUNNER_CONFIG -from kedro_azureml.datasets import KedroAzureRunnerDataset +from kedro_azureml.datasets import AzureMLFolderDataSet, KedroAzureRunnerDataset from kedro_azureml.runner import AzurePipelinesRunner from kedro_azureml.utils import CliContext from tests.utils import identity @@ -107,12 +110,23 @@ def patched_azure_pipeline_data_passing_runner(): yield AzurePipelinesRunner(pipeline_data_passing=True) +class ExtendedMagicMock(MagicMock): + def to_dict(self): + return { + "subscription_id": self.subscription_id, + "resource_group": self.resource_group, + "workspace_name": self.workspace_name, + "experiment_name": self.experiment_name, + } + + @pytest.fixture def mock_azureml_config(): - mock_config = MagicMock() + mock_config = ExtendedMagicMock() mock_config.subscription_id = "123" mock_config.resource_group = "456" mock_config.workspace_name = "best" + mock_config.experiment_name = "test" return mock_config @@ -120,7 +134,6 @@ def mock_azureml_config(): def simulated_azureml_dataset(tmp_path): df = pd.DataFrame({"data": [1, 2, 3], "partition_idx": [1, 2, 3]}) - test_data_file = tmp_path / "test_file" test_data_file.mkdir(parents=True) df.to_pickle(test_data_file / "test.pickle") @@ -210,3 +223,23 @@ def in_temp_dir(tmp_path): os.chdir(original_cwd) + +@pytest.fixture +def multi_catalog(): + csv = AzureMLFolderDataSet( + dataset={ + "type": CSVDataSet, + "filepath": "abc.csv", + }, + azureml_dataset="test_dataset", + version=Version(None, None), + ) + parq = AzureMLFolderDataSet( + dataset={ + "type": ParquetDataSet, + "filepath": "xyz.parq", + }, + azureml_dataset="test_dataset_2", + version=Version(None, None), + ) + return DataCatalog({"input_data": csv, "i2": parq}) diff --git a/tests/test_datasets.py b/tests/test_datasets.py index 45dba79..38d5a32 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -6,8 +6,8 @@ import numpy as np import pandas as pd import pytest -from kedro.extras.datasets.pickle import PickleDataSet from kedro.extras.datasets.pandas import ParquetDataSet +from kedro.extras.datasets.pickle import PickleDataSet from kedro.io.core import Version from kedro_azureml.constants import KEDRO_AZURE_BLOB_TEMP_DIR_NAME diff --git a/tests/test_hook.py b/tests/test_hook.py new file mode 100644 index 0000000..27fc072 --- /dev/null +++ b/tests/test_hook.py @@ -0,0 +1,47 @@ +from unittest.mock import Mock + +import pytest +from kedro.io.core import Version + +from kedro_azureml.hooks import azureml_local_run_hook + + +@pytest.mark.parametrize( + "runner", + [("kedro_azureml.runner.AzurePipelinesRunner"), ("kedro.runner.SequentialRunner")], +) +def test_hook_after_context_created( + mock_azureml_config, dummy_pipeline, multi_catalog, runner +): + context_mock = Mock() + context_mock.config_loader.get.return_value = { + "azure": mock_azureml_config.to_dict() + } + + azureml_local_run_hook.after_context_created(context_mock) + assert azureml_local_run_hook.azure_config.subscription_id == "123" + assert azureml_local_run_hook.azure_config.workspace_name == "best" + + run_params = {"runner": runner} + + azureml_local_run_hook.before_pipeline_run( + run_params, dummy_pipeline, multi_catalog + ) + + if runner == "kedro.runner.SequentialRunner": + assert multi_catalog.datasets.input_data._download == True + assert multi_catalog.datasets.input_data._local_run == True + assert ( + multi_catalog.datasets.input_data._azureml_config + == azureml_local_run_hook.azure_config + ) + assert multi_catalog.datasets.i2._download == False + assert multi_catalog.datasets.i2._local_run == True + assert multi_catalog.datasets.i2._version == Version("local", "local") + else: + assert multi_catalog.datasets.input_data._download == False + assert multi_catalog.datasets.input_data._local_run == False + assert multi_catalog.datasets.input_data._azureml_config is None + assert multi_catalog.datasets.i2._download == False + assert multi_catalog.datasets.i2._local_run == False + assert multi_catalog.datasets.i2._version == Version(None, None) From ac128115b16f5441fc79805cf320d864348578f7 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Tue, 11 Jul 2023 23:35:37 +0200 Subject: [PATCH 29/58] linting --- kedro_azureml/datasets/folder_dataset.py | 2 +- kedro_azureml/hooks.py | 4 +- tests/conftest.py | 5 +- tests/test_datasets.py | 60 +++++++++++++++++++----- tests/test_hook.py | 16 +++---- 5 files changed, 62 insertions(+), 25 deletions(-) diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index 4001beb..2ff1401 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -1,8 +1,8 @@ import logging from functools import partial from operator import attrgetter -from typing import Any, Dict, Literal, Optional, Type, Union, get_args from pathlib import Path +from typing import Any, Dict, Literal, Optional, Type, Union, get_args from azure.core.exceptions import ResourceNotFoundError from azureml.fsspec import AzureMachineLearningFileSystem diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 9772f31..aed0b63 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -1,12 +1,10 @@ -import logging -from pathlib import PurePosixPath - from kedro.framework.hooks import hook_impl from kedro.io.core import Version from kedro_azureml.config import AzureMLConfig from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet + class AzureMLLocalRunHook: """Hook class that allows local runs using AML datasets.""" diff --git a/tests/conftest.py b/tests/conftest.py index abb40d1..44ed6ea 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,7 +20,10 @@ KedroAzureRunnerConfig, ) from kedro_azureml.constants import KEDRO_AZURE_RUNNER_CONFIG -from kedro_azureml.datasets import AzureMLFolderDataSet, KedroAzureRunnerDataset +from kedro_azureml.datasets import ( + AzureMLFolderDataSet, + KedroAzureRunnerDataset, +) from kedro_azureml.runner import AzurePipelinesRunner from kedro_azureml.utils import CliContext from tests.utils import identity diff --git a/tests/test_datasets.py b/tests/test_datasets.py index 38d5a32..5a6989b 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -58,7 +58,10 @@ def test_azure_dataset_config(dataset_class: Type): False, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle" + ), "type": "uri_file", }, ), @@ -70,7 +73,10 @@ def test_azure_dataset_config(dataset_class: Type): True, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle" + ), "type": "uri_file", }, ), @@ -82,7 +88,10 @@ def test_azure_dataset_config(dataset_class: Type): True, True, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_file/test.pickle" + ), "type": "uri_file", }, ), @@ -94,7 +103,10 @@ def test_azure_dataset_config(dataset_class: Type): False, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/random/subfolder/test.pickle", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/random/subfolder/test.pickle" + ), "type": "uri_file", }, ), @@ -106,7 +118,10 @@ def test_azure_dataset_config(dataset_class: Type): True, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/random/subfolder/test.pickle", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/random/subfolder/test.pickle" + ), "type": "uri_file", }, ), @@ -118,7 +133,10 @@ def test_azure_dataset_config(dataset_class: Type): True, True, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_file/random/subfolder/test.pickle", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_file/random/subfolder/test.pickle" + ), "type": "uri_file", }, ), @@ -130,7 +148,10 @@ def test_azure_dataset_config(dataset_class: Type): False, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder/", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder/" + ), "type": "uri_file", }, ), @@ -142,7 +163,10 @@ def test_azure_dataset_config(dataset_class: Type): True, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder/", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder/" + ), "type": "uri_folder", }, ), @@ -154,7 +178,10 @@ def test_azure_dataset_config(dataset_class: Type): True, True, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder/", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder/" + ), "type": "uri_folder", }, ), @@ -166,7 +193,10 @@ def test_azure_dataset_config(dataset_class: Type): False, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder_nested/", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_nested/" + ), "type": "uri_folder", }, ), @@ -178,7 +208,10 @@ def test_azure_dataset_config(dataset_class: Type): True, False, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder_nested/", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_nested/" + ), "type": "uri_folder", }, ), @@ -190,7 +223,10 @@ def test_azure_dataset_config(dataset_class: Type): True, True, { - "path": "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces/dummy_ws/datastores/some_datastore/paths/test_folder_nested/", + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_nested/" + ), "type": "uri_folder", }, ), diff --git a/tests/test_hook.py b/tests/test_hook.py index 27fc072..5048563 100644 --- a/tests/test_hook.py +++ b/tests/test_hook.py @@ -29,19 +29,19 @@ def test_hook_after_context_created( ) if runner == "kedro.runner.SequentialRunner": - assert multi_catalog.datasets.input_data._download == True - assert multi_catalog.datasets.input_data._local_run == True + assert multi_catalog.datasets.input_data._download is True + assert multi_catalog.datasets.input_data._local_run is True assert ( multi_catalog.datasets.input_data._azureml_config == azureml_local_run_hook.azure_config ) - assert multi_catalog.datasets.i2._download == False - assert multi_catalog.datasets.i2._local_run == True + assert multi_catalog.datasets.i2._download is False + assert multi_catalog.datasets.i2._local_run is True assert multi_catalog.datasets.i2._version == Version("local", "local") else: - assert multi_catalog.datasets.input_data._download == False - assert multi_catalog.datasets.input_data._local_run == False + assert multi_catalog.datasets.input_data._download is False + assert multi_catalog.datasets.input_data._local_run is False assert multi_catalog.datasets.input_data._azureml_config is None - assert multi_catalog.datasets.i2._download == False - assert multi_catalog.datasets.i2._local_run == False + assert multi_catalog.datasets.i2._download is False + assert multi_catalog.datasets.i2._local_run is False assert multi_catalog.datasets.i2._version == Version(None, None) From d73d6c22fc596dcb306de43e8b4d923e79645dee Mon Sep 17 00:00:00 2001 From: fdroessler Date: Tue, 11 Jul 2023 23:44:45 +0200 Subject: [PATCH 30/58] update dependencies --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3883281..c9118fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,9 +42,10 @@ pydantic = "~=1.9.1" mlflow = {version = "^1.27.0", optional = true} backoff = "^2.2.1" azure-core = ">=1.26.1" -azureml-core = "^1.49.0" -azureml-dataset-runtime = "^1.49.0" +azureml-core = "^1.52.0" +azureml-dataset-runtime = "^1.52.0" kedro-datasets = ">=1.0.0" +azureml-fsspec = "^1.1.1" [tool.poetry.extras] mlflow = ["azureml-mlflow", "mlflow"] From 0208a49386beff2d022d00bfc1f1c0145e3a76fc Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Tue, 11 Jul 2023 22:06:17 +0000 Subject: [PATCH 31/58] update poetry lock --- poetry.lock | 3078 +++++++++++++++++++++++++++------------------------ 1 file changed, 1624 insertions(+), 1454 deletions(-) diff --git a/poetry.lock b/poetry.lock index b27386b..627faf9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "adal" version = "1.2.7" description = "Note: This library is already replaced by MSAL Python, available here: https://pypi.org/project/msal/ .ADAL Python remains available here as a legacy. The ADAL for Python library makes it easy for python application to authenticate to Azure Active Directory (AAD) in order to access AAD protected web resources." -category = "main" optional = false python-versions = "*" files = [ @@ -20,110 +19,127 @@ requests = ">=2.0.0,<3" [[package]] name = "adlfs" -version = "2022.2.0" +version = "2023.4.0" description = "Access Azure Datalake Gen1 with fsspec and dask" -category = "main" optional = false -python-versions = ">3.6" +python-versions = ">=3.8" files = [ - {file = "adlfs-2022.2.0.tar.gz", hash = "sha256:8543d29ce5b994d49831ad5f86b76b90809a540302b4f24e027591b740127942"}, + {file = "adlfs-2023.4.0-py3-none-any.whl", hash = "sha256:43f91a7478a7bb8e1521f4b9369ca6685cdae5392b2b382744f58a40c6d7c877"}, + {file = "adlfs-2023.4.0.tar.gz", hash = "sha256:84bf8875c57d6cc7e8b3f38034b117b4f43be1c7010aef9947bb5044c7b2fa37"}, ] [package.dependencies] -aiohttp = "*" -azure-core = ">=1.7.0" +aiohttp = ">=3.7.0" +azure-core = ">=1.23.1,<2.0.0" azure-datalake-store = ">=0.0.46,<0.1" azure-identity = "*" -azure-storage-blob = ">=12.5.0" +azure-storage-blob = ">=12.12.0" fsspec = ">=2021.10.1" +[package.extras] +docs = ["furo", "myst-parser", "numpydoc", "sphinx"] + [[package]] name = "aiohttp" -version = "3.8.1" +version = "3.8.4" description = "Async http client/server framework (asyncio)" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8"}, - {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8"}, - {file = "aiohttp-3.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2"}, - {file = "aiohttp-3.8.1-cp310-cp310-win32.whl", hash = "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa"}, - {file = "aiohttp-3.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32"}, - {file = "aiohttp-3.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4"}, - {file = "aiohttp-3.8.1-cp36-cp36m-win32.whl", hash = "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602"}, - {file = "aiohttp-3.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96"}, - {file = "aiohttp-3.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c"}, - {file = "aiohttp-3.8.1-cp37-cp37m-win32.whl", hash = "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9"}, - {file = "aiohttp-3.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17"}, - {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785"}, - {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b"}, - {file = "aiohttp-3.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33"}, - {file = "aiohttp-3.8.1-cp38-cp38-win32.whl", hash = "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a"}, - {file = "aiohttp-3.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75"}, - {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237"}, - {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74"}, - {file = "aiohttp-3.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2"}, - {file = "aiohttp-3.8.1-cp39-cp39-win32.whl", hash = "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1"}, - {file = "aiohttp-3.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac"}, - {file = "aiohttp-3.8.1.tar.gz", hash = "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578"}, + {file = "aiohttp-3.8.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1"}, + {file = "aiohttp-3.8.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a"}, + {file = "aiohttp-3.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea"}, + {file = "aiohttp-3.8.4-cp310-cp310-win32.whl", hash = "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1"}, + {file = "aiohttp-3.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f"}, + {file = "aiohttp-3.8.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4"}, + {file = "aiohttp-3.8.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4"}, + {file = "aiohttp-3.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24"}, + {file = "aiohttp-3.8.4-cp311-cp311-win32.whl", hash = "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d"}, + {file = "aiohttp-3.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc"}, + {file = "aiohttp-3.8.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff"}, + {file = "aiohttp-3.8.4-cp36-cp36m-win32.whl", hash = "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777"}, + {file = "aiohttp-3.8.4-cp36-cp36m-win_amd64.whl", hash = "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e"}, + {file = "aiohttp-3.8.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241"}, + {file = "aiohttp-3.8.4-cp37-cp37m-win32.whl", hash = "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a"}, + {file = "aiohttp-3.8.4-cp37-cp37m-win_amd64.whl", hash = "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480"}, + {file = "aiohttp-3.8.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f"}, + {file = "aiohttp-3.8.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15"}, + {file = "aiohttp-3.8.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d"}, + {file = "aiohttp-3.8.4-cp38-cp38-win32.whl", hash = "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54"}, + {file = "aiohttp-3.8.4-cp38-cp38-win_amd64.whl", hash = "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f"}, + {file = "aiohttp-3.8.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed"}, + {file = "aiohttp-3.8.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567"}, + {file = "aiohttp-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4"}, + {file = "aiohttp-3.8.4-cp39-cp39-win32.whl", hash = "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a"}, + {file = "aiohttp-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04"}, + {file = "aiohttp-3.8.4.tar.gz", hash = "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"}, ] [package.dependencies] aiosignal = ">=1.1.2" async-timeout = ">=4.0.0a3,<5.0" attrs = ">=17.3.0" -charset-normalizer = ">=2.0,<3.0" +charset-normalizer = ">=2.0,<4.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" yarl = ">=1.0,<2.0" @@ -133,14 +149,13 @@ speedups = ["Brotli", "aiodns", "cchardet"] [[package]] name = "aiosignal" -version = "1.2.0" +version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, - {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, ] [package.dependencies] @@ -148,14 +163,13 @@ frozenlist = ">=1.1.0" [[package]] name = "alembic" -version = "1.8.1" +version = "1.11.1" description = "A database migration tool for SQLAlchemy." -category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "alembic-1.8.1-py3-none-any.whl", hash = "sha256:0a024d7f2de88d738d7395ff866997314c837be6104e90c5724350313dee4da4"}, - {file = "alembic-1.8.1.tar.gz", hash = "sha256:cd0b5e45b14b706426b833f06369b9a6d5ee03f826ec3238723ce8caaf6e5ffa"}, + {file = "alembic-1.11.1-py3-none-any.whl", hash = "sha256:dc871798a601fab38332e38d6ddb38d5e734f60034baeb8e2db5b642fccd8ab8"}, + {file = "alembic-1.11.1.tar.gz", hash = "sha256:6a810a6b012c88b33458fceb869aef09ac75d6ace5291915ba7fae44de372c01"}, ] [package.dependencies] @@ -163,6 +177,7 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} importlib-resources = {version = "*", markers = "python_version < \"3.9\""} Mako = "*" SQLAlchemy = ">=1.3.0" +typing-extensions = ">=4" [package.extras] tz = ["python-dateutil"] @@ -171,7 +186,6 @@ tz = ["python-dateutil"] name = "antlr4-python3-runtime" version = "4.9.3" description = "ANTLR 4.9.3 runtime for Python 3.7" -category = "main" optional = false python-versions = "*" files = [ @@ -182,7 +196,6 @@ files = [ name = "anyconfig" version = "0.10.1" description = "Library provides common APIs to load and dump configuration files in various formats" -category = "main" optional = false python-versions = "*" files = [ @@ -205,7 +218,6 @@ yaml = ["pyyaml"] name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = "*" files = [ @@ -215,29 +227,28 @@ files = [ [[package]] name = "argcomplete" -version = "2.0.0" +version = "2.1.2" description = "Bash tab completion for argparse" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "argcomplete-2.0.0-py2.py3-none-any.whl", hash = "sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e"}, - {file = "argcomplete-2.0.0.tar.gz", hash = "sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20"}, + {file = "argcomplete-2.1.2-py3-none-any.whl", hash = "sha256:4ba9cdaa28c361d251edce884cd50b4b1215d65cdc881bd204426cdde9f52731"}, + {file = "argcomplete-2.1.2.tar.gz", hash = "sha256:fc82ef070c607b1559b5c720529d63b54d9dcf2dcfc2632b10e6372314a34457"}, ] [package.extras] -test = ["coverage", "flake8", "pexpect", "wheel"] +lint = ["flake8", "mypy"] +test = ["coverage", "flake8", "mypy", "pexpect", "wheel"] [[package]] name = "arrow" -version = "1.2.2" +version = "1.2.3" description = "Better dates & times for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "arrow-1.2.2-py3-none-any.whl", hash = "sha256:d622c46ca681b5b3e3574fcb60a04e5cc81b9625112d5fb2b44220c36c892177"}, - {file = "arrow-1.2.2.tar.gz", hash = "sha256:05caf1fd3d9a11a1135b2b6f09887421153b94558e5ef4d090b567b47173ac2b"}, + {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"}, + {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"}, ] [package.dependencies] @@ -247,7 +258,6 @@ python-dateutil = ">=2.7.0" name = "async-timeout" version = "4.0.2" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -259,7 +269,6 @@ files = [ name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -268,37 +277,36 @@ files = [ [[package]] name = "attrs" -version = "21.4.0" +version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, ] [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six"] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "azure-ai-ml" -version = "1.2.0" +version = "1.8.0" description = "Microsoft Azure Machine Learning Client Library for Python" -category = "main" optional = false python-versions = "<4.0,>=3.7" files = [ - {file = "azure-ai-ml-1.2.0.zip", hash = "sha256:90e6efce097c43b089d6a56056995a8fff2569d985a8d5b5c311fff653b8c9f4"}, - {file = "azure_ai_ml-1.2.0-py3-none-any.whl", hash = "sha256:b97465a6bb5df89913dfbfc63b885e792aaec37c31526558338010fce40690c0"}, + {file = "azure-ai-ml-1.8.0.zip", hash = "sha256:7b1ef603f00512e54040b22b7ac75ecb05a4511452c80368e857fb6a9b0762e4"}, + {file = "azure_ai_ml-1.8.0-py3-none-any.whl", hash = "sha256:fa5449317b43b187f4000fe59cda4b2a61fe838755474c9de2a6b3d1aaa0d4c3"}, ] [package.dependencies] azure-common = ">=1.1,<2.0.0" -azure-core = ">=1.8.0,<1.22.0 || >1.22.0,<2.0.0" +azure-core = ">=1.23.0,<2.0.0" azure-mgmt-core = ">=1.3.0,<2.0.0" azure-storage-blob = ">=12.10.0,<13.0.0" azure-storage-file-datalake = "<13.0.0" @@ -323,7 +331,6 @@ designer = ["mldesigner"] name = "azure-common" version = "1.1.28" description = "Microsoft Azure Client Library for Python (Common)" -category = "main" optional = false python-versions = "*" files = [ @@ -333,46 +340,43 @@ files = [ [[package]] name = "azure-core" -version = "1.26.1" +version = "1.28.0" description = "Microsoft Azure Core Library for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.26.1.zip", hash = "sha256:223b0e90cbdd1f03c41b195b03239899843f20d00964dbb85e64386873414a2d"}, - {file = "azure_core-1.26.1-py3-none-any.whl", hash = "sha256:726ffd1ded04a2c1cb53f9d9155cbb05ac5c1c2a29af4ef622e93e1c0a8bc92b"}, + {file = "azure-core-1.28.0.zip", hash = "sha256:e9eefc66fc1fde56dab6f04d4e5d12c60754d5a9fa49bdcfd8534fc96ed936bd"}, + {file = "azure_core-1.28.0-py3-none-any.whl", hash = "sha256:dec36dfc8eb0b052a853f30c07437effec2f9e3e1fc8f703d9bdaa5cfc0043d9"}, ] [package.dependencies] requests = ">=2.18.4" six = ">=1.11.0" -typing-extensions = ">=4.0.1" +typing-extensions = ">=4.3.0" [package.extras] aio = ["aiohttp (>=3.0)"] [[package]] name = "azure-datalake-store" -version = "0.0.52" +version = "0.0.53" description = "Azure Data Lake Store Filesystem Client Library for Python" -category = "main" optional = false python-versions = "*" files = [ - {file = "azure-datalake-store-0.0.52.tar.gz", hash = "sha256:4198ddb32614d16d4502b43d5c9739f81432b7e0e4d75d30e05149fe6007fea2"}, - {file = "azure_datalake_store-0.0.52-py2.py3-none-any.whl", hash = "sha256:aaed72b9c856824aeab554f4dbe0ef2c6d0ff36700bdd8b93d8298793117c48e"}, + {file = "azure-datalake-store-0.0.53.tar.gz", hash = "sha256:05b6de62ee3f2a0a6e6941e6933b792b800c3e7f6ffce2fc324bc19875757393"}, + {file = "azure_datalake_store-0.0.53-py2.py3-none-any.whl", hash = "sha256:a30c902a6e360aa47d7f69f086b426729784e71c536f330b691647a51dc42b2b"}, ] [package.dependencies] -adal = ">=0.4.2" cffi = "*" +msal = ">=1.16.0,<2" requests = ">=2.20.0" [[package]] name = "azure-graphrbac" version = "0.61.1" description = "Microsoft Azure Graph RBAC Client Library for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -387,183 +391,176 @@ msrestazure = ">=0.4.32,<2.0.0" [[package]] name = "azure-identity" -version = "1.10.0" +version = "1.13.0" description = "Microsoft Azure Identity Library for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "azure-identity-1.10.0.zip", hash = "sha256:656e5034d9cef297cf9b35376ed620085273c18cfa52cea4a625bf0d5d2d6409"}, - {file = "azure_identity-1.10.0-py3-none-any.whl", hash = "sha256:b386f1ccbea6a48b9ab7e7f162adc456793c345193a7c1a713959562b08dcbbd"}, + {file = "azure-identity-1.13.0.zip", hash = "sha256:c931c27301ffa86b07b4dcf574e29da73e3deba9ab5d1fe4f445bb6a3117e260"}, + {file = "azure_identity-1.13.0-py3-none-any.whl", hash = "sha256:bd700cebb80cd9862098587c29d8677e819beca33c62568ced6d5a8e5e332b82"}, ] [package.dependencies] azure-core = ">=1.11.0,<2.0.0" cryptography = ">=2.5" -msal = ">=1.12.0,<2.0.0" +msal = ">=1.20.0,<2.0.0" msal-extensions = ">=0.3.0,<2.0.0" six = ">=1.12.0" [[package]] name = "azure-mgmt-authorization" -version = "2.0.0" +version = "3.0.0" description = "Microsoft Azure Authorization Management Client Library for Python" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "azure-mgmt-authorization-2.0.0.zip", hash = "sha256:0776edc4980be940a8602eefc0372b4d1a1fa26caa46e3c0234e0c7a0feda4ec"}, - {file = "azure_mgmt_authorization-2.0.0-py2.py3-none-any.whl", hash = "sha256:02bcf52ccd1594ebf484741f5a7110dc28ee970664bb75493561d1a180874d38"}, + {file = "azure-mgmt-authorization-3.0.0.zip", hash = "sha256:0a5d7f683bf3372236b841cdbd4677f6b08ed7ce41b999c3e644d4286252057d"}, + {file = "azure_mgmt_authorization-3.0.0-py3-none-any.whl", hash = "sha256:b3f9e584b87d5cc39d41283211237945e620c0b868394880aeded80a126b2c40"}, ] [package.dependencies] azure-common = ">=1.1,<2.0" -azure-mgmt-core = ">=1.2.0,<2.0.0" -msrest = ">=0.6.21" +azure-mgmt-core = ">=1.3.2,<2.0.0" +msrest = ">=0.7.1" [[package]] name = "azure-mgmt-containerregistry" -version = "10.0.0" +version = "10.1.0" description = "Microsoft Azure Container Registry Client Library for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "azure-mgmt-containerregistry-10.0.0.zip", hash = "sha256:1e37a32b6f049b901ea10db4a387ee7275d3940c000c5fd212955f1e7f5a9d99"}, - {file = "azure_mgmt_containerregistry-10.0.0-py3-none-any.whl", hash = "sha256:182463e7ae212a90f360ea6159b0739f14733b4d325f1e77bb1808bb2936dcd8"}, + {file = "azure-mgmt-containerregistry-10.1.0.zip", hash = "sha256:56b5fd61f60dbe503cf9e36a1c2a77e4101e419cd029a919b3b6592b04fca187"}, + {file = "azure_mgmt_containerregistry-10.1.0-py3-none-any.whl", hash = "sha256:35c838a43c5009b935589efa63c7057cf0b1c6578b98196f819214727e344977"}, ] [package.dependencies] azure-common = ">=1.1,<2.0" -azure-mgmt-core = ">=1.3.0,<2.0.0" -msrest = ">=0.6.21" +azure-mgmt-core = ">=1.3.2,<2.0.0" +msrest = ">=0.7.1" [[package]] name = "azure-mgmt-core" -version = "1.3.0" +version = "1.4.0" description = "Microsoft Azure Management Core Library for Python" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "azure-mgmt-core-1.3.0.zip", hash = "sha256:3ffb7352b39e5495dccc2d2b47254f4d82747aff4735e8bf3267c335b0c9bb40"}, - {file = "azure_mgmt_core-1.3.0-py2.py3-none-any.whl", hash = "sha256:7b7fa952aeb9d3eaa13eff905880f3d3b62200f7be7a8ba5a50c8b2e7295322a"}, + {file = "azure-mgmt-core-1.4.0.zip", hash = "sha256:d195208340094f98e5a6661b781cde6f6a051e79ce317caabd8ff97030a9b3ae"}, + {file = "azure_mgmt_core-1.4.0-py3-none-any.whl", hash = "sha256:81071675f186a585555ef01816f2774d49c1c9024cb76e5720c3c0f6b337bb7d"}, ] [package.dependencies] -azure-core = ">=1.15.0,<2.0.0" +azure-core = ">=1.26.2,<2.0.0" [[package]] name = "azure-mgmt-keyvault" -version = "10.0.0" +version = "10.2.2" description = "Microsoft Azure Key Vault Management Client Library for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "azure-mgmt-keyvault-10.0.0.zip", hash = "sha256:00b695965db5f7c6ba0e33a9cda1e86c4db637bf107b99286182f10ad162c1a3"}, - {file = "azure_mgmt_keyvault-10.0.0-py3-none-any.whl", hash = "sha256:af9f6894f3be794729d224872a90ef5258d54e16cb4f0b1317671ac2ce702326"}, + {file = "azure-mgmt-keyvault-10.2.2.zip", hash = "sha256:2c6ea831365ea604fceca749af00a973865811c954b04007522b59af114290be"}, + {file = "azure_mgmt_keyvault-10.2.2-py3-none-any.whl", hash = "sha256:e59f35d43df274237ccf0a4d128adddcb3f3836c3399b1b6b24c7b592ed5a2ad"}, ] [package.dependencies] azure-common = ">=1.1,<2.0" -azure-mgmt-core = ">=1.3.0,<2.0.0" -msrest = ">=0.6.21" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" [[package]] name = "azure-mgmt-resource" -version = "21.1.0" +version = "22.0.0" description = "Microsoft Azure Resource Management Client Library for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "azure-mgmt-resource-21.1.0.zip", hash = "sha256:52965ade31cd059fea2b1513d65fe616046e433de0e583dcf5c9c9bebf3ebd69"}, - {file = "azure_mgmt_resource-21.1.0-py3-none-any.whl", hash = "sha256:5c8203f72bfb483adb345f73df1be65351072f25714fc6bb77eb0d5b970aba3b"}, + {file = "azure-mgmt-resource-22.0.0.zip", hash = "sha256:feb5d979e18b52f2cfd023b4a0a33e54a6f76cc6a252dc8cd75ece2c63298e94"}, + {file = "azure_mgmt_resource-22.0.0-py3-none-any.whl", hash = "sha256:5c9712aacb230c7dde59cd7b43a734ed88a326140042ae02746d095fe779ae20"}, ] [package.dependencies] azure-common = ">=1.1,<2.0" -azure-mgmt-core = ">=1.3.0,<2.0.0" -msrest = ">=0.6.21" +azure-mgmt-core = ">=1.3.2,<2.0.0" +msrest = ">=0.7.1" [[package]] name = "azure-mgmt-storage" -version = "20.0.0" +version = "21.0.0" description = "Microsoft Azure Storage Management Client Library for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "azure-mgmt-storage-20.0.0.zip", hash = "sha256:6ee476b5622ff6f5954edee6eb0d8dd427b3217022855adf1ec8633ca04cdee2"}, - {file = "azure_mgmt_storage-20.0.0-py3-none-any.whl", hash = "sha256:bc7a79d16b2979a2d6e6adb0b90b323ddbd91457848095c89f73119df6c34565"}, + {file = "azure-mgmt-storage-21.0.0.zip", hash = "sha256:6eb13eeecf89195b2b5f47be0679e3f27888efd7bd2132eec7ebcbce75cb1377"}, + {file = "azure_mgmt_storage-21.0.0-py3-none-any.whl", hash = "sha256:89d644c6192118b0b097deaa9c4925832d8f7ea4693d38d5fce3f0125b43a1c5"}, ] [package.dependencies] azure-common = ">=1.1,<2.0" -azure-mgmt-core = ">=1.3.0,<2.0.0" -msrest = ">=0.6.21" +azure-mgmt-core = ">=1.3.2,<2.0.0" +msrest = ">=0.7.1" [[package]] name = "azure-storage-blob" -version = "12.11.0" +version = "12.13.0" description = "Microsoft Azure Blob Storage Client Library for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "azure-storage-blob-12.11.0.zip", hash = "sha256:49535b3190bb69d0d9ff7a383246b14da4d2b1bdff60cae5f9173920c67ca7ee"}, - {file = "azure_storage_blob-12.11.0-py3-none-any.whl", hash = "sha256:f3dfa605aefb453e7489328b76811a937a411761d7a1613a58c3975c556ec778"}, + {file = "azure-storage-blob-12.13.0.zip", hash = "sha256:53f0d4cd32970ac9ff9b9753f83dd2fb3f9ac30e1d01e71638c436c509bfd884"}, + {file = "azure_storage_blob-12.13.0-py3-none-any.whl", hash = "sha256:280a6ab032845bab9627582bee78a50497ca2f14772929b5c5ee8b4605af0cb3"}, ] [package.dependencies] -azure-core = ">=1.15.0,<2.0.0" +azure-core = ">=1.23.1,<2.0.0" cryptography = ">=2.1.4" msrest = ">=0.6.21" [[package]] name = "azure-storage-file-datalake" -version = "12.6.0" +version = "12.8.0" description = "Microsoft Azure File DataLake Storage Client Library for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "azure-storage-file-datalake-12.6.0.zip", hash = "sha256:7166e14d69c4e4a42d18cf7f2f2cc5a2b82e947abcc971e80838170e24773b02"}, - {file = "azure_storage_file_datalake-12.6.0-py3-none-any.whl", hash = "sha256:4312fa9be121abe592e603677dfa0e54b09745b25937eb2914ad8bdd234a8593"}, + {file = "azure-storage-file-datalake-12.8.0.zip", hash = "sha256:12e6306e5efb5ca28e0ccd9fa79a2c61acd589866d6109fe5601b18509da92f4"}, + {file = "azure_storage_file_datalake-12.8.0-py3-none-any.whl", hash = "sha256:b6cf5733fe794bf3c866efbe3ce1941409e35b6b125028ac558b436bf90f2de7"}, ] [package.dependencies] -azure-core = ">=1.15.0,<2.0.0" -azure-storage-blob = ">=12.10.0,<13.0.0" +azure-core = ">=1.23.1,<2.0.0" +azure-storage-blob = ">=12.13.0,<13.0.0" msrest = ">=0.6.21" [[package]] name = "azure-storage-file-share" -version = "12.7.0" +version = "12.12.0" description = "Microsoft Azure Azure File Share Storage Client Library for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "azure-storage-file-share-12.7.0.zip", hash = "sha256:91836e82258d957120af228bc2bcf2b5c6bf5bedb8f3546aa9409b7495aba832"}, - {file = "azure_storage_file_share-12.7.0-py3-none-any.whl", hash = "sha256:7dc8111a1a12e26356443639732f1424787883ab42913656cebed46a729cc654"}, + {file = "azure-storage-file-share-12.12.0.zip", hash = "sha256:cf7e47f749fc06ecb99b64612ab4bd94227b9931497a4c27c2865717c3daa089"}, + {file = "azure_storage_file_share-12.12.0-py3-none-any.whl", hash = "sha256:3abb168b94daac3ffe74ef6552fd86822a97e340ba9c6db0f8a5ae5053a08852"}, ] [package.dependencies] -azure-core = ">=1.15.0,<2.0.0" +azure-core = ">=1.26.0,<2.0.0" cryptography = ">=2.1.4" -msrest = ">=0.6.21" +isodate = ">=0.6.1" +typing-extensions = ">=4.0.1" + +[package.extras] +aio = ["azure-core[aio] (>=1.26.0,<2.0.0)"] [[package]] name = "azureml-core" -version = "1.49.0" +version = "1.52.0" description = "Azure Machine Learning core packages, modules, and classes" -category = "main" optional = false python-versions = ">=3.7,< 4.0" files = [ - {file = "azureml_core-1.49.0-py3-none-any.whl", hash = "sha256:dbe1bce011ea7f0028bdceef76846b50e19f61c3a8d0e10f1b2d1e2b4c51b730"}, + {file = "azureml_core-1.52.0-py3-none-any.whl", hash = "sha256:2b9a6bfd9ceca1239ce21273b9e85d9bbd6091602319e02cc83c48b9a4d439d3"}, ] [package.dependencies] @@ -575,23 +572,23 @@ azure-graphrbac = ">=0.40.0,<1.0.0" azure-mgmt-authorization = ">=0.40.0,<4" azure-mgmt-containerregistry = ">=8.2.0,<11" azure-mgmt-keyvault = ">=0.40.0,<11.0.0" -azure-mgmt-resource = ">=15.0.0,<22.0.0" -azure-mgmt-storage = ">=16.0.0,<21.0.0" +azure-mgmt-resource = ">=15.0.0,<=22.0.0" +azure-mgmt-storage = ">=16.0.0,<=21.0.0" "backports.tempfile" = "*" contextlib2 = "<22.0.0" -cryptography = "<1.9 || >1.9,<2.0.0 || >=2.3.0,<41" +cryptography = "<1.9 || >1.9,<2.0.dev0 || >=2.3.dev0" docker = "<7.0.0" humanfriendly = ">=4.7,<11.0" jmespath = "<2.0.0" -jsonpickle = "<3.0.0" +jsonpickle = "<4.0.0" knack = ">=0.10.0,<0.11.0" msal = ">=1.15.0,<2.0.0" msal-extensions = ">=0.3.0,<=1.0.0" msrest = ">=0.5.1,<=0.7.1" msrestazure = ">=0.4.33,<=0.6.4" ndg-httpsclient = "<=0.5.1" -packaging = ">=20.0,<22.0" -paramiko = ">=2.0.8,<3.0.0" +packaging = ">=20.0,<=23.0" +paramiko = ">=2.0.8,<4.0.0" pathspec = "<1.0.0" pkginfo = "*" PyJWT = "<3.0.0" @@ -604,19 +601,18 @@ urllib3 = ">=1.23,<2.0.0" [[package]] name = "azureml-dataprep" -version = "4.9.3" +version = "4.11.4" description = "Azure ML Data Preparation SDK is used to load, transform, and write data for machine learning workflows" -category = "main" optional = false python-versions = "*" files = [ - {file = "azureml_dataprep-4.9.3-py3-none-any.whl", hash = "sha256:eff11a92b9779dd8246b70981d1e9ccbc87a0b66e83ef5cd56076ef887d88f0f"}, + {file = "azureml_dataprep-4.11.4-py3-none-any.whl", hash = "sha256:20a7d52ed975b41bd96b1997dda4ec9b41dcfff9d5bf8968ce0e43b999737dd7"}, ] [package.dependencies] azure-identity = ">=1.7.0" azureml-dataprep-native = ">=38.0.0,<39.0.0" -azureml-dataprep-rslex = ">=2.16.0dev0,<2.17.0" +azureml-dataprep-rslex = ">=2.18.4dev0,<2.19.0" cloudpickle = ">=1.1.0,<3.0.0" dotnetcore2 = ">=3.0.0,<4.0.0" jsonschema = "*" @@ -633,7 +629,6 @@ scipy = ["scipy (>=1.1.0,<2.0.0)"] name = "azureml-dataprep-native" version = "38.0.0" description = "Python Package for AzureML DataPrep specific native extensions." -category = "main" optional = false python-versions = "*" files = [ @@ -659,44 +654,45 @@ files = [ [[package]] name = "azureml-dataprep-rslex" -version = "2.16.3" +version = "2.18.4" description = "Azure ML Data Preparation RustLex" -category = "main" optional = false python-versions = "*" files = [ - {file = "azureml_dataprep_rslex-2.16.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d38e2de376a31fbf63949607e25864c201b465ceaf609fc634f3f6c0023be123"}, - {file = "azureml_dataprep_rslex-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf6d253b35781b2bdb3e739569673692791df8e484283ed36b0b0d21f3d12d8"}, - {file = "azureml_dataprep_rslex-2.16.3-cp310-cp310-win_amd64.whl", hash = "sha256:26c4ecff1be68f0cf4895e41648b8b80510c8f54a60c6d4a25ed7ef330ed0292"}, - {file = "azureml_dataprep_rslex-2.16.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:84116b533dcb5df5334412b49322e89fe824a659a53e316c953f80207d1c30ef"}, - {file = "azureml_dataprep_rslex-2.16.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4584cca57a40fda37b2887398984b801c8518b4ab10b5a8e575e3c0cc7b6c3c"}, - {file = "azureml_dataprep_rslex-2.16.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fb7943c78a9d6121eae5051d4c825e0e8d08801fe781f5d1720e8ee4b0a79b3d"}, - {file = "azureml_dataprep_rslex-2.16.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4ebcd0d34fea10350c6a25743fd5554b4c8845ab269ebfd7a1a81ef8c128649"}, - {file = "azureml_dataprep_rslex-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49f570936fad2de4e1d62aa081320a1e1f1e2be0df6e7ea83ff1d77268184329"}, - {file = "azureml_dataprep_rslex-2.16.3-cp38-cp38-win_amd64.whl", hash = "sha256:e22bd5db982cfb358e100cd18c373ad08459bdd5f62158d74d5e7577ea428de8"}, - {file = "azureml_dataprep_rslex-2.16.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d14053636490963efc74f2cd9f705f17ef67d8845a1eb98c79e6c4fa861e2c2e"}, - {file = "azureml_dataprep_rslex-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1aa554789fde5038e019a5a7a84b046cccdee818fff61ced74437ee2e6ea6c2"}, - {file = "azureml_dataprep_rslex-2.16.3-cp39-cp39-win_amd64.whl", hash = "sha256:352f502bd4a149196acf33cdd733ed9b8412473555d8f21f817d03c7980ec50b"}, + {file = "azureml_dataprep_rslex-2.18.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c00e91262c85f0f072a651d7fdaa9dc3b59b6ae206d40a03cea017ff43210a9"}, + {file = "azureml_dataprep_rslex-2.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de414b21fcb265d0aec9df49d9a6312f8230f4a0cb9cb337255d783bfd98cd8f"}, + {file = "azureml_dataprep_rslex-2.18.4-cp310-cp310-win_amd64.whl", hash = "sha256:da0732f4686084d18e3ed061fa5e63c7447691249de0bde9075916a95dd0fc8c"}, + {file = "azureml_dataprep_rslex-2.18.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5f5a8ab7bb1097334c57b121b50aa317d537891576bc5cd7d456e09c7c2b59f9"}, + {file = "azureml_dataprep_rslex-2.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88713ab68ffe5eeccd39c26edbeb3b253137b2c0c7f89278e5c601a3ee411c7e"}, + {file = "azureml_dataprep_rslex-2.18.4-cp311-cp311-win_amd64.whl", hash = "sha256:dd20b5e822ff88321f8f40ce226040006ff547f99356d5116e1b5ed1573ae220"}, + {file = "azureml_dataprep_rslex-2.18.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bd226e3b351ca1c3b7e62a6339e33cb5513e2a00abb5e8469fc8fc8c4e393a32"}, + {file = "azureml_dataprep_rslex-2.18.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d1232b9ec5c0267768e0ea69ab17feab95decd6391bc6b62343eddb0bce2d5a"}, + {file = "azureml_dataprep_rslex-2.18.4-cp37-cp37m-win_amd64.whl", hash = "sha256:5e6d9fe47cab3d6d0d320dbbe0503beaf31b17cd5feb63a729bcf5b101f18f84"}, + {file = "azureml_dataprep_rslex-2.18.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:449a7602155d44af9627556f0e7bf862b26ddb3cb605038beaeb9801b213a347"}, + {file = "azureml_dataprep_rslex-2.18.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9494f6f5ea1eabb188bdf7538c8fc3700e8edb69ea591aafe696e4dd15adeda"}, + {file = "azureml_dataprep_rslex-2.18.4-cp38-cp38-win_amd64.whl", hash = "sha256:61d4a71e4453c4a198d51de573a07a0a42fdf3664d6fd953d3e801fe60d8617b"}, + {file = "azureml_dataprep_rslex-2.18.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bf44c1eedd99f2a85d62b4412a410009b857b2c5bf56ffd186344521605ab935"}, + {file = "azureml_dataprep_rslex-2.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f4e8227b215eab4bbd65f28b98c30d31915e39d78e94ee053bcacf9741aefbc"}, + {file = "azureml_dataprep_rslex-2.18.4-cp39-cp39-win_amd64.whl", hash = "sha256:78215a8fdb0c41bca1e642cf324fc5abf058606e5122bc350a94d198ffcf114d"}, ] [[package]] name = "azureml-dataset-runtime" -version = "1.49.0" +version = "1.52.0" description = "The package is to coordinate dependencies within AzureML packages. This package is internal, and is not intended to be used directly." -category = "main" optional = false python-versions = "*" files = [ - {file = "azureml_dataset_runtime-1.49.0-py3-none-any.whl", hash = "sha256:904ca0e6f0286516e2d8d684d731f6da1cdff922a4b683cfde92690420eff249"}, + {file = "azureml_dataset_runtime-1.52.0-py3-none-any.whl", hash = "sha256:c818396ecb08c0344fac3c5b652d15ab204ad7b260b6fa92a5275ce0f26883a1"}, ] [package.dependencies] -azureml-dataprep = ">=4.9.0a,<4.10.0a" +azureml-dataprep = ">=4.11.3a,<4.12.0a" numpy = [ {version = "<1.19.3 || >1.19.3,<1.24", markers = "sys_platform == \"linux\""}, {version = "<1.19.4 || >1.19.4,<1.24", markers = "sys_platform == \"win32\""}, ] -pyarrow = ">=0.17.0,<=9.0.0" +pyarrow = ">=0.17.0,<=11.0.0" [package.extras] fuse = ["fusepy (>=3.0.1,<4.0.0)"] @@ -704,15 +700,28 @@ pandas = ["numpy (>=1.14.0,<2.0.0)", "pandas (>=0.23.4,<2.0.0)"] pyspark = ["pyspark (==2.3.0)"] scipy = ["scipy (>=1.1.0,<2.0.0)"] +[[package]] +name = "azureml-fsspec" +version = "1.1.1" +description = "Access datastore uri with fsspec" +optional = false +python-versions = ">=3.6,< 4.0" +files = [ + {file = "azureml_fsspec-1.1.1-py3-none-any.whl", hash = "sha256:b909558b136bcfbb9eaeae8be2cea70d5806b4b5051c4063c698bc07b950aff4"}, +] + +[package.dependencies] +azureml-dataprep = ">=4.11.1,<4.12.0a" +fsspec = ">=2021.6.1" + [[package]] name = "azureml-mlflow" -version = "1.48.0" +version = "1.52.0" description = "Contains the integration code of AzureML with Mlflow." -category = "main" optional = true -python-versions = "*" +python-versions = ">=3.7,<4.0" files = [ - {file = "azureml_mlflow-1.48.0-py3-none-any.whl", hash = "sha256:b2f5ea55faf6457842e5fab941b3563d2a04320479e5b7a7a8e85d5287be7cc8"}, + {file = "azureml_mlflow-1.52.0-py3-none-any.whl", hash = "sha256:ca8b2f197108e2d8ad9661c25dc8220cfb092681824fbd9587d57152d7c238ee"}, ] [package.dependencies] @@ -734,7 +743,6 @@ deployments = ["flask", "numpy", "pandas"] name = "backoff" version = "2.2.1" description = "Function decoration for backoff and retry" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -746,7 +754,6 @@ files = [ name = "backports-tempfile" version = "1.0" description = "Backport of new features in Python's tempfile module" -category = "main" optional = false python-versions = "*" files = [ @@ -761,7 +768,6 @@ files = [ name = "backports-weakref" version = "1.0.post1" description = "Backport of new features in Python's weakref module" -category = "main" optional = false python-versions = "*" files = [ @@ -773,7 +779,6 @@ files = [ name = "bcrypt" version = "4.0.1" description = "Modern password hashing for your software and your servers" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -808,7 +813,6 @@ typecheck = ["mypy"] name = "binaryornot" version = "0.4.4" description = "Ultra-lightweight pure Python package to check if a file is binary or text." -category = "main" optional = false python-versions = "*" files = [ @@ -819,59 +823,66 @@ files = [ [package.dependencies] chardet = ">=3.0.2" +[[package]] +name = "blinker" +version = "1.6.2" +description = "Fast, simple object-to-object and broadcast signaling" +optional = true +python-versions = ">=3.7" +files = [ + {file = "blinker-1.6.2-py3-none-any.whl", hash = "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0"}, + {file = "blinker-1.6.2.tar.gz", hash = "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213"}, +] + [[package]] name = "build" -version = "0.8.0" -description = "A simple, correct PEP 517 build frontend" -category = "main" +version = "0.10.0" +description = "A simple, correct Python build frontend" optional = false -python-versions = ">=3.6" +python-versions = ">= 3.7" files = [ - {file = "build-0.8.0-py3-none-any.whl", hash = "sha256:19b0ed489f92ace6947698c3ca8436cb0556a66e2aa2d34cd70e2a5d27cd0437"}, - {file = "build-0.8.0.tar.gz", hash = "sha256:887a6d471c901b1a6e6574ebaeeebb45e5269a79d095fe9a8f88d6614ed2e5f0"}, + {file = "build-0.10.0-py3-none-any.whl", hash = "sha256:af266720050a66c893a6096a2f410989eeac74ff9a68ba194b3f6473e8e26171"}, + {file = "build-0.10.0.tar.gz", hash = "sha256:d5b71264afdb5951d6704482aac78de887c80691c52b88a9ad195983ca2c9269"}, ] [package.dependencies] colorama = {version = "*", markers = "os_name == \"nt\""} packaging = ">=19.0" -pep517 = ">=0.9.1" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} +pyproject_hooks = "*" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} [package.extras] docs = ["furo (>=2021.08.31)", "sphinx (>=4.0,<5.0)", "sphinx-argparse-cli (>=1.5)", "sphinx-autodoc-typehints (>=1.10)"] test = ["filelock (>=3)", "pytest (>=6.2.4)", "pytest-cov (>=2.12)", "pytest-mock (>=2)", "pytest-rerunfailures (>=9.1)", "pytest-xdist (>=1.34)", "setuptools (>=42.0.0)", "setuptools (>=56.0.0)", "toml (>=0.10.0)", "wheel (>=0.36.0)"] -typing = ["importlib-metadata (>=4.6.4)", "mypy (==0.950)", "typing-extensions (>=3.7.4.3)"] +typing = ["importlib-metadata (>=5.1)", "mypy (==0.991)", "tomli", "typing-extensions (>=3.7.4.3)"] virtualenv = ["virtualenv (>=20.0.35)"] [[package]] name = "cachetools" -version = "5.3.0" +version = "5.3.1" description = "Extensible memoizing collections and decorators" -category = "main" optional = false -python-versions = "~=3.7" +python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.0-py3-none-any.whl", hash = "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4"}, - {file = "cachetools-5.3.0.tar.gz", hash = "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14"}, + {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, + {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, ] [[package]] name = "certifi" -version = "2022.6.15" +version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, - {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, ] [[package]] name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -948,7 +959,6 @@ pycparser = "*" name = "cfgv" version = "3.3.1" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -958,41 +968,108 @@ files = [ [[package]] name = "chardet" -version = "5.0.0" +version = "5.1.0" description = "Universal encoding detector for Python 3" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "chardet-5.0.0-py3-none-any.whl", hash = "sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557"}, - {file = "chardet-5.0.0.tar.gz", hash = "sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa"}, + {file = "chardet-5.1.0-py3-none-any.whl", hash = "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9"}, + {file = "chardet-5.1.0.tar.gz", hash = "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5"}, ] [[package]] name = "charset-normalizer" -version = "2.1.0" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"}, - {file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] -[package.extras] -unicode-backport = ["unicodedata2"] - [[package]] name = "click" -version = "8.1.3" +version = "8.1.4" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.4-py3-none-any.whl", hash = "sha256:2739815aaa5d2c986a88f1e9230c55e17f0caad3d958a5e13ad0797c166db9e3"}, + {file = "click-8.1.4.tar.gz", hash = "sha256:b97d0c74955da062a7d4ef92fadb583806a585b2ea81958a81bd72726cbb8e37"}, ] [package.dependencies] @@ -1000,33 +1077,30 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "2.1.0" +version = "2.2.1" description = "Extended pickling support for Python objects" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, - {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, + {file = "cloudpickle-2.2.1-py3-none-any.whl", hash = "sha256:61f594d1f4c295fa5cd9014ceb3a1fc4a70b0de1164b94fbc2d854ccba056f9f"}, + {file = "cloudpickle-2.2.1.tar.gz", hash = "sha256:d89684b8de9e34a2a43b3460fbca07d09d6e25ce858df4d5a44240403b6178f5"}, ] [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] name = "contextlib2" version = "21.6.0" description = "Backports and enhancements for the contextlib module" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1036,83 +1110,91 @@ files = [ [[package]] name = "cookiecutter" -version = "2.1.1" +version = "2.2.3" description = "A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cookiecutter-2.1.1-py2.py3-none-any.whl", hash = "sha256:9f3ab027cec4f70916e28f03470bdb41e637a3ad354b4d65c765d93aad160022"}, - {file = "cookiecutter-2.1.1.tar.gz", hash = "sha256:f3982be8d9c53dac1261864013fdec7f83afd2e42ede6f6dd069c5e149c540d5"}, + {file = "cookiecutter-2.2.3-py3-none-any.whl", hash = "sha256:17ad6751aef0a39d004c5ecacbd18176de6e83505343073fd7e48b60bdac5254"}, + {file = "cookiecutter-2.2.3.tar.gz", hash = "sha256:d56f18c0c01c09804450b501ac43e8f6104cfa7cdd93610359c68b1ba9fd84d2"}, ] [package.dependencies] +arrow = "*" binaryornot = ">=0.4.4" click = ">=7.0,<9.0.0" Jinja2 = ">=2.7,<4.0.0" -jinja2-time = ">=0.2.0" python-slugify = ">=4.0.0" pyyaml = ">=5.3.1" requests = ">=2.23.0" [[package]] name = "coverage" -version = "6.4.4" +version = "7.2.7" description = "Code coverage measurement for Python" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "coverage-6.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7b4da9bafad21ea45a714d3ea6f3e1679099e420c8741c74905b92ee9bfa7cc"}, - {file = "coverage-6.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fde17bc42e0716c94bf19d92e4c9f5a00c5feb401f5bc01101fdf2a8b7cacf60"}, - {file = "coverage-6.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdbb0d89923c80dbd435b9cf8bba0ff55585a3cdb28cbec65f376c041472c60d"}, - {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67f9346aeebea54e845d29b487eb38ec95f2ecf3558a3cffb26ee3f0dcc3e760"}, - {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42c499c14efd858b98c4e03595bf914089b98400d30789511577aa44607a1b74"}, - {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c35cca192ba700979d20ac43024a82b9b32a60da2f983bec6c0f5b84aead635c"}, - {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9cc4f107009bca5a81caef2fca843dbec4215c05e917a59dec0c8db5cff1d2aa"}, - {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f444627b3664b80d078c05fe6a850dd711beeb90d26731f11d492dcbadb6973"}, - {file = "coverage-6.4.4-cp310-cp310-win32.whl", hash = "sha256:66e6df3ac4659a435677d8cd40e8eb1ac7219345d27c41145991ee9bf4b806a0"}, - {file = "coverage-6.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:35ef1f8d8a7a275aa7410d2f2c60fa6443f4a64fae9be671ec0696a68525b875"}, - {file = "coverage-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c1328d0c2f194ffda30a45f11058c02410e679456276bfa0bbe0b0ee87225fac"}, - {file = "coverage-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b993f3998ee384935ee423c3d40894e93277f12482f6e777642a0141f55782"}, - {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5dd4b8e9cd0deb60e6fcc7b0647cbc1da6c33b9e786f9c79721fd303994832f"}, - {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7026f5afe0d1a933685d8f2169d7c2d2e624f6255fb584ca99ccca8c0e966fd7"}, - {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9c7b9b498eb0c0d48b4c2abc0e10c2d78912203f972e0e63e3c9dc21f15abdaa"}, - {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ee2b2fb6eb4ace35805f434e0f6409444e1466a47f620d1d5763a22600f0f892"}, - {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ab066f5ab67059d1f1000b5e1aa8bbd75b6ed1fc0014559aea41a9eb66fc2ce0"}, - {file = "coverage-6.4.4-cp311-cp311-win32.whl", hash = "sha256:9d6e1f3185cbfd3d91ac77ea065d85d5215d3dfa45b191d14ddfcd952fa53796"}, - {file = "coverage-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e3d3c4cc38b2882f9a15bafd30aec079582b819bec1b8afdbde8f7797008108a"}, - {file = "coverage-6.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a095aa0a996ea08b10580908e88fbaf81ecf798e923bbe64fb98d1807db3d68a"}, - {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef6f44409ab02e202b31a05dd6666797f9de2aa2b4b3534e9d450e42dea5e817"}, - {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b7101938584d67e6f45f0015b60e24a95bf8dea19836b1709a80342e01b472f"}, - {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a32ec68d721c3d714d9b105c7acf8e0f8a4f4734c811eda75ff3718570b5e3"}, - {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6a864733b22d3081749450466ac80698fe39c91cb6849b2ef8752fd7482011f3"}, - {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08002f9251f51afdcc5e3adf5d5d66bb490ae893d9e21359b085f0e03390a820"}, - {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a3b2752de32c455f2521a51bd3ffb53c5b3ae92736afde67ce83477f5c1dd928"}, - {file = "coverage-6.4.4-cp37-cp37m-win32.whl", hash = "sha256:f855b39e4f75abd0dfbcf74a82e84ae3fc260d523fcb3532786bcbbcb158322c"}, - {file = "coverage-6.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ee6ae6bbcac0786807295e9687169fba80cb0617852b2fa118a99667e8e6815d"}, - {file = "coverage-6.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:564cd0f5b5470094df06fab676c6d77547abfdcb09b6c29c8a97c41ad03b103c"}, - {file = "coverage-6.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbbb0e4cd8ddcd5ef47641cfac97d8473ab6b132dd9a46bacb18872828031685"}, - {file = "coverage-6.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6113e4df2fa73b80f77663445be6d567913fb3b82a86ceb64e44ae0e4b695de1"}, - {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d032bfc562a52318ae05047a6eb801ff31ccee172dc0d2504614e911d8fa83e"}, - {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e431e305a1f3126477abe9a184624a85308da8edf8486a863601d58419d26ffa"}, - {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cf2afe83a53f77aec067033199797832617890e15bed42f4a1a93ea24794ae3e"}, - {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:783bc7c4ee524039ca13b6d9b4186a67f8e63d91342c713e88c1865a38d0892a"}, - {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ff934ced84054b9018665ca3967fc48e1ac99e811f6cc99ea65978e1d384454b"}, - {file = "coverage-6.4.4-cp38-cp38-win32.whl", hash = "sha256:e1fabd473566fce2cf18ea41171d92814e4ef1495e04471786cbc943b89a3781"}, - {file = "coverage-6.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:4179502f210ebed3ccfe2f78bf8e2d59e50b297b598b100d6c6e3341053066a2"}, - {file = "coverage-6.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98c0b9e9b572893cdb0a00e66cf961a238f8d870d4e1dc8e679eb8bdc2eb1b86"}, - {file = "coverage-6.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc600f6ec19b273da1d85817eda339fb46ce9eef3e89f220055d8696e0a06908"}, - {file = "coverage-6.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a98d6bf6d4ca5c07a600c7b4e0c5350cd483c85c736c522b786be90ea5bac4f"}, - {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01778769097dbd705a24e221f42be885c544bb91251747a8a3efdec6eb4788f2"}, - {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa0b97eb904255e2ab24166071b27408f1f69c8fbda58e9c0972804851e0558"}, - {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fcbe3d9a53e013f8ab88734d7e517eb2cd06b7e689bedf22c0eb68db5e4a0a19"}, - {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:15e38d853ee224e92ccc9a851457fb1e1f12d7a5df5ae44544ce7863691c7a0d"}, - {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6913dddee2deff8ab2512639c5168c3e80b3ebb0f818fed22048ee46f735351a"}, - {file = "coverage-6.4.4-cp39-cp39-win32.whl", hash = "sha256:354df19fefd03b9a13132fa6643527ef7905712109d9c1c1903f2133d3a4e145"}, - {file = "coverage-6.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:1238b08f3576201ebf41f7c20bf59baa0d05da941b123c6656e42cdb668e9827"}, - {file = "coverage-6.4.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:f67cf9f406cf0d2f08a3515ce2db5b82625a7257f88aad87904674def6ddaec1"}, - {file = "coverage-6.4.4.tar.gz", hash = "sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58"}, +optional = false +python-versions = ">=3.7" +files = [ + {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, + {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, + {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, + {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, + {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, + {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, + {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, + {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, + {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, + {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, + {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, + {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, + {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, + {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, + {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, + {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, + {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, ] [package.dependencies] @@ -1123,55 +1205,58 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "36.0.2" +version = "41.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6"}, - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb"}, - {file = "cryptography-36.0.2-cp36-abi3-win32.whl", hash = "sha256:f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6"}, - {file = "cryptography-36.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3"}, - {file = "cryptography-36.0.2.tar.gz", hash = "sha256:70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9"}, + {file = "cryptography-41.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:01f1d9e537f9a15b037d5d9ee442b8c22e3ae11ce65ea1f3316a41c78756b711"}, + {file = "cryptography-41.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:079347de771f9282fbfe0e0236c716686950c19dee1b76240ab09ce1624d76d7"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:439c3cc4c0d42fa999b83ded80a9a1fb54d53c58d6e59234cfe97f241e6c781d"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f14ad275364c8b4e525d018f6716537ae7b6d369c094805cae45300847e0894f"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:84609ade00a6ec59a89729e87a503c6e36af98ddcd566d5f3be52e29ba993182"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:49c3222bb8f8e800aead2e376cbef687bc9e3cb9b58b29a261210456a7783d83"}, + {file = "cryptography-41.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d73f419a56d74fef257955f51b18d046f3506270a5fd2ac5febbfa259d6c0fa5"}, + {file = "cryptography-41.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:2a034bf7d9ca894720f2ec1d8b7b5832d7e363571828037f9e0c4f18c1b58a58"}, + {file = "cryptography-41.0.2-cp37-abi3-win32.whl", hash = "sha256:d124682c7a23c9764e54ca9ab5b308b14b18eba02722b8659fb238546de83a76"}, + {file = "cryptography-41.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:9c3fe6534d59d071ee82081ca3d71eed3210f76ebd0361798c74abc2bcf347d4"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a719399b99377b218dac6cf547b6ec54e6ef20207b6165126a280b0ce97e0d2a"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:182be4171f9332b6741ee818ec27daff9fb00349f706629f5cbf417bd50e66fd"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7a9a3bced53b7f09da251685224d6a260c3cb291768f54954e28f03ef14e3766"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f0dc40e6f7aa37af01aba07277d3d64d5a03dc66d682097541ec4da03cc140ee"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:674b669d5daa64206c38e507808aae49904c988fa0a71c935e7006a3e1e83831"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7af244b012711a26196450d34f483357e42aeddb04128885d95a69bd8b14b69b"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9b6d717393dbae53d4e52684ef4f022444fc1cce3c48c38cb74fca29e1f08eaa"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:192255f539d7a89f2102d07d7375b1e0a81f7478925b3bc2e0549ebf739dae0e"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f772610fe364372de33d76edcd313636a25684edb94cee53fd790195f5989d14"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b332cba64d99a70c1e0836902720887fb4529ea49ea7f5462cf6640e095e11d2"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9a6673c1828db6270b76b22cc696f40cde9043eb90373da5c2f8f2158957f42f"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:342f3767e25876751e14f8459ad85e77e660537ca0a066e10e75df9c9e9099f0"}, + {file = "cryptography-41.0.2.tar.gz", hash = "sha256:7d230bf856164de164ecb615ccc14c7fc6de6906ddd5b491f3af90d3514c925c"}, ] [package.dependencies] cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx_rtd_theme"] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools_rust (>=0.11.4)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] [[package]] name = "databricks-cli" -version = "0.17.0" +version = "0.17.7" description = "A command line interface for Databricks" -category = "main" optional = true python-versions = "*" files = [ - {file = "databricks-cli-0.17.0.tar.gz", hash = "sha256:4afa17da73c6e93ca09c5fdf24fa3552965854bbbc3f1428cf4d27edb751b72c"}, - {file = "databricks_cli-0.17.0-py2-none-any.whl", hash = "sha256:66c0ecb315041c28ba4ab3576c6c367b6933dc7c3b7d3130c4b8dc1f4f9140a1"}, + {file = "databricks-cli-0.17.7.tar.gz", hash = "sha256:5a545063449f3b9ad904644c0f251058485e29e564dedf8d4e4a7b45caf9549b"}, + {file = "databricks_cli-0.17.7-py2-none-any.whl", hash = "sha256:5b025943c70bbd374415264d38bfaddfb34ce070fadb083d851aec311e0f8901"}, ] [package.dependencies] @@ -1181,24 +1266,23 @@ pyjwt = ">=1.7.0" requests = ">=2.17.3" six = ">=1.10.0" tabulate = ">=0.7.7" +urllib3 = ">=1.26.7,<2.0.0" [[package]] name = "distlib" -version = "0.3.5" +version = "0.3.6" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.5-py2.py3-none-any.whl", hash = "sha256:b710088c59f06338ca514800ad795a132da19fda270e3ce4affc74abf955a26c"}, - {file = "distlib-0.3.5.tar.gz", hash = "sha256:a7f75737c70be3b25e2bee06288cec4e4c221de18455b2dd037fe2a795cab2fe"}, + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, ] [[package]] name = "distro" version = "1.8.0" description = "Distro - an OS platform information API" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1208,30 +1292,29 @@ files = [ [[package]] name = "docker" -version = "5.0.3" +version = "6.1.3" description = "A Python library for the Docker Engine API." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"}, - {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"}, + {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, + {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, ] [package.dependencies] -pywin32 = {version = "227", markers = "sys_platform == \"win32\""} -requests = ">=2.14.2,<2.18.0 || >2.18.0" +packaging = ">=14.0" +pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} +requests = ">=2.26.0" +urllib3 = ">=1.26.0" websocket-client = ">=0.32.0" [package.extras] -ssh = ["paramiko (>=2.4.2)"] -tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] +ssh = ["paramiko (>=2.4.3)"] [[package]] name = "dotnetcore2" version = "3.1.23" description = ".Net Core 3.1 runtime" -category = "main" optional = false python-versions = "*" files = [ @@ -1246,14 +1329,13 @@ distro = ">=1.2.0" [[package]] name = "dynaconf" -version = "3.1.9" +version = "3.1.12" description = "The dynamic configurator for your Python Project" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "dynaconf-3.1.9-py2.py3-none-any.whl", hash = "sha256:9eaaa6e64a4a64225f80cdad14379a37656b8f2dc607ab0fd949b75d479674cc"}, - {file = "dynaconf-3.1.9.tar.gz", hash = "sha256:f435c9e5b0b4b1dddf5e17e60a1e4c91ae0e6275aa51522456e671a7be3380eb"}, + {file = "dynaconf-3.1.12-py2.py3-none-any.whl", hash = "sha256:a79d7b3ad4a35af9b576c49f11cd3b23a1b04b87b63a4e9f92cc82f2b0cafeeb"}, + {file = "dynaconf-3.1.12.tar.gz", hash = "sha256:11a60bcd735f82b8a47b288f99e4ffbbd08c6c130a7be93c5d03e93fc260a5e1"}, ] [package.extras] @@ -1270,7 +1352,6 @@ yaml = ["ruamel.yaml"] name = "entrypoints" version = "0.4" description = "Discover and load entry points from installed packages." -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1280,38 +1361,37 @@ files = [ [[package]] name = "filelock" -version = "3.7.1" +version = "3.12.2" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, - {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"}, + {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, + {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, ] [package.extras] -docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] -testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] +docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] [[package]] name = "flask" -version = "2.1.3" +version = "2.3.2" description = "A simple framework for building complex web applications." -category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Flask-2.1.3-py3-none-any.whl", hash = "sha256:9013281a7402ad527f8fd56375164f3aa021ecfaff89bfe3825346c24f87e04c"}, - {file = "Flask-2.1.3.tar.gz", hash = "sha256:15972e5017df0575c3d6c090ba168b6db90259e620ac8d7ea813a396bad5b6cb"}, + {file = "Flask-2.3.2-py3-none-any.whl", hash = "sha256:77fd4e1249d8c9923de34907236b747ced06e5467ecac1a7bb7115ae0e9670b0"}, + {file = "Flask-2.3.2.tar.gz", hash = "sha256:8c2f9abd47a9e8df7f0c3f091ce9497d011dc3b31effcf4c85a6e2b50f4114ef"}, ] [package.dependencies] -click = ">=8.0" +blinker = ">=1.6.2" +click = ">=8.1.3" importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} -itsdangerous = ">=2.0" -Jinja2 = ">=3.0" -Werkzeug = ">=2.0" +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=2.3.3" [package.extras] async = ["asgiref (>=3.2)"] @@ -1319,83 +1399,96 @@ dotenv = ["python-dotenv"] [[package]] name = "frozenlist" -version = "1.3.0" +version = "1.3.3" description = "A list-like structure which implements collections.abc.MutableSequence" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, - {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"}, - {file = "frozenlist-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d"}, - {file = "frozenlist-1.3.0-cp310-cp310-win32.whl", hash = "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d"}, - {file = "frozenlist-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c"}, - {file = "frozenlist-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846"}, - {file = "frozenlist-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468"}, - {file = "frozenlist-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3"}, - {file = "frozenlist-1.3.0-cp38-cp38-win32.whl", hash = "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07"}, - {file = "frozenlist-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b"}, - {file = "frozenlist-1.3.0-cp39-cp39-win32.whl", hash = "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08"}, - {file = "frozenlist-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab"}, - {file = "frozenlist-1.3.0.tar.gz", hash = "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"}, +optional = false +python-versions = ">=3.7" +files = [ + {file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4"}, + {file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0"}, + {file = "frozenlist-1.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420"}, + {file = "frozenlist-1.3.3-cp310-cp310-win32.whl", hash = "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642"}, + {file = "frozenlist-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1"}, + {file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7"}, + {file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678"}, + {file = "frozenlist-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81"}, + {file = "frozenlist-1.3.3-cp311-cp311-win32.whl", hash = "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8"}, + {file = "frozenlist-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32"}, + {file = "frozenlist-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401"}, + {file = "frozenlist-1.3.3-cp37-cp37m-win32.whl", hash = "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a"}, + {file = "frozenlist-1.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411"}, + {file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a"}, + {file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5"}, + {file = "frozenlist-1.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3"}, + {file = "frozenlist-1.3.3-cp38-cp38-win32.whl", hash = "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b"}, + {file = "frozenlist-1.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef"}, + {file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf"}, + {file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1"}, + {file = "frozenlist-1.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1"}, + {file = "frozenlist-1.3.3-cp39-cp39-win32.whl", hash = "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38"}, + {file = "frozenlist-1.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9"}, + {file = "frozenlist-1.3.3.tar.gz", hash = "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"}, ] [[package]] name = "fsspec" -version = "2023.3.0" +version = "2023.6.0" description = "File-system specification" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.3.0-py3-none-any.whl", hash = "sha256:bf57215e19dbfa4fe7edae53040cc1deef825e3b1605cca9a8d2c2fadd2328a0"}, - {file = "fsspec-2023.3.0.tar.gz", hash = "sha256:24e635549a590d74c6c18274ddd3ffab4753341753e923408b1904eaabafe04d"}, + {file = "fsspec-2023.6.0-py3-none-any.whl", hash = "sha256:1cbad1faef3e391fba6dc005ae9b5bdcbf43005c9167ce78c915549c352c869a"}, + {file = "fsspec-2023.6.0.tar.gz", hash = "sha256:d0b2f935446169753e7a5c5c55681c54ea91996cc67be93c39a154fb3a2742af"}, ] [package.extras] @@ -1403,7 +1496,9 @@ abfs = ["adlfs"] adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] +devel = ["pytest", "pytest-cov"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] fuse = ["fusepy"] gcs = ["gcsfs"] git = ["pygit2"] @@ -1422,14 +1517,13 @@ tqdm = ["tqdm"] [[package]] name = "gitdb" -version = "4.0.9" +version = "4.0.10" description = "Git Object Database" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, - {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, + {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, + {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, ] [package.dependencies] @@ -1437,14 +1531,13 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.27" -description = "GitPython is a python library used to interact with Git repositories" -category = "main" +version = "3.1.32" +description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, - {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, + {file = "GitPython-3.1.32-py3-none-any.whl", hash = "sha256:e3d59b1c2c6ebb9dfa7a184daf3b6dd4914237e7488a1730a6d8f6f5d0b4187f"}, + {file = "GitPython-3.1.32.tar.gz", hash = "sha256:8d9b8cb1e80b9735e8717c9362079d3ce4c6e5ddeebedd0361b228c3a67a62f6"}, ] [package.dependencies] @@ -1452,142 +1545,145 @@ gitdb = ">=4.0.1,<5" [[package]] name = "google-api-core" -version = "2.10.1" +version = "2.11.1" description = "Google API client core library" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.10.1.tar.gz", hash = "sha256:e16c15a11789bc5a3457afb2818a3540a03f341e6e710d7f9bbf6cde2ef4a7c8"}, - {file = "google_api_core-2.10.1-py3-none-any.whl", hash = "sha256:92d17123cfe399b5ef7e026c63babf978d8475e1ac877919eb7933e25dea2273"}, + {file = "google-api-core-2.11.1.tar.gz", hash = "sha256:25d29e05a0058ed5f19c61c0a78b1b53adea4d9364b464d014fbda941f6d1c9a"}, + {file = "google_api_core-2.11.1-py3-none-any.whl", hash = "sha256:d92a5a92dc36dd4f4b9ee4e55528a90e432b059f93aee6ad857f9de8cc7ae94a"}, ] [package.dependencies] -google-auth = ">=1.25.0,<3.0dev" -googleapis-common-protos = ">=1.56.2,<2.0dev" -protobuf = ">=3.20.1,<5.0.0dev" -requests = ">=2.18.0,<3.0.0dev" +google-auth = ">=2.14.1,<3.0.dev0" +googleapis-common-protos = ">=1.56.2,<2.0.dev0" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" +requests = ">=2.18.0,<3.0.0.dev0" [package.extras] -grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)"] -grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] -grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0.dev0)", "grpcio-status (>=1.49.1,<2.0.dev0)"] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-auth" -version = "2.15.0" +version = "2.22.0" description = "Google Authentication Library" -category = "main" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" +python-versions = ">=3.6" files = [ - {file = "google-auth-2.15.0.tar.gz", hash = "sha256:72f12a6cfc968d754d7bdab369c5c5c16032106e52d32c6dfd8484e4c01a6d1f"}, - {file = "google_auth-2.15.0-py2.py3-none-any.whl", hash = "sha256:6897b93556d8d807ad70701bb89f000183aea366ca7ed94680828b37437a4994"}, + {file = "google-auth-2.22.0.tar.gz", hash = "sha256:164cba9af4e6e4e40c3a4f90a1a6c12ee56f14c0b4868d1ca91b32826ab334ce"}, + {file = "google_auth-2.22.0-py2.py3-none-any.whl", hash = "sha256:d61d1b40897407b574da67da1a833bdc10d5a11642566e506565d1b1a46ba873"}, ] [package.dependencies] cachetools = ">=2.0.0,<6.0" pyasn1-modules = ">=0.2.1" -rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} +rsa = ">=3.1.4,<5" six = ">=1.9.0" +urllib3 = "<2.0" [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] +requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "googleapis-common-protos" -version = "1.56.4" +version = "1.59.1" description = "Common protobufs used in Google APIs" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.56.4.tar.gz", hash = "sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417"}, - {file = "googleapis_common_protos-1.56.4-py2.py3-none-any.whl", hash = "sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394"}, + {file = "googleapis-common-protos-1.59.1.tar.gz", hash = "sha256:b35d530fe825fb4227857bc47ad84c33c809ac96f312e13182bdeaa2abe1178a"}, + {file = "googleapis_common_protos-1.59.1-py2.py3-none-any.whl", hash = "sha256:0cbedb6fb68f1c07e18eb4c48256320777707e7d0c55063ae56c15db3224a61e"}, ] [package.dependencies] -protobuf = ">=3.15.0,<5.0.0dev" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" [package.extras] -grpc = ["grpcio (>=1.0.0,<2.0.0dev)"] +grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "greenlet" -version = "1.1.2" +version = "2.0.2" description = "Lightweight in-process concurrent programming" -category = "main" optional = true python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ - {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, - {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, - {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, - {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, - {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, - {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, - {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, - {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, - {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"}, - {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, - {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, - {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, - {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, - {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, - {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, - {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, - {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"}, - {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, - {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, - {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, - {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"}, - {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, - {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, - {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, - {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"}, - {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, - {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, - {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, - {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"}, - {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, - {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, - {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, -] - -[package.extras] -docs = ["Sphinx"] + {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"}, + {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"}, + {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"}, + {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"}, + {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"}, + {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"}, + {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"}, + {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"}, + {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"}, + {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"}, + {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"}, + {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"}, + {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"}, + {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"}, + {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"}, + {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"}, + {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"}, + {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"}, + {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"}, + {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"}, + {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"}, + {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"}, + {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"}, + {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"}, + {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"}, + {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"}, + {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"}, + {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"}, + {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"}, + {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"}, + {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"}, + {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"}, + {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"}, + {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"}, + {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"}, + {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"}, + {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"}, + {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"}, + {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"}, + {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"}, + {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"}, + {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"}, + {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"}, + {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"}, +] + +[package.extras] +docs = ["Sphinx", "docutils (<0.18)"] +test = ["objgraph", "psutil"] [[package]] name = "gunicorn" version = "20.1.0" description = "WSGI HTTP Server for UNIX" -category = "main" optional = true python-versions = ">=3.5" files = [ @@ -1608,7 +1704,6 @@ tornado = ["tornado (>=0.2)"] name = "humanfriendly" version = "10.0" description = "Human friendly output for text interfaces using Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1621,14 +1716,13 @@ pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_ve [[package]] name = "identify" -version = "2.5.2" +version = "2.5.24" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "identify-2.5.2-py2.py3-none-any.whl", hash = "sha256:feaa9db2dc0ce333b453ce171c0cf1247bbfde2c55fc6bb785022d411a1b78b5"}, - {file = "identify-2.5.2.tar.gz", hash = "sha256:a3d4c096b384d50d5e6dc5bc8b9bc44f1f61cefebd750a7b3e9f939b53fb214d"}, + {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, + {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, ] [package.extras] @@ -1636,72 +1730,67 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.3" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] [[package]] name = "importlib-metadata" -version = "4.12.0" +version = "5.2.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, - {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"}, + {file = "importlib_metadata-5.2.0-py3-none-any.whl", hash = "sha256:0eafa39ba42bf225fc00e67f701d71f85aead9f878569caf13c3724f704b970f"}, + {file = "importlib_metadata-5.2.0.tar.gz", hash = "sha256:404d48d62bba0b7a77ff9d405efd91501bef2e67ff4ace0bed40a0cf28c3c7cd"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] 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 = ["flake8 (<5)", "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.9.0" +version = "6.0.0" description = "Read resources from Python packages" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_resources-5.9.0-py3-none-any.whl", hash = "sha256:f78a8df21a79bcc30cfd400bdc38f314333de7c0fb619763f6b9dabab8268bb7"}, - {file = "importlib_resources-5.9.0.tar.gz", hash = "sha256:5481e97fb45af8dcf2f798952625591c58fe599d0735d86b10f54de086a61681"}, + {file = "importlib_resources-6.0.0-py3-none-any.whl", hash = "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185"}, + {file = "importlib_resources-6.0.0.tar.gz", hash = "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" -category = "dev" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] [[package]] name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" -category = "main" optional = false python-versions = "*" files = [ @@ -1716,7 +1805,6 @@ six = "*" name = "itsdangerous" version = "2.1.2" description = "Safely pass data to untrusted environments and back." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1728,7 +1816,6 @@ files = [ name = "jeepney" version = "0.8.0" description = "Low-level, pure Python DBus protocol wrapper." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1744,7 +1831,6 @@ trio = ["async_generator", "trio"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1758,27 +1844,10 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] -[[package]] -name = "jinja2-time" -version = "0.2.0" -description = "Jinja2 Extension for Dates and Times" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "jinja2-time-0.2.0.tar.gz", hash = "sha256:d14eaa4d315e7688daa4969f616f226614350c48730bfa1692d2caebd8c90d40"}, - {file = "jinja2_time-0.2.0-py2.py3-none-any.whl", hash = "sha256:d3eab6605e3ec8b7a0863df09cc1d23714908fa61aa6986a845c20ba488b4efa"}, -] - -[package.dependencies] -arrow = "*" -jinja2 = "*" - [[package]] name = "jmespath" version = "0.10.0" description = "JSON Matching Expressions" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1788,86 +1857,102 @@ files = [ [[package]] name = "jsonpickle" -version = "2.2.0" +version = "3.0.1" description = "Python library for serializing any arbitrary object graph into JSON" -category = "main" optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "jsonpickle-2.2.0-py2.py3-none-any.whl", hash = "sha256:de7f2613818aa4f234138ca11243d6359ff83ae528b2185efdd474f62bcf9ae1"}, - {file = "jsonpickle-2.2.0.tar.gz", hash = "sha256:7b272918b0554182e53dc340ddd62d9b7f902fec7e7b05620c04f3ccef479a0e"}, + {file = "jsonpickle-3.0.1-py2.py3-none-any.whl", hash = "sha256:130d8b293ea0add3845de311aaba55e6d706d0bb17bc123bd2c8baf8a39ac77c"}, + {file = "jsonpickle-3.0.1.tar.gz", hash = "sha256:032538804795e73b94ead410800ac387fdb6de98f8882ac957fcd247e3a85200"}, ] [package.extras] docs = ["jaraco.packaging (>=3.2)", "rst.linker (>=1.9)", "sphinx"] -testing = ["ecdsa", "enum34", "feedparser", "jsonlib", "numpy", "pandas", "pymongo", "pytest (>=3.5,!=3.7.3)", "pytest-black-multipy", "pytest-checkdocs (>=1.2.3)", "pytest-cov", "pytest-flake8 (<1.1.0)", "pytest-flake8 (>=1.1.1)", "scikit-learn", "sqlalchemy"] -testing-libs = ["simplejson", "ujson", "yajl"] +testing = ["ecdsa", "feedparser", "gmpy2", "numpy", "pandas", "pymongo", "pytest (>=3.5,!=3.7.3)", "pytest-black-multipy", "pytest-checkdocs (>=1.2.3)", "pytest-cov", "pytest-flake8 (>=1.1.1)", "scikit-learn", "sqlalchemy"] +testing-libs = ["simplejson", "ujson"] [[package]] name = "jsonschema" -version = "4.7.2" +version = "4.18.0" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jsonschema-4.7.2-py3-none-any.whl", hash = "sha256:c7448a421b25e424fccfceea86b4e3a8672b4436e1988ccbde92c80828d4f085"}, - {file = "jsonschema-4.7.2.tar.gz", hash = "sha256:73764f461d61eb97a057c929368610a134d1d1fffd858acfe88864ee94f1f1d3"}, + {file = "jsonschema-4.18.0-py3-none-any.whl", hash = "sha256:b508dd6142bd03f4c3670534c80af68cd7bbff9ea830b9cf2625d4a3c49ddf60"}, + {file = "jsonschema-4.18.0.tar.gz", hash = "sha256:8caf5b57a990a98e9b39832ef3cb35c176fe331414252b6e1b26fd5866f891a4"}, ] [package.dependencies] -attrs = ">=17.4.0" +attrs = ">=22.2.0" importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +jsonschema-specifications = ">=2023.03.6" +pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" [package.extras] 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)"] +[[package]] +name = "jsonschema-specifications" +version = "2023.6.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.6.1-py3-none-any.whl", hash = "sha256:3d2b82663aff01815f744bb5c7887e2121a63399b49b104a3c96145474d091d7"}, + {file = "jsonschema_specifications-2023.6.1.tar.gz", hash = "sha256:ca1c4dd059a9e7b34101cf5b3ab7ff1d18b139f35950d598d629837ef66e8f28"}, +] + +[package.dependencies] +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +referencing = ">=0.28.0" + [[package]] name = "kedro" -version = "0.18.7" +version = "0.18.11" description = "Kedro helps you build production-ready data and analytics pipelines" -category = "main" optional = false -python-versions = ">=3.7, <3.11" +python-versions = "<3.11,>=3.7" files = [ - {file = "kedro-0.18.7-py3-none-any.whl", hash = "sha256:8aa98038a015e2d985f041c8ae7a993b98d8ffdf0e97c1fb25fc29e6838a1768"}, - {file = "kedro-0.18.7.tar.gz", hash = "sha256:1eda641a0d4676c64fd1f77defab875b2f2c7828eeb34a8768a5faa363f28303"}, + {file = "kedro-0.18.11-py3-none-any.whl", hash = "sha256:05b5ec074f08aaf33f1639479ed70efc0026b87b5d8200f9552425bbbc4708e8"}, + {file = "kedro-0.18.11.tar.gz", hash = "sha256:3f22554f17d9310147295e2bfd1061e80d2ffdaf53160f13e9e23e41d19ffe67"}, ] [package.dependencies] anyconfig = ">=0.10.0,<0.11.0" attrs = ">=21.3" +build = "*" cachetools = ">=5.3,<6.0" click = "<9.0" cookiecutter = ">=2.1.1,<3.0" dynaconf = ">=3.1.2,<4.0" -fsspec = {version = ">=2023.1,<2023.4", markers = "python_version >= \"3.8\""} +fsspec = ">=2021.4,<2024.1" gitpython = ">=3.0,<4.0" importlib-metadata = {version = ">=3.6", markers = "python_version >= \"3.8\""} importlib-resources = ">=1.3" jmespath = ">=0.9.5,<1.0" -more-itertools = ">=9.1,<10.0" +more-itertools = ">=9.0,<10.0" omegaconf = ">=2.3,<3.0" -pip-tools = ">=6.12,<7.0" +pip-tools = ">=6.5,<7.0" pluggy = ">=1.0.0,<1.1.0" PyYAML = ">=4.2,<7.0" -rich = ">=13.3,<14.0" -rope = ">=1.7.0,<1.8.0" +rich = ">=12.0,<14.0" +rope = ">=0.21,<2.0" setuptools = ">=65.5.1" toml = ">=0.10,<1.0" -toposort = ">=1.10,<2.0" +toposort = ">=1.5,<2.0" [package.extras] -all = ["Jinja2 (<3.1.0)", "Pillow (>=9.0,<10.0)", "PyYAML (>=4.2,<7.0)", "SQLAlchemy (>=1.2,<2.0)", "biopython (>=1.73,<2.0)", "compress-pickle[lz4] (>=2.1.0,<2.2.0)", "dask[complete] (>=2021.10,<2022.0)", "delta-spark (>=1.0,<3.0)", "docutils (==0.16)", "geopandas (>=0.6.0,<1.0)", "hdfs (>=2.5.8,<3.0)", "holoviews (>=1.13.0,<1.14.0)", "ipykernel (>=5.3,<7.0)", "lxml (>=4.6,<5.0)", "matplotlib (>=3.0.3,<4.0)", "myst-parser (>=0.17.2,<0.18.0)", "nbsphinx (==0.8.1)", "nbstripout (>=0.4,<1.0)", "networkx (>=2.4,<3.0)", "opencv-python (>=4.5.5.64,<4.6.0.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "plotly (>=4.8.0,<6.0)", "pyarrow (>=1.0,<7.0)", "pyproj (>=3.0,<4.0)", "pyspark (>=2.2,<4.0)", "redis (>=4.1,<5.0)", "requests (>=2.20,<3.0)", "s3fs (>=0.3.0,<0.5)", "scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)", "sphinx (>=3.4.3,<3.5.0)", "sphinx-autodoc-typehints (==1.11.1)", "sphinx-copybutton (==0.3.1)", "sphinx-rtd-theme (==1.1.1)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)", "tensorflow (>=2.0,<3.0)", "triad (>=0.6.7,<1.0)"] +all = ["Jinja2 (<3.1.0)", "Pillow (>=9.0,<10.0)", "PyYAML (>=4.2,<7.0)", "SQLAlchemy (>=1.2,<2.0)", "biopython (>=1.73,<2.0)", "compress-pickle[lz4] (>=2.1.0,<2.2.0)", "dask[complete] (>=2021.10,<2022.0)", "delta-spark (>=1.0,<3.0)", "docutils (==0.16)", "geopandas (>=0.6.0,<1.0)", "hdfs (>=2.5.8,<3.0)", "holoviews (>=1.13.0,<1.14.0)", "ipykernel (>=5.3,<7.0)", "kedro-datasets[all] (>=1.4.2,<1.5.0)", "lxml (>=4.6,<5.0)", "matplotlib (>=3.0.3,<4.0)", "myst-parser (>=1.0.0,<1.1.0)", "networkx (>=2.4,<3.0)", "opencv-python (>=4.5.5.64,<4.6.0.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "plotly (>=4.8.0,<6.0)", "pyarrow (>=1.0,<7.0)", "pyproj (>=3.0,<4.0)", "pyspark (>=2.2,<4.0)", "redis (>=4.1,<5.0)", "requests (>=2.20,<3.0)", "s3fs (>=0.3.0,<0.5)", "scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)", "sphinx (>=5.3.0,<5.4.0)", "sphinx-autodoc-typehints (==1.20.2)", "sphinx-copybutton (==0.3.1)", "sphinx-notfound-page", "sphinx-rtd-theme (==1.2.0)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)", "tensorflow (>=2.0,<3.0)", "triad (>=0.6.7,<1.0)"] api = ["requests (>=2.20,<3.0)"] api-apidataset = ["requests (>=2.20,<3.0)"] biosequence = ["biopython (>=1.73,<2.0)"] biosequence-biosequencedataset = ["biopython (>=1.73,<2.0)"] dask = ["dask[complete] (>=2021.10,<2022.0)", "triad (>=0.6.7,<1.0)"] dask-parquetdataset = ["dask[complete] (>=2021.10,<2022.0)", "triad (>=0.6.7,<1.0)"] -docs = ["Jinja2 (<3.1.0)", "docutils (==0.16)", "ipykernel (>=5.3,<7.0)", "myst-parser (>=0.17.2,<0.18.0)", "nbsphinx (==0.8.1)", "nbstripout (>=0.4,<1.0)", "sphinx (>=3.4.3,<3.5.0)", "sphinx-autodoc-typehints (==1.11.1)", "sphinx-copybutton (==0.3.1)", "sphinx-rtd-theme (==1.1.1)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)"] +docs = ["Jinja2 (<3.1.0)", "docutils (==0.16)", "ipykernel (>=5.3,<7.0)", "kedro-datasets[all] (>=1.4.2,<1.5.0)", "myst-parser (>=1.0.0,<1.1.0)", "sphinx (>=5.3.0,<5.4.0)", "sphinx-autodoc-typehints (==1.20.2)", "sphinx-copybutton (==0.3.1)", "sphinx-notfound-page", "sphinx-rtd-theme (==1.2.0)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)"] geopandas = ["geopandas (>=0.6.0,<1.0)", "pyproj (>=3.0,<4.0)"] geopandas-geojsondataset = ["geopandas (>=0.6.0,<1.0)", "pyproj (>=3.0,<4.0)"] holoviews = ["holoviews (>=1.13.0,<1.14.0)"] @@ -1913,28 +1998,29 @@ yaml-yamldataset = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<2.0)"] [[package]] name = "kedro-datasets" -version = "1.2.0" +version = "1.4.2" description = "Kedro-Datasets is where you can find all of Kedro's data connectors." -category = "main" optional = false -python-versions = ">=3.7, <3.11" +python-versions = "<3.11,>=3.7" files = [ - {file = "kedro-datasets-1.2.0.tar.gz", hash = "sha256:23c1de5412886056040b8a3ffb09137729f614dc0c4bb15a90e15228594235cc"}, - {file = "kedro_datasets-1.2.0-py3-none-any.whl", hash = "sha256:ba1b17a090cb9b9e0ae17f724729180ec4a631b3a234550983df67cf3967dfe2"}, + {file = "kedro-datasets-1.4.2.tar.gz", hash = "sha256:27eb8dda724df36fe19f531dc7334770fbe396be452ec822619d8b4b013be317"}, + {file = "kedro_datasets-1.4.2-py3-none-any.whl", hash = "sha256:7f448aa96afcc562d13abee1d6f06679c3b596ca27d45a157a543e2e011f2aac"}, ] [package.dependencies] -kedro = ">=0.18.4,<0.19.0" +kedro = ">=0.16" [package.extras] -all = ["Pillow (>=9.0,<10.0)", "PyYAML (>=4.2,<7.0)", "SQLAlchemy (>=1.2,<2.0)", "biopython (>=1.73,<2.0)", "dask[complete] (>=2021.10,<2022.0)", "delta-spark (>=1.0,<2.0)", "docutils (==0.16)", "geopandas (>=0.6.0,<1.0)", "hdfs (>=2.5.8,<3.0)", "holoviews (>=1.13.0,<1.14.0)", "ipykernel (>=5.3,<7.0)", "lxml (>=4.6,<5.0)", "matplotlib (>=3.0.3,<4.0)", "myst-parser (>=0.17.2,<0.18.0)", "nbsphinx (==0.8.1)", "nbstripout (>=0.4,<1.0)", "networkx (>=2.4,<3.0)", "opencv-python (>=4.5.5.64,<4.6.0.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "plotly (>=4.8.0,<6.0)", "polars (>=0.15.16,<0.16.0)", "pyarrow (>=6.0)", "pyarrow (>=8.0,<9.0)", "pyodbc (>=4.0,<5.0)", "pyproj (>=3.0,<4.0)", "pyspark (>=2.2,<4.0)", "redis (>=4.1,<5.0)", "requests (>=2.20,<3.0)", "s3fs (>=0.3.0,<0.5)", "scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)", "snowflake-snowpark-python (>=1.0.0,<1.1.0)", "sphinx (>=3.4.3,<3.5.0)", "sphinx-autodoc-typehints (==1.11.1)", "sphinx-copybutton (==0.3.1)", "sphinx-rtd-theme (==0.4.1)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)", "tensorflow (>=2.0,<3.0)", "triad (>=0.6.7,<1.0)"] +all = ["Pillow (>=9.0,<10.0)", "PyYAML (>=4.2,<7.0)", "SQLAlchemy (>=1.4,<3.0)", "biopython (>=1.73,<2.0)", "compress-pickle[lz4] (>=2.1.0,<2.2.0)", "dask[complete] (>=2021.10,<2022.0)", "delta-spark (>=1.0,<3.0)", "delta-spark (>=1.2.1,<1.3.0)", "geopandas (>=0.6.0,<1.0)", "hdfs (>=2.5.8,<3.0)", "holoviews (>=1.13.0,<1.14.0)", "lxml (>=4.6,<5.0)", "matplotlib (>=3.0.3,<4.0)", "networkx (>=2.4,<3.0)", "opencv-python (>=4.5.5.64,<4.6.0.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<3.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "plotly (>=4.8.0,<6.0)", "polars (>=0.17.0,<0.18.0)", "pyarrow (>=6.0)", "pyarrow (>=8.0,<9.0)", "pyodbc (>=4.0,<5.0)", "pyproj (>=3.0,<4.0)", "pyspark (>=2.2,<4.0)", "redis (>=4.1,<5.0)", "requests (>=2.20,<3.0)", "s3fs (>=0.3.0,<0.5)", "scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)", "snowflake-snowpark-python (>=1.0.0,<1.1.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)", "tensorflow (>=2.0,<3.0)", "tensorflow-macos (>=2.0,<3.0)", "triad (>=0.6.7,<1.0)"] api = ["requests (>=2.20,<3.0)"] api-apidataset = ["requests (>=2.20,<3.0)"] biosequence = ["biopython (>=1.73,<2.0)"] biosequence-biosequencedataset = ["biopython (>=1.73,<2.0)"] dask = ["dask[complete] (>=2021.10,<2022.0)", "triad (>=0.6.7,<1.0)"] dask-parquetdataset = ["dask[complete] (>=2021.10,<2022.0)", "triad (>=0.6.7,<1.0)"] -docs = ["docutils (==0.16)", "ipykernel (>=5.3,<7.0)", "myst-parser (>=0.17.2,<0.18.0)", "nbsphinx (==0.8.1)", "nbstripout (>=0.4,<1.0)", "sphinx (>=3.4.3,<3.5.0)", "sphinx-autodoc-typehints (==1.11.1)", "sphinx-copybutton (==0.3.1)", "sphinx-rtd-theme (==0.4.1)"] +databricks = ["delta-spark (>=1.2.1,<1.3.0)", "pandas (>=1.3,<3.0)", "pyspark (>=2.2,<4.0)"] +databricks-managedtabledataset = ["delta-spark (>=1.2.1,<1.3.0)", "pandas (>=1.3,<3.0)", "pyspark (>=2.2,<4.0)"] +docs = ["Jinja2 (<3.1.0)", "docutils (==0.16)", "ipykernel (>=5.3,<7.0)", "myst-parser (>=1.0.0,<1.1.0)", "sphinx (>=5.3.0,<5.4.0)", "sphinx-autodoc-typehints (==1.20.2)", "sphinx-copybutton (==0.3.1)", "sphinx-notfound-page", "sphinx-rtd-theme (==1.2.0)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)"] geopandas = ["geopandas (>=0.6.0,<1.0)", "pyproj (>=3.0,<4.0)"] geopandas-geojsondataset = ["geopandas (>=0.6.0,<1.0)", "pyproj (>=3.0,<4.0)"] holoviews = ["holoviews (>=1.13.0,<1.14.0)"] @@ -1943,47 +2029,49 @@ matplotlib = ["matplotlib (>=3.0.3,<4.0)"] matplotlib-matplotlibwriter = ["matplotlib (>=3.0.3,<4.0)"] networkx = ["networkx (>=2.4,<3.0)"] networkx-networkxdataset = ["networkx (>=2.4,<3.0)"] -pandas = ["SQLAlchemy (>=1.2,<2.0)", "lxml (>=4.6,<5.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "pyarrow (>=6.0)", "pyodbc (>=4.0,<5.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)"] -pandas-csvdataset = ["pandas (>=1.3,<2.0)"] -pandas-exceldataset = ["openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<2.0)"] -pandas-featherdataset = ["pandas (>=1.3,<2.0)"] -pandas-gbqquerydataset = ["pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)"] -pandas-gbqtabledataset = ["pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)"] -pandas-genericdataset = ["pandas (>=1.3,<2.0)"] -pandas-hdfdataset = ["pandas (>=1.3,<2.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)"] -pandas-jsondataset = ["pandas (>=1.3,<2.0)"] -pandas-parquetdataset = ["pandas (>=1.3,<2.0)", "pyarrow (>=6.0)"] -pandas-sqlquerydataset = ["SQLAlchemy (>=1.2,<2.0)", "pandas (>=1.3,<2.0)", "pyodbc (>=4.0,<5.0)"] -pandas-sqltabledataset = ["SQLAlchemy (>=1.2,<2.0)", "pandas (>=1.3,<2.0)"] -pandas-xmldataset = ["lxml (>=4.6,<5.0)", "pandas (>=1.3,<2.0)"] +pandas = ["SQLAlchemy (>=1.4,<3.0)", "lxml (>=4.6,<5.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<3.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "pyarrow (>=6.0)", "pyodbc (>=4.0,<5.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)"] +pandas-csvdataset = ["pandas (>=1.3,<3.0)"] +pandas-exceldataset = ["openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<3.0)"] +pandas-featherdataset = ["pandas (>=1.3,<3.0)"] +pandas-gbqquerydataset = ["pandas (>=1.3,<3.0)", "pandas-gbq (>=0.12.0,<0.18.0)"] +pandas-gbqtabledataset = ["pandas (>=1.3,<3.0)", "pandas-gbq (>=0.12.0,<0.18.0)"] +pandas-genericdataset = ["pandas (>=1.3,<3.0)"] +pandas-hdfdataset = ["pandas (>=1.3,<3.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)"] +pandas-jsondataset = ["pandas (>=1.3,<3.0)"] +pandas-parquetdataset = ["pandas (>=1.3,<3.0)", "pyarrow (>=6.0)"] +pandas-sqlquerydataset = ["SQLAlchemy (>=1.4,<3.0)", "pandas (>=1.3,<3.0)", "pyodbc (>=4.0,<5.0)"] +pandas-sqltabledataset = ["SQLAlchemy (>=1.4,<3.0)", "pandas (>=1.3,<3.0)"] +pandas-xmldataset = ["lxml (>=4.6,<5.0)", "pandas (>=1.3,<3.0)"] +pickle = ["compress-pickle[lz4] (>=2.1.0,<2.2.0)"] +pickle-pickledataset = ["compress-pickle[lz4] (>=2.1.0,<2.2.0)"] pillow = ["Pillow (>=9.0,<10.0)"] pillow-imagedataset = ["Pillow (>=9.0,<10.0)"] -plotly = ["pandas (>=1.3,<2.0)", "plotly (>=4.8.0,<6.0)"] +plotly = ["pandas (>=1.3,<3.0)", "plotly (>=4.8.0,<6.0)"] plotly-jsondataset = ["plotly (>=4.8.0,<6.0)"] -plotly-plotlydataset = ["pandas (>=1.3,<2.0)", "plotly (>=4.8.0,<6.0)"] -polars = ["polars (>=0.15.16,<0.16.0)"] -polars-csvdataset = ["polars (>=0.15.16,<0.16.0)"] +plotly-plotlydataset = ["pandas (>=1.3,<3.0)", "plotly (>=4.8.0,<6.0)"] +polars = ["polars (>=0.17.0,<0.18.0)"] +polars-csvdataset = ["polars (>=0.17.0,<0.18.0)"] redis = ["redis (>=4.1,<5.0)"] +snowflake = ["pyarrow (>=8.0,<9.0)", "snowflake-snowpark-python (>=1.0.0,<1.1.0)"] snowflake-snowparktabledataset = ["pyarrow (>=8.0,<9.0)", "snowflake-snowpark-python (>=1.0.0,<1.1.0)"] -spark = ["delta-spark (>=1.0,<2.0)", "hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] -spark-deltatabledataset = ["delta-spark (>=1.0,<2.0)", "hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] +spark = ["delta-spark (>=1.0,<3.0)", "hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] +spark-deltatabledataset = ["delta-spark (>=1.0,<3.0)", "hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] spark-sparkdataset = ["hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] spark-sparkhivedataset = ["hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] spark-sparkjdbcdataset = ["hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] svmlight = ["scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)"] svmlight-svmlightdataset = ["scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)"] -tensorflow = ["tensorflow (>=2.0,<3.0)"] -tensorflow-tensorflowmodeldataset = ["tensorflow (>=2.0,<3.0)"] +tensorflow = ["tensorflow (>=2.0,<3.0)", "tensorflow-macos (>=2.0,<3.0)"] +tensorflow-tensorflowmodeldataset = ["tensorflow (>=2.0,<3.0)", "tensorflow-macos (>=2.0,<3.0)"] video = ["opencv-python (>=4.5.5.64,<4.6.0.0)"] video-videodataset = ["opencv-python (>=4.5.5.64,<4.6.0.0)"] -yaml = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<2.0)"] -yaml-yamldataset = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<2.0)"] +yaml = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<3.0)"] +yaml-yamldataset = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<3.0)"] [[package]] name = "knack" version = "0.10.1" description = "A Command-Line Interface framework" -category = "main" optional = false python-versions = "*" files = [ @@ -2000,14 +2088,13 @@ tabulate = "*" [[package]] name = "mako" -version = "1.2.1" +version = "1.2.4" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "Mako-1.2.1-py3-none-any.whl", hash = "sha256:df3921c3081b013c8a2d5ff03c18375651684921ae83fd12e64800b7da923257"}, - {file = "Mako-1.2.1.tar.gz", hash = "sha256:f054a5ff4743492f1aa9ecc47172cb33b42b9d993cffcc146c9de17e717b0307"}, + {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, + {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, ] [package.dependencies] @@ -2020,14 +2107,13 @@ testing = ["pytest"] [[package]] name = "markdown-it-py" -version = "2.2.0" +version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, - {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, ] [package.dependencies] @@ -2040,85 +2126,92 @@ compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0 linkify = ["linkify-it-py (>=1,<3)"] plugins = ["mdit-py-plugins"] profiling = ["gprof2dot"] -rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.1" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, ] [[package]] name = "marshmallow" -version = "3.17.0" +version = "3.19.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "marshmallow-3.17.0-py3-none-any.whl", hash = "sha256:00040ab5ea0c608e8787137627a8efae97fabd60552a05dc889c888f814e75eb"}, - {file = "marshmallow-3.17.0.tar.gz", hash = "sha256:635fb65a3285a31a30f276f30e958070f5214c7196202caa5c7ecf28f5274bc7"}, + {file = "marshmallow-3.19.0-py3-none-any.whl", hash = "sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b"}, + {file = "marshmallow-3.19.0.tar.gz", hash = "sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] -dev = ["flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "mypy (==0.961)", "pre-commit (>=2.4,<3.0)", "pytest", "pytz", "simplejson", "tox"] -docs = ["alabaster (==0.7.12)", "autodocsumm (==0.2.8)", "sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] -lint = ["flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "mypy (==0.961)", "pre-commit (>=2.4,<3.0)"] +dev = ["flake8 (==5.0.4)", "flake8-bugbear (==22.10.25)", "mypy (==0.990)", "pre-commit (>=2.4,<3.0)", "pytest", "pytz", "simplejson", "tox"] +docs = ["alabaster (==0.7.12)", "autodocsumm (==0.2.9)", "sphinx (==5.3.0)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] +lint = ["flake8 (==5.0.4)", "flake8-bugbear (==22.10.25)", "mypy (==0.990)", "pre-commit (>=2.4,<3.0)"] tests = ["pytest", "pytz", "simplejson"] [[package]] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2128,83 +2221,82 @@ files = [ [[package]] name = "mlflow" -version = "1.27.0" +version = "1.30.1" description = "MLflow: A Platform for ML Development and Productionization" -category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "mlflow-1.27.0-py3-none-any.whl", hash = "sha256:d759f3eefad2ff509a0fbc10507224204c6f6bb8d7f437bbf0bb9961cf74ff95"}, - {file = "mlflow-1.27.0.tar.gz", hash = "sha256:6a1e34d6be266725e41d4547572a8425d86d6623e1c8888cf3f22b90019be0aa"}, + {file = "mlflow-1.30.1-py3-none-any.whl", hash = "sha256:f9d27fc86530a8075f9e633741915af698f410403d474f398165fbdab74ae30d"}, + {file = "mlflow-1.30.1.tar.gz", hash = "sha256:458e0330b3791c1eb7beeb34efd7a0b9137d4ac78ddae0230e28424f077626a0"}, ] [package.dependencies] -alembic = "*" -click = ">=7.0" -cloudpickle = "*" -databricks-cli = ">=0.8.7" -docker = ">=4.0.0" -entrypoints = "*" -Flask = "*" -gitpython = ">=2.1.0" -gunicorn = {version = "*", markers = "platform_system != \"Windows\""} -importlib-metadata = ">=3.7.0,<4.7.0 || >4.7.0" -numpy = "*" -packaging = "*" -pandas = "*" -prometheus-flask-exporter = "*" -protobuf = ">=3.12.0" -pytz = "*" -pyyaml = ">=5.1" -querystring-parser = "*" -requests = ">=2.17.3" -scipy = "*" -sqlalchemy = ">=1.4.0" -sqlparse = ">=0.3.1" -waitress = {version = "*", markers = "platform_system == \"Windows\""} +alembic = "<2" +click = ">=7.0,<9" +cloudpickle = "<3" +databricks-cli = ">=0.8.7,<1" +docker = ">=4.0.0,<7" +entrypoints = "<1" +Flask = "<3" +gitpython = ">=2.1.0,<4" +gunicorn = {version = "<21", markers = "platform_system != \"Windows\""} +importlib-metadata = ">=3.7.0,<4.7.0 || >4.7.0,<6" +numpy = "<2" +packaging = "<22" +pandas = "<2" +prometheus-flask-exporter = "<1" +protobuf = ">=3.12.0,<5" +pytz = "<2023" +pyyaml = ">=5.1,<7" +querystring-parser = "<2" +requests = ">=2.17.3,<3" +scipy = "<2" +sqlalchemy = ">=1.4.0,<2" +sqlparse = ">=0.4.0,<1" +waitress = {version = "<3", markers = "platform_system == \"Windows\""} [package.extras] aliyun-oss = ["aliyunstoreplugin"] -extras = ["azureml-core (>=1.2.0)", "boto3", "google-cloud-storage (>=1.30.0)", "kubernetes", "mlserver (>=0.5.3)", "mlserver-mlflow (>=0.5.3)", "pyarrow", "pysftp", "scikit-learn", "virtualenv"] -pipelines = ["Jinja2 (>=3.0)", "ipython (>=7.0)", "markdown (>=3.3)", "pandas-profiling (>=3.1)", "pyarrow (>=7.0)", "scikit-learn (>=1.0)", "shap (>=0.40)"] +extras = ["azureml-core (>=1.2.0)", "boto3", "google-cloud-storage (>=1.30.0)", "kubernetes", "mlserver (>=0.5.3)", "mlserver-mlflow (>=0.5.3)", "pyarrow", "pysftp", "requests-auth-aws-sigv4", "scikit-learn", "virtualenv"] +pipelines = ["Jinja2 (>=2.11)", "Jinja2 (>=3.0)", "ipython (>=7.0)", "markdown (>=3.3)", "pandas-profiling (>=3.1)", "pyarrow (>=7.0)", "scikit-learn (>=1.0)", "shap (>=0.40)"] sqlserver = ["mlflow-dbstore"] [[package]] name = "mlflow-skinny" -version = "1.27.0" +version = "2.4.2" description = "MLflow: A Platform for ML Development and Productionization" -category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mlflow-skinny-1.27.0.tar.gz", hash = "sha256:77240a1bee2d5bbc2bf8eb9609b22fa43a2381067c3728d8c6539702962a268a"}, - {file = "mlflow_skinny-1.27.0-py3-none-any.whl", hash = "sha256:48462b9675a8365d8bd44357db29886098ee2723dbc925e35b16517e1ca43983"}, + {file = "mlflow-skinny-2.4.2.tar.gz", hash = "sha256:954ef0db55331fb56cff2723c96ddda5cd18204f863b441b7bff67c59dceba9d"}, + {file = "mlflow_skinny-2.4.2-py3-none-any.whl", hash = "sha256:580ccf9adeee6862b1314f9fddbebc8fa02457fb2ba0f3dfb14b1e79377e79de"}, ] [package.dependencies] -click = ">=7.0" -cloudpickle = "*" -databricks-cli = ">=0.8.7" -entrypoints = "*" -gitpython = ">=2.1.0" -importlib-metadata = ">=3.7.0,<4.7.0 || >4.7.0" -packaging = "*" -protobuf = ">=3.12.0" -pytz = "*" -pyyaml = ">=5.1" -requests = ">=2.17.3" +click = ">=7.0,<9" +cloudpickle = "<3" +databricks-cli = ">=0.8.7,<1" +entrypoints = "<1" +gitpython = ">=2.1.0,<4" +importlib-metadata = ">=3.7.0,<4.7.0 || >4.7.0,<7" +packaging = "<24" +protobuf = ">=3.12.0,<5" +pytz = "<2024" +pyyaml = ">=5.1,<7" +requests = ">=2.17.3,<3" +sqlparse = ">=0.4.0,<1" [package.extras] aliyun-oss = ["aliyunstoreplugin"] -extras = ["azureml-core (>=1.2.0)", "boto3", "google-cloud-storage (>=1.30.0)", "kubernetes", "mlserver (>=0.5.3)", "mlserver-mlflow (>=0.5.3)", "pyarrow", "pysftp", "scikit-learn", "virtualenv"] -pipelines = ["Jinja2 (>=3.0)", "ipython (>=7.0)", "markdown (>=3.3)", "pandas-profiling (>=3.1)", "pyarrow (>=7.0)", "scikit-learn (>=1.0)", "shap (>=0.40)"] +databricks = ["azure-storage-file-datalake (>12)", "boto3 (>1)", "google-cloud-storage (>=1.30.0)"] +extras = ["azureml-core (>=1.2.0)", "boto3", "google-cloud-storage (>=1.30.0)", "kubernetes", "mlserver (>=1.2.0,!=1.3.1)", "mlserver-mlflow (>=1.2.0,!=1.3.1)", "prometheus-flask-exporter", "pyarrow", "pysftp", "requests-auth-aws-sigv4", "virtualenv"] +gateway = ["fastapi (<1)", "pydantic (>=1.0,<3)", "uvicorn (<1)"] sqlserver = ["mlflow-dbstore"] [[package]] name = "more-itertools" version = "9.1.0" description = "More routines for operating on iterables, beyond itertools" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2214,26 +2306,27 @@ files = [ [[package]] name = "msal" -version = "1.18.0" +version = "1.22.0" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." -category = "main" optional = false python-versions = "*" files = [ - {file = "msal-1.18.0-py2.py3-none-any.whl", hash = "sha256:9c10e6cb32e0b6b8eaafc1c9a68bc3b2ff71505e0c5b8200799582d8b9f22947"}, - {file = "msal-1.18.0.tar.gz", hash = "sha256:576af55866038b60edbcb31d831325a1bd8241ed272186e2832968fd4717d202"}, + {file = "msal-1.22.0-py2.py3-none-any.whl", hash = "sha256:9120b7eafdf061c92f7b3d744e5f325fca35873445fa8ffebb40b1086a13dd58"}, + {file = "msal-1.22.0.tar.gz", hash = "sha256:8a82f5375642c1625c89058018430294c109440dce42ea667d466c2cab520acd"}, ] [package.dependencies] -cryptography = ">=0.6,<40" +cryptography = ">=0.6,<43" PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} requests = ">=2.0.0,<3" +[package.extras] +broker = ["pymsalruntime (>=0.13.2,<0.14)"] + [[package]] name = "msal-extensions" version = "1.0.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." -category = "main" optional = false python-versions = "*" files = [ @@ -2244,23 +2337,23 @@ files = [ [package.dependencies] msal = ">=0.4.1,<2.0.0" portalocker = [ - {version = ">=1.6,<3", markers = "python_version >= \"3.5\" and platform_system == \"Windows\""}, {version = ">=1.0,<3", markers = "python_version >= \"3.5\" and platform_system != \"Windows\""}, + {version = ">=1.6,<3", markers = "python_version >= \"3.5\" and platform_system == \"Windows\""}, ] [[package]] name = "msrest" -version = "0.6.21" +version = "0.7.1" description = "AutoRest swagger generator Python client runtime." -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "msrest-0.6.21-py2.py3-none-any.whl", hash = "sha256:c840511c845330e96886011a236440fafc2c9aff7b2df9c0a92041ee2dee3782"}, - {file = "msrest-0.6.21.tar.gz", hash = "sha256:72661bc7bedc2dc2040e8f170b6e9ef226ee6d3892e01affd4d26b06474d68d8"}, + {file = "msrest-0.7.1-py3-none-any.whl", hash = "sha256:21120a810e1233e5e6cc7fe40b474eeb4ec6f757a15d7cf86702c369f9567c32"}, + {file = "msrest-0.7.1.zip", hash = "sha256:6e7661f46f3afd88b75667b7187a92829924446c7ea1d169be8c4bb7eeb788b9"}, ] [package.dependencies] +azure-core = ">=1.24.0" certifi = ">=2017.4.17" isodate = ">=0.6.0" requests = ">=2.16,<3.0" @@ -2273,7 +2366,6 @@ async = ["aiodns", "aiohttp (>=3.0)"] name = "msrestazure" version = "0.6.4" description = "AutoRest swagger generator Python client runtime. Azure-specific module." -category = "main" optional = false python-versions = "*" files = [ @@ -2288,80 +2380,93 @@ six = "*" [[package]] name = "multidict" -version = "6.0.2" +version = "6.0.4" description = "multidict implementation" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, - {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, - {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, - {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, - {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, - {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, - {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, - {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, - {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, - {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, - {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, - {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, - {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, +optional = false +python-versions = ">=3.7" +files = [ + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, + {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, + {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, + {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, + {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, + {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, + {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, + {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, + {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, + {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, + {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, + {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, + {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, ] [[package]] name = "ndg-httpsclient" version = "0.5.1" description = "Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL" -category = "main" optional = false -python-versions = ">=2.7,<3.0.0 || >=3.4.0" +python-versions = ">=2.7,<3.0.dev0 || >=3.4.dev0" files = [ {file = "ndg_httpsclient-0.5.1-py2-none-any.whl", hash = "sha256:d2c7225f6a1c6cf698af4ebc962da70178a99bcde24ee6d1961c4f3338130d57"}, {file = "ndg_httpsclient-0.5.1-py3-none-any.whl", hash = "sha256:dd174c11d971b6244a891f7be2b32ca9853d3797a72edb34fa5d7b07d8fff7d4"}, @@ -2374,14 +2479,13 @@ PyOpenSSL = "*" [[package]] name = "nodeenv" -version = "1.7.0" +version = "1.8.0" description = "Node.js virtual environment builder" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ - {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, - {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, + {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, + {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, ] [package.dependencies] @@ -2391,7 +2495,6 @@ setuptools = "*" name = "numpy" version = "1.23.1" description = "NumPy is the fundamental package for array computing with Python." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2421,14 +2524,13 @@ files = [ [[package]] name = "oauthlib" -version = "3.2.0" +version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, - {file = "oauthlib-3.2.0.tar.gz", hash = "sha256:23a8208d75b902797ea29fd31fa80a15ed9dc2c6c16fe73f5d346f83f6fa27a2"}, + {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, + {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, ] [package.extras] @@ -2440,7 +2542,6 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "omegaconf" version = "2.3.0" description = "A flexible configuration library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2449,19 +2550,18 @@ files = [ ] [package.dependencies] -antlr4-python3-runtime = ">=4.9.0,<4.10.0" +antlr4-python3-runtime = "==4.9.*" PyYAML = ">=5.1.0" [[package]] name = "opencensus" -version = "0.11.0" +version = "0.11.2" description = "A stats collection and distributed tracing framework" -category = "main" optional = false python-versions = "*" files = [ - {file = "opencensus-0.11.0-py2.py3-none-any.whl", hash = "sha256:f1bdaad838bdf558f4ffc2bb2e5e1bf4834d79076e9dc67b49238641a8c516af"}, - {file = "opencensus-0.11.0.tar.gz", hash = "sha256:026216abab89d94d850492f3dc65950055ec4f84115fa6c7beaffba44a346e42"}, + {file = "opencensus-0.11.2-py2.py3-none-any.whl", hash = "sha256:7a1a34b87c8db3d9984e97ff05739058342f24de1d700766d59044eee8fb3b3f"}, + {file = "opencensus-0.11.2.tar.gz", hash = "sha256:6154042a236b9ecdd55a23dfbb2743bb3deacd0687e3e0391ec2e0c74950d66f"}, ] [package.dependencies] @@ -2472,7 +2572,6 @@ opencensus-context = ">=0.1.3" name = "opencensus-context" version = "0.1.3" description = "OpenCensus Runtime Context" -category = "main" optional = false python-versions = "*" files = [ @@ -2482,20 +2581,19 @@ files = [ [[package]] name = "opencensus-ext-azure" -version = "1.1.7" +version = "1.1.9" description = "OpenCensus Azure Monitor Exporter" -category = "main" optional = false python-versions = "*" files = [ - {file = "opencensus-ext-azure-1.1.7.tar.gz", hash = "sha256:f9eefecd03fbbbf8f924aca5120e5d21e88b7fc05291cbf8a8e796c542742597"}, - {file = "opencensus_ext_azure-1.1.7-py2.py3-none-any.whl", hash = "sha256:49309224e0682b554c6fee6a420dc5366b9c5bb46aca906753872018c183a12e"}, + {file = "opencensus-ext-azure-1.1.9.tar.gz", hash = "sha256:507608b77e9d8eaab6ffd5ff11b7ceb87f54e4a6a940c4b814331b4d1b034151"}, + {file = "opencensus_ext_azure-1.1.9-py2.py3-none-any.whl", hash = "sha256:166c858e70fb7b39d01ff7d9f745588c521070ff2cfe177f77b63ee87f5076ac"}, ] [package.dependencies] azure-core = ">=1.12.0,<2.0.0" azure-identity = ">=1.5.0,<2.0.0" -opencensus = ">=0.11.0,<1.0.0" +opencensus = ">=0.11.2,<1.0.0" psutil = ">=5.6.3" requests = ">=2.19.0" @@ -2503,7 +2601,6 @@ requests = ">=2.19.0" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2516,40 +2613,43 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pandas" -version = "1.4.3" +version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d51674ed8e2551ef7773820ef5dab9322be0828629f2cbf8d1fc31a0c4fed640"}, - {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:16ad23db55efcc93fa878f7837267973b61ea85d244fc5ff0ccbcfa5638706c5"}, - {file = "pandas-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:958a0588149190c22cdebbc0797e01972950c927a11a900fe6c2296f207b1d6f"}, - {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e48fbb64165cda451c06a0f9e4c7a16b534fcabd32546d531b3c240ce2844112"}, - {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f803320c9da732cc79210d7e8cc5c8019aad512589c910c66529eb1b1818230"}, - {file = "pandas-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:2893e923472a5e090c2d5e8db83e8f907364ec048572084c7d10ef93546be6d1"}, - {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:24ea75f47bbd5574675dae21d51779a4948715416413b30614c1e8b480909f81"}, - {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ebc990bd34f4ac3c73a2724c2dcc9ee7bf1ce6cf08e87bb25c6ad33507e318"}, - {file = "pandas-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d6c0106415ff1a10c326c49bc5dd9ea8b9897a6ca0c8688eb9c30ddec49535ef"}, - {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78b00429161ccb0da252229bcda8010b445c4bf924e721265bec5a6e96a92e92"}, - {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfbf16b1ea4f4d0ee11084d9c026340514d1d30270eaa82a9f1297b6c8ecbf0"}, - {file = "pandas-1.4.3-cp38-cp38-win32.whl", hash = "sha256:48350592665ea3cbcd07efc8c12ff12d89be09cd47231c7925e3b8afada9d50d"}, - {file = "pandas-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:605d572126eb4ab2eadf5c59d5d69f0608df2bf7bcad5c5880a47a20a0699e3e"}, - {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a3924692160e3d847e18702bb048dc38e0e13411d2b503fecb1adf0fcf950ba4"}, - {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07238a58d7cbc8a004855ade7b75bbd22c0db4b0ffccc721556bab8a095515f6"}, - {file = "pandas-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:755679c49460bd0d2f837ab99f0a26948e68fa0718b7e42afbabd074d945bf84"}, - {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41fc406e374590a3d492325b889a2686b31e7a7780bec83db2512988550dadbf"}, - {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d9382f72a4f0e93909feece6fef5500e838ce1c355a581b3d8f259839f2ea76"}, - {file = "pandas-1.4.3-cp39-cp39-win32.whl", hash = "sha256:0daf876dba6c622154b2e6741f29e87161f844e64f84801554f879d27ba63c0d"}, - {file = "pandas-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:721a3dd2f06ef942f83a819c0f3f6a648b2830b191a72bbe9451bcd49c3bd42e"}, - {file = "pandas-1.4.3.tar.gz", hash = "sha256:2ff7788468e75917574f080cd4681b27e1a7bf36461fe968b49a87b5a54d007c"}, + {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"}, + {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"}, + {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"}, + {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"}, + {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"}, + {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"}, + {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"}, + {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"}, + {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"}, + {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"}, + {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"}, + {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"}, + {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"}, + {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"}, + {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"}, + {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"}, + {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"}, + {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"}, + {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"}, + {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"}, + {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"}, + {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"}, + {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"}, + {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"}, + {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"}, + {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"}, + {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"}, ] [package.dependencies] numpy = [ - {version = ">=1.18.5", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, - {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.20.3", markers = "python_version < \"3.10\""}, {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, ] python-dateutil = ">=2.8.1" @@ -2560,77 +2660,56 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] [[package]] name = "paramiko" -version = "2.12.0" +version = "3.2.0" description = "SSH2 protocol library" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "paramiko-2.12.0-py2.py3-none-any.whl", hash = "sha256:b2df1a6325f6996ef55a8789d0462f5b502ea83b3c990cbb5bbe57345c6812c4"}, - {file = "paramiko-2.12.0.tar.gz", hash = "sha256:376885c05c5d6aa6e1f4608aac2a6b5b0548b1add40274477324605903d9cd49"}, + {file = "paramiko-3.2.0-py3-none-any.whl", hash = "sha256:df0f9dd8903bc50f2e10580af687f3015bf592a377cd438d2ec9546467a14eb8"}, + {file = "paramiko-3.2.0.tar.gz", hash = "sha256:93cdce625a8a1dc12204439d45033f3261bdb2c201648cfcdc06f9fd0f94ec29"}, ] [package.dependencies] -bcrypt = ">=3.1.3" -cryptography = ">=2.5" -pynacl = ">=1.0.1" -six = "*" +bcrypt = ">=3.2" +cryptography = ">=3.3" +pynacl = ">=1.5" [package.extras] -all = ["bcrypt (>=3.1.3)", "gssapi (>=1.4.1)", "invoke (>=1.3)", "pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "pywin32 (>=2.1.8)"] -ed25519 = ["bcrypt (>=3.1.3)", "pynacl (>=1.0.1)"] +all = ["gssapi (>=1.4.1)", "invoke (>=2.0)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] gssapi = ["gssapi (>=1.4.1)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] -invoke = ["invoke (>=1.3)"] +invoke = ["invoke (>=2.0)"] [[package]] name = "pathspec" -version = "0.11.0" +version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"}, - {file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"}, -] - -[[package]] -name = "pep517" -version = "0.12.0" -description = "Wrappers to build Python packages using PEP 517 hooks" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pep517-0.12.0-py2.py3-none-any.whl", hash = "sha256:dd884c326898e2c6e11f9e0b64940606a93eb10ea022a2e067959f3a110cf161"}, - {file = "pep517-0.12.0.tar.gz", hash = "sha256:931378d93d11b298cf511dd634cf5ea4cb249a28ef84160b3247ee9afb4e8ab0"}, + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] -[package.dependencies] -tomli = {version = ">=1.1.0", markers = "python_version >= \"3.6\""} - [[package]] name = "pip" -version = "22.3" +version = "23.1.2" description = "The PyPA recommended tool for installing Python packages." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pip-22.3-py3-none-any.whl", hash = "sha256:1daab4b8d3b97d1d763caeb01a4640a2250a0ea899e257b1e44b9eded91e15ab"}, - {file = "pip-22.3.tar.gz", hash = "sha256:8182aec21dad6c0a49a2a3d121a87cd524b950e0b6092b181625f07ebdde7530"}, + {file = "pip-23.1.2-py3-none-any.whl", hash = "sha256:3ef6ac33239e4027d9a5598a381b9d30880a1477e50039db2eac6e8a8f6d1b18"}, + {file = "pip-23.1.2.tar.gz", hash = "sha256:0e7c86f486935893c708287b30bd050a36ac827ec7fe5e43fe7cb198dd835fba"}, ] [[package]] name = "pip-tools" -version = "6.13.0" +version = "6.14.0" description = "pip-tools keeps your pinned dependencies fresh." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pip-tools-6.13.0.tar.gz", hash = "sha256:61d46bd2eb8016ed4a924e196e6e5b0a268cd3babd79e593048720db23522bb1"}, - {file = "pip_tools-6.13.0-py3-none-any.whl", hash = "sha256:50943f151d87e752abddec8158622c34ad7f292e193836e90e30d87da60b19d9"}, + {file = "pip-tools-6.14.0.tar.gz", hash = "sha256:06366be0e08d86b416407333e998b4d305d5bd925151b08942ed149380ba3e47"}, + {file = "pip_tools-6.14.0-py3-none-any.whl", hash = "sha256:c5ad042cd27c0b343b10db1db7f77a7d087beafbec59ae6df1bba4d3368dfe8c"}, ] [package.dependencies] @@ -2638,17 +2717,17 @@ build = "*" click = ">=8" pip = ">=22.2" setuptools = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} wheel = "*" [package.extras] -coverage = ["pytest-cov"] -testing = ["flit-core (>=2,<4)", "poetry-core (>=1.0.0)", "pytest (>=7.2.0)", "pytest-rerunfailures", "pytest-xdist"] +coverage = ["covdefaults", "pytest-cov"] +testing = ["flit-core (>=2,<4)", "poetry-core (>=1.0.0)", "pytest (>=7.2.0)", "pytest-rerunfailures", "pytest-xdist", "tomli-w"] [[package]] name = "pkginfo" version = "1.9.6" description = "Query metadata from sdists / bdists / installed packages." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2659,27 +2738,36 @@ files = [ [package.extras] testing = ["pytest", "pytest-cov"] +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +description = "Resolve a name to an object." +optional = false +python-versions = ">=3.6" +files = [ + {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, + {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, +] + [[package]] name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" +version = "3.8.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, + {file = "platformdirs-3.8.1-py3-none-any.whl", hash = "sha256:cec7b889196b9144d088e4c57d9ceef7374f6c39694ad1577a0aab50d27ea28c"}, + {file = "platformdirs-3.8.1.tar.gz", hash = "sha256:f87ca4fcff7d2b0f81c6a748a77973d7af0f4d526f98f308477c3c436c74d528"}, ] [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] -test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2693,14 +2781,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "portalocker" -version = "2.5.1" +version = "2.7.0" description = "Wraps the portalocker recipe for easy usage" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "portalocker-2.5.1-py2.py3-none-any.whl", hash = "sha256:400bae275366e7b840d4baad0654c6ec5994e07c40c423d78e9e1340279b8352"}, - {file = "portalocker-2.5.1.tar.gz", hash = "sha256:ae8e9cc2660da04bf41fa1a0eef7e300bb5e4a5869adfb1a6d8551632b559b2b"}, + {file = "portalocker-2.7.0-py2.py3-none-any.whl", hash = "sha256:a07c5b4f3985c3cf4798369631fb7011adb498e2a46d8440efc75a8f29a0f983"}, + {file = "portalocker-2.7.0.tar.gz", hash = "sha256:032e81d534a88ec1736d03f780ba073f047a06c478b06e2937486f334e955c51"}, ] [package.dependencies] @@ -2709,13 +2796,12 @@ pywin32 = {version = ">=226", markers = "platform_system == \"Windows\""} [package.extras] docs = ["sphinx (>=1.7.1)"] redis = ["redis"] -tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=3.0.3)"] +tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)"] [[package]] name = "pre-commit" version = "2.20.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2733,14 +2819,13 @@ virtualenv = ">=20.0.8" [[package]] name = "prometheus-client" -version = "0.14.1" +version = "0.17.1" description = "Python client for the Prometheus monitoring system." -category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"}, - {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"}, + {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, + {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, ] [package.extras] @@ -2748,14 +2833,13 @@ twisted = ["twisted"] [[package]] name = "prometheus-flask-exporter" -version = "0.20.2" +version = "0.22.4" description = "Prometheus metrics exporter for Flask" -category = "main" optional = true python-versions = "*" files = [ - {file = "prometheus_flask_exporter-0.20.2-py3-none-any.whl", hash = "sha256:946f8d631430258b9bf76c037a9f51a1d51f369cff84c8decc7e142e38d41197"}, - {file = "prometheus_flask_exporter-0.20.2.tar.gz", hash = "sha256:aab05c49880d12b7d4eaabee102cfe998da92ddaacf86ec4f37cfa08c00858da"}, + {file = "prometheus_flask_exporter-0.22.4-py3-none-any.whl", hash = "sha256:e130179c26d5a9b903c12c0d8826127ae491b04b298cae0b92b98677dcf2c06f"}, + {file = "prometheus_flask_exporter-0.22.4.tar.gz", hash = "sha256:959b69f1e740b6736ea53fe5f28dc2ab6229b2ebeade6582b3dbb5d74c7d58e4"}, ] [package.dependencies] @@ -2764,50 +2848,47 @@ prometheus-client = "*" [[package]] name = "protobuf" -version = "4.21.4" +version = "4.23.4" description = "" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-4.21.4-cp310-abi3-win32.whl", hash = "sha256:e113f3d1629cebc911b107ce704f1a17d7e1589efef5c498e202bd47df223955"}, - {file = "protobuf-4.21.4-cp310-abi3-win_amd64.whl", hash = "sha256:cb50d93ef748671b7e2537658869e00aaa8175d717d8e73a23fcd58842883229"}, - {file = "protobuf-4.21.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:142ef5d73d6cd1bd8ab539d7d73c3722f31d33e64914e01bb91439cfcef11a9f"}, - {file = "protobuf-4.21.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:47b7cf3e542fd50a3a7c24d0da13451bc362a32c0a9b905714942ea8cf35fa11"}, - {file = "protobuf-4.21.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:adeccfbffbf4c9d1e77da86dc995d76c837d01387e412066cc803ad037000892"}, - {file = "protobuf-4.21.4-cp37-cp37m-win32.whl", hash = "sha256:5e47947fbfefd5a1bdc7c28eea1d197ea6dba5812789c2429667831a55ef71b7"}, - {file = "protobuf-4.21.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d9b0398ff68017015ec2a37fb0ab390363a654362b15ca2e4543d3c82587768f"}, - {file = "protobuf-4.21.4-cp38-cp38-win32.whl", hash = "sha256:2ea8c841cc6422aea07d0f4f71f0e5e6e130de9a4b6c31a53b9d2a41a75f2d54"}, - {file = "protobuf-4.21.4-cp38-cp38-win_amd64.whl", hash = "sha256:a8119c029c60cf29b7eea5a9f56648482388e874611243f41cd10aff0a0e5461"}, - {file = "protobuf-4.21.4-cp39-cp39-win32.whl", hash = "sha256:0275902f8292039d4a022319d3f86e8b231ac4c51d7be4cb797890fb78c16b85"}, - {file = "protobuf-4.21.4-cp39-cp39-win_amd64.whl", hash = "sha256:5b95c5f515334dd3a811762e3c588b469bf39d4ee7b7f47ac1e0c41dc73809f7"}, - {file = "protobuf-4.21.4-py2.py3-none-any.whl", hash = "sha256:fd62b6eda64e199b5da651d6be42af2aa8e30805961af1fc5f70292affca78e3"}, - {file = "protobuf-4.21.4-py3-none-any.whl", hash = "sha256:7e51f6244e53e936abadf624ab3a0f06dc106b27473997374fbb34e6b2eb1e60"}, - {file = "protobuf-4.21.4.tar.gz", hash = "sha256:5783dc0d6edae631145337fabb18503b4f77274f94cdd22a4b26b9fe5029e718"}, + {file = "protobuf-4.23.4-cp310-abi3-win32.whl", hash = "sha256:5fea3c64d41ea5ecf5697b83e41d09b9589e6f20b677ab3c48e5f242d9b7897b"}, + {file = "protobuf-4.23.4-cp310-abi3-win_amd64.whl", hash = "sha256:7b19b6266d92ca6a2a87effa88ecc4af73ebc5cfde194dc737cf8ef23a9a3b12"}, + {file = "protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8547bf44fe8cec3c69e3042f5c4fb3e36eb2a7a013bb0a44c018fc1e427aafbd"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fee88269a090ada09ca63551bf2f573eb2424035bcf2cb1b121895b01a46594a"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:effeac51ab79332d44fba74660d40ae79985901ac21bca408f8dc335a81aa597"}, + {file = "protobuf-4.23.4-cp37-cp37m-win32.whl", hash = "sha256:c3e0939433c40796ca4cfc0fac08af50b00eb66a40bbbc5dee711998fb0bbc1e"}, + {file = "protobuf-4.23.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9053df6df8e5a76c84339ee4a9f5a2661ceee4a0dab019e8663c50ba324208b0"}, + {file = "protobuf-4.23.4-cp38-cp38-win32.whl", hash = "sha256:e1c915778d8ced71e26fcf43c0866d7499891bca14c4368448a82edc61fdbc70"}, + {file = "protobuf-4.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:351cc90f7d10839c480aeb9b870a211e322bf05f6ab3f55fcb2f51331f80a7d2"}, + {file = "protobuf-4.23.4-cp39-cp39-win32.whl", hash = "sha256:6dd9b9940e3f17077e820b75851126615ee38643c2c5332aa7a359988820c720"}, + {file = "protobuf-4.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:0a5759f5696895de8cc913f084e27fd4125e8fb0914bb729a17816a33819f474"}, + {file = "protobuf-4.23.4-py3-none-any.whl", hash = "sha256:e9d0be5bf34b275b9f87ba7407796556abeeba635455d036c7351f7c183ef8ff"}, + {file = "protobuf-4.23.4.tar.gz", hash = "sha256:ccd9430c0719dce806b93f89c91de7977304729e55377f872a92465d548329a9"}, ] [[package]] name = "psutil" -version = "5.9.4" +version = "5.9.5" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "psutil-5.9.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c1ca331af862803a42677c120aff8a814a804e09832f166f226bfd22b56feee8"}, - {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:68908971daf802203f3d37e78d3f8831b6d1014864d7a85937941bb35f09aefe"}, - {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ff89f9b835100a825b14c2808a106b6fdcc4b15483141482a12c725e7f78549"}, - {file = "psutil-5.9.4-cp27-cp27m-win32.whl", hash = "sha256:852dd5d9f8a47169fe62fd4a971aa07859476c2ba22c2254d4a1baa4e10b95ad"}, - {file = "psutil-5.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:9120cd39dca5c5e1c54b59a41d205023d436799b1c8c4d3ff71af18535728e94"}, - {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6b92c532979bafc2df23ddc785ed116fced1f492ad90a6830cf24f4d1ea27d24"}, - {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:efeae04f9516907be44904cc7ce08defb6b665128992a56957abc9b61dca94b7"}, - {file = "psutil-5.9.4-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:54d5b184728298f2ca8567bf83c422b706200bcbbfafdc06718264f9393cfeb7"}, - {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16653106f3b59386ffe10e0bad3bb6299e169d5327d3f187614b1cb8f24cf2e1"}, - {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c0d3d8e0078b7666984e11b12b88af2db11d11249a8ac8920dd5ef68a66e08"}, - {file = "psutil-5.9.4-cp36-abi3-win32.whl", hash = "sha256:149555f59a69b33f056ba1c4eb22bb7bf24332ce631c44a319cec09f876aaeff"}, - {file = "psutil-5.9.4-cp36-abi3-win_amd64.whl", hash = "sha256:fd8522436a6ada7b4aad6638662966de0d61d241cb821239b2ae7013d41a43d4"}, - {file = "psutil-5.9.4-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:6001c809253a29599bc0dfd5179d9f8a5779f9dffea1da0f13c53ee568115e1e"}, - {file = "psutil-5.9.4.tar.gz", hash = "sha256:3d7f9739eb435d4b1338944abe23f49584bde5395f27487d2ee25ad9a8774a62"}, + {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, + {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, + {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, + {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, + {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, + {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, + {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, + {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, + {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, + {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, + {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, + {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, + {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, + {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, ] [package.extras] @@ -2817,7 +2898,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2827,38 +2907,36 @@ files = [ [[package]] name = "pyarrow" -version = "9.0.0" +version = "11.0.0" description = "Python library for Apache Arrow" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyarrow-9.0.0-cp310-cp310-macosx_10_13_universal2.whl", hash = "sha256:767cafb14278165ad539a2918c14c1b73cf20689747c21375c38e3fe62884902"}, - {file = "pyarrow-9.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0238998dc692efcb4e41ae74738d7c1234723271ccf520bd8312dca07d49ef8d"}, - {file = "pyarrow-9.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:55328348b9139c2b47450d512d716c2248fd58e2f04e2fc23a65e18726666d42"}, - {file = "pyarrow-9.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc856628acd8d281652c15b6268ec7f27ebcb015abbe99d9baad17f02adc51f1"}, - {file = "pyarrow-9.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29eb3e086e2b26202f3a4678316b93cfb15d0e2ba20f3ec12db8fd9cc07cde63"}, - {file = "pyarrow-9.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e753f8fcf07d8e3a0efa0c8bd51fef5c90281ffd4c5637c08ce42cd0ac297de"}, - {file = "pyarrow-9.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:3eef8a981f45d89de403e81fb83b8119c20824caddf1404274e41a5d66c73806"}, - {file = "pyarrow-9.0.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:7fa56cbd415cef912677270b8e41baad70cde04c6d8a8336eeb2aba85aa93706"}, - {file = "pyarrow-9.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f8c46bde1030d704e2796182286d1c56846552c50a39ad5bf5a20c0d8159fc35"}, - {file = "pyarrow-9.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ad430cee28ebc4d6661fc7315747c7a18ae2a74e67498dcb039e1c762a2fb67"}, - {file = "pyarrow-9.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a60bb291a964f63b2717fb1b28f6615ffab7e8585322bfb8a6738e6b321282"}, - {file = "pyarrow-9.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9cef618159567d5f62040f2b79b1c7b38e3885f4ffad0ec97cd2d86f88b67cef"}, - {file = "pyarrow-9.0.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:5526a3bfb404ff6d31d62ea582cf2466c7378a474a99ee04d1a9b05de5264541"}, - {file = "pyarrow-9.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:da3e0f319509a5881867effd7024099fb06950a0768dad0d6873668bb88cfaba"}, - {file = "pyarrow-9.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c715eca2092273dcccf6f08437371e04d112f9354245ba2fbe6c801879450b7"}, - {file = "pyarrow-9.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f11a645a41ee531c3a5edda45dea07c42267f52571f818d388971d33fc7e2d4a"}, - {file = "pyarrow-9.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5b390bdcfb8c5b900ef543f911cdfec63e88524fafbcc15f83767202a4a2491"}, - {file = "pyarrow-9.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:d9eb04db626fa24fdfb83c00f76679ca0d98728cdbaa0481b6402bf793a290c0"}, - {file = "pyarrow-9.0.0-cp39-cp39-macosx_10_13_universal2.whl", hash = "sha256:4eebdab05afa23d5d5274b24c1cbeb1ba017d67c280f7d39fd8a8f18cbad2ec9"}, - {file = "pyarrow-9.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:02b820ecd1da02012092c180447de449fc688d0c3f9ff8526ca301cdd60dacd0"}, - {file = "pyarrow-9.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:92f3977e901db1ef5cba30d6cc1d7942b8d94b910c60f89013e8f7bb86a86eef"}, - {file = "pyarrow-9.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f241bd488c2705df930eedfe304ada71191dcf67d6b98ceda0cc934fd2a8388e"}, - {file = "pyarrow-9.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c5a073a930c632058461547e0bc572da1e724b17b6b9eb31a97da13f50cb6e0"}, - {file = "pyarrow-9.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59bcd5217a3ae1e17870792f82b2ff92df9f3862996e2c78e156c13e56ff62e"}, - {file = "pyarrow-9.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:fe2ce795fa1d95e4e940fe5661c3c58aee7181c730f65ac5dd8794a77228de59"}, - {file = "pyarrow-9.0.0.tar.gz", hash = "sha256:7fb02bebc13ab55573d1ae9bb5002a6d20ba767bf8569b52fce5301d42495ab7"}, +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyarrow-11.0.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:40bb42afa1053c35c749befbe72f6429b7b5f45710e85059cdd534553ebcf4f2"}, + {file = "pyarrow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7c28b5f248e08dea3b3e0c828b91945f431f4202f1a9fe84d1012a761324e1ba"}, + {file = "pyarrow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a37bc81f6c9435da3c9c1e767324ac3064ffbe110c4e460660c43e144be4ed85"}, + {file = "pyarrow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad7c53def8dbbc810282ad308cc46a523ec81e653e60a91c609c2233ae407689"}, + {file = "pyarrow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:25aa11c443b934078bfd60ed63e4e2d42461682b5ac10f67275ea21e60e6042c"}, + {file = "pyarrow-11.0.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:e217d001e6389b20a6759392a5ec49d670757af80101ee6b5f2c8ff0172e02ca"}, + {file = "pyarrow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad42bb24fc44c48f74f0d8c72a9af16ba9a01a2ccda5739a517aa860fa7e3d56"}, + {file = "pyarrow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d942c690ff24a08b07cb3df818f542a90e4d359381fbff71b8f2aea5bf58841"}, + {file = "pyarrow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f010ce497ca1b0f17a8243df3048055c0d18dcadbcc70895d5baf8921f753de5"}, + {file = "pyarrow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:2f51dc7ca940fdf17893227edb46b6784d37522ce08d21afc56466898cb213b2"}, + {file = "pyarrow-11.0.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:1cbcfcbb0e74b4d94f0b7dde447b835a01bc1d16510edb8bb7d6224b9bf5bafc"}, + {file = "pyarrow-11.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaee8f79d2a120bf3e032d6d64ad20b3af6f56241b0ffc38d201aebfee879d00"}, + {file = "pyarrow-11.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:410624da0708c37e6a27eba321a72f29d277091c8f8d23f72c92bada4092eb5e"}, + {file = "pyarrow-11.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2d53ba72917fdb71e3584ffc23ee4fcc487218f8ff29dd6df3a34c5c48fe8c06"}, + {file = "pyarrow-11.0.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:f12932e5a6feb5c58192209af1d2607d488cb1d404fbc038ac12ada60327fa34"}, + {file = "pyarrow-11.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:41a1451dd895c0b2964b83d91019e46f15b5564c7ecd5dcb812dadd3f05acc97"}, + {file = "pyarrow-11.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc2344be80e5dce4e1b80b7c650d2fc2061b9eb339045035a1baa34d5b8f1c"}, + {file = "pyarrow-11.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f40be0d7381112a398b93c45a7e69f60261e7b0269cc324e9f739ce272f4f70"}, + {file = "pyarrow-11.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:362a7c881b32dc6b0eccf83411a97acba2774c10edcec715ccaab5ebf3bb0835"}, + {file = "pyarrow-11.0.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ccbf29a0dadfcdd97632b4f7cca20a966bb552853ba254e874c66934931b9841"}, + {file = "pyarrow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e99be85973592051e46412accea31828da324531a060bd4585046a74ba45854"}, + {file = "pyarrow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69309be84dcc36422574d19c7d3a30a7ea43804f12552356d1ab2a82a713c418"}, + {file = "pyarrow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da93340fbf6f4e2a62815064383605b7ffa3e9eeb320ec839995b1660d69f89b"}, + {file = "pyarrow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:caad867121f182d0d3e1a0d36f197df604655d0b466f1bc9bafa903aa95083e4"}, + {file = "pyarrow-11.0.0.tar.gz", hash = "sha256:5461c57dbdb211a632a48facb9b39bbeb8a7905ec95d768078525283caef5f6d"}, ] [package.dependencies] @@ -2866,36 +2944,33 @@ numpy = ">=1.16.6" [[package]] name = "pyasn1" -version = "0.4.8" -description = "ASN.1 types and codecs" -category = "main" +version = "0.5.0" +description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, - {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, + {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, + {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, ] [[package]] name = "pyasn1-modules" -version = "0.2.8" -description = "A collection of ASN.1-based protocols modules." -category = "main" +version = "0.3.0" +description = "A collection of ASN.1-based protocols modules" optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"}, - {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"}, + {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"}, + {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"}, ] [package.dependencies] -pyasn1 = ">=0.4.6,<0.5.0" +pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2905,47 +2980,46 @@ files = [ [[package]] name = "pydantic" -version = "1.9.1" +version = "1.9.2" description = "Data validation and settings management using python type hints" -category = "main" optional = false python-versions = ">=3.6.1" files = [ - {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, - {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, - {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"}, - {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"}, - {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"}, - {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"}, - {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"}, - {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"}, - {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"}, - {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"}, - {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"}, - {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"}, - {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"}, - {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"}, - {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"}, - {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"}, - {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"}, - {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"}, - {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"}, - {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"}, - {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"}, - {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"}, - {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"}, - {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"}, - {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"}, - {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"}, - {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"}, - {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"}, - {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"}, - {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"}, - {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"}, - {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"}, - {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"}, - {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, - {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, + {file = "pydantic-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e"}, + {file = "pydantic-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08"}, + {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c"}, + {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131"}, + {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76"}, + {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567"}, + {file = "pydantic-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044"}, + {file = "pydantic-1.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555"}, + {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84"}, + {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f"}, + {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb"}, + {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b"}, + {file = "pydantic-1.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001"}, + {file = "pydantic-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56"}, + {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4"}, + {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f"}, + {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979"}, + {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d"}, + {file = "pydantic-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7"}, + {file = "pydantic-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3"}, + {file = "pydantic-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa"}, + {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3"}, + {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0"}, + {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8"}, + {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8"}, + {file = "pydantic-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326"}, + {file = "pydantic-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801"}, + {file = "pydantic-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44"}, + {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747"}, + {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453"}, + {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb"}, + {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15"}, + {file = "pydantic-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55"}, + {file = "pydantic-1.9.2-py3-none-any.whl", hash = "sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e"}, + {file = "pydantic-1.9.2.tar.gz", hash = "sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d"}, ] [package.dependencies] @@ -2957,24 +3031,22 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pydash" -version = "4.9.0" +version = "5.1.2" description = "The kitchen sink of Python utility libraries for doing \"stuff\" in a functional way. Based on the Lo-Dash Javascript library." -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "pydash-4.9.0-py2.py3-none-any.whl", hash = "sha256:a743212a586f92980ee093fdec4a984cb97d38fe6d5dadd3c4eb1de57bc5fb4a"}, - {file = "pydash-4.9.0.tar.gz", hash = "sha256:44f7217669511901bf234628231a8d8fccd89a53c23b54c35759ee0838a67ba7"}, + {file = "pydash-5.1.2-py3-none-any.whl", hash = "sha256:a2e0c0900fc5a3cc16c9556d34d7e8a59caa9adebcf319876c9a3ccc35dc545f"}, + {file = "pydash-5.1.2.tar.gz", hash = "sha256:0556062f6583c21fa70dd9a2c1a4e63bbe8cd54e14fecdfb579b46c36d93836f"}, ] [package.extras] -dev = ["Sphinx", "coverage", "flake8", "mock", "pylint", "pytest", "pytest-cov", "sphinx-rtd-theme", "tox", "twine", "wheel"] +dev = ["Sphinx", "black", "build", "coverage", "docformatter", "flake8", "flake8-black", "flake8-bugbear", "flake8-isort", "invoke", "isort", "pylint", "pytest", "pytest-cov", "sphinx-rtd-theme", "tox", "twine", "wheel"] [[package]] name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2987,30 +3059,28 @@ plugins = ["importlib-metadata"] [[package]] name = "pyjwt" -version = "2.3.0" +version = "2.7.0" description = "JSON Web Token implementation in Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "PyJWT-2.3.0-py3-none-any.whl", hash = "sha256:e0c4bb8d9f0af0c7f5b1ec4c5036309617d03d56932877f2f7a0beeb5318322f"}, - {file = "PyJWT-2.3.0.tar.gz", hash = "sha256:b888b4d56f06f6dcd777210c334e69c737be74755d3e5e9ee3fe67dc18a0ee41"}, + {file = "PyJWT-2.7.0-py3-none-any.whl", hash = "sha256:ba2b425b15ad5ef12f200dc67dd56af4e26de2331f965c5439994dad075876e1"}, + {file = "PyJWT-2.7.0.tar.gz", hash = "sha256:bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074"}, ] [package.dependencies] -cryptography = {version = ">=3.3.1", optional = true, markers = "extra == \"crypto\""} +cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""} [package.extras] -crypto = ["cryptography (>=3.3.1)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.3.1)", "mypy", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3030,91 +3100,89 @@ files = [ cffi = ">=1.4.1" [package.extras] -docs = ["sphinx (>=1.6.5)", "sphinx_rtd_theme"] +docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyopenssl" -version = "22.0.0" +version = "23.2.0" description = "Python wrapper module around the OpenSSL library" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "pyOpenSSL-22.0.0-py2.py3-none-any.whl", hash = "sha256:ea252b38c87425b64116f808355e8da644ef9b07e429398bfece610f893ee2e0"}, - {file = "pyOpenSSL-22.0.0.tar.gz", hash = "sha256:660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d0087f1bf"}, + {file = "pyOpenSSL-23.2.0-py3-none-any.whl", hash = "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2"}, + {file = "pyOpenSSL-23.2.0.tar.gz", hash = "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac"}, ] [package.dependencies] -cryptography = ">=35.0" +cryptography = ">=38.0.0,<40.0.0 || >40.0.0,<40.0.1 || >40.0.1,<42" [package.extras] -docs = ["sphinx", "sphinx-rtd-theme"] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-3.1.0-py3-none-any.whl", hash = "sha256:d554a96d1a7d3ddaf7183104485bc19fd80543ad6ac5bdb6426719d766fb06c1"}, + {file = "pyparsing-3.1.0.tar.gz", hash = "sha256:edb662d6fe322d6e990b1594b5feaeadf806803359e3d4d42f11e295e588f0ea"}, ] [package.extras] diagrams = ["jinja2", "railroad-diagrams"] [[package]] -name = "pyreadline3" -version = "3.4.1" -description = "A python implementation of GNU readline." -category = "main" +name = "pyproject-api" +version = "1.5.0" +description = "API to interact with the python pyproject.toml based projects" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, - {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, + {file = "pyproject_api-1.5.0-py3-none-any.whl", hash = "sha256:4c111277dfb96bcd562c6245428f27250b794bfe3e210b8714c4f893952f2c17"}, + {file = "pyproject_api-1.5.0.tar.gz", hash = "sha256:0962df21f3e633b8ddb9567c011e6c1b3dcdfc31b7860c0ede7e24c5a1200fbe"}, ] +[package.dependencies] +packaging = ">=21.3" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +docs = ["furo (>=2022.9.29)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] +testing = ["covdefaults (>=2.2.2)", "importlib-metadata (>=5.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "virtualenv (>=20.17)", "wheel (>=0.38.4)"] + [[package]] -name = "pyrsistent" -version = "0.18.1" -description = "Persistent/Functional/Immutable data structures" -category = "main" +name = "pyproject-hooks" +version = "1.0.0" +description = "Wrappers to call pyproject.toml-based build backend hooks." optional = false python-versions = ">=3.7" files = [ - {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, - {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, - {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, - {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, - {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, - {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, - {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, - {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, - {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, - {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, - {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, - {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, - {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, - {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, - {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, - {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, + {file = "pyproject_hooks-1.0.0-py3-none-any.whl", hash = "sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8"}, + {file = "pyproject_hooks-1.0.0.tar.gz", hash = "sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5"}, +] + +[package.dependencies] +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "pyreadline3" +version = "3.4.1" +description = "A python implementation of GNU readline." +optional = false +python-versions = "*" +files = [ + {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, + {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, ] [[package]] name = "pysocks" version = "1.7.1" description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3127,7 +3195,6 @@ files = [ name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3152,7 +3219,6 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-cov" version = "3.0.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3171,7 +3237,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -3184,14 +3249,13 @@ six = ">=1.5" [[package]] name = "python-slugify" -version = "6.1.2" +version = "8.0.1" description = "A Python slugify application that also handles Unicode" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7" files = [ - {file = "python-slugify-6.1.2.tar.gz", hash = "sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1"}, - {file = "python_slugify-6.1.2-py2.py3-none-any.whl", hash = "sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927"}, + {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, + {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, ] [package.dependencies] @@ -3204,7 +3268,6 @@ unidecode = ["Unidecode (>=1.1.1)"] name = "pytoolconfig" version = "1.2.2" description = "Python tool configuration" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3225,43 +3288,42 @@ validation = ["pydantic (>=1.7.4)"] [[package]] name = "pytz" -version = "2022.1" +version = "2022.7.1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, - {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, + {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, + {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, ] [[package]] name = "pywin32" -version = "227" +version = "306" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" files = [ - {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"}, - {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"}, - {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"}, - {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"}, - {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"}, - {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"}, - {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"}, - {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"}, - {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"}, - {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"}, - {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"}, - {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, + {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, + {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, + {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, + {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, + {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, + {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, + {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, + {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, ] [[package]] name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3311,7 +3373,6 @@ files = [ name = "querystring-parser" version = "1.2.4" description = "QueryString parser for Python/Django that correctly handles nested dictionaries" -category = "main" optional = true python-versions = "*" files = [ @@ -3322,24 +3383,38 @@ files = [ [package.dependencies] six = "*" +[[package]] +name = "referencing" +version = "0.29.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.29.1-py3-none-any.whl", hash = "sha256:d3c8f323ee1480095da44d55917cfb8278d73d6b4d5f677e3e40eb21314ac67f"}, + {file = "referencing-0.29.1.tar.gz", hash = "sha256:90cb53782d550ba28d2166ef3f55731f38397def8832baac5d45235f1995e35e"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" -version = "2.28.1" +version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {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,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""} -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -3349,7 +3424,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3366,18 +3440,17 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "rich" -version = "13.3.5" +version = "13.4.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.3.5-py3-none-any.whl", hash = "sha256:69cdf53799e63f38b95b9bf9c875f8c90e78dd62b2f00c13a911c7a3b9fa4704"}, - {file = "rich-13.3.5.tar.gz", hash = "sha256:2d11b9b8dd03868f09b4fffadc84a6a8cda574e40dc90821bd845720ebb8e89c"}, + {file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"}, + {file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"}, ] [package.dependencies] -markdown-it-py = ">=2.2.0,<3.0.0" +markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} @@ -3386,14 +3459,13 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rope" -version = "1.7.0" +version = "1.9.0" description = "a python refactoring library..." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "rope-1.7.0-py3-none-any.whl", hash = "sha256:893dd80ba7077fc9f6f42b0a849372076b70f1d6e405b9f0cc52781ffa0e6890"}, - {file = "rope-1.7.0.tar.gz", hash = "sha256:ba39581d0f8dee4ae8b5b5e82e35d03cebad965ccb127b7eaab9755cdc85e85a"}, + {file = "rope-1.9.0-py3-none-any.whl", hash = "sha256:2ed32d72cd2c4395bb1d569e38fd4f15d6080cfadd61b6e5c565fd39e3f677aa"}, + {file = "rope-1.9.0.tar.gz", hash = "sha256:f48d708132c0e062b411308732ca13933b976486b4b53d1e804f94ed08d69503"}, ] [package.dependencies] @@ -3402,12 +3474,118 @@ pytoolconfig = {version = ">=1.2.2", extras = ["global"]} [package.extras] dev = ["build (>=0.7.0)", "pre-commit (>=2.20.0)", "pytest (>=7.0.1)", "pytest-timeout (>=2.1.0)"] doc = ["pytoolconfig[doc]", "sphinx (>=4.5.0)", "sphinx-autodoc-typehints (>=1.18.1)", "sphinx-rtd-theme (>=1.0.0)"] +release = ["pip-tools (>=6.12.1)", "toml (>=0.10.2)", "twine (>=4.0.2)"] + +[[package]] +name = "rpds-py" +version = "0.8.10" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.8.10-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:93d06cccae15b3836247319eee7b6f1fdcd6c10dabb4e6d350d27bd0bdca2711"}, + {file = "rpds_py-0.8.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3816a890a6a9e9f1de250afa12ca71c9a7a62f2b715a29af6aaee3aea112c181"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7c6304b894546b5a6bdc0fe15761fa53fe87d28527a7142dae8de3c663853e1"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad3bfb44c8840fb4be719dc58e229f435e227fbfbe133dc33f34981ff622a8f8"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14f1c356712f66653b777ecd8819804781b23dbbac4eade4366b94944c9e78ad"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82bb361cae4d0a627006dadd69dc2f36b7ad5dc1367af9d02e296ec565248b5b"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2e3c4f2a8e3da47f850d7ea0d7d56720f0f091d66add889056098c4b2fd576c"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15a90d0ac11b4499171067ae40a220d1ca3cb685ec0acc356d8f3800e07e4cb8"}, + {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:70bb9c8004b97b4ef7ae56a2aa56dfaa74734a0987c78e7e85f00004ab9bf2d0"}, + {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d64f9f88d5203274a002b54442cafc9c7a1abff2a238f3e767b70aadf919b451"}, + {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ccbbd276642788c4376fbe8d4e6c50f0fb4972ce09ecb051509062915891cbf0"}, + {file = "rpds_py-0.8.10-cp310-none-win32.whl", hash = "sha256:fafc0049add8043ad07ab5382ee80d80ed7e3699847f26c9a5cf4d3714d96a84"}, + {file = "rpds_py-0.8.10-cp310-none-win_amd64.whl", hash = "sha256:915031002c86a5add7c6fd4beb601b2415e8a1c956590a5f91d825858e92fe6e"}, + {file = "rpds_py-0.8.10-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:84eb541a44f7a18f07a6bfc48b95240739e93defe1fdfb4f2a295f37837945d7"}, + {file = "rpds_py-0.8.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f59996d0550894affaad8743e97b9b9c98f638b221fac12909210ec3d9294786"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9adb5664b78fcfcd830000416c8cc69853ef43cb084d645b3f1f0296edd9bae"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f96f3f98fbff7af29e9edf9a6584f3c1382e7788783d07ba3721790625caa43e"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:376b8de737401050bd12810003d207e824380be58810c031f10ec563ff6aef3d"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d1c2bc319428d50b3e0fa6b673ab8cc7fa2755a92898db3a594cbc4eeb6d1f7"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73a1e48430f418f0ac3dfd87860e4cc0d33ad6c0f589099a298cb53724db1169"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134ec8f14ca7dbc6d9ae34dac632cdd60939fe3734b5d287a69683c037c51acb"}, + {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4b519bac7c09444dd85280fd60f28c6dde4389c88dddf4279ba9b630aca3bbbe"}, + {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9cd57981d9fab04fc74438d82460f057a2419974d69a96b06a440822d693b3c0"}, + {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:69d089c026f6a8b9d64a06ff67dc3be196707b699d7f6ca930c25f00cf5e30d8"}, + {file = "rpds_py-0.8.10-cp311-none-win32.whl", hash = "sha256:220bdcad2d2936f674650d304e20ac480a3ce88a40fe56cd084b5780f1d104d9"}, + {file = "rpds_py-0.8.10-cp311-none-win_amd64.whl", hash = "sha256:6c6a0225b8501d881b32ebf3f5807a08ad3685b5eb5f0a6bfffd3a6e039b2055"}, + {file = "rpds_py-0.8.10-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e3d0cd3dff0e7638a7b5390f3a53057c4e347f4ef122ee84ed93fc2fb7ea4aa2"}, + {file = "rpds_py-0.8.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d77dff3a5aa5eedcc3da0ebd10ff8e4969bc9541aa3333a8d41715b429e99f47"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41c89a366eae49ad9e65ed443a8f94aee762931a1e3723749d72aeac80f5ef2f"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3793c21494bad1373da517001d0849eea322e9a049a0e4789e50d8d1329df8e7"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:805a5f3f05d186c5d50de2e26f765ba7896d0cc1ac5b14ffc36fae36df5d2f10"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b01b39ad5411563031ea3977bbbc7324d82b088e802339e6296f082f78f6115c"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f1e860be21f3e83011116a65e7310486300e08d9a3028e73e8d13bb6c77292"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a13c8e56c46474cd5958d525ce6a9996727a83d9335684e41f5192c83deb6c58"}, + {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:93d99f957a300d7a4ced41615c45aeb0343bb8f067c42b770b505de67a132346"}, + {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:148b0b38d719c0760e31ce9285a9872972bdd7774969a4154f40c980e5beaca7"}, + {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3cc5e5b5514796f45f03a568981971b12a3570f3de2e76114f7dc18d4b60a3c4"}, + {file = "rpds_py-0.8.10-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:e8e24b210a4deb5a7744971f8f77393005bae7f873568e37dfd9effe808be7f7"}, + {file = "rpds_py-0.8.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b41941583adce4242af003d2a8337b066ba6148ca435f295f31ac6d9e4ea2722"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c490204e16bca4f835dba8467869fe7295cdeaa096e4c5a7af97f3454a97991"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee45cd1d84beed6cbebc839fd85c2e70a3a1325c8cfd16b62c96e2ffb565eca"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a8ca409f1252e1220bf09c57290b76cae2f14723746215a1e0506472ebd7bdf"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96b293c0498c70162effb13100624c5863797d99df75f2f647438bd10cbf73e4"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4627520a02fccbd324b33c7a83e5d7906ec746e1083a9ac93c41ac7d15548c7"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e39d7ab0c18ac99955b36cd19f43926450baba21e3250f053e0704d6ffd76873"}, + {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ba9f1d1ebe4b63801977cec7401f2d41e888128ae40b5441270d43140efcad52"}, + {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:802f42200d8caf7f25bbb2a6464cbd83e69d600151b7e3b49f49a47fa56b0a38"}, + {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d19db6ba816e7f59fc806c690918da80a7d186f00247048cd833acdab9b4847b"}, + {file = "rpds_py-0.8.10-cp38-none-win32.whl", hash = "sha256:7947e6e2c2ad68b1c12ee797d15e5f8d0db36331200b0346871492784083b0c6"}, + {file = "rpds_py-0.8.10-cp38-none-win_amd64.whl", hash = "sha256:fa326b3505d5784436d9433b7980171ab2375535d93dd63fbcd20af2b5ca1bb6"}, + {file = "rpds_py-0.8.10-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7b38a9ac96eeb6613e7f312cd0014de64c3f07000e8bf0004ad6ec153bac46f8"}, + {file = "rpds_py-0.8.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c4d42e83ddbf3445e6514f0aff96dca511421ed0392d9977d3990d9f1ba6753c"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b21575031478609db6dbd1f0465e739fe0e7f424a8e7e87610a6c7f68b4eb16"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:574868858a7ff6011192c023a5289158ed20e3f3b94b54f97210a773f2f22921"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae40f4a70a1f40939d66ecbaf8e7edc144fded190c4a45898a8cfe19d8fc85ea"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37f7ee4dc86db7af3bac6d2a2cedbecb8e57ce4ed081f6464510e537589f8b1e"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:695f642a3a5dbd4ad2ffbbacf784716ecd87f1b7a460843b9ddf965ccaeafff4"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f43ab4cb04bde6109eb2555528a64dfd8a265cc6a9920a67dcbde13ef53a46c8"}, + {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a11ab0d97be374efd04f640c04fe5c2d3dabc6dfb998954ea946ee3aec97056d"}, + {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:92cf5b3ee60eef41f41e1a2cabca466846fb22f37fc580ffbcb934d1bcab225a"}, + {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ceaac0c603bf5ac2f505a78b2dcab78d3e6b706be6596c8364b64cc613d208d2"}, + {file = "rpds_py-0.8.10-cp39-none-win32.whl", hash = "sha256:dd4f16e57c12c0ae17606c53d1b57d8d1c8792efe3f065a37cb3341340599d49"}, + {file = "rpds_py-0.8.10-cp39-none-win_amd64.whl", hash = "sha256:c03a435d26c3999c2a8642cecad5d1c4d10c961817536af52035f6f4ee2f5dd0"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0da53292edafecba5e1d8c1218f99babf2ed0bf1c791d83c0ab5c29b57223068"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7d20a8ed227683401cc508e7be58cba90cc97f784ea8b039c8cd01111e6043e0"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97cab733d303252f7c2f7052bf021a3469d764fc2b65e6dbef5af3cbf89d4892"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c398fda6df361a30935ab4c4bccb7f7a3daef2964ca237f607c90e9f3fdf66f"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2eb4b08c45f8f8d8254cdbfacd3fc5d6b415d64487fb30d7380b0d0569837bf1"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7dfb1cbb895810fa2b892b68153c17716c6abaa22c7dc2b2f6dcf3364932a1c"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89c92b74e8bf6f53a6f4995fd52f4bd510c12f103ee62c99e22bc9e05d45583c"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9c0683cb35a9b5881b41bc01d5568ffc667910d9dbc632a1fba4e7d59e98773"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0eeb2731708207d0fe2619afe6c4dc8cb9798f7de052da891de5f19c0006c315"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:7495010b658ec5b52835f21d8c8b1a7e52e194c50f095d4223c0b96c3da704b1"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c72ebc22e70e04126158c46ba56b85372bc4d54d00d296be060b0db1671638a4"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2cd3045e7f6375dda64ed7db1c5136826facb0159ea982f77d9cf6125025bd34"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2418cf17d653d24ffb8b75e81f9f60b7ba1b009a23298a433a4720b2a0a17017"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a2edf8173ac0c7a19da21bc68818be1321998528b5e3f748d6ee90c0ba2a1fd"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f29b8c55fd3a2bc48e485e37c4e2df3317f43b5cc6c4b6631c33726f52ffbb3"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a7d20c1cf8d7b3960c5072c265ec47b3f72a0c608a9a6ee0103189b4f28d531"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:521fc8861a86ae54359edf53a15a05fabc10593cea7b3357574132f8427a5e5a"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5c191713e98e7c28800233f039a32a42c1a4f9a001a8a0f2448b07391881036"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:083df0fafe199371206111583c686c985dddaf95ab3ee8e7b24f1fda54515d09"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ed41f3f49507936a6fe7003985ea2574daccfef999775525d79eb67344e23767"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:2614c2732bf45de5c7f9e9e54e18bc78693fa2f635ae58d2895b7965e470378c"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c60528671d9d467009a6ec284582179f6b88651e83367d0ab54cb739021cd7de"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ee744fca8d1ea822480a2a4e7c5f2e1950745477143668f0b523769426060f29"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a38b9f526d0d6cbdaa37808c400e3d9f9473ac4ff64d33d9163fd05d243dbd9b"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60e0e86e870350e03b3e25f9b1dd2c6cc72d2b5f24e070249418320a6f9097b7"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f53f55a8852f0e49b0fc76f2412045d6ad9d5772251dea8f55ea45021616e7d5"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c493365d3fad241d52f096e4995475a60a80f4eba4d3ff89b713bc65c2ca9615"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:300eb606e6b94a7a26f11c8cc8ee59e295c6649bd927f91e1dbd37a4c89430b6"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a665f6f1a87614d1c3039baf44109094926dedf785e346d8b0a728e9cabd27a"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:927d784648211447201d4c6f1babddb7971abad922b32257ab74de2f2750fad0"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c200b30dd573afa83847bed7e3041aa36a8145221bf0cfdfaa62d974d720805c"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:08166467258fd0240a1256fce272f689f2360227ee41c72aeea103e9e4f63d2b"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:996cc95830de9bc22b183661d95559ec6b3cd900ad7bc9154c4cbf5be0c9b734"}, + {file = "rpds_py-0.8.10.tar.gz", hash = "sha256:13e643ce8ad502a0263397362fb887594b49cf84bf518d6038c16f235f2bcea4"}, +] [[package]] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -3420,45 +3598,46 @@ pyasn1 = ">=0.1.3" [[package]] name = "scipy" -version = "1.8.1" -description = "SciPy: Scientific Library for Python" -category = "main" +version = "1.10.1" +description = "Fundamental algorithms for scientific computing in Python" optional = true -python-versions = ">=3.8,<3.11" -files = [ - {file = "scipy-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:65b77f20202599c51eb2771d11a6b899b97989159b7975e9b5259594f1d35ef4"}, - {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e013aed00ed776d790be4cb32826adb72799c61e318676172495383ba4570aa4"}, - {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:02b567e722d62bddd4ac253dafb01ce7ed8742cf8031aea030a41414b86c1125"}, - {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1da52b45ce1a24a4a22db6c157c38b39885a990a566748fc904ec9f03ed8c6ba"}, - {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d"}, - {file = "scipy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:4e53a55f6a4f22de01ffe1d2f016e30adedb67a699a310cdcac312806807ca81"}, - {file = "scipy-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28d2cab0c6ac5aa131cc5071a3a1d8e1366dad82288d9ec2ca44df78fb50e649"}, - {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:6311e3ae9cc75f77c33076cb2794fb0606f14c8f1b1c9ff8ce6005ba2c283621"}, - {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:3b69b90c9419884efeffaac2c38376d6ef566e6e730a231e15722b0ab58f0328"}, - {file = "scipy-1.8.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6cc6b33139eb63f30725d5f7fa175763dc2df6a8f38ddf8df971f7c345b652dc"}, - {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c4e3ae8a716c8b3151e16c05edb1daf4cb4d866caa385e861556aff41300c14"}, - {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b22fbeef3807966ea42d8163322366dd89da9bebdc075da7034cee3a1441ca"}, - {file = "scipy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:4b93ec6f4c3c4d041b26b5f179a6aab8f5045423117ae7a45ba9710301d7e462"}, - {file = "scipy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:70ebc84134cf0c504ce6a5f12d6db92cb2a8a53a49437a6bb4edca0bc101f11c"}, - {file = "scipy-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f3e7a8867f307e3359cc0ed2c63b61a1e33a19080f92fe377bc7d49f646f2ec1"}, - {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:2ef0fbc8bcf102c1998c1f16f15befe7cffba90895d6e84861cd6c6a33fb54f6"}, - {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:83606129247e7610b58d0e1e93d2c5133959e9cf93555d3c27e536892f1ba1f2"}, - {file = "scipy-1.8.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93d07494a8900d55492401917a119948ed330b8c3f1d700e0b904a578f10ead4"}, - {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3b3c8924252caaffc54d4a99f1360aeec001e61267595561089f8b5900821bb"}, - {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70de2f11bf64ca9921fda018864c78af7147025e467ce9f4a11bc877266900a6"}, - {file = "scipy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:1166514aa3bbf04cb5941027c6e294a000bba0cf00f5cdac6c77f2dad479b434"}, - {file = "scipy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:9dd4012ac599a1e7eb63c114d1eee1bcfc6dc75a29b589ff0ad0bb3d9412034f"}, - {file = "scipy-1.8.1.tar.gz", hash = "sha256:9e3fb1b0e896f14a85aa9a28d5f755daaeeb54c897b746df7a55ccb02b340f33"}, -] - -[package.dependencies] -numpy = ">=1.17.3,<1.25.0" +python-versions = "<3.12,>=3.8" +files = [ + {file = "scipy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7354fd7527a4b0377ce55f286805b34e8c54b91be865bac273f527e1b839019"}, + {file = "scipy-1.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4b3f429188c66603a1a5c549fb414e4d3bdc2a24792e061ffbd607d3d75fd84e"}, + {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1553b5dcddd64ba9a0d95355e63fe6c3fc303a8fd77c7bc91e77d61363f7433f"}, + {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c0ff64b06b10e35215abce517252b375e580a6125fd5fdf6421b98efbefb2d2"}, + {file = "scipy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:fae8a7b898c42dffe3f7361c40d5952b6bf32d10c4569098d276b4c547905ee1"}, + {file = "scipy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f1564ea217e82c1bbe75ddf7285ba0709ecd503f048cb1236ae9995f64217bd"}, + {file = "scipy-1.10.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d925fa1c81b772882aa55bcc10bf88324dadb66ff85d548c71515f6689c6dac5"}, + {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaea0a6be54462ec027de54fca511540980d1e9eea68b2d5c1dbfe084797be35"}, + {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a35c4242ec5f292c3dd364a7c71a61be87a3d4ddcc693372813c0b73c9af1d"}, + {file = "scipy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:43b8e0bcb877faf0abfb613d51026cd5cc78918e9530e375727bf0625c82788f"}, + {file = "scipy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5678f88c68ea866ed9ebe3a989091088553ba12c6090244fdae3e467b1139c35"}, + {file = "scipy-1.10.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:39becb03541f9e58243f4197584286e339029e8908c46f7221abeea4b749fa88"}, + {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bce5869c8d68cf383ce240e44c1d9ae7c06078a9396df68ce88a1230f93a30c1"}, + {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07c3457ce0b3ad5124f98a86533106b643dd811dd61b548e78cf4c8786652f6f"}, + {file = "scipy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:049a8bbf0ad95277ffba9b3b7d23e5369cc39e66406d60422c8cfef40ccc8415"}, + {file = "scipy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cd9f1027ff30d90618914a64ca9b1a77a431159df0e2a195d8a9e8a04c78abf9"}, + {file = "scipy-1.10.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:79c8e5a6c6ffaf3a2262ef1be1e108a035cf4f05c14df56057b64acc5bebffb6"}, + {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51af417a000d2dbe1ec6c372dfe688e041a7084da4fdd350aeb139bd3fb55353"}, + {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4735d6c28aad3cdcf52117e0e91d6b39acd4272f3f5cd9907c24ee931ad601"}, + {file = "scipy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ff7f37b1bf4417baca958d254e8e2875d0cc23aaadbe65b3d5b3077b0eb23ea"}, + {file = "scipy-1.10.1.tar.gz", hash = "sha256:2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5"}, +] + +[package.dependencies] +numpy = ">=1.19.5,<1.27.0" + +[package.extras] +dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "secretstorage" version = "3.3.3" description = "Python bindings to FreeDesktop.org Secret Service API" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3472,26 +3651,24 @@ jeepney = ">=0.6" [[package]] name = "setuptools" -version = "67.7.2" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"}, - {file = "setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "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", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3503,7 +3680,6 @@ files = [ name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3513,95 +3689,100 @@ files = [ [[package]] name = "sqlalchemy" -version = "1.4.39" +version = "1.4.49" description = "Database Abstraction Library" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "SQLAlchemy-1.4.39-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:4770eb3ba69ec5fa41c681a75e53e0e342ac24c1f9220d883458b5596888e43a"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:752ef2e8dbaa3c5d419f322e3632f00ba6b1c3230f65bc97c2ff5c5c6c08f441"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27m-win32.whl", hash = "sha256:b30e70f1594ee3c8902978fd71900d7312453922827c4ce0012fa6a8278d6df4"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27m-win_amd64.whl", hash = "sha256:864d4f89f054819cb95e93100b7d251e4d114d1c60bc7576db07b046432af280"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8f901be74f00a13bf375241a778455ee864c2c21c79154aad196b7a994e1144f"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1745987ada1890b0e7978abdb22c133eca2e89ab98dc17939042240063e1ef21"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ede13a472caa85a13abe5095e71676af985d7690eaa8461aeac5c74f6600b6c0"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7f13644b15665f7322f9e0635129e0ef2098409484df67fcd225d954c5861559"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26146c59576dfe9c546c9f45397a7c7c4a90c25679492ff610a7500afc7d03a6"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-win32.whl", hash = "sha256:91d2b89bb0c302f89e753bea008936acfa4e18c156fb264fe41eb6bbb2bbcdeb"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-win_amd64.whl", hash = "sha256:50e7569637e2e02253295527ff34666706dbb2bc5f6c61a5a7f44b9610c9bb09"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:107df519eb33d7f8e0d0d052128af2f25066c1a0f6b648fd1a9612ab66800b86"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f24d4d6ec301688c59b0c4bb1c1c94c5d0bff4ecad33bb8f5d9efdfb8d8bc925"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b2785dd2a0c044a36836857ac27310dc7a99166253551ee8f5408930958cc60"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6e2c8581c6620136b9530137954a8376efffd57fe19802182c7561b0ab48b48"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-win32.whl", hash = "sha256:fbc076f79d830ae4c9d49926180a1140b49fa675d0f0d555b44c9a15b29f4c80"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-win_amd64.whl", hash = "sha256:0ec54460475f0c42512895c99c63d90dd2d9cbd0c13491a184182e85074b04c5"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:6f95706da857e6e79b54c33c1214f5467aab10600aa508ddd1239d5df271986e"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:621f050e72cc7dfd9ad4594ff0abeaad954d6e4a2891545e8f1a53dcdfbef445"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a05771617bfa723ba4cef58d5b25ac028b0d68f28f403edebed5b8243b3a87"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20bf65bcce65c538e68d5df27402b39341fabeecf01de7e0e72b9d9836c13c52"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-win32.whl", hash = "sha256:f2a42acc01568b9701665e85562bbff78ec3e21981c7d51d56717c22e5d3d58b"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-win_amd64.whl", hash = "sha256:6d81de54e45f1d756785405c9d06cd17918c2eecc2d4262dc2d276ca612c2f61"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:5c2d19bfb33262bf987ef0062345efd0f54c4189c2d95159c72995457bf4a359"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14ea8ff2d33c48f8e6c3c472111d893b9e356284d1482102da9678195e5a8eac"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec3985c883d6d217cf2013028afc6e3c82b8907192ba6195d6e49885bfc4b19d"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1962dfee37b7fb17d3d4889bf84c4ea08b1c36707194c578f61e6e06d12ab90f"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-win32.whl", hash = "sha256:047ef5ccd8860f6147b8ac6c45a4bc573d4e030267b45d9a1c47b55962ff0e6f"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-win_amd64.whl", hash = "sha256:b71be98ef6e180217d1797185c75507060a57ab9cd835653e0112db16a710f0d"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:365b75938049ae31cf2176efd3d598213ddb9eb883fbc82086efa019a5f649df"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7a7667d928ba6ee361a3176e1bef6847c1062b37726b33505cc84136f657e0d"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c6d00cb9da8d0cbfaba18cad046e94b06de6d4d0ffd9d4095a3ad1838af22528"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0538b66f959771c56ff996d828081908a6a52a47c5548faed4a3d0a027a5368"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-win32.whl", hash = "sha256:d1f665e50592caf4cad3caed3ed86f93227bffe0680218ccbb293bd5a6734ca8"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-win_amd64.whl", hash = "sha256:8b773c9974c272aae0fa7e95b576d98d17ee65f69d8644f9b6ffc90ee96b4d19"}, - {file = "SQLAlchemy-1.4.39.tar.gz", hash = "sha256:8194896038753b46b08a0b0ae89a5d80c897fb601dd51e243ed5720f1f155d27"}, -] - -[package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} + {file = "SQLAlchemy-1.4.49-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e126cf98b7fd38f1e33c64484406b78e937b1a280e078ef558b95bf5b6895f6"}, + {file = "SQLAlchemy-1.4.49-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:03db81b89fe7ef3857b4a00b63dedd632d6183d4ea5a31c5d8a92e000a41fc71"}, + {file = "SQLAlchemy-1.4.49-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:95b9df9afd680b7a3b13b38adf6e3a38995da5e162cc7524ef08e3be4e5ed3e1"}, + {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a63e43bf3f668c11bb0444ce6e809c1227b8f067ca1068898f3008a273f52b09"}, + {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f835c050ebaa4e48b18403bed2c0fda986525896efd76c245bdd4db995e51a4c"}, + {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c21b172dfb22e0db303ff6419451f0cac891d2e911bb9fbf8003d717f1bcf91"}, + {file = "SQLAlchemy-1.4.49-cp310-cp310-win32.whl", hash = "sha256:5fb1ebdfc8373b5a291485757bd6431de8d7ed42c27439f543c81f6c8febd729"}, + {file = "SQLAlchemy-1.4.49-cp310-cp310-win_amd64.whl", hash = "sha256:f8a65990c9c490f4651b5c02abccc9f113a7f56fa482031ac8cb88b70bc8ccaa"}, + {file = "SQLAlchemy-1.4.49-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8923dfdf24d5aa8a3adb59723f54118dd4fe62cf59ed0d0d65d940579c1170a4"}, + {file = "SQLAlchemy-1.4.49-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9ab2c507a7a439f13ca4499db6d3f50423d1d65dc9b5ed897e70941d9e135b0"}, + {file = "SQLAlchemy-1.4.49-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5debe7d49b8acf1f3035317e63d9ec8d5e4d904c6e75a2a9246a119f5f2fdf3d"}, + {file = "SQLAlchemy-1.4.49-cp311-cp311-win32.whl", hash = "sha256:82b08e82da3756765c2e75f327b9bf6b0f043c9c3925fb95fb51e1567fa4ee87"}, + {file = "SQLAlchemy-1.4.49-cp311-cp311-win_amd64.whl", hash = "sha256:171e04eeb5d1c0d96a544caf982621a1711d078dbc5c96f11d6469169bd003f1"}, + {file = "SQLAlchemy-1.4.49-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:36e58f8c4fe43984384e3fbe6341ac99b6b4e083de2fe838f0fdb91cebe9e9cb"}, + {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b31e67ff419013f99ad6f8fc73ee19ea31585e1e9fe773744c0f3ce58c039c30"}, + {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c14b29d9e1529f99efd550cd04dbb6db6ba5d690abb96d52de2bff4ed518bc95"}, + {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c40f3470e084d31247aea228aa1c39bbc0904c2b9ccbf5d3cfa2ea2dac06f26d"}, + {file = "SQLAlchemy-1.4.49-cp36-cp36m-win32.whl", hash = "sha256:706bfa02157b97c136547c406f263e4c6274a7b061b3eb9742915dd774bbc264"}, + {file = "SQLAlchemy-1.4.49-cp36-cp36m-win_amd64.whl", hash = "sha256:a7f7b5c07ae5c0cfd24c2db86071fb2a3d947da7bd487e359cc91e67ac1c6d2e"}, + {file = "SQLAlchemy-1.4.49-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:4afbbf5ef41ac18e02c8dc1f86c04b22b7a2125f2a030e25bbb4aff31abb224b"}, + {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24e300c0c2147484a002b175f4e1361f102e82c345bf263242f0449672a4bccf"}, + {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:201de072b818f8ad55c80d18d1a788729cccf9be6d9dc3b9d8613b053cd4836d"}, + {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653ed6817c710d0c95558232aba799307d14ae084cc9b1f4c389157ec50df5c"}, + {file = "SQLAlchemy-1.4.49-cp37-cp37m-win32.whl", hash = "sha256:647e0b309cb4512b1f1b78471fdaf72921b6fa6e750b9f891e09c6e2f0e5326f"}, + {file = "SQLAlchemy-1.4.49-cp37-cp37m-win_amd64.whl", hash = "sha256:ab73ed1a05ff539afc4a7f8cf371764cdf79768ecb7d2ec691e3ff89abbc541e"}, + {file = "SQLAlchemy-1.4.49-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:37ce517c011560d68f1ffb28af65d7e06f873f191eb3a73af5671e9c3fada08a"}, + {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1878ce508edea4a879015ab5215546c444233881301e97ca16fe251e89f1c55"}, + {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e8e608983e6f85d0852ca61f97e521b62e67969e6e640fe6c6b575d4db68557"}, + {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf956da45290df6e809ea12c54c02ace7f8ff4d765d6d3dfb3655ee876ce58d"}, + {file = "SQLAlchemy-1.4.49-cp38-cp38-win32.whl", hash = "sha256:f167c8175ab908ce48bd6550679cc6ea20ae169379e73c7720a28f89e53aa532"}, + {file = "SQLAlchemy-1.4.49-cp38-cp38-win_amd64.whl", hash = "sha256:45806315aae81a0c202752558f0df52b42d11dd7ba0097bf71e253b4215f34f4"}, + {file = "SQLAlchemy-1.4.49-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b6d0c4b15d65087738a6e22e0ff461b407533ff65a73b818089efc8eb2b3e1de"}, + {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a843e34abfd4c797018fd8d00ffffa99fd5184c421f190b6ca99def4087689bd"}, + {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1c890421651b45a681181301b3497e4d57c0d01dc001e10438a40e9a9c25ee77"}, + {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d26f280b8f0a8f497bc10573849ad6dc62e671d2468826e5c748d04ed9e670d5"}, + {file = "SQLAlchemy-1.4.49-cp39-cp39-win32.whl", hash = "sha256:ec2268de67f73b43320383947e74700e95c6770d0c68c4e615e9897e46296294"}, + {file = "SQLAlchemy-1.4.49-cp39-cp39-win_amd64.whl", hash = "sha256:bbdf16372859b8ed3f4d05f925a984771cd2abd18bd187042f24be4886c2a15f"}, + {file = "SQLAlchemy-1.4.49.tar.gz", hash = "sha256:06ff25cbae30c396c4b7737464f2a7fc37a67b7da409993b182b024cec80aed9"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\")"} [package.extras] 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)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] 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-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql", "pymysql (<1)"] -sqlcipher = ["sqlcipher3_binary"] +sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlparse" -version = "0.4.2" +version = "0.4.4" description = "A non-validating SQL parser." -category = "main" optional = true python-versions = ">=3.5" files = [ - {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, - {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, + {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, + {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, ] +[package.extras] +dev = ["build", "flake8"] +doc = ["sphinx"] +test = ["pytest", "pytest-cov"] + [[package]] name = "strictyaml" -version = "1.6.1" +version = "1.7.3" description = "Strict, typed YAML parser" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7.0" files = [ - {file = "strictyaml-1.6.1.tar.gz", hash = "sha256:688be16ee5d1a2f94aa4abdc6d881e8e254d173d724ac88725955fe66bdb63d4"}, + {file = "strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7"}, + {file = "strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407"}, ] [package.dependencies] @@ -3609,14 +3790,13 @@ python-dateutil = ">=2.6.0" [[package]] name = "tabulate" -version = "0.8.10" +version = "0.9.0" description = "Pretty-print tabular data" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "tabulate-0.8.10-py3-none-any.whl", hash = "sha256:0ba055423dbaa164b9e456abe7920c5e8ed33fcc16f6d1b2f2d152c8e1e8b4fc"}, - {file = "tabulate-0.8.10.tar.gz", hash = "sha256:6c57f3f3dd7ac2782770155f3adb2db0b1a269637e42f27599925e64b114f519"}, + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, ] [package.extras] @@ -3626,7 +3806,6 @@ widechars = ["wcwidth"] name = "text-unidecode" version = "1.3" description = "The most basic Text::Unidecode port" -category = "main" optional = false python-versions = "*" files = [ @@ -3638,7 +3817,6 @@ files = [ name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3650,7 +3828,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3662,7 +3839,6 @@ files = [ name = "toposort" version = "1.10" description = "Implements a topological sort algorithm." -category = "main" optional = false python-versions = "*" files = [ @@ -3672,40 +3848,40 @@ files = [ [[package]] name = "tox" -version = "3.25.1" +version = "4.0.0" description = "tox is a generic virtualenv management and test command line tool" -category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "tox-3.25.1-py2.py3-none-any.whl", hash = "sha256:c38e15f4733683a9cc0129fba078633e07eb0961f550a010ada879e95fb32632"}, - {file = "tox-3.25.1.tar.gz", hash = "sha256:c138327815f53bc6da4fe56baec5f25f00622ae69ef3fe4e1e385720e22486f9"}, + {file = "tox-4.0.0-py3-none-any.whl", hash = "sha256:e6adcebddfec5e456e5d2884f82b9468e38c4ec6439ec97f7f1fb85d5b1bf846"}, + {file = "tox-4.0.0.tar.gz", hash = "sha256:17643b0e29c41f784c9c266a13302dc0604884b9ceff6686fbb31bada4a7aa3a"}, ] [package.dependencies] -colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} -filelock = ">=3.0.0" -packaging = ">=14" -pluggy = ">=0.12.0" -py = ">=1.4.17" -six = ">=1.14.0" -toml = ">=0.9.4" -virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" +cachetools = ">=5.2" +chardet = ">=5.1" +colorama = ">=0.4.6" +filelock = ">=3.8.2" +packaging = ">=21.3" +platformdirs = ">=2.5.4" +pluggy = ">=1" +pyproject-api = ">=1.2.1" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} +virtualenv = ">=20.17.1" [package.extras] -docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] -testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] +docs = ["furo (>=2022.9.29)", "sphinx (>=5.3)", "sphinx-argparse-cli (>=1.10)", "sphinx-autodoc-typehints (>=1.19.5)", "sphinx-copybutton (>=0.5.1)", "sphinx-inline-tabs (>=2022.1.2b11)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.8)"] +testing = ["build[virtualenv] (>=0.9)", "covdefaults (>=2.2.2)", "devpi-process (>=0.3)", "diff-cover (>=7.2)", "distlib (>=0.3.6)", "flaky (>=3.7)", "hatch-vcs (>=0.2)", "hatchling (>=1.11.1)", "psutil (>=5.9.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-xdist (>=3.1)", "re-assert (>=1.1)", "time-machine (>=2.8.2)"] [[package]] name = "tqdm" -version = "4.63.0" +version = "4.65.0" description = "Fast, Extensible Progress Meter" -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "tqdm-4.63.0-py2.py3-none-any.whl", hash = "sha256:e643e071046f17139dea55b880dc9b33822ce21613b4a4f5ea57f202833dbc29"}, - {file = "tqdm-4.63.0.tar.gz", hash = "sha256:1d9835ede8e394bb8c9dcbffbca02d717217113adc679236873eeaac5bc0b3cd"}, + {file = "tqdm-4.65.0-py3-none-any.whl", hash = "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"}, + {file = "tqdm-4.65.0.tar.gz", hash = "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5"}, ] [package.dependencies] @@ -3714,63 +3890,60 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] dev = ["py-make (>=0.1.0)", "twine", "wheel"] notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.3.0" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, - {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, + {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, + {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.16.1" +version = "20.23.1" description = "Virtual Python Environment builder" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "virtualenv-20.16.1-py2.py3-none-any.whl", hash = "sha256:bde925b831f36053a0fa7a468ca337dee26851c9f0bfc3d72a79d534703102d2"}, - {file = "virtualenv-20.16.1.tar.gz", hash = "sha256:6cc42cad4d1a15c7ea5ed68e602eb49cc243b52d2eead36e577555cb56bf8705"}, + {file = "virtualenv-20.23.1-py3-none-any.whl", hash = "sha256:34da10f14fea9be20e0fd7f04aba9732f84e593dac291b757ce42e3368a39419"}, + {file = "virtualenv-20.23.1.tar.gz", hash = "sha256:8ff19a38c1021c742148edc4f81cb43d7f8c6816d2ede2ab72af5b84c749ade1"}, ] [package.dependencies] -distlib = ">=0.3.1,<1" -filelock = ">=3.2,<4" -platformdirs = ">=2,<3" +distlib = ">=0.3.6,<1" +filelock = ">=3.12,<4" +platformdirs = ">=3.5.1,<4" [package.extras] -docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] -testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "packaging (>=20.0)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezer (>=0.4.6)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.8)", "time-machine (>=2.9)"] [[package]] name = "waitress" version = "2.1.2" description = "Waitress WSGI server" -category = "main" optional = true python-versions = ">=3.7.0" files = [ @@ -3784,14 +3957,13 @@ testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] [[package]] name = "websocket-client" -version = "1.3.3" +version = "1.6.1" description = "WebSocket client for Python with low level API options" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "websocket-client-1.3.3.tar.gz", hash = "sha256:d58c5f284d6a9bf8379dab423259fe8f85b70d5fa5d2916d5791a84594b122b1"}, - {file = "websocket_client-1.3.3-py3-none-any.whl", hash = "sha256:5d55652dc1d0b3c734f044337d929aaf83f4f9138816ec680c1aefefb4dc4877"}, + {file = "websocket-client-1.6.1.tar.gz", hash = "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd"}, + {file = "websocket_client-1.6.1-py3-none-any.whl", hash = "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d"}, ] [package.extras] @@ -3801,117 +3973,116 @@ test = ["websockets"] [[package]] name = "werkzeug" -version = "2.2.0" +version = "2.3.6" description = "The comprehensive WSGI web application library." -category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Werkzeug-2.2.0-py3-none-any.whl", hash = "sha256:81806f8a5b35e6cb1b39a6f28dabf0e123f069c8596119a1a9a43838870016cd"}, - {file = "Werkzeug-2.2.0.tar.gz", hash = "sha256:fe8bcdcef40275ed915fc734c2527a39d705b57a716d4f09e790296abbd16a7f"}, + {file = "Werkzeug-2.3.6-py3-none-any.whl", hash = "sha256:935539fa1413afbb9195b24880778422ed620c0fc09670945185cce4d91a8890"}, + {file = "Werkzeug-2.3.6.tar.gz", hash = "sha256:98c774df2f91b05550078891dee5f0eb0cb797a522c757a2452b9cee5b202330"}, ] [package.dependencies] MarkupSafe = ">=2.1.1" [package.extras] -watchdog = ["watchdog"] +watchdog = ["watchdog (>=2.3)"] [[package]] name = "wheel" -version = "0.37.1" +version = "0.40.0" description = "A built-package format for Python" -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "wheel-0.37.1-py2.py3-none-any.whl", hash = "sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a"}, - {file = "wheel-0.37.1.tar.gz", hash = "sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4"}, + {file = "wheel-0.40.0-py3-none-any.whl", hash = "sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247"}, + {file = "wheel-0.40.0.tar.gz", hash = "sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873"}, ] [package.extras] -test = ["pytest (>=3.0.0)", "pytest-cov"] +test = ["pytest (>=6.0.0)"] [[package]] name = "yarl" -version = "1.7.2" +version = "1.9.2" description = "Yet another URL library" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"}, - {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b"}, - {file = "yarl-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72"}, - {file = "yarl-1.7.2-cp310-cp310-win32.whl", hash = "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c"}, - {file = "yarl-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265"}, - {file = "yarl-1.7.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d"}, - {file = "yarl-1.7.2-cp36-cp36m-win32.whl", hash = "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1"}, - {file = "yarl-1.7.2-cp36-cp36m-win_amd64.whl", hash = "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913"}, - {file = "yarl-1.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b"}, - {file = "yarl-1.7.2-cp37-cp37m-win32.whl", hash = "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1"}, - {file = "yarl-1.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b"}, - {file = "yarl-1.7.2-cp38-cp38-win32.whl", hash = "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef"}, - {file = "yarl-1.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8"}, - {file = "yarl-1.7.2-cp39-cp39-win32.whl", hash = "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d"}, - {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, - {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, + {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82"}, + {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8"}, + {file = "yarl-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528"}, + {file = "yarl-1.9.2-cp310-cp310-win32.whl", hash = "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3"}, + {file = "yarl-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde"}, + {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6"}, + {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb"}, + {file = "yarl-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a"}, + {file = "yarl-1.9.2-cp311-cp311-win32.whl", hash = "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8"}, + {file = "yarl-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051"}, + {file = "yarl-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582"}, + {file = "yarl-1.9.2-cp37-cp37m-win32.whl", hash = "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b"}, + {file = "yarl-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368"}, + {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac"}, + {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4"}, + {file = "yarl-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b"}, + {file = "yarl-1.9.2-cp38-cp38-win32.whl", hash = "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7"}, + {file = "yarl-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72"}, + {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9"}, + {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8"}, + {file = "yarl-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80"}, + {file = "yarl-1.9.2-cp39-cp39-win32.whl", hash = "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623"}, + {file = "yarl-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18"}, + {file = "yarl-1.9.2.tar.gz", hash = "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"}, ] [package.dependencies] @@ -3920,19 +4091,18 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.8.1" +version = "3.16.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"}, - {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"}, + {file = "zipp-3.16.0-py3-none-any.whl", hash = "sha256:5dadc3ad0a1f825fe42ce1bce0f2fc5a13af2e6b2d386af5b0ff295bc0a287d3"}, + {file = "zipp-3.16.0.tar.gz", hash = "sha256:1876cb065531855bbe83b6c489dcf69ecc28f1068d8e95959fe8bbc77774c941"}, ] [package.extras] -docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] -testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] mlflow = ["azureml-mlflow", "mlflow"] @@ -3940,4 +4110,4 @@ mlflow = ["azureml-mlflow", "mlflow"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.11" -content-hash = "6e7ff188739412892d5149a21467dc09b9d3206552947e93affd20662f03640e" +content-hash = "c7aaed42fa29bae997e667bcb63d9f405c9e77ac06e54bc6d3391a295b8f0aef" From 8b3748a9c78faab9f4f552fba8c67b55a1905141 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sat, 15 Jul 2023 09:48:03 +0000 Subject: [PATCH 32/58] fix tests and poetry lockfile --- poetry.lock | 185 +++++++++++++++++------------------- tests/conf/base/catalog.yml | 18 ++++ tests/test_distributed.py | 6 +- tests/test_generator.py | 32 +++++-- 4 files changed, 132 insertions(+), 109 deletions(-) create mode 100644 tests/conf/base/catalog.yml diff --git a/poetry.lock b/poetry.lock index 627faf9..faba959 100644 --- a/poetry.lock +++ b/poetry.lock @@ -535,23 +535,23 @@ msrest = ">=0.6.21" [[package]] name = "azure-storage-file-share" -version = "12.12.0" +version = "12.13.0" description = "Microsoft Azure Azure File Share Storage Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-storage-file-share-12.12.0.zip", hash = "sha256:cf7e47f749fc06ecb99b64612ab4bd94227b9931497a4c27c2865717c3daa089"}, - {file = "azure_storage_file_share-12.12.0-py3-none-any.whl", hash = "sha256:3abb168b94daac3ffe74ef6552fd86822a97e340ba9c6db0f8a5ae5053a08852"}, + {file = "azure-storage-file-share-12.13.0.zip", hash = "sha256:a33a952163ef025d1da1aa8aefb3fe541871f6afba2e393fabb5ab00fd993e6f"}, + {file = "azure_storage_file_share-12.13.0-py3-none-any.whl", hash = "sha256:7343f8f5accd3616565e37303cb8d12809e64a03c42a15386ef6cf5d3a134dbb"}, ] [package.dependencies] -azure-core = ">=1.26.0,<2.0.0" +azure-core = ">=1.28.0,<2.0.0" cryptography = ">=2.1.4" isodate = ">=0.6.1" -typing-extensions = ">=4.0.1" +typing-extensions = ">=4.3.0" [package.extras] -aio = ["azure-core[aio] (>=1.26.0,<2.0.0)"] +aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] [[package]] name = "azureml-core" @@ -1063,13 +1063,13 @@ files = [ [[package]] name = "click" -version = "8.1.4" +version = "8.1.5" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.4-py3-none-any.whl", hash = "sha256:2739815aaa5d2c986a88f1e9230c55e17f0caad3d958a5e13ad0797c166db9e3"}, - {file = "click-8.1.4.tar.gz", hash = "sha256:b97d0c74955da062a7d4ef92fadb583806a585b2ea81958a81bd72726cbb8e37"}, + {file = "click-8.1.5-py3-none-any.whl", hash = "sha256:e576aa487d679441d7d30abb87e1b43d24fc53bffb8758443b1a9e1cee504548"}, + {file = "click-8.1.5.tar.gz", hash = "sha256:4be4b1af8d665c6d942909916d31a213a106800c47d0eeba73d34da3cbc11367"}, ] [package.dependencies] @@ -1329,13 +1329,13 @@ distro = ">=1.2.0" [[package]] name = "dynaconf" -version = "3.1.12" +version = "3.2.0" description = "The dynamic configurator for your Python Project" optional = false python-versions = ">=3.8" files = [ - {file = "dynaconf-3.1.12-py2.py3-none-any.whl", hash = "sha256:a79d7b3ad4a35af9b576c49f11cd3b23a1b04b87b63a4e9f92cc82f2b0cafeeb"}, - {file = "dynaconf-3.1.12.tar.gz", hash = "sha256:11a60bcd735f82b8a47b288f99e4ffbbd08c6c130a7be93c5d03e93fc260a5e1"}, + {file = "dynaconf-3.2.0-py2.py3-none-any.whl", hash = "sha256:791d8029c74548d57b0266aabd6557ebfff6540bffd7f58ba700f577c047c0f5"}, + {file = "dynaconf-3.2.0.tar.gz", hash = "sha256:a28442d12860a44fad5fa1d9db918c710cbfc971e8b7694697429fb8f1c3c620"}, ] [package.extras] @@ -1343,7 +1343,7 @@ all = ["configobj", "hvac", "redis", "ruamel.yaml"] configobj = ["configobj"] ini = ["configobj"] redis = ["redis"] -test = ["codecov", "configobj", "django", "flake8", "flake8-debugger", "flake8-print", "flake8-todo", "flask (>=0.12)", "hvac", "pep8-naming", "pytest", "pytest-cov", "pytest-mock", "pytest-xdist", "python-dotenv", "radon", "redis", "toml"] +test = ["configobj", "django", "flake8", "flake8-debugger", "flake8-print", "flake8-todo", "flask (>=0.12)", "hvac", "pep8-naming", "pytest", "pytest-cov", "pytest-mock", "pytest-xdist", "python-dotenv", "radon", "redis", "toml"] toml = ["toml"] vault = ["hvac"] yaml = ["ruamel.yaml"] @@ -1399,85 +1399,72 @@ dotenv = ["python-dotenv"] [[package]] name = "frozenlist" -version = "1.3.3" +version = "1.4.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4"}, - {file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0"}, - {file = "frozenlist-1.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530"}, - {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7"}, - {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99"}, - {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483"}, - {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd"}, - {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf"}, - {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816"}, - {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0"}, - {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce"}, - {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f"}, - {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420"}, - {file = "frozenlist-1.3.3-cp310-cp310-win32.whl", hash = "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642"}, - {file = "frozenlist-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1"}, - {file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7"}, - {file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678"}, - {file = "frozenlist-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6"}, - {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8"}, - {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb"}, - {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91"}, - {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b"}, - {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4"}, - {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48"}, - {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d"}, - {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6"}, - {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4"}, - {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81"}, - {file = "frozenlist-1.3.3-cp311-cp311-win32.whl", hash = "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8"}, - {file = "frozenlist-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32"}, - {file = "frozenlist-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332"}, - {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27"}, - {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d"}, - {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e"}, - {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d"}, - {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c"}, - {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56"}, - {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420"}, - {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e"}, - {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb"}, - {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401"}, - {file = "frozenlist-1.3.3-cp37-cp37m-win32.whl", hash = "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a"}, - {file = "frozenlist-1.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411"}, - {file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a"}, - {file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5"}, - {file = "frozenlist-1.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e"}, - {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c"}, - {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba"}, - {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703"}, - {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2"}, - {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448"}, - {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4"}, - {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649"}, - {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842"}, - {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13"}, - {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3"}, - {file = "frozenlist-1.3.3-cp38-cp38-win32.whl", hash = "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b"}, - {file = "frozenlist-1.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef"}, - {file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf"}, - {file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1"}, - {file = "frozenlist-1.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0"}, - {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d"}, - {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936"}, - {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5"}, - {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b"}, - {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669"}, - {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb"}, - {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784"}, - {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d"}, - {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab"}, - {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1"}, - {file = "frozenlist-1.3.3-cp39-cp39-win32.whl", hash = "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38"}, - {file = "frozenlist-1.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9"}, - {file = "frozenlist-1.3.3.tar.gz", hash = "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62"}, + {file = "frozenlist-1.4.0-cp310-cp310-win32.whl", hash = "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0"}, + {file = "frozenlist-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb"}, + {file = "frozenlist-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431"}, + {file = "frozenlist-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8"}, + {file = "frozenlist-1.4.0-cp38-cp38-win32.whl", hash = "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc"}, + {file = "frozenlist-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3"}, + {file = "frozenlist-1.4.0-cp39-cp39-win32.whl", hash = "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f"}, + {file = "frozenlist-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167"}, + {file = "frozenlist-1.4.0.tar.gz", hash = "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"}, ] [[package]] @@ -1873,13 +1860,13 @@ testing-libs = ["simplejson", "ujson"] [[package]] name = "jsonschema" -version = "4.18.0" +version = "4.18.3" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.18.0-py3-none-any.whl", hash = "sha256:b508dd6142bd03f4c3670534c80af68cd7bbff9ea830b9cf2625d4a3c49ddf60"}, - {file = "jsonschema-4.18.0.tar.gz", hash = "sha256:8caf5b57a990a98e9b39832ef3cb35c176fe331414252b6e1b26fd5866f891a4"}, + {file = "jsonschema-4.18.3-py3-none-any.whl", hash = "sha256:aab78b34c2de001c6b692232f08c21a97b436fe18e0b817bf0511046924fceef"}, + {file = "jsonschema-4.18.3.tar.gz", hash = "sha256:64b7104d72efe856bea49ca4af37a14a9eba31b40bb7238179f3803130fd34d9"}, ] [package.dependencies] @@ -3922,13 +3909,13 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.23.1" +version = "20.24.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.23.1-py3-none-any.whl", hash = "sha256:34da10f14fea9be20e0fd7f04aba9732f84e593dac291b757ce42e3368a39419"}, - {file = "virtualenv-20.23.1.tar.gz", hash = "sha256:8ff19a38c1021c742148edc4f81cb43d7f8c6816d2ede2ab72af5b84c749ade1"}, + {file = "virtualenv-20.24.0-py3-none-any.whl", hash = "sha256:18d1b37fc75cc2670625702d76849a91ebd383768b4e91382a8d51be3246049e"}, + {file = "virtualenv-20.24.0.tar.gz", hash = "sha256:e2a7cef9da880d693b933db7654367754f14e20650dc60e8ee7385571f8593a3"}, ] [package.dependencies] @@ -4091,18 +4078,18 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.16.0" +version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.0-py3-none-any.whl", hash = "sha256:5dadc3ad0a1f825fe42ce1bce0f2fc5a13af2e6b2d386af5b0ff295bc0a287d3"}, - {file = "zipp-3.16.0.tar.gz", hash = "sha256:1876cb065531855bbe83b6c489dcf69ecc28f1068d8e95959fe8bbc77774c941"}, + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] mlflow = ["azureml-mlflow", "mlflow"] diff --git a/tests/conf/base/catalog.yml b/tests/conf/base/catalog.yml new file mode 100644 index 0000000..c53adcb --- /dev/null +++ b/tests/conf/base/catalog.yml @@ -0,0 +1,18 @@ +companies: + type: pandas.CSVDataSet + filepath: data/01_raw/companies.csv + layer: raw + +reviews: + type: pandas.CSVDataSet + filepath: data/01_raw/reviews.csv + layer: raw + +shuttles: + type: pandas.ExcelDataSet + filepath: data/01_raw/shuttles.xlsx + layer: raw + +preprocessed_companies: + type: kedro_azureml.datasets.pandas_dataset.AzureMLPandasDataSet + azureml_dataset: e2e_tests_preprocessed_companies diff --git a/tests/test_distributed.py b/tests/test_distributed.py index 1ff3347..5fd9638 100644 --- a/tests/test_distributed.py +++ b/tests/test_distributed.py @@ -64,7 +64,7 @@ def my_distributed_node(x): ], ) def test_can_generate_azure_pipeline_with_distributed_node( - dummy_plugin_config, framework, num_nodes, kedro_params + dummy_plugin_config, framework, num_nodes, kedro_params, multi_catalog ): @distributed_job(framework, num_nodes=num_nodes) def my_distributed_node(x): @@ -89,6 +89,7 @@ def my_distributed_node(x): dummy_plugin_config, kedro_params, aml_env=aml_env, + catalog=multi_catalog, ) az_pipeline = generator.generate() @@ -108,7 +109,7 @@ def my_distributed_node(x): @pytest.mark.parametrize("invalid_num_nodes", [False, 123.0, {}, "asdf"]) def test_generator_raises_on_invalid_distributed_config( - dummy_plugin_config, invalid_num_nodes + dummy_plugin_config, invalid_num_nodes, multi_catalog ): @distributed_job(Framework.PyTorch, num_nodes=invalid_num_nodes) def my_distributed_node(x): @@ -133,6 +134,7 @@ def my_distributed_node(x): dummy_plugin_config, {}, aml_env=aml_env, + catalog=multi_catalog, ) with pytest.raises(ValueError): diff --git a/tests/test_generator.py b/tests/test_generator.py index f94c326..82f6948 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -31,6 +31,7 @@ def test_can_generate_azure_pipeline( dummy_plugin_config, generator_kwargs: dict, pipeline_data_passing_enabled, + multi_catalog, request, ): pipeline = request.getfixturevalue(pipeline_name) @@ -41,7 +42,12 @@ def test_can_generate_azure_pipeline( ): env_name = "unit_test_env" generator = AzureMLPipelineGenerator( - pipeline_name, env_name, dummy_plugin_config, {}, **generator_kwargs + pipeline_name, + env_name, + dummy_plugin_config, + {}, + catalog=multi_catalog, + **generator_kwargs, ) az_pipeline = generator.generate() @@ -67,7 +73,7 @@ def test_can_generate_azure_pipeline( def test_azure_pipeline_with_different_compute( - dummy_pipeline_compute_tag, dummy_plugin_config + dummy_pipeline_compute_tag, dummy_plugin_config, multi_catalog ): """ Test that when a Node in an Azure Pipeline is tagged with a compute tag @@ -88,6 +94,7 @@ def test_azure_pipeline_with_different_compute( env_name, dummy_plugin_config, {}, + catalog=multi_catalog, aml_env=aml_env, ) @@ -103,20 +110,22 @@ def test_azure_pipeline_with_different_compute( ), "compute settings don't match" -def test_can_get_pipeline_from_kedro(dummy_plugin_config, dummy_pipeline): +def test_can_get_pipeline_from_kedro( + dummy_plugin_config, dummy_pipeline, multi_catalog +): pipeline_name = "unit_test_pipeline" with patch.dict( "kedro.framework.project.pipelines", {pipeline_name: dummy_pipeline} ): generator = AzureMLPipelineGenerator( - pipeline_name, "local", dummy_plugin_config, {} + pipeline_name, "local", dummy_plugin_config, {}, catalog=multi_catalog ) p = generator.get_kedro_pipeline() assert p == dummy_pipeline def test_get_target_resource_from_node_tags_raises_exception( - dummy_plugin_config, dummy_pipeline + dummy_plugin_config, dummy_pipeline, multi_catalog ): pipeline_name = "unit_test_pipeline" node = MagicMock() @@ -127,13 +136,15 @@ def test_get_target_resource_from_node_tags_raises_exception( "kedro.framework.project.pipelines", {pipeline_name: dummy_pipeline} ): generator = AzureMLPipelineGenerator( - pipeline_name, "local", dummy_plugin_config, {} + pipeline_name, "local", dummy_plugin_config, {}, catalog=multi_catalog ) with pytest.raises(ConfigException): generator.get_target_resource_from_node_tags(node) -def test_azure_pipeline_with_custom_env_vars(dummy_plugin_config, dummy_pipeline): +def test_azure_pipeline_with_custom_env_vars( + dummy_plugin_config, dummy_pipeline, multi_catalog +): pipeline_name = "unit_test_pipeline" node = MagicMock() node.tags = ["compute-2", "compute-3"] @@ -143,7 +154,12 @@ def test_azure_pipeline_with_custom_env_vars(dummy_plugin_config, dummy_pipeline "kedro.framework.project.pipelines", {pipeline_name: dummy_pipeline} ): generator = AzureMLPipelineGenerator( - pipeline_name, "local", dummy_plugin_config, {}, extra_env={"ABC": "def"} + pipeline_name, + "local", + dummy_plugin_config, + {}, + extra_env={"ABC": "def"}, + catalog=multi_catalog, ) for node in generator.generate().jobs.values(): From f724eadcf4f376e9f4cb14190c2ccd9ca0102f36 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sat, 15 Jul 2023 10:05:42 +0000 Subject: [PATCH 33/58] fix pipeline dataset test --- tests/test_datasets.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_datasets.py b/tests/test_datasets.py index 5a6989b..dcc2cb0 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -271,9 +271,12 @@ def test_azureml_pipeline_dataset(tmp_path: Path): "filepath": (original_path := str(tmp_path / "test.pickle")), } ) - assert ds.path == original_path, "Path should be set to the underlying filepath" + assert ( + str(ds.path) == original_path + ), "Path should be set to the underlying filepath" - ds.path = (modified_path := str(tmp_path / "test2.pickle")) + ds.folder = (modified_path := str(tmp_path)) + modified_path = Path(modified_path) / "test.pickle" assert ds.path == modified_path, "Path should be modified to the supplied value" ds.save("test") From de75e2785a722003518e062c53d526175c8da731 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sat, 15 Jul 2023 10:17:24 +0000 Subject: [PATCH 34/58] add parameters file and dataset documentation --- kedro_azureml/datasets/folder_dataset.py | 52 ++++++++++++++++++++++++ tests/conf/base/parameters.yml | 1 + 2 files changed, 53 insertions(+) create mode 100644 tests/conf/base/parameters.yml diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/folder_dataset.py index 2ff1401..70fcab0 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/folder_dataset.py @@ -27,6 +27,49 @@ class AzureMLFolderDataSet(AzureMLPipelineDataSet, AbstractVersionedDataSet): + """ + AzureMLFolderDataSet enables kedro-azureml to use azureml + v2-sdk Folder/File datasets for remote and local runs. + + Args + ---- + + | - ``azureml_dataset``: Name of the AzureML dataset. + | - ``dataset``: Definition of the underlying dataset saved in the Folder/Filedataset. + ``e.g. Parquet, Csv etc. + | - ``folder``: The local folder where the dataset should be saved during local runs. + ``Relevant for local execution via `kedro run`. + | - ``filepath_arg``: Filepath arg on the wrapped dataset, defaults to `filepath` + | - ``azureml_type``: Either `uri_folder` or `uri_file` + | - ``version``: Version of the AzureML dataset to be used in kedro format. + + Example + ------- + + Example of a catalog.yml entry: + + .. code-block:: yaml + + my_folder_dataset: + type: kedro_azureml.datasets.AzureMLFolderDataSet + azureml_dataset: my_azureml_folder_dataset + folder: data/01_raw/some_folder/ + versioned: True + dataset: + type: pandas.ParquetDataSet + filepath: "." + + my_file_dataset: + type: kedro_azureml.datasets.AzureMLFolderDataSet + azureml_dataset: my_azureml_file_dataset + folder: data/01_raw/some_other_folder/ + versioned: True + dataset: + type: pandas.ParquetDataSet + filepath: "companies.csv" + + """ + def __init__( self, azureml_dataset: str, @@ -36,6 +79,15 @@ def __init__( azureml_type: AzureMLDataAssetType = "uri_folder", version: Optional[Version] = None, ): + """ + azureml_dataset: Name of the AzureML file azureml_dataset. + dataset: Type of the underlying dataset that is saved on AzureML e.g. Parquet, Csv etc. + folder: The local folder where the dataset should be saved during local runs. + Relevant only for local execution via `kedro run`. + filepath_arg: Filepath arg on the wrapped dataset, defaults to `filepath` + azureml_type: Either `uri_folder` or `uri_file` + version: Version of the AzureML dataset to be used in kedro format. + """ super().__init__(dataset=dataset, folder=folder, filepath_arg=filepath_arg) self._azureml_dataset = azureml_dataset diff --git a/tests/conf/base/parameters.yml b/tests/conf/base/parameters.yml new file mode 100644 index 0000000..7daacd5 --- /dev/null +++ b/tests/conf/base/parameters.yml @@ -0,0 +1 @@ +foo: bar \ No newline at end of file From cedef0ec0d468a0a317c4a180b670f7369b1deb0 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sat, 15 Jul 2023 10:35:09 +0000 Subject: [PATCH 35/58] add parameters to tests --- kedro_azureml/datasets/file_dataset.py | 1 - tests/conf/base/catalog.yml | 18 ------------------ tests/test_cli.py | 1 - tests/utils.py | 4 ++++ 4 files changed, 4 insertions(+), 20 deletions(-) delete mode 100644 tests/conf/base/catalog.yml diff --git a/kedro_azureml/datasets/file_dataset.py b/kedro_azureml/datasets/file_dataset.py index 90655b1..30eef8f 100644 --- a/kedro_azureml/datasets/file_dataset.py +++ b/kedro_azureml/datasets/file_dataset.py @@ -187,7 +187,6 @@ def __init__( super().__init__(path, **kwargs) def _save(self, data: t.Dict[str, t.Any]) -> None: - # save to azure blob storage super()._save(data) diff --git a/tests/conf/base/catalog.yml b/tests/conf/base/catalog.yml deleted file mode 100644 index c53adcb..0000000 --- a/tests/conf/base/catalog.yml +++ /dev/null @@ -1,18 +0,0 @@ -companies: - type: pandas.CSVDataSet - filepath: data/01_raw/companies.csv - layer: raw - -reviews: - type: pandas.CSVDataSet - filepath: data/01_raw/reviews.csv - layer: raw - -shuttles: - type: pandas.ExcelDataSet - filepath: data/01_raw/shuttles.xlsx - layer: raw - -preprocessed_companies: - type: kedro_azureml.datasets.pandas_dataset.AzureMLPandasDataSet - azureml_dataset: e2e_tests_preprocessed_companies diff --git a/tests/test_cli.py b/tests/test_cli.py index 514b2af..eb00966 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -37,7 +37,6 @@ def test_can_initialize_basic_plugin_config( env_or_docker: List[str], use_pipeline_data_passing: bool, ): - config_path = create_kedro_conf_dirs(tmp_path) unique_id = uuid4().hex with patch.object(Path, "cwd", return_value=tmp_path): diff --git a/tests/utils.py b/tests/utils.py index 3cc2030..df53a8a 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -30,5 +30,9 @@ def create_kedro_conf_dirs(tmp_path: Path): Path(__file__).absolute().parent / "conf" / "base" / "azureml.yml", config_path / "azureml.yml", ) + copy( + Path(__file__).absolute().parent / "conf" / "base" / "parameters.yml", + config_path / "parameters.yml", + ) return config_path From 9605830e23b9da116e08391b9f51bd610fb1bcd1 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sat, 15 Jul 2023 11:04:07 +0000 Subject: [PATCH 36/58] add config path to test --- tests/test_cli.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_cli.py b/tests/test_cli.py index eb00966..dfec194 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -146,9 +146,12 @@ def test_can_compile_pipeline( return_value=dummy_plugin_config, ), patch.dict( os.environ, {"AZURE_STORAGE_ACCOUNT_KEY": storage_account_key} + ), patch.object( + Path, "cwd", return_value=tmp_path ), patch( "click.prompt", return_value="dummy" ) as click_prompt: + _ = create_kedro_conf_dirs(tmp_path) runner = CliRunner() output_path = tmp_path / "pipeline.yml" result = runner.invoke( From 6c74dcce1c39b87532f155b0539fea6a71fb9705 Mon Sep 17 00:00:00 2001 From: Florian Roessler Date: Sun, 16 Jul 2023 09:18:02 +0000 Subject: [PATCH 37/58] rename dataset and folder --- kedro_azureml/datasets/__init__.py | 4 ++-- .../{folder_dataset.py => asset_dataset.py} | 24 +++++++++---------- kedro_azureml/datasets/pipeline_dataset.py | 12 +++++----- kedro_azureml/generator.py | 14 +++++------ kedro_azureml/hooks.py | 4 ++-- kedro_azureml/runner.py | 10 ++++---- tests/conftest.py | 13 ++++------ tests/test_datasets.py | 8 +++---- 8 files changed, 43 insertions(+), 46 deletions(-) rename kedro_azureml/datasets/{folder_dataset.py => asset_dataset.py} (90%) diff --git a/kedro_azureml/datasets/__init__.py b/kedro_azureml/datasets/__init__.py index a26d1e2..87c167b 100644 --- a/kedro_azureml/datasets/__init__.py +++ b/kedro_azureml/datasets/__init__.py @@ -1,5 +1,5 @@ +from kedro_azureml.datasets.asset_dataset import AzureMLAssetDataSet from kedro_azureml.datasets.file_dataset import AzureMLFileDataSet -from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet from kedro_azureml.datasets.pandas_dataset import AzureMLPandasDataSet from kedro_azureml.datasets.pipeline_dataset import AzureMLPipelineDataSet from kedro_azureml.datasets.runner_dataset import ( @@ -9,7 +9,7 @@ __all__ = [ "AzureMLFileDataSet", - "AzureMLFolderDataSet", + "AzureMLAssetDataSet", "AzureMLPipelineDataSet", "AzureMLPandasDataSet", "KedroAzureRunnerDataset", diff --git a/kedro_azureml/datasets/folder_dataset.py b/kedro_azureml/datasets/asset_dataset.py similarity index 90% rename from kedro_azureml/datasets/folder_dataset.py rename to kedro_azureml/datasets/asset_dataset.py index 70fcab0..c44f9ce 100644 --- a/kedro_azureml/datasets/folder_dataset.py +++ b/kedro_azureml/datasets/asset_dataset.py @@ -26,9 +26,9 @@ logger = logging.getLogger(__name__) -class AzureMLFolderDataSet(AzureMLPipelineDataSet, AbstractVersionedDataSet): +class AzureMLAssetDataSet(AzureMLPipelineDataSet, AbstractVersionedDataSet): """ - AzureMLFolderDataSet enables kedro-azureml to use azureml + AzureMLAssetDataSet enables kedro-azureml to use azureml v2-sdk Folder/File datasets for remote and local runs. Args @@ -37,7 +37,7 @@ class AzureMLFolderDataSet(AzureMLPipelineDataSet, AbstractVersionedDataSet): | - ``azureml_dataset``: Name of the AzureML dataset. | - ``dataset``: Definition of the underlying dataset saved in the Folder/Filedataset. ``e.g. Parquet, Csv etc. - | - ``folder``: The local folder where the dataset should be saved during local runs. + | - ``root_dir``: The local folder where the dataset should be saved during local runs. ``Relevant for local execution via `kedro run`. | - ``filepath_arg``: Filepath arg on the wrapped dataset, defaults to `filepath` | - ``azureml_type``: Either `uri_folder` or `uri_file` @@ -51,18 +51,18 @@ class AzureMLFolderDataSet(AzureMLPipelineDataSet, AbstractVersionedDataSet): .. code-block:: yaml my_folder_dataset: - type: kedro_azureml.datasets.AzureMLFolderDataSet + type: kedro_azureml.datasets.AzureMLAssetDataSet azureml_dataset: my_azureml_folder_dataset - folder: data/01_raw/some_folder/ + root_dir: data/01_raw/some_folder/ versioned: True dataset: type: pandas.ParquetDataSet filepath: "." my_file_dataset: - type: kedro_azureml.datasets.AzureMLFolderDataSet + type: kedro_azureml.datasets.AzureMLAssetDataSet azureml_dataset: my_azureml_file_dataset - folder: data/01_raw/some_other_folder/ + root_dir: data/01_raw/some_other_folder/ versioned: True dataset: type: pandas.ParquetDataSet @@ -74,7 +74,7 @@ def __init__( self, azureml_dataset: str, dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], - folder: str = "data", + root_dir: str = "data", filepath_arg: str = "filepath", azureml_type: AzureMLDataAssetType = "uri_folder", version: Optional[Version] = None, @@ -82,13 +82,13 @@ def __init__( """ azureml_dataset: Name of the AzureML file azureml_dataset. dataset: Type of the underlying dataset that is saved on AzureML e.g. Parquet, Csv etc. - folder: The local folder where the dataset should be saved during local runs. + root_dir: The local folder where the dataset should be saved during local runs. Relevant only for local execution via `kedro run`. filepath_arg: Filepath arg on the wrapped dataset, defaults to `filepath` azureml_type: Either `uri_folder` or `uri_file` version: Version of the AzureML dataset to be used in kedro format. """ - super().__init__(dataset=dataset, folder=folder, filepath_arg=filepath_arg) + super().__init__(dataset=dataset, root_dir=root_dir, filepath_arg=filepath_arg) self._azureml_dataset = azureml_dataset self._version = version @@ -119,13 +119,13 @@ def path(self) -> str: # AzureML dataset level if self._local_run: return ( - Path(self.folder) + Path(self.root_dir) / self._azureml_dataset / self.resolve_load_version() / Path(self._dataset_config[self._filepath_arg]) ) else: - return Path(self.folder) / Path(self._dataset_config[self._filepath_arg]) + return Path(self.root_dir) / Path(self._dataset_config[self._filepath_arg]) @property def download_path(self) -> str: diff --git a/kedro_azureml/datasets/pipeline_dataset.py b/kedro_azureml/datasets/pipeline_dataset.py index 2c87ca6..2a50587 100644 --- a/kedro_azureml/datasets/pipeline_dataset.py +++ b/kedro_azureml/datasets/pipeline_dataset.py @@ -33,7 +33,7 @@ class AzureMLPipelineDataSet(AbstractDataSet): b) a string representing a fully qualified class name to such class c) a dictionary with ``type`` key pointing to a string from b), other keys are passed to the Dataset initializer. - | - ``folder``: Folder (path) to prepend to the filepath of the underlying dataset. + | - ``root_dir``: Folder (path) to prepend to the filepath of the underlying dataset. If unspecified, defaults to "data". | - ``filepath_arg``: Underlying dataset initializer argument that will set the filepath. @@ -48,7 +48,7 @@ class AzureMLPipelineDataSet(AbstractDataSet): processed_images: type: kedro_azureml.datasets.AzureMLPipelineDataSet - folder: 'data/01_raw' + root_dir: 'data/01_raw' dataset: type: pillow.ImageDataSet filepath: 'images.png' @@ -58,7 +58,7 @@ class AzureMLPipelineDataSet(AbstractDataSet): def __init__( self, dataset: Union[str, Type[AbstractDataSet], Dict[str, Any]], - folder: str = "data", + root_dir: str = "data", filepath_arg: str = "filepath", ): """Creates a new instance of ``AzureMLPipelineDataSet``. @@ -81,7 +81,7 @@ def __init__( dataset = dataset if isinstance(dataset, dict) else {"type": dataset} self._dataset_type, self._dataset_config = parse_dataset_definition(dataset) - self.folder = folder + self.root_dir = root_dir self._filepath_arg = filepath_arg try: # Convert filepath to relative path @@ -102,7 +102,7 @@ def __init__( @property def path(self) -> str: - return Path(self.folder) / Path(self._dataset_config[self._filepath_arg]) + return Path(self.root_dir) / Path(self._dataset_config[self._filepath_arg]) @property def _filepath(self) -> str: @@ -130,7 +130,7 @@ def _describe(self) -> Dict[str, Any]: return { "dataset_type": self._dataset_type.__name__, "dataset_config": self._dataset_config, - "folder": self.folder, + "root_dir": self.root_dir, "filepath_arg": self._filepath_arg, } diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 0f49e3e..256784b 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -28,7 +28,7 @@ KEDRO_AZURE_RUNNER_CONFIG, PARAMS_PREFIX, ) -from kedro_azureml.datasets import AzureMLFolderDataSet +from kedro_azureml.datasets import AzureMLAssetDataSet from kedro_azureml.distributed import DistributedNodeConfig from kedro_azureml.distributed.config import Framework @@ -156,11 +156,11 @@ def _get_input_type(self, dataset_name: str, pipeline: Pipeline) -> Input: if self._is_param_or_root_non_azureml_folder_dataset(dataset_name, pipeline): return "string" elif dataset_name in self.catalog.list() and isinstance( - ds := self.catalog._get_dataset(dataset_name), AzureMLFolderDataSet + ds := self.catalog._get_dataset(dataset_name), AzureMLAssetDataSet ): if ds._azureml_type == "uri_file" and dataset_name not in pipeline.inputs(): raise ValueError( - "AzureMLFolderDataSets with azureml_type 'uri_file' can only be used as pipeline inputs" + "AzureMLAssetDataSets with azureml_type 'uri_file' can only be used as pipeline inputs" ) return ds._azureml_type else: @@ -195,7 +195,7 @@ def _is_param_or_root_non_azureml_folder_dataset( dataset_name in pipeline.inputs() and dataset_name in self.catalog.list() and not isinstance( - self.catalog._get_dataset(dataset_name), AzureMLFolderDataSet + self.catalog._get_dataset(dataset_name), AzureMLAssetDataSet ) ) @@ -240,7 +240,7 @@ def _construct_azure_command( Output(name=ds._azureml_dataset) if name in self.catalog.list() and isinstance( - ds := self.catalog._get_dataset(name), AzureMLFolderDataSet + ds := self.catalog._get_dataset(name), AzureMLAssetDataSet ) else Output() ) @@ -328,9 +328,9 @@ def _connect_commands(self, pipeline: Pipeline, commands: Dict[str, Command]): parent_outputs = invoked_components[output_from_deps.name].outputs azure_output = parent_outputs[sanitized_input_name] azure_inputs[sanitized_input_name] = azure_output - # 2. try to find AzureMLFolderDataSet in catalog + # 2. try to find AzureMLAssetDataSet in catalog elif node_input in self.catalog.list() and isinstance( - ds := self.catalog._get_dataset(node_input), AzureMLFolderDataSet + ds := self.catalog._get_dataset(node_input), AzureMLAssetDataSet ): azure_inputs[sanitized_input_name] = Input( type=ds._azureml_type, diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index aed0b63..34c709b 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -2,7 +2,7 @@ from kedro.io.core import Version from kedro_azureml.config import AzureMLConfig -from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet +from kedro_azureml.datasets.asset_dataset import AzureMLAssetDataSet class AzureMLLocalRunHook: @@ -25,7 +25,7 @@ def before_pipeline_run(self, run_params, pipeline, catalog): # we don't want the hook to work when we are running on AML if "AzurePipelinesRunner" not in run_params["runner"]: for dataset_name, dataset in catalog._data_sets.items(): - if isinstance(dataset, AzureMLFolderDataSet): + if isinstance(dataset, AzureMLAssetDataSet): if dataset_name in pipeline.inputs(): dataset._local_run = True dataset._download = True diff --git a/kedro_azureml/runner.py b/kedro_azureml/runner.py index e2bea30..1001fa8 100644 --- a/kedro_azureml/runner.py +++ b/kedro_azureml/runner.py @@ -16,7 +16,7 @@ KedroAzureRunnerDataset, KedroAzureRunnerDistributedDataset, ) -from kedro_azureml.datasets.folder_dataset import AzureMLFolderDataSet +from kedro_azureml.datasets.asset_dataset import AzureMLAssetDataSet from kedro_azureml.distributed.utils import is_distributed_environment logger = logging.getLogger(__name__) @@ -55,12 +55,12 @@ def run( ds = catalog._get_dataset(ds_name) if isinstance(ds, AzureMLPipelineDataSet): if ( - isinstance(ds, AzureMLFolderDataSet) + isinstance(ds, AzureMLAssetDataSet) and ds._azureml_type == "uri_file" ): - ds.folder = str(Path(azure_dataset_path).parent) + ds.root_dir = str(Path(azure_dataset_path).parent) else: - ds.folder = azure_dataset_path + ds.root_dir = azure_dataset_path catalog.add(ds_name, ds, replace=True) else: catalog.add(ds_name, self.create_default_data_set(ds_name)) @@ -80,7 +80,7 @@ def create_default_data_set(self, ds_name: str) -> AbstractDataSet: "backend": "cloudpickle", "filepath": f"{ds_name}.pickle", }, - folder=self.data_paths[ds_name], + root_dir=self.data_paths[ds_name], ) else: # TODO: handle credentials better (probably with built-in Kedro credentials diff --git a/tests/conftest.py b/tests/conftest.py index 44ed6ea..3e592ef 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,10 +20,7 @@ KedroAzureRunnerConfig, ) from kedro_azureml.constants import KEDRO_AZURE_RUNNER_CONFIG -from kedro_azureml.datasets import ( - AzureMLFolderDataSet, - KedroAzureRunnerDataset, -) +from kedro_azureml.datasets import AzureMLAssetDataSet, KedroAzureRunnerDataset from kedro_azureml.runner import AzurePipelinesRunner from kedro_azureml.utils import CliContext from tests.utils import identity @@ -185,7 +182,7 @@ def download(self, *args, **kwargs): @pytest.fixture def mock_azureml_fs(simulated_azureml_dataset): with patch( - "kedro_azureml.datasets.folder_dataset.AzureMachineLearningFileSystem", + "kedro_azureml.datasets.asset_dataset.AzureMachineLearningFileSystem", new=AzureMLFileSystemMock, ): with patch.object( @@ -202,7 +199,7 @@ def mock_azureml_client(request): mock_data_asset.type = request.param["type"] with patch( - "kedro_azureml.datasets.folder_dataset._get_azureml_client" + "kedro_azureml.datasets.asset_dataset._get_azureml_client" ) as mock_get_client: mock_client = MagicMock() mock_client.data.get.return_value = mock_data_asset @@ -229,7 +226,7 @@ def in_temp_dir(tmp_path): @pytest.fixture def multi_catalog(): - csv = AzureMLFolderDataSet( + csv = AzureMLAssetDataSet( dataset={ "type": CSVDataSet, "filepath": "abc.csv", @@ -237,7 +234,7 @@ def multi_catalog(): azureml_dataset="test_dataset", version=Version(None, None), ) - parq = AzureMLFolderDataSet( + parq = AzureMLAssetDataSet( dataset={ "type": ParquetDataSet, "filepath": "xyz.parq", diff --git a/tests/test_datasets.py b/tests/test_datasets.py index dcc2cb0..fd83770 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -12,7 +12,7 @@ from kedro_azureml.constants import KEDRO_AZURE_BLOB_TEMP_DIR_NAME from kedro_azureml.datasets import ( - AzureMLFolderDataSet, + AzureMLAssetDataSet, AzureMLPandasDataSet, AzureMLPipelineDataSet, KedroAzureRunnerDataset, @@ -233,7 +233,7 @@ def test_azure_dataset_config(dataset_class: Type): ], indirect=["mock_azureml_client"], ) -def test_azureml_folder_dataset( +def test_azureml_asset_dataset( in_temp_dir, mock_azureml_client, mock_azureml_config, @@ -245,7 +245,7 @@ def test_azureml_folder_dataset( local_run, download, ): - ds = AzureMLFolderDataSet( + ds = AzureMLAssetDataSet( dataset={ "type": dataset_type, "filepath": path_in_aml, @@ -275,7 +275,7 @@ def test_azureml_pipeline_dataset(tmp_path: Path): str(ds.path) == original_path ), "Path should be set to the underlying filepath" - ds.folder = (modified_path := str(tmp_path)) + ds.root_dir = (modified_path := str(tmp_path)) modified_path = Path(modified_path) / "test.pickle" assert ds.path == modified_path, "Path should be modified to the supplied value" From fa007406037fcf9fd86d38705a52bbedf4b6a11d Mon Sep 17 00:00:00 2001 From: fdroessler Date: Wed, 26 Jul 2023 11:47:16 +0000 Subject: [PATCH 38/58] refactor and add azureml for remote run --- kedro_azureml/datasets/asset_dataset.py | 9 +++++++ kedro_azureml/hooks.py | 32 ++++++++++++------------- tests/test_hook.py | 10 ++++---- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/kedro_azureml/datasets/asset_dataset.py b/kedro_azureml/datasets/asset_dataset.py index c44f9ce..60cfdd3 100644 --- a/kedro_azureml/datasets/asset_dataset.py +++ b/kedro_azureml/datasets/asset_dataset.py @@ -195,3 +195,12 @@ def _load(self) -> Any: def _save(self, data: Any) -> None: self._construct_dataset().save(data) + + def as_local(self, azure_config, download: bool): + self._azureml_config = azure_config + self._local_run = True + if download: + self._download = True + # for local runs we want the data to be saved as a "local version" + else: + self._version = Version("local", "local") diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 34c709b..3c4fe9e 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -22,23 +22,21 @@ def before_pipeline_run(self, run_params, pipeline, catalog): pipeline: The ``Pipeline`` object representing the pipeline to be run. catalog: The ``DataCatalog`` from which to fetch data. """ - # we don't want the hook to work when we are running on AML - if "AzurePipelinesRunner" not in run_params["runner"]: - for dataset_name, dataset in catalog._data_sets.items(): - if isinstance(dataset, AzureMLAssetDataSet): - if dataset_name in pipeline.inputs(): - dataset._local_run = True - dataset._download = True - dataset._azureml_config = self.azure_config - catalog.add(dataset_name, dataset, replace=True) - - # we are adding this so that if an intermediate dataset in one - # run becomes the root dataset in another run we don't get problems - # with files being folder in the kedro verion way. - else: - dataset._local_run = True - dataset._version = Version("local", "local") - catalog.add(dataset_name, dataset, replace=True) + for dataset_name, dataset in catalog._data_sets.items(): + if isinstance(dataset, AzureMLAssetDataSet): + if "AzurePipelinesRunner" not in run_params["runner"]: + # when running locally using an AzureMLAssetDataSet + # as an intermediate dataset we don't want download + # but still set to run local with a local version. + download = dataset_name in pipeline.inputs() + dataset.as_local(self.azure_config, download=download) + # when running remotely we still want to provide information + # from the azureml config for getting the dataset version during + # remote runs + else: + dataset._azureml_config = self.azure_config + + catalog.add(dataset_name, dataset, replace=True) azureml_local_run_hook = AzureMLLocalRunHook() diff --git a/tests/test_hook.py b/tests/test_hook.py index 5048563..0797798 100644 --- a/tests/test_hook.py +++ b/tests/test_hook.py @@ -27,21 +27,19 @@ def test_hook_after_context_created( azureml_local_run_hook.before_pipeline_run( run_params, dummy_pipeline, multi_catalog ) - + assert ( + multi_catalog.datasets.input_data._azureml_config + == azureml_local_run_hook.azure_config + ) if runner == "kedro.runner.SequentialRunner": assert multi_catalog.datasets.input_data._download is True assert multi_catalog.datasets.input_data._local_run is True - assert ( - multi_catalog.datasets.input_data._azureml_config - == azureml_local_run_hook.azure_config - ) assert multi_catalog.datasets.i2._download is False assert multi_catalog.datasets.i2._local_run is True assert multi_catalog.datasets.i2._version == Version("local", "local") else: assert multi_catalog.datasets.input_data._download is False assert multi_catalog.datasets.input_data._local_run is False - assert multi_catalog.datasets.input_data._azureml_config is None assert multi_catalog.datasets.i2._download is False assert multi_catalog.datasets.i2._local_run is False assert multi_catalog.datasets.i2._version == Version(None, None) From 394308f5a3f88f80a53368fab395bb7d86be12b0 Mon Sep 17 00:00:00 2001 From: fdroessler Date: Wed, 26 Jul 2023 15:41:49 +0200 Subject: [PATCH 39/58] update hook to disable version in remote run --- kedro_azureml/hooks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 3c4fe9e..433f473 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -34,7 +34,8 @@ def before_pipeline_run(self, run_params, pipeline, catalog): # from the azureml config for getting the dataset version during # remote runs else: - dataset._azureml_config = self.azure_config + # dataset._azureml_config = self.azure_config + dataset._version = None catalog.add(dataset_name, dataset, replace=True) From 349307c996a0e19b61b9757efb1f82adadaff539 Mon Sep 17 00:00:00 2001 From: fdroessler Date: Wed, 26 Jul 2023 16:39:46 +0200 Subject: [PATCH 40/58] update load version resolving using catalog names --- kedro_azureml/generator.py | 10 ++++++---- kedro_azureml/hooks.py | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 256784b..11a4a56 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -144,13 +144,15 @@ def _resolve_azure_environment(self) -> Union[Environment, str]: else: return self.aml_env or self.config.azure.environment_name - def _get_versioned_azureml_dataset_name(self, dataset_name: str): - version = self.load_versions.get(dataset_name) + def _get_versioned_azureml_dataset_name( + self, catalog_name: str, azureml_dataset_name: str + ): + version = self.load_versions.get(catalog_name) if version is None or version == "latest": suffix = "@latest" else: suffix = ":" + version - return dataset_name + suffix + return azureml_dataset_name + suffix def _get_input_type(self, dataset_name: str, pipeline: Pipeline) -> Input: if self._is_param_or_root_non_azureml_folder_dataset(dataset_name, pipeline): @@ -335,7 +337,7 @@ def _connect_commands(self, pipeline: Pipeline, commands: Dict[str, Command]): azure_inputs[sanitized_input_name] = Input( type=ds._azureml_type, path=self._get_versioned_azureml_dataset_name( - ds._azureml_dataset + node_input, ds._azureml_dataset ), ) # 3. if not found, provide dummy input diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 433f473..214fadb 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -34,7 +34,6 @@ def before_pipeline_run(self, run_params, pipeline, catalog): # from the azureml config for getting the dataset version during # remote runs else: - # dataset._azureml_config = self.azure_config dataset._version = None catalog.add(dataset_name, dataset, replace=True) From 50b8239d5454390af567d73de11fa2bd55caf48a Mon Sep 17 00:00:00 2001 From: fdroessler Date: Wed, 26 Jul 2023 17:07:44 +0200 Subject: [PATCH 41/58] fix linting --- kedro_azureml/hooks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index 214fadb..c7fb6f5 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -1,5 +1,4 @@ from kedro.framework.hooks import hook_impl -from kedro.io.core import Version from kedro_azureml.config import AzureMLConfig from kedro_azureml.datasets.asset_dataset import AzureMLAssetDataSet From 5bb24bb299a6e7e0b4c214fa369ac8be14a89a8f Mon Sep 17 00:00:00 2001 From: fdroessler Date: Wed, 26 Jul 2023 17:36:30 +0200 Subject: [PATCH 42/58] fix tests --- tests/test_hook.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/test_hook.py b/tests/test_hook.py index 0797798..ddef437 100644 --- a/tests/test_hook.py +++ b/tests/test_hook.py @@ -27,19 +27,20 @@ def test_hook_after_context_created( azureml_local_run_hook.before_pipeline_run( run_params, dummy_pipeline, multi_catalog ) - assert ( - multi_catalog.datasets.input_data._azureml_config - == azureml_local_run_hook.azure_config - ) if runner == "kedro.runner.SequentialRunner": assert multi_catalog.datasets.input_data._download is True assert multi_catalog.datasets.input_data._local_run is True + assert ( + multi_catalog.datasets.input_data._azureml_config + == azureml_local_run_hook.azure_config + ) assert multi_catalog.datasets.i2._download is False assert multi_catalog.datasets.i2._local_run is True assert multi_catalog.datasets.i2._version == Version("local", "local") else: assert multi_catalog.datasets.input_data._download is False assert multi_catalog.datasets.input_data._local_run is False + assert multi_catalog.datasets.input_data._azureml_config is None assert multi_catalog.datasets.i2._download is False assert multi_catalog.datasets.i2._local_run is False - assert multi_catalog.datasets.i2._version == Version(None, None) + assert multi_catalog.datasets.i2._version == None From b8c3c5d5cd446782046037c8cc57d2154c099b17 Mon Sep 17 00:00:00 2001 From: fdroessler Date: Wed, 26 Jul 2023 18:09:31 +0200 Subject: [PATCH 43/58] fix tests --- tests/test_hook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_hook.py b/tests/test_hook.py index ddef437..2966679 100644 --- a/tests/test_hook.py +++ b/tests/test_hook.py @@ -43,4 +43,4 @@ def test_hook_after_context_created( assert multi_catalog.datasets.input_data._azureml_config is None assert multi_catalog.datasets.i2._download is False assert multi_catalog.datasets.i2._local_run is False - assert multi_catalog.datasets.i2._version == None + assert multi_catalog.datasets.i2._version is None From 686276cf040d64c276515be4f16c08271cdf88e2 Mon Sep 17 00:00:00 2001 From: fdroessler Date: Fri, 28 Jul 2023 23:03:26 +0000 Subject: [PATCH 44/58] fixing file in folder dataset issues --- kedro_azureml/datasets/asset_dataset.py | 3 + tests/conftest.py | 13 +++- tests/test_datasets.py | 90 +++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 1 deletion(-) diff --git a/kedro_azureml/datasets/asset_dataset.py b/kedro_azureml/datasets/asset_dataset.py index 60cfdd3..bd60b86 100644 --- a/kedro_azureml/datasets/asset_dataset.py +++ b/kedro_azureml/datasets/asset_dataset.py @@ -182,6 +182,9 @@ def _load(self) -> Any: Path(dataset_root_on_azure) / self._dataset_config[self._filepath_arg] ) + # if the filepath is to a file in the folder dataset we need the parent folder + if fs.isfile(path_on_azure): + path_on_azure = str(Path(path_on_azure).parent) else: raise ValueError("Unsupported AzureMLDataset type") # we take the relative within the Azure dataset to avoid downloading diff --git a/tests/conftest.py b/tests/conftest.py index 3e592ef..bbfe2d5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -143,8 +143,19 @@ def simulated_azureml_dataset(tmp_path): df.to_pickle(test_data_nested / "test.pickle") - test_data_folder_nested = tmp_path / "test_folder_nested" / "random" / "subfolder" + test_data_folder_nested_file = ( + tmp_path / "test_folder_nested_file" / "random" / "subfolder" + ) + test_data_folder_nested_file.mkdir(parents=True) + df.to_pickle(test_data_folder_nested_file / "test.pickle") + + test_data_folder_root_file = tmp_path / "test_folder_file" + test_data_folder_root_file.mkdir(parents=True) + df.to_pickle(test_data_folder_root_file / "test.pickle") + test_data_folder_root = tmp_path / "test_folder" + + test_data_folder_nested = tmp_path / "test_folder_nested" / "random" / "subfolder" test_data_folder_nested.mkdir(parents=True) test_data_folder_root.mkdir(parents=True) diff --git a/tests/test_datasets.py b/tests/test_datasets.py index fd83770..f2efa3d 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -230,6 +230,96 @@ def test_azure_dataset_config(dataset_class: Type): "type": "uri_folder", }, ), + ( + PickleDataSet, + "test.pickle", + "data/test.pickle", + "data", + False, + False, + { + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_file/" + ), + "type": "uri_folder", + }, + ), + ( + PickleDataSet, + "test.pickle", + "data/test_dataset/1/test.pickle", + "data/test_dataset/1", + True, + False, + { + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_file/" + ), + "type": "uri_folder", + }, + ), + ( + PickleDataSet, + "test.pickle", + "data/test_dataset/1/test.pickle", + "data/test_dataset/1", + True, + True, + { + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_file/" + ), + "type": "uri_folder", + }, + ), + ( + PickleDataSet, + "random/subfolder/test.pickle", + "data/random/subfolder/test.pickle", + "data/random/subfolder", + False, + False, + { + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_nested_file/" + ), + "type": "uri_folder", + }, + ), + ( + PickleDataSet, + "random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder", + True, + False, + { + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_nested_file/" + ), + "type": "uri_folder", + }, + ), + ( + PickleDataSet, + "random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder/test.pickle", + "data/test_dataset/1/random/subfolder", + True, + True, + { + "path": ( + "azureml://subscriptions/1234/resourcegroups/dummy_rg/workspaces" + "/dummy_ws/datastores/some_datastore/paths/test_folder_nested_file/" + ), + "type": "uri_folder", + }, + ), ], indirect=["mock_azureml_client"], ) From 94b9ef2c701fc083b7c349e36c45858d6b9a67a8 Mon Sep 17 00:00:00 2001 From: fdroessler Date: Fri, 28 Jul 2023 23:05:25 +0000 Subject: [PATCH 45/58] name change and make dataset versioned by default --- kedro_azureml/datasets/asset_dataset.py | 2 ++ kedro_azureml/generator.py | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/kedro_azureml/datasets/asset_dataset.py b/kedro_azureml/datasets/asset_dataset.py index bd60b86..bc0bea5 100644 --- a/kedro_azureml/datasets/asset_dataset.py +++ b/kedro_azureml/datasets/asset_dataset.py @@ -70,6 +70,8 @@ class AzureMLAssetDataSet(AzureMLPipelineDataSet, AbstractVersionedDataSet): """ + versioned = True + def __init__( self, azureml_dataset: str, diff --git a/kedro_azureml/generator.py b/kedro_azureml/generator.py index 11a4a56..bdb39d7 100644 --- a/kedro_azureml/generator.py +++ b/kedro_azureml/generator.py @@ -155,7 +155,7 @@ def _get_versioned_azureml_dataset_name( return azureml_dataset_name + suffix def _get_input_type(self, dataset_name: str, pipeline: Pipeline) -> Input: - if self._is_param_or_root_non_azureml_folder_dataset(dataset_name, pipeline): + if self._is_param_or_root_non_azureml_asset_dataset(dataset_name, pipeline): return "string" elif dataset_name in self.catalog.list() and isinstance( ds := self.catalog._get_dataset(dataset_name), AzureMLAssetDataSet @@ -190,7 +190,7 @@ def _from_params_or_value( msg += f", got {value_to_parse}" raise ValueError(msg) - def _is_param_or_root_non_azureml_folder_dataset( + def _is_param_or_root_non_azureml_asset_dataset( self, dataset_name: str, pipeline: Pipeline ) -> bool: return dataset_name.startswith(PARAMS_PREFIX) or ( @@ -354,7 +354,7 @@ def _prepare_command(self, node, pipeline): + self._sanitize_param_name(name) + "}}" for name in node.inputs - if not self._is_param_or_root_non_azureml_folder_dataset(name, pipeline) + if not self._is_param_or_root_non_azureml_asset_dataset(name, pipeline) ] if node.inputs else [] From c3949d2432bb0de888de1de801962341b073477a Mon Sep 17 00:00:00 2001 From: fdroessler Date: Fri, 28 Jul 2023 23:05:41 +0000 Subject: [PATCH 46/58] add tests for folder dataset --- tests/test_datasets.py | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/tests/test_datasets.py b/tests/test_datasets.py index f2efa3d..4277f12 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -8,7 +8,7 @@ import pytest from kedro.extras.datasets.pandas import ParquetDataSet from kedro.extras.datasets.pickle import PickleDataSet -from kedro.io.core import Version +from kedro.io.core import VERSIONED_FLAG_KEY, DataSetError, Version from kedro_azureml.constants import KEDRO_AZURE_BLOB_TEMP_DIR_NAME from kedro_azureml.datasets import ( @@ -348,9 +348,43 @@ def test_azureml_asset_dataset( ds._azureml_config = Path(mock_azureml_config) assert ds.path == Path(path_locally) assert ds.download_path == download_path + df = pd.DataFrame({"data": [1, 2, 3], "partition_idx": [1, 2, 3]}) if download: - df = pd.DataFrame({"data": [1, 2, 3], "partition_idx": [1, 2, 3]}) assert (ds._load()["data"] == df["data"]).all() + if dataset_type is not ParquetDataSet: + ds.path.unlink() + assert not ds.path.exists() + ds._save(df) + assert ds.path.exists() + else: + ds._save(df) + assert (ds._load()["data"] == df["data"]).all() + + +def test_azureml_assetdataset_raises_DataSetError_azureml_type(): + with pytest.raises(DataSetError, match="mltable"): + AzureMLAssetDataSet( + dataset={ + "type": PickleDataSet, + "filepath": "some/random/path/test.pickle", + }, + azureml_dataset="test_dataset", + version=Version(None, None), + azureml_type="mltable", + ) + + +def test_azureml_assetdataset_raises_DataSetError_wrapped_dataset_versioned(): + with pytest.raises(DataSetError, match=VERSIONED_FLAG_KEY): + AzureMLAssetDataSet( + dataset={ + "type": PickleDataSet, + "filepath": "some/random/path/test.pickle", + "versioned": True, + }, + azureml_dataset="test_dataset", + version=Version(None, None), + ) def test_azureml_pipeline_dataset(tmp_path: Path): From 1ded43a043bf33500b928379cc2c403de85654c0 Mon Sep 17 00:00:00 2001 From: fdroessler Date: Fri, 28 Jul 2023 23:06:38 +0000 Subject: [PATCH 47/58] add classname and adjust config loading + tests --- kedro_azureml/hooks.py | 11 +++++++---- tests/test_hook.py | 25 +++++++++++++++++-------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/kedro_azureml/hooks.py b/kedro_azureml/hooks.py index c7fb6f5..aa33ef7 100644 --- a/kedro_azureml/hooks.py +++ b/kedro_azureml/hooks.py @@ -2,6 +2,7 @@ from kedro_azureml.config import AzureMLConfig from kedro_azureml.datasets.asset_dataset import AzureMLAssetDataSet +from kedro_azureml.runner import AzurePipelinesRunner class AzureMLLocalRunHook: @@ -9,9 +10,11 @@ class AzureMLLocalRunHook: @hook_impl def after_context_created(self, context) -> None: - self.azure_config = AzureMLConfig( - **context.config_loader.get("azureml*")["azure"] - ) + if "azureml" not in context.config_loader.config_patterns.keys(): + context.config_loader.config_patterns.update( + {"azureml": ["azureml*", "azureml*/**", "**/azureml*"]} + ) + self.azure_config = AzureMLConfig(**context.config_loader["azureml"]["azure"]) @hook_impl def before_pipeline_run(self, run_params, pipeline, catalog): @@ -23,7 +26,7 @@ def before_pipeline_run(self, run_params, pipeline, catalog): """ for dataset_name, dataset in catalog._data_sets.items(): if isinstance(dataset, AzureMLAssetDataSet): - if "AzurePipelinesRunner" not in run_params["runner"]: + if AzurePipelinesRunner.__name__ not in run_params["runner"]: # when running locally using an AzureMLAssetDataSet # as an intermediate dataset we don't want download # but still set to run local with a local version. diff --git a/tests/test_hook.py b/tests/test_hook.py index 2966679..87f15fa 100644 --- a/tests/test_hook.py +++ b/tests/test_hook.py @@ -1,22 +1,31 @@ -from unittest.mock import Mock +from unittest.mock import MagicMock, Mock import pytest from kedro.io.core import Version +from kedro.runner import SequentialRunner from kedro_azureml.hooks import azureml_local_run_hook +from kedro_azureml.runner import AzurePipelinesRunner +@pytest.mark.parametrize( + "config_patterns", [({"azureml": ["azureml*", "azureml*/**", "**/azureml*"]}), ({})] +) @pytest.mark.parametrize( "runner", - [("kedro_azureml.runner.AzurePipelinesRunner"), ("kedro.runner.SequentialRunner")], + [(AzurePipelinesRunner.__name__,), (SequentialRunner.__name__)], ) def test_hook_after_context_created( - mock_azureml_config, dummy_pipeline, multi_catalog, runner + mock_azureml_config, dummy_pipeline, multi_catalog, runner, config_patterns ): - context_mock = Mock() - context_mock.config_loader.get.return_value = { - "azure": mock_azureml_config.to_dict() - } + context_mock = Mock( + config_loader=MagicMock( + __getitem__=Mock(return_value={"azure": mock_azureml_config.to_dict()}) + ) + ) + context_mock.config_loader.config_patterns.keys.return_value = ( + config_patterns.keys() + ) azureml_local_run_hook.after_context_created(context_mock) assert azureml_local_run_hook.azure_config.subscription_id == "123" @@ -27,7 +36,7 @@ def test_hook_after_context_created( azureml_local_run_hook.before_pipeline_run( run_params, dummy_pipeline, multi_catalog ) - if runner == "kedro.runner.SequentialRunner": + if runner == SequentialRunner.__name__: assert multi_catalog.datasets.input_data._download is True assert multi_catalog.datasets.input_data._local_run is True assert ( From 8fd5573b115be0408071be05549794dcbea7b73e Mon Sep 17 00:00:00 2001 From: fdroessler Date: Sat, 29 Jul 2023 09:51:28 +0000 Subject: [PATCH 48/58] add runner tests --- tests/test_runner.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/test_runner.py b/tests/test_runner.py index 81fef30..8cf0eab 100644 --- a/tests/test_runner.py +++ b/tests/test_runner.py @@ -1,9 +1,12 @@ from pathlib import Path +import pytest from kedro.extras.datasets.pickle import PickleDataSet from kedro.io import DataCatalog, MemoryDataSet +from kedro.io.core import Version from kedro.pipeline import Pipeline +from kedro_azureml.datasets.asset_dataset import AzureMLAssetDataSet from kedro_azureml.datasets.pipeline_dataset import AzureMLPipelineDataSet from kedro_azureml.runner import AzurePipelinesRunner @@ -61,3 +64,43 @@ def test_runner_pipeline_data_passing(dummy_pipeline: Pipeline, tmp_path: Path): assert Path(output_path).stat().st_size > 0, "No output data found" output_data = output_dataset.load() assert output_data == input_data, "Output data is not the same as input data" + + +@pytest.mark.parametrize( + "azureml_dataset_type,data_path", + [ + ( + "uri_folder", + "/random/folder", + ), + ("uri_file", "/random/folder/file.csv"), + ], +) +def test_asset_dataset_root_dir_adjustments( + dummy_pipeline: Pipeline, tmp_path: Path, azureml_dataset_type, data_path +): + input_path = str(tmp_path / "input_data.pickle") + input_dataset = AzureMLAssetDataSet( + dataset={ + "type": PickleDataSet, + "backend": "cloudpickle", + "filepath": input_path, + }, + azureml_dataset="test_dataset_2", + version=Version(None, None), + azureml_type=azureml_dataset_type, + ) + input_data = ["yolo :)"] + input_dataset._save(input_data) + + runner = AzurePipelinesRunner( + pipeline_data_passing=True, data_paths={"input_data": data_path, "i2": tmp_path} + ) + + catalog = DataCatalog({"input_data": input_dataset}) + assert catalog.datasets.input_data.root_dir == "data" + runner.run( + dummy_pipeline.filter(node_names=["node1"]), + catalog, + ) + assert catalog.datasets.input_data.root_dir == "/random/folder" From 4676e6750bfbc775c5f8671e7f44f96d06a3d81e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Zab=C5=82ocki?= Date: Thu, 3 Aug 2023 09:12:55 +0200 Subject: [PATCH 49/58] Temporary fix for kedro-datasets optional packages issue --- .github/workflows/tests_and_publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests_and_publish.yml b/.github/workflows/tests_and_publish.yml index e96b14b..08c48d9 100644 --- a/.github/workflows/tests_and_publish.yml +++ b/.github/workflows/tests_and_publish.yml @@ -134,6 +134,7 @@ jobs: find "../dist" -name "*.tar.gz" | xargs -I@ cp @ kedro-azureml.tar.gz echo -e "\n./kedro-azureml.tar.gz\n" >> src/requirements.txt echo -e "kedro-docker\n" >> src/requirements.txt + echo -e "openpyxl\n" >> src/requirements.txt # temp fix for kedro-datasets issues with optional packages sed -i '/kedro-telemetry/d' src/requirements.txt echo $(cat src/requirements.txt) pip install -r src/requirements.txt From 1aade8691cf5863a0473d1c4d5d153d7cc588907 Mon Sep 17 00:00:00 2001 From: marrrcin Date: Thu, 3 Aug 2023 10:47:05 +0200 Subject: [PATCH 50/58] E2E fix --- .github/workflows/tests_and_publish.yml | 2 ++ tests/conf/e2e/catalog.yml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/tests_and_publish.yml b/.github/workflows/tests_and_publish.yml index 08c48d9..12c05af 100644 --- a/.github/workflows/tests_and_publish.yml +++ b/.github/workflows/tests_and_publish.yml @@ -151,6 +151,8 @@ jobs: cp ../tests/conf/${{ matrix.e2e_config }}/azureml.yml conf/base/azureml.yml sed -i 's/{container_registry}/${{ secrets.REGISTRY_LOGIN_SERVER }}/g' conf/base/azureml.yml sed -i 's/{image_tag}/${{ matrix.e2e_config }}/g' conf/base/azureml.yml + sed -i 's/{subscription_id}/${{ secrets.AZURE_SUBSCRIPTION_ID }}/g' conf/base/catalog.yml + cat conf/base/azureml.yml - name: Login via Azure CLI diff --git a/tests/conf/e2e/catalog.yml b/tests/conf/e2e/catalog.yml index c53adcb..3bfac4e 100644 --- a/tests/conf/e2e/catalog.yml +++ b/tests/conf/e2e/catalog.yml @@ -16,3 +16,7 @@ shuttles: preprocessed_companies: type: kedro_azureml.datasets.pandas_dataset.AzureMLPandasDataSet azureml_dataset: e2e_tests_preprocessed_companies + workspace_args: + subscription_id: "{subscription_id}" + resource_group: sandbox-ml-ops + workspace_name: ml-ops-sandbox From fd9a7944719b087a3534c44bfd3160944ada2021 Mon Sep 17 00:00:00 2001 From: marrrcin Date: Thu, 3 Aug 2023 11:26:55 +0200 Subject: [PATCH 51/58] Auth fixes --- kedro_azureml/auth/__init__.py | 0 kedro_azureml/auth/utils.py | 50 ++++++++++++++++++++++++ kedro_azureml/client.py | 17 +------- kedro_azureml/datasets/file_dataset.py | 2 +- kedro_azureml/datasets/pandas_dataset.py | 2 +- kedro_azureml/datasets/utils.py | 27 ------------- 6 files changed, 54 insertions(+), 44 deletions(-) create mode 100644 kedro_azureml/auth/__init__.py create mode 100644 kedro_azureml/auth/utils.py delete mode 100644 kedro_azureml/datasets/utils.py diff --git a/kedro_azureml/auth/__init__.py b/kedro_azureml/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kedro_azureml/auth/utils.py b/kedro_azureml/auth/utils.py new file mode 100644 index 0000000..0526192 --- /dev/null +++ b/kedro_azureml/auth/utils.py @@ -0,0 +1,50 @@ +import os + +from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential +from azureml.core import Run, Workspace +from azureml.exceptions import UserErrorException + + +def get_azureml_credentials(): + try: + # On a AzureML compute instance, the managed identity will take precedence, + # while it does not have enough permissions. + # So, if we are on an AzureML compute instance, we disable the managed identity. + is_azureml_managed_identity = "MSI_ENDPOINT" in os.environ + credential = DefaultAzureCredential( + exclude_managed_identity_credential=is_azureml_managed_identity + ) + # Check if given credential can get token successfully. + credential.get_token("https://management.azure.com/.default") + except Exception: + # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work + credential = InteractiveBrowserCredential() + return credential + + +def get_workspace(*args, **kwargs) -> Workspace: + """ + Get an AzureML workspace. + + Args: + *args: Positional arguments to pass to the Workspace constructor. + **kwargs: Keyword arguments to pass to the Workspace constructor. + """ + if args or kwargs: + if kwargs is not None and "auth" not in kwargs: + kwargs["auth"] = get_azureml_credentials() + + workspace = Workspace(*args, **kwargs) + else: + try: + # if running on azureml compute instance + workspace = Workspace.from_config() + except UserErrorException: + try: + # if running on azureml compute cluster. + workspace = Run.get_context().experiment.workspace + except AttributeError as e: + raise UserErrorException( + "Could not connect to AzureML workspace." + ) from e + return workspace diff --git a/kedro_azureml/client.py b/kedro_azureml/client.py index 7b07fae..d56cd0d 100644 --- a/kedro_azureml/client.py +++ b/kedro_azureml/client.py @@ -1,6 +1,5 @@ import json import logging -import os from contextlib import contextmanager from pathlib import Path from tempfile import TemporaryDirectory @@ -8,8 +7,8 @@ from azure.ai.ml import MLClient from azure.ai.ml.entities import Job -from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential +from kedro_azureml.auth.utils import get_azureml_credentials from kedro_azureml.config import AzureMLConfig logger = logging.getLogger(__name__) @@ -23,19 +22,7 @@ def _get_azureml_client(subscription_id: Optional[str], config: AzureMLConfig): "workspace_name": config.workspace_name, } - try: - # On a AzureML compute instance, the managed identity will take precedence, - # while it does not have enough permissions. - # So, if we are on an AzureML compute instance, we disable the managed identity. - is_azureml_managed_identity = "MSI_ENDPOINT" in os.environ - credential = DefaultAzureCredential( - exclude_managed_identity_credential=is_azureml_managed_identity - ) - # Check if given credential can get token successfully. - credential.get_token("https://management.azure.com/.default") - except Exception: - # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work - credential = InteractiveBrowserCredential() + credential = get_azureml_credentials() with TemporaryDirectory() as tmp_dir: config_path = Path(tmp_dir) / "config.json" diff --git a/kedro_azureml/datasets/file_dataset.py b/kedro_azureml/datasets/file_dataset.py index 30eef8f..f2c86b8 100644 --- a/kedro_azureml/datasets/file_dataset.py +++ b/kedro_azureml/datasets/file_dataset.py @@ -5,7 +5,7 @@ from azureml.data.dataset_factory import FileDatasetFactory from kedro.io import PartitionedDataSet -from kedro_azureml.datasets.utils import get_workspace +from kedro_azureml.auth.utils import get_workspace @dataclass diff --git a/kedro_azureml/datasets/pandas_dataset.py b/kedro_azureml/datasets/pandas_dataset.py index 1cf90af..54839de 100644 --- a/kedro_azureml/datasets/pandas_dataset.py +++ b/kedro_azureml/datasets/pandas_dataset.py @@ -5,7 +5,7 @@ from azureml.data.dataset_factory import TabularDatasetFactory from kedro.io import AbstractDataSet -from kedro_azureml.datasets.utils import get_workspace +from kedro_azureml.auth.utils import get_workspace class AzureMLPandasDataSet(AbstractDataSet): diff --git a/kedro_azureml/datasets/utils.py b/kedro_azureml/datasets/utils.py deleted file mode 100644 index 672cbb6..0000000 --- a/kedro_azureml/datasets/utils.py +++ /dev/null @@ -1,27 +0,0 @@ -from azureml.core import Run, Workspace -from azureml.exceptions import UserErrorException - - -def get_workspace(*args, **kwargs) -> Workspace: - """ - Get an AzureML workspace. - - Args: - *args: Positional arguments to pass to the Workspace constructor. - **kwargs: Keyword arguments to pass to the Workspace constructor. - """ - if args or kwargs: - workspace = Workspace(*args, **kwargs) - else: - try: - # if running on azureml compute instance - workspace = Workspace.from_config() - except UserErrorException: - try: - # if running on azureml compute cluster. - workspace = Run.get_context().experiment.workspace - except AttributeError as e: - raise UserErrorException( - "Could not connect to AzureML workspace." - ) from e - return workspace From 69d4368af42bb933827f66407ea8b19bb726ac39 Mon Sep 17 00:00:00 2001 From: marrrcin Date: Thu, 3 Aug 2023 12:00:41 +0200 Subject: [PATCH 52/58] UT fixes --- tests/test_cli.py | 10 +++++----- tests/test_datasets.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index dfec194..0fac054 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -267,9 +267,9 @@ def test_can_invoke_run( ), patch.object(Path, "cwd", return_value=tmp_path), patch( "kedro_azureml.client.MLClient" ) as ml_client_patched, patch( - "kedro_azureml.client.DefaultAzureCredential" + "kedro_azureml.auth.utils.DefaultAzureCredential" ) as default_credentials, patch( - "kedro_azureml.client.InteractiveBrowserCredential" + "kedro_azureml.auth.utils.InteractiveBrowserCredential" ) as interactive_credentials, patch.dict( os.environ, {"AZURE_STORAGE_ACCOUNT_KEY": "dummy_key"} ): @@ -355,7 +355,7 @@ def test_run_is_interrupted_if_used_on_empty_env( ), patch.object(Path, "cwd", return_value=tmp_path), patch.dict( os.environ, {"AZURE_STORAGE_ACCOUNT_KEY": "dummy_key"} ), patch( - "kedro_azureml.client.DefaultAzureCredential" + "kedro_azureml.auth.utils.DefaultAzureCredential" ), patch( "click.confirm", return_value=confirm ) as click_confirm: @@ -379,7 +379,7 @@ def test_can_invoke_run_with_failed_pipeline( ), patch.object(Path, "cwd", return_value=tmp_path), patch( "kedro_azureml.client.MLClient" ) as ml_client_patched, patch( - "kedro_azureml.client.DefaultAzureCredential" + "kedro_azureml.auth.utils.DefaultAzureCredential" ), patch.dict( os.environ, {"AZURE_STORAGE_ACCOUNT_KEY": "dummy_key"} ): @@ -422,7 +422,7 @@ def test_fail_if_invalid_env_provided_in_run( ), patch.object(Path, "cwd", return_value=tmp_path), patch( "kedro_azureml.client.MLClient" ) as ml_client_patched, patch( - "kedro_azureml.client.DefaultAzureCredential" + "kedro_azureml.auth.utils.DefaultAzureCredential" ), patch.dict( os.environ, {"AZURE_STORAGE_ACCOUNT_KEY": "dummy_key"} ): diff --git a/tests/test_datasets.py b/tests/test_datasets.py index 4277f12..f7f23c3 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -435,7 +435,7 @@ def test_can_save_python_objects_using_fspec(obj, comparer, patched_azure_datase @pytest.mark.parametrize( "workspace_patch_class", - ["kedro_azureml.datasets.utils.Run", "kedro_azureml.datasets.utils.Workspace"], + ["kedro_azureml.auth.utils.Run", "kedro_azureml.auth.utils.Workspace"], ) def test_can_use_pandas_to_azure(workspace_patch_class): with patch( From 413e60080326fda72544b00c2f305178908bfd6b Mon Sep 17 00:00:00 2001 From: marrrcin Date: Fri, 4 Aug 2023 12:14:18 +0200 Subject: [PATCH 53/58] Lazy initialization for v1 datasets --- kedro_azureml/auth/utils.py | 30 ++++++++++++++++++++---- kedro_azureml/datasets/file_dataset.py | 28 ++++++++++------------ kedro_azureml/datasets/pandas_dataset.py | 16 ++++--------- 3 files changed, 42 insertions(+), 32 deletions(-) diff --git a/kedro_azureml/auth/utils.py b/kedro_azureml/auth/utils.py index 0526192..0808bfd 100644 --- a/kedro_azureml/auth/utils.py +++ b/kedro_azureml/auth/utils.py @@ -1,7 +1,8 @@ import os +from functools import cached_property from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential -from azureml.core import Run, Workspace +from azureml.core import Datastore, Run, Workspace from azureml.exceptions import UserErrorException @@ -31,9 +32,6 @@ def get_workspace(*args, **kwargs) -> Workspace: **kwargs: Keyword arguments to pass to the Workspace constructor. """ if args or kwargs: - if kwargs is not None and "auth" not in kwargs: - kwargs["auth"] = get_azureml_credentials() - workspace = Workspace(*args, **kwargs) else: try: @@ -48,3 +46,27 @@ def get_workspace(*args, **kwargs) -> Workspace: "Could not connect to AzureML workspace." ) from e return workspace + + +class AzureMLDataStoreMixin: + def __init__(self, workspace_args, azureml_datastore=None, workspace=None): + self._workspace_instance = workspace + self._azureml_datastore = azureml_datastore + self._workspace_args = workspace_args or dict() + + @cached_property + def _workspace(self) -> Workspace: + return self._workspace_instance or get_workspace(**self._workspace_args) + + @cached_property + def _azureml_datastore(self) -> str: + return self._azureml_datastore or self._workspace.get_default_datastore().name + + @cached_property + def _datastore_container_name(self) -> str: + ds = Datastore.get(self._workspace, self._azureml_datastore) + return ds.container_name + + @cached_property + def _azureml_path(self): + return f"abfs://{self._datastore_container_name}/" diff --git a/kedro_azureml/datasets/file_dataset.py b/kedro_azureml/datasets/file_dataset.py index f2c86b8..cac1720 100644 --- a/kedro_azureml/datasets/file_dataset.py +++ b/kedro_azureml/datasets/file_dataset.py @@ -3,9 +3,9 @@ from azureml.core import Dataset, Datastore, Workspace from azureml.data.dataset_factory import FileDatasetFactory -from kedro.io import PartitionedDataSet +from kedro.io import PartitionedDataset -from kedro_azureml.auth.utils import get_workspace +from kedro_azureml.auth.utils import AzureMLDataStoreMixin @dataclass @@ -27,7 +27,7 @@ def from_abfs_path(cls, path: str): return cls(storage_container=p[0], blob_path="/".join(p[1:])) -class AzureMLFileDataSet(PartitionedDataSet): +class AzureMLFileDataSet(PartitionedDataset, AzureMLDataStoreMixin): """ AzureML file dataset integration with Kedro, using `kedro.io.PartitionedDataSet` as base class. Can be used to save (register) data stored in azure blob storage as an AzureML file dataset. @@ -167,27 +167,19 @@ def __init__( ) self._workspace_args = workspace_args or dict() - self._workspace = workspace or get_workspace(**self._workspace_args) self._azureml_dataset = azureml_dataset self._azureml_dataset_save_args = azureml_dataset_save_args or dict() self._azureml_dataset_load_args = azureml_dataset_load_args or dict() - self._azureml_datastore = ( - azureml_datastore or self._workspace.get_default_datastore().name + AzureMLDataStoreMixin.__init__( + self, workspace_args, azureml_datastore, workspace ) - ds = Datastore.get(self._workspace, self._azureml_datastore) - - # validate that azureml_datastore exists - if self._azureml_datastore not in self._workspace.datastores: - raise ValueError( - f"Datastore {self._azureml_datastore} not found in workspace {self._workspace.name}" - ) # init `PartitionedDataSet` with `path` as the blob storage container (the container of the azureml_datastore) - path = f"abfs://{ds.container_name}/" - super().__init__(path, **kwargs) + PartitionedDataset.__init__(self, "not_initialized_yet", **kwargs) def _save(self, data: t.Dict[str, t.Any]) -> None: # save to azure blob storage + self._path = self._azureml_path # late-resolving super()._save(data) # save to azureml file-azureml_dataset @@ -208,7 +200,7 @@ def _list_partitions(self) -> t.List[str]: storage. therefore, override existing `_list_partitions` method to return `partitioned_paths`, so that we can utilize the existing `PartitionedDataSet._load` method to load the data. """ - + self._path = self._azureml_path # late-resolving dataset = Dataset.get_by_name( self._workspace, name=self._azureml_dataset, @@ -223,3 +215,7 @@ def _list_partitions(self) -> t.List[str]: partitioned_paths = [f"{container}/{p}" for p in azureml_paths] return partitioned_paths + + def _load(self): + self._path = self._azureml_path + return super()._load() diff --git a/kedro_azureml/datasets/pandas_dataset.py b/kedro_azureml/datasets/pandas_dataset.py index 54839de..69a6894 100644 --- a/kedro_azureml/datasets/pandas_dataset.py +++ b/kedro_azureml/datasets/pandas_dataset.py @@ -5,10 +5,10 @@ from azureml.data.dataset_factory import TabularDatasetFactory from kedro.io import AbstractDataSet -from kedro_azureml.auth.utils import get_workspace +from kedro_azureml.auth.utils import AzureMLDataStoreMixin -class AzureMLPandasDataSet(AbstractDataSet): +class AzureMLPandasDataSet(AbstractDataSet, AzureMLDataStoreMixin): """ AzureML tabular dataset integration with Pandas DataFrame and kedro. Can be used to save Pandas DataFrame to AzureML tabular dataset, and load it back to Pandas DataFrame. @@ -74,21 +74,13 @@ def __init__( workspace: AzureML Workspace. If not specified, will attempt to load the workspace automatically. workspace_args: Additional arguments to pass to `utils.get_workspace()`. """ - self._workspace_args = workspace_args or dict() - self._workspace = workspace or get_workspace(**self._workspace_args) self._azureml_dataset = azureml_dataset self._azureml_dataset_save_args = azureml_dataset_save_args or dict() self._azureml_dataset_load_args = azureml_dataset_load_args or dict() - self._azureml_datastore = ( - azureml_datastore or self._workspace.get_default_datastore().name + AzureMLDataStoreMixin.__init__( + self, workspace_args, azureml_datastore, workspace ) - # validate that azureml_datastore exists - if self._azureml_datastore not in self._workspace.datastores: - raise ValueError( - f"Datastore {self._azureml_datastore} not found in workspace {self._workspace.name}" - ) - def _load(self) -> pd.DataFrame: azureml_dataset = Dataset.get_by_name( self._workspace, From ef25ce3b897845aa9b2a61566add6938b0cf2e63 Mon Sep 17 00:00:00 2001 From: marrrcin Date: Fri, 4 Aug 2023 12:55:58 +0200 Subject: [PATCH 54/58] E2E fix --- .github/workflows/tests_and_publish.yml | 1 - tests/conf/e2e/catalog.yml | 4 ---- 2 files changed, 5 deletions(-) diff --git a/.github/workflows/tests_and_publish.yml b/.github/workflows/tests_and_publish.yml index 12c05af..8a79a37 100644 --- a/.github/workflows/tests_and_publish.yml +++ b/.github/workflows/tests_and_publish.yml @@ -151,7 +151,6 @@ jobs: cp ../tests/conf/${{ matrix.e2e_config }}/azureml.yml conf/base/azureml.yml sed -i 's/{container_registry}/${{ secrets.REGISTRY_LOGIN_SERVER }}/g' conf/base/azureml.yml sed -i 's/{image_tag}/${{ matrix.e2e_config }}/g' conf/base/azureml.yml - sed -i 's/{subscription_id}/${{ secrets.AZURE_SUBSCRIPTION_ID }}/g' conf/base/catalog.yml cat conf/base/azureml.yml diff --git a/tests/conf/e2e/catalog.yml b/tests/conf/e2e/catalog.yml index 3bfac4e..c53adcb 100644 --- a/tests/conf/e2e/catalog.yml +++ b/tests/conf/e2e/catalog.yml @@ -16,7 +16,3 @@ shuttles: preprocessed_companies: type: kedro_azureml.datasets.pandas_dataset.AzureMLPandasDataSet azureml_dataset: e2e_tests_preprocessed_companies - workspace_args: - subscription_id: "{subscription_id}" - resource_group: sandbox-ml-ops - workspace_name: ml-ops-sandbox From a25a02a52be6c344cd767be1fc31f2b5312ba026 Mon Sep 17 00:00:00 2001 From: marrrcin Date: Fri, 4 Aug 2023 13:46:46 +0200 Subject: [PATCH 55/58] E2E fix --- kedro_azureml/auth/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kedro_azureml/auth/utils.py b/kedro_azureml/auth/utils.py index 0808bfd..1512a56 100644 --- a/kedro_azureml/auth/utils.py +++ b/kedro_azureml/auth/utils.py @@ -51,7 +51,7 @@ def get_workspace(*args, **kwargs) -> Workspace: class AzureMLDataStoreMixin: def __init__(self, workspace_args, azureml_datastore=None, workspace=None): self._workspace_instance = workspace - self._azureml_datastore = azureml_datastore + self._azureml_datastore_name = azureml_datastore self._workspace_args = workspace_args or dict() @cached_property @@ -60,7 +60,9 @@ def _workspace(self) -> Workspace: @cached_property def _azureml_datastore(self) -> str: - return self._azureml_datastore or self._workspace.get_default_datastore().name + return ( + self._azureml_datastore_name or self._workspace.get_default_datastore().name + ) @cached_property def _datastore_container_name(self) -> str: From 4c892f957ef408b9a44510ce7b96e467446da6b1 Mon Sep 17 00:00:00 2001 From: marrrcin Date: Fri, 4 Aug 2023 15:43:03 +0200 Subject: [PATCH 56/58] Add AzureMLAssetDataSet to e2e tests --- tests/conf/e2e/catalog.yml | 10 ++++++++++ tests/conf/e2e_pipeline_data_passing/catalog.yml | 12 +++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/conf/e2e/catalog.yml b/tests/conf/e2e/catalog.yml index c53adcb..a09d3f0 100644 --- a/tests/conf/e2e/catalog.yml +++ b/tests/conf/e2e/catalog.yml @@ -16,3 +16,13 @@ shuttles: preprocessed_companies: type: kedro_azureml.datasets.pandas_dataset.AzureMLPandasDataSet azureml_dataset: e2e_tests_preprocessed_companies + +model_input_table: + type: kedro_azureml.datasets.AzureMLAssetDataSet + azureml_dataset: e2e_tests_no_pdp + root_dir: data/02_intermediate + dataset: + type: pandas.CSVDataSet + filepath: model_input_table.csv + save_args: + index: false diff --git a/tests/conf/e2e_pipeline_data_passing/catalog.yml b/tests/conf/e2e_pipeline_data_passing/catalog.yml index 63bebef..078fb35 100644 --- a/tests/conf/e2e_pipeline_data_passing/catalog.yml +++ b/tests/conf/e2e_pipeline_data_passing/catalog.yml @@ -22,4 +22,14 @@ preprocessed_shuttles: type: kedro_azureml.datasets.AzureMLPipelineDataSet dataset: type: pandas.CSVDataSet - filepath: "shuttles.csv" \ No newline at end of file + filepath: "shuttles.csv" + +model_input_table: + type: kedro_azureml.datasets.AzureMLAssetDataSet + azureml_dataset: e2e_tests_pdp + root_dir: data/02_intermediate + dataset: + type: pandas.CSVDataSet + filepath: model_input_table.csv + save_args: + index: false From a4668aeb6061bf15b31b958ca62e07d5ef70ab06 Mon Sep 17 00:00:00 2001 From: marrrcin Date: Thu, 10 Aug 2023 13:26:57 +0200 Subject: [PATCH 57/58] CHANGELOG + Kedro update + docs --- CHANGELOG.md | 4 + docs/conf.py | 7 +- docs/source/05_data_assets.rst | 36 +++- kedro_azureml/datasets/file_dataset.py | 9 + kedro_azureml/datasets/pandas_dataset.py | 9 + poetry.lock | 237 +++++++++++++++++++++-- pyproject.toml | 2 +- 7 files changed, 277 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0ddadb..4d3826c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog ## [Unreleased] +- [🚀 New dataset] Added support for `AzureMLAssetDataSet` based on Azure ML SDK v2 (fsspec) by [@tomasvanpottelbergh](https://github.com/tomasvanpottelbergh) & [@froessler](https://github.com/fdroessler) +- [📝 Docs] Updated datasets docs with sections +- Bumped minimal required Kedro version to `0.18.11 +- [⚠️ Deprecation warning] - starting from `0.4.0` the plugin is not compatible with ARM macOS versions due to internal azure dependencies (v1 SDKs). V1 SDK-based datasets will be removed in the future ## [0.4.1] - 2023-05-04 diff --git a/docs/conf.py b/docs/conf.py index 3be8d5c..76c24e7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -60,7 +60,12 @@ # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] -autodoc_mock_imports = ["azureml", "pandas", "backoff", "cloudpickle"] +autodoc_mock_imports = [ + "azureml", + "pandas", + "backoff", + "cloudpickle", +] # -- Options for HTML output ------------------------------------------------- diff --git a/docs/source/05_data_assets.rst b/docs/source/05_data_assets.rst index 439d65a..72f9f7e 100644 --- a/docs/source/05_data_assets.rst +++ b/docs/source/05_data_assets.rst @@ -1,11 +1,15 @@ Azure Data Assets ================= -``kedro-azureml`` adds support for two new datasets that can be used in the Kedro catalog, the ``AzureMLFileDataSet`` -and the ``AzureMLPandasDataSet`` which translate to `File/Folder dataset`_ and `Tabular dataset`_ respectively in +``kedro-azureml`` adds support for two new datasets that can be used in the Kedro catalog. Right now we support both Azure ML v1 SDK (direct Python) and Azure ML v2 SDK (fsspec-based) APIs. + +**For v2 API (fspec-based)** - use ``AzureMLAssetDataSet`` that enables to use Azure ML v2-sdk Folder/File datasets for remote and local runs. + +**For v1 API** (deprecated ⚠️) use the ``AzureMLFileDataSet`` and the ``AzureMLPandasDataSet`` which translate to `File/Folder dataset`_ and `Tabular dataset`_ respectively in Azure Machine Learning. Both fully support the Azure versioning mechanism and can be used in the same way as any other dataset in Kedro. + Apart from these, ``kedro-azureml`` also adds the ``AzureMLPipelineDataSet`` which is used to pass data between pipeline nodes when the pipeline is run on Azure ML and the *pipeline data passing* feature is enabled. By default, data is then saved and loaded using the ``PickleDataSet`` as underlying dataset. @@ -24,15 +28,37 @@ For details on usage, see the :ref:`API Reference` below API Reference ------------- -.. autoclass:: kedro_azureml.datasets.AzureMLPandasDataSet +Pipeline data passing +^^^^^^^^^^^^^ + +⚠️ Cannot be used when run locally. + +.. autoclass:: kedro_azureml.datasets.AzureMLPipelineDataSet :members: ----------------- -.. autoclass:: kedro_azureml.datasets.AzureMLFileDataSet + +V2 SDK +^^^^^^^^^^^^^ +Use the dataset below when you're using Azure ML SDK v2 (fsspec-based). + +✅ Can be used for both remote and local runs. + +.. autoclass:: kedro_azureml.datasets.asset_dataset.AzureMLAssetDataSet + :members: + +V1 SDK +^^^^^^^^^^^^^ +Use the datasets below when you're using Azure ML SDK v1 (direct Python). + +⚠️ Deprecated - will be removed in future version of `kedro-azureml`. + +.. autoclass:: kedro_azureml.datasets.AzureMLPandasDataSet :members: ----------------- -.. autoclass:: kedro_azureml.datasets.AzureMLPipelineDataSet +.. autoclass:: kedro_azureml.datasets.AzureMLFileDataSet :members: + diff --git a/kedro_azureml/datasets/file_dataset.py b/kedro_azureml/datasets/file_dataset.py index cac1720..89f2752 100644 --- a/kedro_azureml/datasets/file_dataset.py +++ b/kedro_azureml/datasets/file_dataset.py @@ -1,4 +1,5 @@ import typing as t +import warnings from dataclasses import dataclass from azureml.core import Dataset, Datastore, Workspace @@ -161,6 +162,14 @@ def __init__( make sure to not pass `path` argument, as it will be built from `azureml_datastore` argument. """ # validate that `path` is not part of kwargs, as we are building the `path` from `azureml_datastore` argument. + warnings.warn( + "Dataset AzureMLFileDataSet is deprecated and will" + " be removed in the upcoming release of kedro-azureml due to incompatibility" + " of Azure ML SDK v1 with ARM macOS\n" + "Please use AzureMLAssetDataSet instead", + DeprecationWarning, + stacklevel=2, + ) if "path" in kwargs: raise ValueError( f"`path` is not a valid argument for {self.__class__.__name__}" diff --git a/kedro_azureml/datasets/pandas_dataset.py b/kedro_azureml/datasets/pandas_dataset.py index 69a6894..525eb48 100644 --- a/kedro_azureml/datasets/pandas_dataset.py +++ b/kedro_azureml/datasets/pandas_dataset.py @@ -1,4 +1,5 @@ import typing as t +import warnings import pandas as pd from azureml.core import Dataset, Datastore, Workspace @@ -74,6 +75,14 @@ def __init__( workspace: AzureML Workspace. If not specified, will attempt to load the workspace automatically. workspace_args: Additional arguments to pass to `utils.get_workspace()`. """ + warnings.warn( + "Dataset AzureMLPandasDataSet is deprecated and will" + " be removed in the upcoming release of kedro-azureml due to incompatibility" + " of Azure ML SDK v1 with ARM macOS\n" + "Please use AzureMLAssetDataSet instead", + DeprecationWarning, + stacklevel=2, + ) self._azureml_dataset = azureml_dataset self._azureml_dataset_save_args = azureml_dataset_save_args or dict() self._azureml_dataset_load_args = azureml_dataset_load_args or dict() diff --git a/poetry.lock b/poetry.lock index faba959..3a500c7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry and should not be changed by hand. [[package]] name = "adal" version = "1.2.7" description = "Note: This library is already replaced by MSAL Python, available here: https://pypi.org/project/msal/ .ADAL Python remains available here as a legacy. The ADAL for Python library makes it easy for python application to authenticate to Azure Active Directory (AAD) in order to access AAD protected web resources." +category = "main" optional = false python-versions = "*" files = [ @@ -21,6 +22,7 @@ requests = ">=2.0.0,<3" name = "adlfs" version = "2023.4.0" description = "Access Azure Datalake Gen1 with fsspec and dask" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -43,6 +45,7 @@ docs = ["furo", "myst-parser", "numpydoc", "sphinx"] name = "aiohttp" version = "3.8.4" description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -151,6 +154,7 @@ speedups = ["Brotli", "aiodns", "cchardet"] name = "aiosignal" version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -165,6 +169,7 @@ frozenlist = ">=1.1.0" name = "alembic" version = "1.11.1" description = "A database migration tool for SQLAlchemy." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -186,6 +191,7 @@ tz = ["python-dateutil"] name = "antlr4-python3-runtime" version = "4.9.3" description = "ANTLR 4.9.3 runtime for Python 3.7" +category = "main" optional = false python-versions = "*" files = [ @@ -196,6 +202,7 @@ files = [ name = "anyconfig" version = "0.10.1" description = "Library provides common APIs to load and dump configuration files in various formats" +category = "main" optional = false python-versions = "*" files = [ @@ -218,6 +225,7 @@ yaml = ["pyyaml"] name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = "*" files = [ @@ -229,6 +237,7 @@ files = [ name = "argcomplete" version = "2.1.2" description = "Bash tab completion for argparse" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -244,6 +253,7 @@ test = ["coverage", "flake8", "mypy", "pexpect", "wheel"] name = "arrow" version = "1.2.3" description = "Better dates & times for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -258,6 +268,7 @@ python-dateutil = ">=2.7.0" name = "async-timeout" version = "4.0.2" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -269,6 +280,7 @@ files = [ name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -279,6 +291,7 @@ files = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -297,6 +310,7 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "azure-ai-ml" version = "1.8.0" description = "Microsoft Azure Machine Learning Client Library for Python" +category = "main" optional = false python-versions = "<4.0,>=3.7" files = [ @@ -331,6 +345,7 @@ designer = ["mldesigner"] name = "azure-common" version = "1.1.28" description = "Microsoft Azure Client Library for Python (Common)" +category = "main" optional = false python-versions = "*" files = [ @@ -342,6 +357,7 @@ files = [ name = "azure-core" version = "1.28.0" description = "Microsoft Azure Core Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -361,6 +377,7 @@ aio = ["aiohttp (>=3.0)"] name = "azure-datalake-store" version = "0.0.53" description = "Azure Data Lake Store Filesystem Client Library for Python" +category = "main" optional = false python-versions = "*" files = [ @@ -377,6 +394,7 @@ requests = ">=2.20.0" name = "azure-graphrbac" version = "0.61.1" description = "Microsoft Azure Graph RBAC Client Library for Python" +category = "main" optional = false python-versions = "*" files = [ @@ -393,6 +411,7 @@ msrestazure = ">=0.4.32,<2.0.0" name = "azure-identity" version = "1.13.0" description = "Microsoft Azure Identity Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -411,6 +430,7 @@ six = ">=1.12.0" name = "azure-mgmt-authorization" version = "3.0.0" description = "Microsoft Azure Authorization Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -427,6 +447,7 @@ msrest = ">=0.7.1" name = "azure-mgmt-containerregistry" version = "10.1.0" description = "Microsoft Azure Container Registry Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -443,6 +464,7 @@ msrest = ">=0.7.1" name = "azure-mgmt-core" version = "1.4.0" description = "Microsoft Azure Management Core Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -457,6 +479,7 @@ azure-core = ">=1.26.2,<2.0.0" name = "azure-mgmt-keyvault" version = "10.2.2" description = "Microsoft Azure Key Vault Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -473,6 +496,7 @@ isodate = ">=0.6.1,<1.0.0" name = "azure-mgmt-resource" version = "22.0.0" description = "Microsoft Azure Resource Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -489,6 +513,7 @@ msrest = ">=0.7.1" name = "azure-mgmt-storage" version = "21.0.0" description = "Microsoft Azure Storage Management Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -505,6 +530,7 @@ msrest = ">=0.7.1" name = "azure-storage-blob" version = "12.13.0" description = "Microsoft Azure Blob Storage Client Library for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -521,6 +547,7 @@ msrest = ">=0.6.21" name = "azure-storage-file-datalake" version = "12.8.0" description = "Microsoft Azure File DataLake Storage Client Library for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -537,6 +564,7 @@ msrest = ">=0.6.21" name = "azure-storage-file-share" version = "12.13.0" description = "Microsoft Azure Azure File Share Storage Client Library for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -557,6 +585,7 @@ aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] name = "azureml-core" version = "1.52.0" description = "Azure Machine Learning core packages, modules, and classes" +category = "main" optional = false python-versions = ">=3.7,< 4.0" files = [ @@ -576,7 +605,7 @@ azure-mgmt-resource = ">=15.0.0,<=22.0.0" azure-mgmt-storage = ">=16.0.0,<=21.0.0" "backports.tempfile" = "*" contextlib2 = "<22.0.0" -cryptography = "<1.9 || >1.9,<2.0.dev0 || >=2.3.dev0" +cryptography = "<1.9 || >1.9,<2.0.0 || >=2.3.0" docker = "<7.0.0" humanfriendly = ">=4.7,<11.0" jmespath = "<2.0.0" @@ -603,6 +632,7 @@ urllib3 = ">=1.23,<2.0.0" name = "azureml-dataprep" version = "4.11.4" description = "Azure ML Data Preparation SDK is used to load, transform, and write data for machine learning workflows" +category = "main" optional = false python-versions = "*" files = [ @@ -629,6 +659,7 @@ scipy = ["scipy (>=1.1.0,<2.0.0)"] name = "azureml-dataprep-native" version = "38.0.0" description = "Python Package for AzureML DataPrep specific native extensions." +category = "main" optional = false python-versions = "*" files = [ @@ -656,6 +687,7 @@ files = [ name = "azureml-dataprep-rslex" version = "2.18.4" description = "Azure ML Data Preparation RustLex" +category = "main" optional = false python-versions = "*" files = [ @@ -680,6 +712,7 @@ files = [ name = "azureml-dataset-runtime" version = "1.52.0" description = "The package is to coordinate dependencies within AzureML packages. This package is internal, and is not intended to be used directly." +category = "main" optional = false python-versions = "*" files = [ @@ -704,6 +737,7 @@ scipy = ["scipy (>=1.1.0,<2.0.0)"] name = "azureml-fsspec" version = "1.1.1" description = "Access datastore uri with fsspec" +category = "main" optional = false python-versions = ">=3.6,< 4.0" files = [ @@ -718,6 +752,7 @@ fsspec = ">=2021.6.1" name = "azureml-mlflow" version = "1.52.0" description = "Contains the integration code of AzureML with Mlflow." +category = "main" optional = true python-versions = ">=3.7,<4.0" files = [ @@ -743,6 +778,7 @@ deployments = ["flask", "numpy", "pandas"] name = "backoff" version = "2.2.1" description = "Function decoration for backoff and retry" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -754,6 +790,7 @@ files = [ name = "backports-tempfile" version = "1.0" description = "Backport of new features in Python's tempfile module" +category = "main" optional = false python-versions = "*" files = [ @@ -768,6 +805,7 @@ files = [ name = "backports-weakref" version = "1.0.post1" description = "Backport of new features in Python's weakref module" +category = "main" optional = false python-versions = "*" files = [ @@ -779,6 +817,7 @@ files = [ name = "bcrypt" version = "4.0.1" description = "Modern password hashing for your software and your servers" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -813,6 +852,7 @@ typecheck = ["mypy"] name = "binaryornot" version = "0.4.4" description = "Ultra-lightweight pure Python package to check if a file is binary or text." +category = "main" optional = false python-versions = "*" files = [ @@ -827,6 +867,7 @@ chardet = ">=3.0.2" name = "blinker" version = "1.6.2" description = "Fast, simple object-to-object and broadcast signaling" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -838,6 +879,7 @@ files = [ name = "build" version = "0.10.0" description = "A simple, correct Python build frontend" +category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -861,6 +903,7 @@ virtualenv = ["virtualenv (>=20.0.35)"] name = "cachetools" version = "5.3.1" description = "Extensible memoizing collections and decorators" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -872,6 +915,7 @@ files = [ name = "certifi" version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -883,6 +927,7 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" files = [ @@ -959,6 +1004,7 @@ pycparser = "*" name = "cfgv" version = "3.3.1" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -970,6 +1016,7 @@ files = [ name = "chardet" version = "5.1.0" description = "Universal encoding detector for Python 3" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -981,6 +1028,7 @@ files = [ name = "charset-normalizer" version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -1065,6 +1113,7 @@ files = [ name = "click" version = "8.1.5" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1079,6 +1128,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "cloudpickle" version = "2.2.1" description = "Extended pickling support for Python objects" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1090,6 +1140,7 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -1101,6 +1152,7 @@ files = [ name = "contextlib2" version = "21.6.0" description = "Backports and enhancements for the contextlib module" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1112,6 +1164,7 @@ files = [ name = "cookiecutter" version = "2.2.3" description = "A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1132,6 +1185,7 @@ requests = ">=2.23.0" name = "coverage" version = "7.2.7" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1207,6 +1261,7 @@ toml = ["tomli"] name = "cryptography" version = "41.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1252,6 +1307,7 @@ test-randomorder = ["pytest-randomly"] name = "databricks-cli" version = "0.17.7" description = "A command line interface for Databricks" +category = "main" optional = true python-versions = "*" files = [ @@ -1272,6 +1328,7 @@ urllib3 = ">=1.26.7,<2.0.0" name = "distlib" version = "0.3.6" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -1283,6 +1340,7 @@ files = [ name = "distro" version = "1.8.0" description = "Distro - an OS platform information API" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1294,6 +1352,7 @@ files = [ name = "docker" version = "6.1.3" description = "A Python library for the Docker Engine API." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1315,6 +1374,7 @@ ssh = ["paramiko (>=2.4.3)"] name = "dotnetcore2" version = "3.1.23" description = ".Net Core 3.1 runtime" +category = "main" optional = false python-versions = "*" files = [ @@ -1331,6 +1391,7 @@ distro = ">=1.2.0" name = "dynaconf" version = "3.2.0" description = "The dynamic configurator for your Python Project" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1352,6 +1413,7 @@ yaml = ["ruamel.yaml"] name = "entrypoints" version = "0.4" description = "Discover and load entry points from installed packages." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1363,6 +1425,7 @@ files = [ name = "filelock" version = "3.12.2" description = "A platform independent file lock." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1378,6 +1441,7 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "p name = "flask" version = "2.3.2" description = "A simple framework for building complex web applications." +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -1401,6 +1465,7 @@ dotenv = ["python-dotenv"] name = "frozenlist" version = "1.4.0" description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1471,6 +1536,7 @@ files = [ name = "fsspec" version = "2023.6.0" description = "File-system specification" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1506,6 +1572,7 @@ tqdm = ["tqdm"] name = "gitdb" version = "4.0.10" description = "Git Object Database" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1520,6 +1587,7 @@ smmap = ">=3.0.1,<6" name = "gitpython" version = "3.1.32" description = "GitPython is a Python library used to interact with Git repositories" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1534,6 +1602,7 @@ gitdb = ">=4.0.1,<5" name = "google-api-core" version = "2.11.1" description = "Google API client core library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1556,6 +1625,7 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] name = "google-auth" version = "2.22.0" description = "Google Authentication Library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1581,6 +1651,7 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] name = "googleapis-common-protos" version = "1.59.1" description = "Common protobufs used in Google APIs" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1598,6 +1669,7 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] name = "greenlet" version = "2.0.2" description = "Lightweight in-process concurrent programming" +category = "main" optional = true python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ @@ -1671,6 +1743,7 @@ test = ["objgraph", "psutil"] name = "gunicorn" version = "20.1.0" description = "WSGI HTTP Server for UNIX" +category = "main" optional = true python-versions = ">=3.5" files = [ @@ -1691,6 +1764,7 @@ tornado = ["tornado (>=0.2)"] name = "humanfriendly" version = "10.0" description = "Human friendly output for text interfaces using Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1705,6 +1779,7 @@ pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_ve name = "identify" version = "2.5.24" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1719,6 +1794,7 @@ license = ["ukkonen"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1730,6 +1806,7 @@ files = [ name = "importlib-metadata" version = "5.2.0" description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1749,6 +1826,7 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "importlib-resources" version = "6.0.0" description = "Read resources from Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1767,6 +1845,7 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1778,6 +1857,7 @@ files = [ name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" +category = "main" optional = false python-versions = "*" files = [ @@ -1792,6 +1872,7 @@ six = "*" name = "itsdangerous" version = "2.1.2" description = "Safely pass data to untrusted environments and back." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1803,6 +1884,7 @@ files = [ name = "jeepney" version = "0.8.0" description = "Low-level, pure Python DBus protocol wrapper." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1818,6 +1900,7 @@ trio = ["async_generator", "trio"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1835,6 +1918,7 @@ i18n = ["Babel (>=2.7)"] name = "jmespath" version = "0.10.0" description = "JSON Matching Expressions" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1846,6 +1930,7 @@ files = [ name = "jsonpickle" version = "3.0.1" description = "Python library for serializing any arbitrary object graph into JSON" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1862,6 +1947,7 @@ testing-libs = ["simplejson", "ujson"] name = "jsonschema" version = "4.18.3" description = "An implementation of JSON Schema validation for Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1885,6 +1971,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsonschema-specifications" version = "2023.6.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1898,13 +1985,14 @@ referencing = ">=0.28.0" [[package]] name = "kedro" -version = "0.18.11" +version = "0.18.12" description = "Kedro helps you build production-ready data and analytics pipelines" +category = "main" optional = false -python-versions = "<3.11,>=3.7" +python-versions = ">=3.7" files = [ - {file = "kedro-0.18.11-py3-none-any.whl", hash = "sha256:05b5ec074f08aaf33f1639479ed70efc0026b87b5d8200f9552425bbbc4708e8"}, - {file = "kedro-0.18.11.tar.gz", hash = "sha256:3f22554f17d9310147295e2bfd1061e80d2ffdaf53160f13e9e23e41d19ffe67"}, + {file = "kedro-0.18.12-py3-none-any.whl", hash = "sha256:f532c186f38711a08df89a86732468b1f931739c3c78454cea0c6b753be2e7c3"}, + {file = "kedro-0.18.12.tar.gz", hash = "sha256:5bd995dc710507427097488200f9f40ac8fb5085bec415ae6dd2335a53ffbf49"}, ] [package.dependencies] @@ -1919,11 +2007,12 @@ fsspec = ">=2021.4,<2024.1" gitpython = ">=3.0,<4.0" importlib-metadata = {version = ">=3.6", markers = "python_version >= \"3.8\""} importlib-resources = ">=1.3" -jmespath = ">=0.9.5,<1.0" -more-itertools = ">=9.0,<10.0" +jmespath = ">=0.9.5,<2.0" +more-itertools = ">=9,<11" omegaconf = ">=2.3,<3.0" -pip-tools = ">=6.5,<7.0" -pluggy = ">=1.0.0,<1.1.0" +parse = ">=1.19.0,<1.20.0" +pip-tools = ">=6.5,<8" +pluggy = ">=1.0,<2.0" PyYAML = ">=4.2,<7.0" rich = ">=12.0,<14.0" rope = ">=0.21,<2.0" @@ -1932,14 +2021,14 @@ toml = ">=0.10,<1.0" toposort = ">=1.5,<2.0" [package.extras] -all = ["Jinja2 (<3.1.0)", "Pillow (>=9.0,<10.0)", "PyYAML (>=4.2,<7.0)", "SQLAlchemy (>=1.2,<2.0)", "biopython (>=1.73,<2.0)", "compress-pickle[lz4] (>=2.1.0,<2.2.0)", "dask[complete] (>=2021.10,<2022.0)", "delta-spark (>=1.0,<3.0)", "docutils (==0.16)", "geopandas (>=0.6.0,<1.0)", "hdfs (>=2.5.8,<3.0)", "holoviews (>=1.13.0,<1.14.0)", "ipykernel (>=5.3,<7.0)", "kedro-datasets[all] (>=1.4.2,<1.5.0)", "lxml (>=4.6,<5.0)", "matplotlib (>=3.0.3,<4.0)", "myst-parser (>=1.0.0,<1.1.0)", "networkx (>=2.4,<3.0)", "opencv-python (>=4.5.5.64,<4.6.0.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "plotly (>=4.8.0,<6.0)", "pyarrow (>=1.0,<7.0)", "pyproj (>=3.0,<4.0)", "pyspark (>=2.2,<4.0)", "redis (>=4.1,<5.0)", "requests (>=2.20,<3.0)", "s3fs (>=0.3.0,<0.5)", "scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)", "sphinx (>=5.3.0,<5.4.0)", "sphinx-autodoc-typehints (==1.20.2)", "sphinx-copybutton (==0.3.1)", "sphinx-notfound-page", "sphinx-rtd-theme (==1.2.0)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)", "tensorflow (>=2.0,<3.0)", "triad (>=0.6.7,<1.0)"] +all = ["Jinja2 (<3.1.0)", "Pillow (>=9.0,<10.0)", "PyYAML (>=4.2,<7.0)", "SQLAlchemy (>=1.2,<2.0)", "biopython (>=1.73,<2.0)", "compress-pickle[lz4] (>=2.1.0,<2.2.0)", "dask[complete] (>=2021.10,<2022.0)", "delta-spark (>=1.0,<3.0)", "docutils (==0.16)", "geopandas (>=0.6.0,<1.0)", "hdfs (>=2.5.8,<3.0)", "holoviews (>=1.13.0,<1.14.0)", "ipykernel (>=5.3,<7.0)", "kedro-datasets[all,pandas-deltatabledataset] (>=1.5.1,<1.6.0)", "lxml (>=4.6,<5.0)", "matplotlib (>=3.0.3,<4.0)", "myst-parser (>=1.0.0,<1.1.0)", "networkx (>=2.4,<3.0)", "opencv-python (>=4.5.5.64,<4.6.0.0)", "openpyxl (>=3.0.6,<4.0)", "pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "plotly (>=4.8.0,<6.0)", "pyarrow (>=1.0,<7.0)", "pyproj (>=3.0,<4.0)", "pyspark (>=2.2,<4.0)", "redis (>=4.1,<5.0)", "requests (>=2.20,<3.0)", "s3fs (>=0.3.0,<0.5)", "scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)", "sphinx (>=5.3.0,<5.4.0)", "sphinx-autodoc-typehints (==1.20.2)", "sphinx-copybutton (==0.3.1)", "sphinx-notfound-page", "sphinx-rtd-theme (==1.2.0)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)", "tensorflow (>=2.0,<3.0)", "tensorflow-macos (>=2.0,<3.0)", "triad (>=0.6.7,<1.0)"] api = ["requests (>=2.20,<3.0)"] api-apidataset = ["requests (>=2.20,<3.0)"] biosequence = ["biopython (>=1.73,<2.0)"] biosequence-biosequencedataset = ["biopython (>=1.73,<2.0)"] dask = ["dask[complete] (>=2021.10,<2022.0)", "triad (>=0.6.7,<1.0)"] dask-parquetdataset = ["dask[complete] (>=2021.10,<2022.0)", "triad (>=0.6.7,<1.0)"] -docs = ["Jinja2 (<3.1.0)", "docutils (==0.16)", "ipykernel (>=5.3,<7.0)", "kedro-datasets[all] (>=1.4.2,<1.5.0)", "myst-parser (>=1.0.0,<1.1.0)", "sphinx (>=5.3.0,<5.4.0)", "sphinx-autodoc-typehints (==1.20.2)", "sphinx-copybutton (==0.3.1)", "sphinx-notfound-page", "sphinx-rtd-theme (==1.2.0)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)"] +docs = ["Jinja2 (<3.1.0)", "docutils (==0.16)", "ipykernel (>=5.3,<7.0)", "kedro-datasets[all,pandas-deltatabledataset] (>=1.5.1,<1.6.0)", "myst-parser (>=1.0.0,<1.1.0)", "sphinx (>=5.3.0,<5.4.0)", "sphinx-autodoc-typehints (==1.20.2)", "sphinx-copybutton (==0.3.1)", "sphinx-notfound-page", "sphinx-rtd-theme (==1.2.0)", "sphinxcontrib-mermaid (>=0.7.1,<0.8.0)"] geopandas = ["geopandas (>=0.6.0,<1.0)", "pyproj (>=3.0,<4.0)"] geopandas-geojsondataset = ["geopandas (>=0.6.0,<1.0)", "pyproj (>=3.0,<4.0)"] holoviews = ["holoviews (>=1.13.0,<1.14.0)"] @@ -1976,8 +2065,9 @@ spark-sparkhivedataset = ["hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs ( spark-sparkjdbcdataset = ["hdfs (>=2.5.8,<3.0)", "pyspark (>=2.2,<4.0)", "s3fs (>=0.3.0,<0.5)"] svmlight = ["scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)"] svmlight-svmlightdataset = ["scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)"] -tensorflow = ["tensorflow (>=2.0,<3.0)"] -tensorflow-tensorflowmodeldataset = ["tensorflow (>=2.0,<3.0)"] +tensorflow = ["tensorflow (>=2.0,<3.0)", "tensorflow-macos (>=2.0,<3.0)"] +tensorflow-tensorflowmodeldataset = ["tensorflow (>=2.0,<3.0)", "tensorflow-macos (>=2.0,<3.0)"] +test = ["Jinja2 (<3.1.0)", "Pillow (>=9.0,<10.0)", "SQLAlchemy (>=1.2,<2.0)", "adlfs (>=2021.7.1,<=2022.2)", "adlfs (>=2023.1,<2024.0)", "bandit (>=1.6.2,<2.0)", "behave (==1.2.6)", "biopython (>=1.73,<2.0)", "black (>=22.0,<23.0)", "blacken-docs (==1.9.2)", "compress-pickle[lz4] (>=2.1.0,<2.2.0)", "coverage[toml]", "dask[complete] (>=2021.10,<2022.0)", "delta-spark (>=1.2.1,<1.3.0)", "dill (>=0.3.1,<0.4.0)", "filelock (>=3.4.0,<4.0)", "gcsfs (>=2021.4,<=2023.1)", "gcsfs (>=2023.1,<2023.3)", "geopandas (>=0.6.0,<1.0)", "hdfs (>=2.5.8,<3.0)", "holoviews (>=1.13.0,<1.14.0)", "import-linter[toml] (==1.8.0)", "ipython (>=7.31.1,<8.0)", "ipython (>=8.10,<9.0)", "isort (>=5.0,<6.0)", "joblib (>=0.14)", "jupyter (>=1.0,<2.0)", "jupyterlab (>=3.0,<3.6.0)", "jupyterlab-server (>=2.11.1,<2.16.0)", "lxml (>=4.6,<5.0)", "matplotlib (>=3.0.3,<3.4)", "matplotlib (>=3.5,<3.6)", "memory-profiler (>=0.50.0,<1.0)", "moto (==1.3.7)", "moto (==3.0.4)", "networkx (>=2.4,<3.0)", "opencv-python (>=4.5.5.64,<4.6.0.0)", "openpyxl (>=3.0.3,<4.0)", "pandas (>=1.3,<2.0)", "pandas-gbq (>=0.12.0,<0.18.0)", "plotly (>=4.8.0,<6.0)", "pre-commit (>=2.9.2,<3.0)", "psutil (>=5.8,<6.0)", "pyarrow (>=6.0)", "pylint (>=2.17.0,<3.0)", "pyproj (>=3.0,<4.0)", "pyspark (>=2.2,<4.0)", "pytest (>=7.2,<8.0)", "pytest-cov (>=3.0,<4.0)", "pytest-mock (>=1.7.1,<2.0)", "pytest-xdist[psutil] (>=2.2.1,<2.3.0)", "redis (>=4.1,<5.0)", "requests (>=2.20,<3.0)", "requests-mock (>=1.6,<2.0)", "s3fs (>=0.3.0,<0.5)", "scikit-learn (>=1.0.2,<1.1.0)", "scipy (>=1.7.3,<1.8.0)", "tables (>=3.6,<4.0)", "tables (>=3.6.0,<3.7.0)", "tensorflow (>=2.0,<3.0)", "tensorflow-macos (>=2.0,<3.0)", "triad (>=0.6.7,<1.0)", "trufflehog (>=2.1,<3.0)", "xlsxwriter (>=1.0,<2.0)"] video = ["opencv-python (>=4.5.5.64,<4.6.0.0)"] video-videodataset = ["opencv-python (>=4.5.5.64,<4.6.0.0)"] yaml = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<2.0)"] @@ -1987,6 +2077,7 @@ yaml-yamldataset = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<2.0)"] name = "kedro-datasets" version = "1.4.2" description = "Kedro-Datasets is where you can find all of Kedro's data connectors." +category = "main" optional = false python-versions = "<3.11,>=3.7" files = [ @@ -2059,6 +2150,7 @@ yaml-yamldataset = ["PyYAML (>=4.2,<7.0)", "pandas (>=1.3,<3.0)"] name = "knack" version = "0.10.1" description = "A Command-Line Interface framework" +category = "main" optional = false python-versions = "*" files = [ @@ -2077,6 +2169,7 @@ tabulate = "*" name = "mako" version = "1.2.4" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2096,6 +2189,7 @@ testing = ["pytest"] name = "markdown-it-py" version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2120,6 +2214,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2179,6 +2274,7 @@ files = [ name = "marshmallow" version = "3.19.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2199,6 +2295,7 @@ tests = ["pytest", "pytz", "simplejson"] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2210,6 +2307,7 @@ files = [ name = "mlflow" version = "1.30.1" description = "MLflow: A Platform for ML Development and Productionization" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2252,6 +2350,7 @@ sqlserver = ["mlflow-dbstore"] name = "mlflow-skinny" version = "2.4.2" description = "MLflow: A Platform for ML Development and Productionization" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -2284,6 +2383,7 @@ sqlserver = ["mlflow-dbstore"] name = "more-itertools" version = "9.1.0" description = "More routines for operating on iterables, beyond itertools" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2295,6 +2395,7 @@ files = [ name = "msal" version = "1.22.0" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." +category = "main" optional = false python-versions = "*" files = [ @@ -2314,6 +2415,7 @@ broker = ["pymsalruntime (>=0.13.2,<0.14)"] name = "msal-extensions" version = "1.0.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." +category = "main" optional = false python-versions = "*" files = [ @@ -2324,14 +2426,15 @@ files = [ [package.dependencies] msal = ">=0.4.1,<2.0.0" portalocker = [ - {version = ">=1.0,<3", markers = "python_version >= \"3.5\" and platform_system != \"Windows\""}, {version = ">=1.6,<3", markers = "python_version >= \"3.5\" and platform_system == \"Windows\""}, + {version = ">=1.0,<3", markers = "python_version >= \"3.5\" and platform_system != \"Windows\""}, ] [[package]] name = "msrest" version = "0.7.1" description = "AutoRest swagger generator Python client runtime." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2353,6 +2456,7 @@ async = ["aiodns", "aiohttp (>=3.0)"] name = "msrestazure" version = "0.6.4" description = "AutoRest swagger generator Python client runtime. Azure-specific module." +category = "main" optional = false python-versions = "*" files = [ @@ -2369,6 +2473,7 @@ six = "*" name = "multidict" version = "6.0.4" description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2452,8 +2557,9 @@ files = [ name = "ndg-httpsclient" version = "0.5.1" description = "Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL" +category = "main" optional = false -python-versions = ">=2.7,<3.0.dev0 || >=3.4.dev0" +python-versions = ">=2.7,<3.0.0 || >=3.4.0" files = [ {file = "ndg_httpsclient-0.5.1-py2-none-any.whl", hash = "sha256:d2c7225f6a1c6cf698af4ebc962da70178a99bcde24ee6d1961c4f3338130d57"}, {file = "ndg_httpsclient-0.5.1-py3-none-any.whl", hash = "sha256:dd174c11d971b6244a891f7be2b32ca9853d3797a72edb34fa5d7b07d8fff7d4"}, @@ -2468,6 +2574,7 @@ PyOpenSSL = "*" name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -2482,6 +2589,7 @@ setuptools = "*" name = "numpy" version = "1.23.1" description = "NumPy is the fundamental package for array computing with Python." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2513,6 +2621,7 @@ files = [ name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2529,6 +2638,7 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "omegaconf" version = "2.3.0" description = "A flexible configuration library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2537,13 +2647,14 @@ files = [ ] [package.dependencies] -antlr4-python3-runtime = "==4.9.*" +antlr4-python3-runtime = ">=4.9.0,<4.10.0" PyYAML = ">=5.1.0" [[package]] name = "opencensus" version = "0.11.2" description = "A stats collection and distributed tracing framework" +category = "main" optional = false python-versions = "*" files = [ @@ -2559,6 +2670,7 @@ opencensus-context = ">=0.1.3" name = "opencensus-context" version = "0.1.3" description = "OpenCensus Runtime Context" +category = "main" optional = false python-versions = "*" files = [ @@ -2570,6 +2682,7 @@ files = [ name = "opencensus-ext-azure" version = "1.1.9" description = "OpenCensus Azure Monitor Exporter" +category = "main" optional = false python-versions = "*" files = [ @@ -2588,6 +2701,7 @@ requests = ">=2.19.0" name = "packaging" version = "21.3" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2602,6 +2716,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" name = "pandas" version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2649,6 +2764,7 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] name = "paramiko" version = "3.2.0" description = "SSH2 protocol library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2666,10 +2782,23 @@ all = ["gssapi (>=1.4.1)", "invoke (>=2.0)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1 gssapi = ["gssapi (>=1.4.1)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] invoke = ["invoke (>=2.0)"] +[[package]] +name = "parse" +version = "1.19.1" +description = "parse() is the opposite of format()" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "parse-1.19.1-py2.py3-none-any.whl", hash = "sha256:371ed3800dc63983832159cc9373156613947707bc448b5215473a219dbd4362"}, + {file = "parse-1.19.1.tar.gz", hash = "sha256:cc3a47236ff05da377617ddefa867b7ba983819c664e1afe46249e5b469be464"}, +] + [[package]] name = "pathspec" version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2681,6 +2810,7 @@ files = [ name = "pip" version = "23.1.2" description = "The PyPA recommended tool for installing Python packages." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2692,6 +2822,7 @@ files = [ name = "pip-tools" version = "6.14.0" description = "pip-tools keeps your pinned dependencies fresh." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2715,6 +2846,7 @@ testing = ["flit-core (>=2,<4)", "poetry-core (>=1.0.0)", "pytest (>=7.2.0)", "p name = "pkginfo" version = "1.9.6" description = "Query metadata from sdists / bdists / installed packages." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2729,6 +2861,7 @@ testing = ["pytest", "pytest-cov"] name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2740,6 +2873,7 @@ files = [ name = "platformdirs" version = "3.8.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2755,6 +2889,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2770,6 +2905,7 @@ testing = ["pytest", "pytest-benchmark"] name = "portalocker" version = "2.7.0" description = "Wraps the portalocker recipe for easy usage" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2789,6 +2925,7 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p name = "pre-commit" version = "2.20.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2808,6 +2945,7 @@ virtualenv = ">=20.0.8" name = "prometheus-client" version = "0.17.1" description = "Python client for the Prometheus monitoring system." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2822,6 +2960,7 @@ twisted = ["twisted"] name = "prometheus-flask-exporter" version = "0.22.4" description = "Prometheus metrics exporter for Flask" +category = "main" optional = true python-versions = "*" files = [ @@ -2837,6 +2976,7 @@ prometheus-client = "*" name = "protobuf" version = "4.23.4" description = "" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2859,6 +2999,7 @@ files = [ name = "psutil" version = "5.9.5" description = "Cross-platform lib for process and system monitoring in Python." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2885,6 +3026,7 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2896,6 +3038,7 @@ files = [ name = "pyarrow" version = "11.0.0" description = "Python library for Apache Arrow" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2933,6 +3076,7 @@ numpy = ">=1.16.6" name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2944,6 +3088,7 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2958,6 +3103,7 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2969,6 +3115,7 @@ files = [ name = "pydantic" version = "1.9.2" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -3020,6 +3167,7 @@ email = ["email-validator (>=1.0.3)"] name = "pydash" version = "5.1.2" description = "The kitchen sink of Python utility libraries for doing \"stuff\" in a functional way. Based on the Lo-Dash Javascript library." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3034,6 +3182,7 @@ dev = ["Sphinx", "black", "build", "coverage", "docformatter", "flake8", "flake8 name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3048,6 +3197,7 @@ plugins = ["importlib-metadata"] name = "pyjwt" version = "2.7.0" description = "JSON Web Token implementation in Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3068,6 +3218,7 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3087,13 +3238,14 @@ files = [ cffi = ">=1.4.1" [package.extras] -docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] +docs = ["sphinx (>=1.6.5)", "sphinx_rtd_theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyopenssl" version = "23.2.0" description = "Python wrapper module around the OpenSSL library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3112,6 +3264,7 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] name = "pyparsing" version = "3.1.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -3126,6 +3279,7 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyproject-api" version = "1.5.0" description = "API to interact with the python pyproject.toml based projects" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3145,6 +3299,7 @@ testing = ["covdefaults (>=2.2.2)", "importlib-metadata (>=5.1)", "pytest (>=7.2 name = "pyproject-hooks" version = "1.0.0" description = "Wrappers to call pyproject.toml-based build backend hooks." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3159,6 +3314,7 @@ tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} name = "pyreadline3" version = "3.4.1" description = "A python implementation of GNU readline." +category = "main" optional = false python-versions = "*" files = [ @@ -3170,6 +3326,7 @@ files = [ name = "pysocks" version = "1.7.1" description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3182,6 +3339,7 @@ files = [ name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3206,6 +3364,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-cov" version = "3.0.0" description = "Pytest plugin for measuring coverage." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3224,6 +3383,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -3238,6 +3398,7 @@ six = ">=1.5" name = "python-slugify" version = "8.0.1" description = "A Python slugify application that also handles Unicode" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3255,6 +3416,7 @@ unidecode = ["Unidecode (>=1.1.1)"] name = "pytoolconfig" version = "1.2.2" description = "Python tool configuration" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3277,6 +3439,7 @@ validation = ["pydantic (>=1.7.4)"] name = "pytz" version = "2022.7.1" description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" files = [ @@ -3288,6 +3451,7 @@ files = [ name = "pywin32" version = "306" description = "Python for Window Extensions" +category = "main" optional = false python-versions = "*" files = [ @@ -3311,6 +3475,7 @@ files = [ name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3360,6 +3525,7 @@ files = [ name = "querystring-parser" version = "1.2.4" description = "QueryString parser for Python/Django that correctly handles nested dictionaries" +category = "main" optional = true python-versions = "*" files = [ @@ -3374,6 +3540,7 @@ six = "*" name = "referencing" version = "0.29.1" description = "JSON Referencing + Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3389,6 +3556,7 @@ rpds-py = ">=0.7.0" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3411,6 +3579,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3429,6 +3598,7 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "rich" version = "13.4.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -3448,6 +3618,7 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "rope" version = "1.9.0" description = "a python refactoring library..." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3467,6 +3638,7 @@ release = ["pip-tools (>=6.12.1)", "toml (>=0.10.2)", "twine (>=4.0.2)"] name = "rpds-py" version = "0.8.10" description = "Python bindings to Rust's persistent data structures (rpds)" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3573,6 +3745,7 @@ files = [ name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" +category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -3587,6 +3760,7 @@ pyasn1 = ">=0.1.3" name = "scipy" version = "1.10.1" description = "Fundamental algorithms for scientific computing in Python" +category = "main" optional = true python-versions = "<3.12,>=3.8" files = [ @@ -3625,6 +3799,7 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo name = "secretstorage" version = "3.3.3" description = "Python bindings to FreeDesktop.org Secret Service API" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3640,6 +3815,7 @@ jeepney = ">=0.6" name = "setuptools" version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3656,6 +3832,7 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3667,6 +3844,7 @@ files = [ name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3678,6 +3856,7 @@ files = [ name = "sqlalchemy" version = "1.4.49" description = "Database Abstraction Library" +category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -3722,7 +3901,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\")"} +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} [package.extras] aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] @@ -3749,6 +3928,7 @@ sqlcipher = ["sqlcipher3-binary"] name = "sqlparse" version = "0.4.4" description = "A non-validating SQL parser." +category = "main" optional = true python-versions = ">=3.5" files = [ @@ -3765,6 +3945,7 @@ test = ["pytest", "pytest-cov"] name = "strictyaml" version = "1.7.3" description = "Strict, typed YAML parser" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -3779,6 +3960,7 @@ python-dateutil = ">=2.6.0" name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3793,6 +3975,7 @@ widechars = ["wcwidth"] name = "text-unidecode" version = "1.3" description = "The most basic Text::Unidecode port" +category = "main" optional = false python-versions = "*" files = [ @@ -3804,6 +3987,7 @@ files = [ name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3815,6 +3999,7 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3826,6 +4011,7 @@ files = [ name = "toposort" version = "1.10" description = "Implements a topological sort algorithm." +category = "main" optional = false python-versions = "*" files = [ @@ -3837,6 +4023,7 @@ files = [ name = "tox" version = "4.0.0" description = "tox is a generic virtualenv management and test command line tool" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3864,6 +4051,7 @@ testing = ["build[virtualenv] (>=0.9)", "covdefaults (>=2.2.2)", "devpi-process name = "tqdm" version = "4.65.0" description = "Fast, Extensible Progress Meter" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3884,6 +4072,7 @@ telegram = ["requests"] name = "typing-extensions" version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3895,6 +4084,7 @@ files = [ name = "urllib3" version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -3911,6 +4101,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "virtualenv" version = "20.24.0" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3931,6 +4122,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "waitress" version = "2.1.2" description = "Waitress WSGI server" +category = "main" optional = true python-versions = ">=3.7.0" files = [ @@ -3946,6 +4138,7 @@ testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] name = "websocket-client" version = "1.6.1" description = "WebSocket client for Python with low level API options" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3962,6 +4155,7 @@ test = ["websockets"] name = "werkzeug" version = "2.3.6" description = "The comprehensive WSGI web application library." +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -3979,6 +4173,7 @@ watchdog = ["watchdog (>=2.3)"] name = "wheel" version = "0.40.0" description = "A built-package format for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3993,6 +4188,7 @@ test = ["pytest (>=6.0.0)"] name = "yarl" version = "1.9.2" description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4080,6 +4276,7 @@ multidict = ">=4.0" name = "zipp" version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4097,4 +4294,4 @@ mlflow = ["azureml-mlflow", "mlflow"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.11" -content-hash = "c7aaed42fa29bae997e667bcb63d9f405c9e77ac06e54bc6d3391a295b8f0aef" +content-hash = "c4efe9a2e3643f28003ca8da65ead4947f8a0d601b7d73cc62a37fbbc7d92e6a" diff --git a/pyproject.toml b/pyproject.toml index c9118fb..168c5e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ known_third_party = ["azure", "tabulate", "pydantic","semver","setuptools"] [tool.poetry.dependencies] python = ">=3.8,<3.11" -kedro = ">=0.18.5,<0.19.0" +kedro = ">=0.18.11,<0.19" cloudpickle = "^2.1.0" adlfs = ">=2022.2.0" azure-ai-ml = ">=1.2.0" From 9b84f037ce8e5b64c95363113b18cc71fe3bb813 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 11 Aug 2023 06:22:25 +0000 Subject: [PATCH 58/58] FIX #64 - Bump version and CHANGELOG for release 0.5.0 --- .bumpversion.cfg | 2 +- .copier-answers.yml | 2 +- CHANGELOG.md | 9 +++++++-- kedro_azureml/__init__.py | 2 +- pyproject.toml | 2 +- sonar-project.properties | 2 +- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index a6982b0..2e487c0 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.4.1 +current_version = 0.5.0 [bumpversion:file:pyproject.toml] diff --git a/.copier-answers.yml b/.copier-answers.yml index b9a7809..10ba6c8 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -7,7 +7,7 @@ description: Kedro plugin with Azure ML Pipelines support docs_url: https://kedro-azureml.readthedocs.io/ full_name: Kedro Azure ML Pipelines plugin github_url: https://github.com/getindata/kedro-azureml -initial_version: 0.4.1 +initial_version: 0.5.0 keywords: - kedro - mlops diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d3826c..3385534 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,12 @@ # Changelog ## [Unreleased] + +## [0.5.0] - 2023-08-11 + - [🚀 New dataset] Added support for `AzureMLAssetDataSet` based on Azure ML SDK v2 (fsspec) by [@tomasvanpottelbergh](https://github.com/tomasvanpottelbergh) & [@froessler](https://github.com/fdroessler) - [📝 Docs] Updated datasets docs with sections -- Bumped minimal required Kedro version to `0.18.11 +- Bumped minimal required Kedro version to \`0.18.11 - [⚠️ Deprecation warning] - starting from `0.4.0` the plugin is not compatible with ARM macOS versions due to internal azure dependencies (v1 SDKs). V1 SDK-based datasets will be removed in the future ## [0.4.1] - 2023-05-04 @@ -66,7 +69,9 @@ - Initial plugin release -[Unreleased]: https://github.com/getindata/kedro-azureml/compare/0.4.1...HEAD +[Unreleased]: https://github.com/getindata/kedro-azureml/compare/0.5.0...HEAD + +[0.5.0]: https://github.com/getindata/kedro-azureml/compare/0.4.1...0.5.0 [0.4.1]: https://github.com/getindata/kedro-azureml/compare/0.4.0...0.4.1 diff --git a/kedro_azureml/__init__.py b/kedro_azureml/__init__.py index 2b12256..82eb5a1 100644 --- a/kedro_azureml/__init__.py +++ b/kedro_azureml/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.4.1" +__version__ = "0.5.0" import warnings diff --git a/pyproject.toml b/pyproject.toml index 168c5e9..151925e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "kedro-azureml" -version = "0.4.1" +version = "0.5.0" description = "Kedro plugin with Azure ML Pipelines support" readme = "README.md" authors = ['marcin.zablocki '] diff --git a/sonar-project.properties b/sonar-project.properties index b8a7777..f1737a0 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -6,7 +6,7 @@ sonar.tests=tests/ sonar.python.coverage.reportPaths=coverage.xml sonar.python.version=3.9 -sonar.projectVersion=0.4.1 +sonar.projectVersion=0.5.0 sonar.projectDescription=Kedro plugin with Azure ML Pipelines support sonar.links.homepage=https://kedro-azureml.readthedocs.io/ sonar.links.ci=https://github.com/getindata/kedro-azureml/actions