diff --git a/.github/workflows/docs_pages.yaml b/.github/workflows/docs_pages.yaml index 30c07226..2ad27dfa 100644 --- a/.github/workflows/docs_pages.yaml +++ b/.github/workflows/docs_pages.yaml @@ -16,8 +16,14 @@ jobs: - uses: actions/setup-python@v2 with: python-version: 3.8 - - uses: abatilo/actions-poetry@v2.1.3 - - name: install + - name: Install and configure Poetry + uses: snok/install-poetry@v1 + with: + version: latest + virtualenvs-create: true + virtualenvs-in-project: true + installer-parallel: true + - name: Install package run: poetry install - name: Build documentation run: | diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c43d27f5..ade0a8d0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,9 +6,9 @@ name: CI on: # Triggers the workflow on push or pull request events but only for the master branch push: - branches: [ master ] + branches: [ master, develop ] pull_request: - branches: [ master ] + branches: [ master, develop ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -18,27 +18,32 @@ on: jobs: build: runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 60 strategy: matrix: - python-version: ['3.8', '3.9', '3.10'] + python-version: ['3.10'] steps: - - uses: actions/checkout@v1 + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-activate-base: true + activate-environment: "" + + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + - name: Install and configure Poetry uses: snok/install-poetry@v1 with: - version: 1.1.10 - virtualenvs-create: true - virtualenvs-in-project: true + version: latest installer-parallel: true + - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install tox tox-gh-actions tox-poetry - - name: Test with tox - run: tox + python -m pip install nox nox-poetry + - run: nox diff --git a/.gitignore b/.gitignore index 9d5d0971..88d7808c 100644 --- a/.gitignore +++ b/.gitignore @@ -143,6 +143,7 @@ coverage.xml *.cover .hypothesis/ .pytest_cache/ +.nox/ # Translations *.mo diff --git a/.pylintrc b/.pylintrc index d2d58666..004a4732 100644 --- a/.pylintrc +++ b/.pylintrc @@ -438,7 +438,9 @@ valid-metaclass-classmethod-first-arg=cls [DESIGN] # Maximum number of arguments for function / method. -max-args=5 +max-args=10 +max-function-args=10 + # Maximum number of attributes for a class (see R0902). max-attributes=7 @@ -506,4 +508,5 @@ known-third-party=enchant # Exceptions that will emit a warning when being caught. Defaults to # "BaseException, Exception". overgeneral-exceptions=BaseException, - Exception \ No newline at end of file + Exception + diff --git a/.vscode/settings.json b/.vscode/settings.json index ea444fe7..87ce1829 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,16 +9,19 @@ "files.watcherExclude": { "**/venvs": true, "**/.venv": true, + "**/__pycache__": true, "**/data": true }, "files.exclude": { "**/venvs": true, "**/.venv": true, + "**/__pycache__": true, "**/data": true }, "search.exclude": { "**/venvs": true, "**/.venv": true, + "**/__pycache__": true, "**/data": true }, "python.testing.pytestArgs": [ diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..8aa26455 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) [year] [fullname] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index f17b9bae..d195aade 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,35 @@ [![DOI](https://zenodo.org/badge/362395439.svg)](https://zenodo.org/badge/latestdoi/362395439) -# Drug REpurposing using Mechanistic Models of signal transduction and -eXplainable Machine Learning +# Drug REpurposing using eXplainable Machine Learning and Mechanistic Models of signal transduction -Repository for the `drexml` python package: (DRExM³L) Drug REpurposing using Mechanistic Models of signal transduction and eXplainable Machine Learning +Repository for the `drexml` python package: (DRExM³L) Drug REpurposing using eXplainable Machine Learning and Mechanistic Models of signal transduction ## Setup To install the `drexml` package use the following: ``` -conda create -n drexml python=3.8 -conda run -n drexml pip install git+ssh://git@github.com:loucerac/drexml.git +conda create -n drexml python=3.10 +conda run -n drexml pip install git+https://github.com/loucerac/drexml.git@master ``` +If a CUDA~11 compatible device is available use: + +``` +conda create -n drexml --override-channels -c "nvidia/label/cuda-11.8.0" -c conda-forge cuda cuda-nvcc cuda-toolkit gxx=11.2 python=3.10 +conda run -n drexml pip install git+https://github.com/loucerac/drexml.git@master +``` + +To install `drexml` in an existing environment, activate it and use: + +``` +pip install git+https://github.com/loucerac/drexml.git@master +``` + +Note that by default the `setup` will try to compile the `CUDA` modules, if not possible it will use the `CPU` modules. + +To install the development version use `@develop` instead of `@master`. + ## Run To run the program for a disease map that uses circuits from the preprocessed `KEGG` pathways and the `KDT` standard list, construct an environment file (e.g. `disease.env`) using the following template: @@ -26,26 +43,26 @@ genes=$default$ genes_column=approved_targets ``` -Where `circuits.tsv` has the following format (tab delimited): +The `TSV` file `circuits.tsv` has the following format (tab delimited): ``` index in_disease -P-hsa03320-37 False -P-hsa03320-61 False -P-hsa03320-46 False -P-hsa03320-57 False -P-hsa03320-64 False -P-hsa03320-47 False -P-hsa03320-65 False -P-hsa03320-55 False -P-hsa03320-56 False -P-hsa03320-33 False -P-hsa03320-58 False -P-hsa03320-59 False -P-hsa03320-63 False -P-hsa03320-44 False -P-hsa03320-36 False -P-hsa03320-30 False -P-hsa03320-28 True +P-hsa03320-37 0 +P-hsa03320-61 0 +P-hsa03320-46 0 +P-hsa03320-57 0 +P-hsa03320-64 0 +P-hsa03320-47 0 +P-hsa03320-65 0 +P-hsa03320-55 0 +P-hsa03320-56 0 +P-hsa03320-33 0 +P-hsa03320-58 0 +P-hsa03320-59 0 +P-hsa03320-63 0 +P-hsa03320-44 0 +P-hsa03320-36 0 +P-hsa03320-30 0 +P-hsa03320-28 1 ``` where: @@ -67,6 +84,15 @@ Note that the first time that the full program is run, it will take longer as it https://doi.org/10.5281/zenodo.6020480 +## Contribute to development + +The recommended setup is: +- setup `pipx` +- setup `miniconda` +- use `pipx` to install `poetry` +- use `pipx` to install `nox` and inject `nox-poetry` into `nox` +- run `make`, if you want to use a CUDA enabled GPU, use `make gpu=1` + ## Documentation The documentation can be found here: diff --git a/docs/source/api_reference.rst b/docs/source/api_reference.rst index 4d1120de..e98aa64c 100644 --- a/docs/source/api_reference.rst +++ b/docs/source/api_reference.rst @@ -26,4 +26,9 @@ explain utils ---------- .. automodule:: drexml.utils + :members: + +plotting +---------- +.. automodule:: drexml.plotting :members: \ No newline at end of file diff --git a/drexml/cli/cli.py b/drexml/cli/cli.py index 5ef44ea2..65f3c6d4 100644 --- a/drexml/cli/cli.py +++ b/drexml/cli/cli.py @@ -14,11 +14,29 @@ import shutil import subprocess import sys +import warnings import click import joblib +from numba.core.errors import NumbaDeprecationWarning, NumbaPendingDeprecationWarning -from drexml.utils import get_data, get_number_cuda_devices, get_out_path, get_version +with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", module="shap", message="IPython could not be loaded!" + ) + warnings.filterwarnings("ignore", module="shap", category=NumbaDeprecationWarning) + warnings.filterwarnings( + "ignore", module="shap", category=NumbaPendingDeprecationWarning + ) + +from drexml.plotting import plot_metrics +from drexml.utils import ( + get_data, + get_number_cuda_devices, + get_out_path, + get_version, + rename_results, +) FNAME_DICT = { "train": "stab_trainer.py", @@ -80,6 +98,25 @@ ] +_check_add_option = [ + click.option( + "--add/--no-add", + is_flag=True, + default=True, + help="Check the additivity when computing the SHAP values.", + ) +] + +_verb_option = [ + click.option( + "--verbosity/--no-verbosity", + is_flag=True, + default=False, + help="Verbosity level.", + ) +] + + def copy_files(ctx, fnames): """Copy files from tmp to ml folder.""" for fname in fnames: @@ -148,6 +185,7 @@ def build_cmd(ctx): str(int(ctx["n_gpus"])), str(ctx["n_cpus"]), str(int(ctx["debug"])), + str(int(ctx["add"])), ctx["mode"], ] @@ -160,19 +198,21 @@ def run_cmd(ctx): # Unpythonic, update with dasks's LocalCudaCluster (currently unreliable). print(" ".join(cmd)) output = subprocess.run(cmd, capture_output=True, text=True, check=True) - click.echo(output.stderr) - click.echo(output.stdout) + if ctx["verbosity"]: + click.echo(output.stderr) + click.echo(output.stdout) @click.group() @click.version_option(get_version()) def main(): """drexml CLI entry point.""" - print(f"running drexml orchestrate v {get_version()}") + print(f"running drexml v{get_version()}") @main.command() @add_options(_debug_option) +@add_options(_verb_option) @click.argument("disease-path", type=click.Path(exists=True)) @click.version_option(get_version()) def orchestrate(**kwargs): @@ -193,6 +233,7 @@ def orchestrate(**kwargs): type=click.Choice(["train", "explain", "score"], case_sensitive=False), ) @add_options(_debug_option) +@add_options(_verb_option) @add_options(_n_iters_option) @add_options(_n_gpus_option) @add_options(_n_cpus_option) @@ -223,6 +264,8 @@ def stability(**kwargs): @main.command() @add_options(_debug_option) +@add_options(_verb_option) +@add_options(_check_add_option) @add_options(_n_iters_option) @add_options(_n_gpus_option) @add_options(_n_cpus_option) @@ -240,6 +283,8 @@ def explain(**kwargs): @main.command() @add_options(_debug_option) +@add_options(_verb_option) +@add_options(_check_add_option) @add_options(_n_iters_option) @add_options(_n_gpus_option) @add_options(_n_cpus_option) @@ -257,5 +302,25 @@ def run(ctx, **kwargs): ctx.forward(explain) +@main.command() +@click.argument("stab-path", type=click.Path(exists=True)) +@click.version_option(get_version()) +@click.pass_context +def plot(ctx, stab_path): + """Plot the stability results""" + + plot_metrics(stab_path) + + +@main.command() +@click.argument("results-folder", type=click.Path(exists=True)) +@click.version_option(get_version()) +@click.pass_context +def rename(ctx, results_folder): + """Plot the stability results""" + + rename_results(results_folder) + + if __name__ == "__main__": main() diff --git a/drexml/cli/stab_explainer.py b/drexml/cli/stab_explainer.py index 829a2535..4692b6b2 100644 --- a/drexml/cli/stab_explainer.py +++ b/drexml/cli/stab_explainer.py @@ -6,10 +6,22 @@ import multiprocessing import time +import warnings import joblib import numpy as np -import shap +from numba.core.errors import NumbaDeprecationWarning, NumbaPendingDeprecationWarning + +with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", module="shap", message="IPython could not be loaded!" + ) + warnings.filterwarnings("ignore", module="shap", category=NumbaDeprecationWarning) + warnings.filterwarnings( + "ignore", module="shap", category=NumbaPendingDeprecationWarning + ) + import shap + from sklearn.model_selection import train_test_split from drexml.explain import compute_shap_fs, compute_shap_relevance, compute_shap_values_ @@ -19,8 +31,8 @@ if __name__ == "__main__": import sys - data_folder, n_iters, n_gpus, n_cpus, n_splits, debug = parse_stab(sys.argv) - + data_folder, n_iters, n_gpus, n_cpus, n_splits, debug, add = parse_stab(sys.argv) + this_seed = 82 queue = multiprocessing.Queue() n_devices = n_gpus if n_gpus > 0 else n_cpus @@ -45,7 +57,9 @@ cv_gen = joblib.load(cv_fpath) else: ids = np.arange(features.shape[0]) - learn_ids, val_ids = train_test_split(ids, test_size=0.3, random_state=0) + learn_ids, val_ids = train_test_split( + ids, test_size=0.3, random_state=this_seed + ) for i_split in range(n_splits): print(n_splits, i_split) @@ -72,19 +86,18 @@ this_model = get_model( features.shape[1], targets.shape[1], n_cpus, debug, n_iters ) - this_model.set_params(n_jobs=n_cpus) + this_model.set_params(n_jobs=n_cpus, random_state=this_seed) this_model.fit(features_learn, targets_learn) else: model_fname = f"model_{i_split}.jbl" model_fpath = data_path.joinpath(model_fname) this_model = joblib.load(model_fpath) - n_chunks = 1 - if (this_model.n_features_ * this_model.n_outputs_) > (712 * 331): - n_chunks = 12 - n_chunks = max(n_chunks, n_devices) + n_chunks = max(1, n_devices) chunk_size = len(features_val) // (n_chunks) + 1 + print(f"{add=}") + def runner(model, bkg, new, check_add, use_gpu): gpu_id = queue.get() @@ -101,17 +114,19 @@ def runner(model, bkg, new, check_add, use_gpu): # bkg = shap.sample(features_learn, nsamples=1000, random_state=42) t = time.time() + features_bkg = features_learn.copy() if features_learn.shape[0] > 1000: - features_bkg = features_learn.sample(n=1000, random_state=0) + features_bkg = features_learn.sample(n=1000, random_state=42) else: features_bkg = features_learn + with joblib.parallel_backend("multiprocessing", n_jobs=n_devices): shap_values = joblib.Parallel()( joblib.delayed(runner)( model=this_model, bkg=features_bkg, new=gb, - check_add=True, + check_add=add, use_gpu=gpu, ) for _, gb in features_val.groupby( diff --git a/drexml/cli/stab_scorer.py b/drexml/cli/stab_scorer.py index 8e48139e..8a6119f4 100644 --- a/drexml/cli/stab_scorer.py +++ b/drexml/cli/stab_scorer.py @@ -20,7 +20,7 @@ # client = Client('127.0.0.1:8786') # pylint: disable=unbalanced-tuple-unpacking - data_folder, n_iters, n_gpus, n_cpus, n_splits, debug = parse_stab(sys.argv) + data_folder, n_iters, n_gpus, n_cpus, n_splits, debug, add = parse_stab(sys.argv) model, stab_cv, features, targets = get_stab( data_folder, n_splits, n_cpus, debug, n_iters ) diff --git a/drexml/cli/stab_trainer.py b/drexml/cli/stab_trainer.py index 74cfbbc2..ac6c1b5e 100644 --- a/drexml/cli/stab_trainer.py +++ b/drexml/cli/stab_trainer.py @@ -14,7 +14,7 @@ # client = Client('127.0.0.1:8786') # pylint: disable=unbalanced-tuple-unpacking - data_path, n_iters, n_gpus, n_cpus, n_splits, debug = parse_stab(sys.argv) + data_path, n_iters, n_gpus, n_cpus, n_splits, debug, add = parse_stab(sys.argv) model, stab_cv, X, Y = get_stab(data_path, n_splits, n_cpus, debug, n_iters) for i, split in enumerate(stab_cv): diff --git a/drexml/datasets.py b/drexml/datasets.py index 63896324..543f4e9b 100644 --- a/drexml/datasets.py +++ b/drexml/datasets.py @@ -21,16 +21,17 @@ PRODUCTION_NAMES = { "gene_exp": "expreset_Hinorm_gtexV8.rds.feather", "pathvals": "expreset_pathvals_gtexV8.rds.feather", - "genes": "genes01072021.rds.feather", + "genes": "genes.tsv.gz", } NAMES = {True: DEBUG_NAMES, False: PRODUCTION_NAMES} -RECORD_ID = "6020481" +RECORD_ID = "7737166" -def fetch_file(disease, key, version="latest", debug=False): +def fetch_file(disease, key, env, version="latest", debug=False): """Retrieve data.""" + print(f"Retrieving {key}") experiment_env_path = pathlib.Path(disease) env = dotenv_values(experiment_env_path) if env[key].lower() == DEFAULT_STR: @@ -41,19 +42,23 @@ def fetch_file(disease, key, version="latest", debug=False): except (ConnectTimeout) as err: print(err) path = pathlib.Path.home().joinpath( - ".data", "zenodo", "6020480", "panrd_1.0.0" + ".data", "zenodo", RECORD_ID, "20230315" ) else: - data_path = pathlib.Path(env["data_path"]) + data_path = pathlib.Path(env["data_path"]).absolute() + print(data_path) if data_path.name.lower() == DEFAULT_STR: print(disease, env[key], data_path) data_path = experiment_env_path.parent path = data_path.joinpath(env[key]) - return load_df(path) + frame = load_df(path, key) + frame = preprocess_frame(frame, env, key) + + return frame -def load_df(path): +def load_df(path, key=None): """Load dataframe from file. At the moment: stv, tsv crompressed or feather. Parameters @@ -73,7 +78,7 @@ def load_df(path): """ try: # tsv, and compressed tsv - res = pd.read_csv(path, sep="\t").set_index("index", drop=True) + res = pd.read_csv(path, sep="\t") except (ParserError, KeyError, UnicodeDecodeError) as err: print("Error found while trying to load a TSV or compressed TSV.") print(err) @@ -93,6 +98,216 @@ def load_df(path): return res +def get_index_name_options(key): + """ + Returns a list of possible index names based on the input key. + + Parameters + ---------- + key : str + The key for the data frame. + + Returns + ------- + list of str + A list of possible index names based on the input key. + + Examples + -------- + >>> get_index_name_options("circuits") + ["hipathia_id", "hipathia", "circuits_id", "index"] + + Notes + ----- + This function returns a list of possible index names based on the input key. If the + key is "circuits", it returns a list of four possible index names. If the key is + "genes", it returns a list of three possible index names. Otherwise, it returns a + list with only one element, "index". + """ + + if key == "circuits": + return ["hipathia_id", "hipathia", "circuits_id", "index"] + elif key == "genes": + return ["entrezs", "entrez", "entrez_id", "index"] + else: + return ["index"] + + +def preprocess_frame(res, env, key): + """ + Preprocesses the input data frame. + + Parameters + ---------- + res : pandas.DataFrame + The input data frame. + env : dict + The environment variables. + key : str + The key for the data frame. + + Returns + ------- + pandas.DataFrame + The preprocessed data frame. + """ + + if key is not None: + index_name_options = get_index_name_options(key) + + for name in index_name_options: + if name in res.columns: + res = res.set_index(name, drop=True) + res.index = res.index.astype(str) + + if key == "gene_exp": + return preprocess_gexp(res) + elif key == "pathvals": + return preprocess_activities(res) + elif key == "circuits": + return preprocess_map(res, env["circuits_column"]) + elif key == "genes": + return preprocess_genes(res, env["genes_column"]) + + +def preprocess_gexp(frame): + """ + Preprocesses a gene expression data frame. + + Parameters + ---------- + frame : pandas.DataFrame + The gene expression data frame to preprocess. + + Returns + ------- + pandas.DataFrame + The preprocessed gene expression data frame. + + Examples + -------- + >>> import pandas as pd + >>> df = pd.DataFrame({"X1": [1, 2], "X2": [3, 4]}) + >>> preprocess_gexp(df) + 1 2 + 0 1 3 + 1 2 4 + + Notes + ----- + This function removes the "X" prefix from the column names of the input data frame + and returns the resulting data frame. + """ + + frame.columns = frame.columns.str.replace("X", "") + return frame + + +def preprocess_activities(frame): + """ + Preprocesses an activities data frame. + + Parameters + ---------- + frame : pandas.DataFrame + The activities data frame to preprocess. + + Returns + ------- + pandas.DataFrame + The preprocessed activities data frame. + + Examples + -------- + >>> import pandas as pd + >>> df = pd.DataFrame({"-": [1, 2], "Activity 1": [3, 4]}) + >>> preprocess_activities(df) + . Activity.1 + 0 1 3 + 1 2 4 + + Notes + ----- + This function replaces hyphens and spaces in the column names of the input data frame with periods and returns the resulting data frame. + + """ + frame.columns = frame.columns.str.replace("-", ".").str.replace(" ", ".") + return frame + + +def preprocess_map(frame, circuits_column): + """ + Preprocesses a map data frame. + + Parameters + ---------- + frame : pandas.DataFrame + The map data frame to preprocess. + circuits_column : str + The name of the column containing circuit information. + + Returns + ------- + pandas.DataFrame + The preprocessed map data frame. + + Examples + -------- + >>> import pandas as pd + >>> df = pd.DataFrame({"-": [1, 2], "Activity 1": [3, 4]}, index=["A-B", "C-D"]) + >>> preprocess_map(df, "Activity 1") + . Activity.1 + A.B 3 + C.D 4 + + Notes + ----- + This function replaces hyphens and spaces in the index labels of the input data + frame with periods and converts the values in the specified circuits column to + boolean values. It then returns the resulting data frame. + + """ + + frame.index = frame.index.str.replace("-", ".").str.replace(" ", ".") + frame[circuits_column] = frame[circuits_column].astype(bool) + return frame + + +def preprocess_genes(frame, genes_column): + """ + Preprocesses a gene expression data frame. + + Parameters + ---------- + frame : pandas.DataFrame + The gene expression data frame to preprocess. + genes_column : str + The name of the column containing gene information. + + Returns + ------- + pandas.DataFrame + The preprocessed gene expression data frame. + + Examples + -------- + >>> import pandas as pd + >>> df = pd.DataFrame({"Gene": ["A", "B", "C"], "Value": [1, 2, 3]}) + >>> preprocess_genes(df, "Gene") + Gene Value + 0 A 1 + 1 B 2 + 2 C 3 + + Notes + ----- + This function selects rows from the input data frame based on the values in the specified genes column and returns the resulting data frame. + + """ + frame = frame.loc[frame[genes_column]] + return frame + + def get_disease_data(disease, debug): """Get data for a disease. @@ -119,29 +334,25 @@ def get_disease_data(disease, debug): genes_column = env["genes_column"] circuits_column = env["circuits_column"] - gene_exp = fetch_file(disease, key="gene_exp", version="latest", debug=debug) - gene_exp.columns = gene_exp.columns.str.replace("X", "") - - pathvals = fetch_file(disease, key="pathvals", version="latest", debug=debug) - pathvals.columns = pathvals.columns.str.replace("-", ".").str.replace(" ", ".") - circuits = fetch_file(disease, key="circuits", version="latest", debug=debug) - circuits.index = circuits.index.str.replace("-", ".").str.replace(" ", ".") - - genes = fetch_file(disease, key="genes", version="latest", debug=debug) - if "entrezs" in genes.columns: - genes = genes.set_index("entrezs") - elif "index" in genes.columns: - genes = genes.set_index("index") - genes.index = genes.index.astype(str) + gene_exp = fetch_file( + disease, key="gene_exp", env=env, version="latest", debug=debug + ) + pathvals = fetch_file( + disease, key="pathvals", env=env, version="latest", debug=debug + ) + circuits = fetch_file( + disease, key="circuits", env=env, version="latest", debug=debug + ) + genes = fetch_file(disease, key="genes", env=env, version="latest", debug=debug) # gene_exp = gene_exp[genes.index[genes[genes_column]]] - getx_entrez = gene_exp.columns - this_genes = genes.index[genes[genes_column]] - if this_genes.difference(getx_entrez).size > 0: - print(f"# genes not present in GTEx: {this_genes.difference(getx_entrez).size}") + gtex_entrez = gene_exp.columns + gene_diff = genes.index.difference(gtex_entrez).size + if gene_diff > 0: + print(f"# genes not present in GTEx: {gene_diff}") - usable_genes = this_genes.intersection(getx_entrez) + usable_genes = genes.index.intersection(gtex_entrez) gene_exp = gene_exp[usable_genes] pathvals = pathvals[circuits.index[circuits[circuits_column]]] diff --git a/drexml/explain.py b/drexml/explain.py index 02e63f5c..eccb2e6e 100644 --- a/drexml/explain.py +++ b/drexml/explain.py @@ -169,9 +169,10 @@ def get_quantile_by_circuit(model, X, Y, threshold=0.5): float Qauntile to use. """ + cut = 0.95 r = r2_score(Y, model.predict(X), multioutput="raw_values") r[r < threshold] = threshold - q = 0.95 + ((1 - r) / (1 - threshold)) * (1 - 0.95) + q = cut + ((1 - r) / (1 - threshold)) * (1 - cut) q = {y: q[i] for i, y in enumerate(Y)} return q diff --git a/drexml/models.py b/drexml/models.py index 775b4a9d..72ec822e 100644 --- a/drexml/models.py +++ b/drexml/models.py @@ -153,6 +153,7 @@ def get_model(n_features, n_targets, n_jobs, debug, n_iters=None): sklearn.ensemble.RandomForestRegressor The model to be fitted. """ + this_seed = 275 mtry = int(np.sqrt(n_features) + 20) if debug: n_estimators = 2 @@ -160,7 +161,9 @@ def get_model(n_features, n_targets, n_jobs, debug, n_iters=None): n_estimators_max = 20 patience = 5 else: - n_estimators = max(201, int(n_features * 201 / 700)) + n_estimators = max(201, int((n_features + n_targets) * 201 / 700)) + # n_estimators = int(1.5 * (n_features + n_targets)) + # n_estimators = np.log2() n_estimators_min = 100 n_estimators_max = n_estimators patience = 100 @@ -177,10 +180,12 @@ def get_model(n_features, n_targets, n_jobs, debug, n_iters=None): model = RandomForestRegressor( n_jobs=n_jobs, - n_estimators=n_estimators, + n_estimators=200, max_depth=8, max_features=mtry, - random_state=0, + random_state=this_seed, ) + print(n_estimators) + return model diff --git a/drexml/plotting.py b/drexml/plotting.py new file mode 100644 index 00000000..fcba6442 --- /dev/null +++ b/drexml/plotting.py @@ -0,0 +1,235 @@ +# -*- coding: utf-8 -*- +""" +Plotting module for DREXML. +""" +import pathlib + +import matplotlib.pyplot as plt +import pandas as pd +import seaborn as sns + + +def preprocess_data(input_path): + """Read and preprocess results.""" + + data = pd.read_csv(input_path, sep="\t") + if "stability_upper_95ci" not in data.columns: + data["stability_upper_95ci"] = data["upper"] + data["stability_error"] = data["stability_upper_95ci"] - data["stability"] + + data = data.sort_values(by="stability", ascending=False) + data = data.replace({"circuit_name": {"map": "Disease Map"}}) + data = data.reset_index(drop=True) + query = data["circuit_name"] == "Disease Map" + iquery = data.index[query] + ilow = data.index[iquery - 1] + iup = data.index[iquery + 1] + + data["r2_error"] = 1.96 * data.r2_std / 2 + + return data, ilow, iup + + +def plot_stability_ax(ax, data, ilow, iup): + """Plot stability axis.""" + label_font_size = 10 + axis_font = {"size": f"{label_font_size}"} + scatter_size = 10 + lw = 1 + + x = data.stability + y = data.circuit_name + xerr = data.stability_error + yerr = None + + # pylint: disable=E1121 + sns.scatterplot( + x, + y, + s=scatter_size, + ax=ax, + color="k", + marker="+", + label="Stability", + legend=False, + alpha=0.5, + ) + # pylint: enable=E1121 + ax.grid(axis="x") + ax.errorbar( + x, y, yerr=yerr, xerr=xerr, ls="", color="k", lw=lw, label="CI", alpha=0.5 + ) + # Get the first two and last y-tick positions. + if ilow == iup: + miny, nexty = ax.get_yticks() + maxy = nexty + else: + miny, nexty, *_, maxy = ax.get_yticks() + + # Compute half the y-tick interval (for example). + eps = (nexty - miny) / 2 # <-- Your choice. + + # Adjust the limits. + ax.set_ylim(maxy + eps, miny - eps) + ax.set_xlim(-0.05, 1.05) + # ax.axvline(0.4, color="r", linestyle="--") + # ax.axvline(0.75, color="b", linestyle="--") + # ax.axhspan("Disease Map", color="k", linestyle="--") + if ilow != iup: + ax.axhspan(ilow + 0.5, iup - 0.5, color="gray", alpha=0.2) + + ax.axvspan(0, 0.4, color="red", alpha=0.2) + ax.axvspan(0.4, 0.75, color="y", alpha=0.2) + ax.axvspan(0.75, 1.0, color="g", alpha=0.2) + ax.set_xticks([0, 0.4, 0.75, 1]) + + sns.despine(left=True, right=True, top=True, bottom=True) + ax.set_xlabel("Nogueria Stability Stimate with 95% CI", **axis_font) + ax.set_ylabel("Circuit Name", **axis_font) + + return ax + + +def plot_r2_ax(ax_right, data): + """Plot R2 axis.""" + + label_font_size = 10 + axis_font = {"size": f"{label_font_size}"} + lw = 1 + scatter_size = 10 + + x = data["r2_mean"] + xerr = data["r2_error"] + y = data.circuit_name + yerr = None + + # pylint: disable=E1121 + sns.scatterplot( + x, + y, + s=scatter_size, + ax=ax_right, + color="b", + marker="x", + label=r"$R^2$", + legend=False, + alpha=0.5, + ) + # pylint: enable=E1121 + ax_right.errorbar( + x, y, yerr=yerr, xerr=xerr, ls="", color="b", lw=lw, label="CI", alpha=0.5 + ) + ax_right.set_xlabel(r"$R^2$ score mean and 95% CI", **axis_font) + ax_right.grid(axis="x") + ax_right.set_xlim(-0.05, 1.05) + + return ax_right + + +def plot_stability(input_path, output_path=None): + """Plot the stability results.""" + + print(input_path) + print(output_path) + input_path = pathlib.Path(input_path) + if output_path is None: + output_path = input_path.parent + else: + output_path = pathlib.Path(output_path) + print(output_path) + + data, ilow, iup = preprocess_data(input_path) + print(data) + print(f"{ilow=}") + print(f"{iup=}") + + font_scale = 0.4 + this_figsize = (5 / 2.0, 30 / 2.0) + + sns.set_style("whitegrid") + sns.set_context("paper", font_scale=font_scale) + fig, ax = plt.subplots(1, 1, figsize=this_figsize) + ax = plot_stability_ax(ax, data, ilow, iup) + + ax_right = ax.twiny() + ax_right = plot_r2_ax(ax_right, data) + + # added these three lines + # ask matplotlib for the plotted objects and their labels + # lines, labels = ax.get_legend_handles_labels() + # lines2, labels2 = ax_right.get_legend_handles_labels() + # ax_right.legend(lines + lines2, labels + labels2, loc="upper left") + fig.legend( + ncol=2, + loc="upper left", + bbox_to_anchor=(-0.3, 1.035), + bbox_transform=ax.transAxes, + fontsize="large", + ) + + # plt.tight_layout() + fig.set_size_inches(8.27 / 2, 11.69) + plt.savefig( + output_path.joinpath(f"{input_path.stem}.png"), dpi=300, bbox_inches="tight" + ) + plt.savefig(output_path.joinpath(f"{input_path.stem}.pdf"), bbox_inches="tight") + + +def plot_metrics(input_path, output_folder=None, width=2.735): + """Plot stability versus R^2 with 95% CI""" + + input_path = pathlib.Path(input_path).absolute() + if output_folder is None: + output_folder = input_path.parent + else: + output_folder = pathlib.Path(output_folder) + + results_df = pd.read_csv(input_path, sep="\t").fillna(0) + results_df["r2_error"] = 1.96 * results_df.r2_std / 2 + results_df = results_df.sort_values(by="stability", ascending=True).reset_index() + + custom_params = { + "axes.spines.right": False, + "axes.spines.top": False, + "axes.spines.left": False, + "axes.spines.bottom": False, + } + sns.set_theme( + style="whitegrid", palette="colorblind", context="paper", rc=custom_params + ) + + fig, ax = plt.subplots(1, 1) + + plt.scatter(results_df.stability, results_df.r2_mean, s=1) + plt.errorbar( + results_df.stability, + results_df.r2_mean, + yerr=results_df.r2_error, + linestyle="None", + linewidth=1, + label=r"$R^2$ mean 95% CI", + ) + plt.errorbar( + results_df.stability, + results_df.r2_mean, + xerr=results_df.stability - results_df.stability_lower_95ci, + linestyle="None", + linewidth=1, + label="Stability 95% CI", + ) + + ax.axvspan(0, 0.4, color="red", alpha=0.1) + ax.axvspan(0.4, 0.75, color="y", alpha=0.1) + ax.axvspan(0.75, 1.0, color="g", alpha=0.1) + ax.set_xticks([0, 0.4, 0.75, 1]) + + plt.xlabel("Stability") + plt.ylabel(r"$R^2$ score") + plt.legend() + + fig.tight_layout() + fig.set_size_inches(width, (width * 3) / 4) + + fname = "stability_results_symbol" + plt.savefig(output_folder.joinpath(f"{fname}.png"), dpi=300, bbox_inches="tight") + plt.savefig(output_folder.joinpath(f"{fname}.pdf"), bbox_inches="tight") diff --git a/drexml/resources/circuit_names.tsv b/drexml/resources/circuit_names.tsv index b4362ab3..425cc15b 100644 --- a/drexml/resources/circuit_names.tsv +++ b/drexml/resources/circuit_names.tsv @@ -107,7 +107,7 @@ P-hsa04014-41 Ras signaling pathway: RAC1* P-hsa04014-100 Ras signaling pathway: REL P-hsa04014-24 Ras signaling pathway: PLD1 P-hsa04014-26 Ras signaling pathway: PRKCA -P-hsa04014-30 Ras signaling pathway: C01245 +P-hsa04014-30 Ras signaling pathway: D-myo-Inositol 1,4,5-trisphosphate P-hsa04014-27 Ras signaling pathway: ABL1 P-hsa04014-45 Ras signaling pathway: RAB5A P-hsa04014-61 Ras signaling pathway: RAP1A @@ -139,14 +139,14 @@ P-hsa04015-95 Rap1 signaling pathway: THBS1 P-hsa04015-100 101 48 Rap1 signaling pathway: PRKCI PARD6A PARD3 P-hsa04015-96 Rap1 signaling pathway: PLCE1 P-hsa04015-63 Rap1 signaling pathway: GNAI1 -P-hsa04015-92 Rap1 signaling pathway: C00076* -P-hsa04020-64 Calcium signaling pathway: C01330* -P-hsa04020-12 Calcium signaling pathway: C01330 -P-hsa04020-18 Calcium signaling pathway: C00002 -P-hsa04020-17 Calcium signaling pathway: C00004 -P-hsa04020-15 Calcium signaling pathway: C13051 -P-hsa04020-22 Calcium signaling pathway: C00575 -P-hsa04020-16 Calcium signaling pathway: C06124 +P-hsa04015-92 Rap1 signaling pathway: Calcium cation* +P-hsa04020-64 Calcium signaling pathway: Sodium cation* +P-hsa04020-12 Calcium signaling pathway: Sodium cation +P-hsa04020-18 Calcium signaling pathway: ATP +P-hsa04020-17 Calcium signaling pathway: NADH +P-hsa04020-15 Calcium signaling pathway: Nicotinic acid adenine dinucleotide phosphate +P-hsa04020-22 Calcium signaling pathway: 3,5-Cyclic AMP +P-hsa04020-16 Calcium signaling pathway: Sphingosine 1-phosphate P-hsa04020-42 Calcium signaling pathway: MYLK4 P-hsa04020-8 Calcium signaling pathway: PDE1A P-hsa04020-7 Calcium signaling pathway: ADCY1 @@ -168,9 +168,9 @@ P-hsa04022-60 cGMP-PKG signaling pathway: TRPC6* P-hsa04022-37 38 cGMP-PKG signaling pathway: ATP2A1 PLN P-hsa04022-19 cGMP-PKG signaling pathway: CNGB1 P-hsa04022-65 cGMP-PKG signaling pathway: PDE2A -P-hsa04022-57 cGMP-PKG signaling pathway: C00144 +P-hsa04022-57 cGMP-PKG signaling pathway: GMP P-hsa04022-66 cGMP-PKG signaling pathway: PDE3A -P-hsa04022-63 cGMP-PKG signaling pathway: C00575 +P-hsa04022-63 cGMP-PKG signaling pathway: 3,5-Cyclic AMP P-hsa04022-71 cGMP-PKG signaling pathway: PPIF P-hsa04024-109 cAMP signaling pathway: BDNF P-hsa04024-110 cAMP signaling pathway: FOS @@ -200,11 +200,11 @@ P-hsa04024-7 cAMP signaling pathway: TNNI3 P-hsa04024-9 95 cAMP signaling pathway: ATP1B4 FXYD1 P-hsa04024-21 cAMP signaling pathway: AKT3 P-hsa04024-77 cAMP signaling pathway: RHOA* -P-hsa04024-31 cAMP signaling pathway: C00165 -P-hsa04024-32 cAMP signaling pathway: C01245 +P-hsa04024-31 cAMP signaling pathway: Diacylglycerol +P-hsa04024-32 cAMP signaling pathway: D-myo-Inositol 1,4,5-trisphosphate P-hsa04024-123 cAMP signaling pathway: PAK1 P-hsa04024-59 cAMP signaling pathway: AFDN -P-hsa04024-76 cAMP signaling pathway: C00416 +P-hsa04024-76 cAMP signaling pathway: Phosphatidate P-hsa04024-43 cAMP signaling pathway: MAPK8 P-hsa04024-101 cAMP signaling pathway: HCN4 P-hsa04062-43 Chemokine signaling pathway: STAT1 @@ -280,7 +280,7 @@ P-hsa04066-29 HIF-1 signaling pathway: LDHA P-hsa04066-88 HIF-1 signaling pathway: BCL2 P-hsa04066-89 HIF-1 signaling pathway: CDKN1A P-hsa04066-46 HIF-1 signaling pathway: ENO1 -P-hsa04066-26 HIF-1 signaling pathway: C01245 +P-hsa04066-26 HIF-1 signaling pathway: D-myo-Inositol 1,4,5-trisphosphate P-hsa04066-37 HIF-1 signaling pathway: PDHA1 P-hsa04068-39 FoxO signaling pathway: CCNB3 P-hsa04068-40 FoxO signaling pathway: CCND1 @@ -312,11 +312,11 @@ P-hsa04068-59 FoxO signaling pathway: S1PR1 P-hsa04068-60 FoxO signaling pathway: RAG1 P-hsa04068-88 FoxO signaling pathway: FBXO32 P-hsa04068-72 FoxO signaling pathway: SMAD2 -P-hsa04071-89 Sphingolipid signaling pathway: C00533 +P-hsa04071-89 Sphingolipid signaling pathway: Nitric oxide P-hsa04071-69 Sphingolipid signaling pathway: RAC1 P-hsa04071-1 Sphingolipid signaling pathway: MAPK1 P-hsa04071-11 Sphingolipid signaling pathway: PRKCA -P-hsa04071-66 Sphingolipid signaling pathway: C01245 +P-hsa04071-66 Sphingolipid signaling pathway: D-myo-Inositol 1,4,5-trisphosphate P-hsa04071-24 Sphingolipid signaling pathway: PTEN P-hsa04071-68 Sphingolipid signaling pathway: NFKB1 P-hsa04071-65 Sphingolipid signaling pathway: BAX* @@ -324,9 +324,9 @@ P-hsa04071-57 Sphingolipid signaling pathway: BAX P-hsa04071-59 60 Sphingolipid signaling pathway: TP53 BCL2 P-hsa04071-48 Sphingolipid signaling pathway: SMPD1 P-hsa04072-3 Phospholipase D signaling pathway: MAPK1 -P-hsa04072-57 Phospholipase D signaling pathway: C06124 +P-hsa04072-57 Phospholipase D signaling pathway: Sphingosine 1-phosphate P-hsa04072-36 Phospholipase D signaling pathway: MTOR -P-hsa04072-27 Phospholipase D signaling pathway: C01245 +P-hsa04072-27 Phospholipase D signaling pathway: D-myo-Inositol 1,4,5-trisphosphate P-hsa04110-46 Cell cycle: RB1 P-hsa04110-96 97 Cell cycle: TFDP1 E2F4 P-hsa04110-60 10 11 12 13 14 9 Cell cycle: CDC6 ORC3 ORC5 ORC4 ORC2 ORC1 ORC6 @@ -504,7 +504,7 @@ P-hsa04261-52 Adrenergic signaling in cardiomyocytes: MAPK14 P-hsa04261-34 Adrenergic signaling in cardiomyocytes: AKT3 P-hsa04261-36 Adrenergic signaling in cardiomyocytes: MAPK1 P-hsa04261-62 Adrenergic signaling in cardiomyocytes: BCL2 -P-hsa04261-66 Adrenergic signaling in cardiomyocytes: C01245 +P-hsa04261-66 Adrenergic signaling in cardiomyocytes: D-myo-Inositol 1,4,5-trisphosphate P-hsa04270-10 3 71 Vascular smooth muscle contraction: ACTA2 MYL9 MYH11 P-hsa04270-24 Vascular smooth muscle contraction: ACTA2 P-hsa04270-46 Vascular smooth muscle contraction: ITPR1* @@ -693,7 +693,7 @@ P-hsa04550-36 Signaling pathways regulating pluripotency of stem cells: AKT3* P-hsa04550-62 63 Signaling pathways regulating pluripotency of stem cells: SMAD2 SMAD4 P-hsa04550-47 Signaling pathways regulating pluripotency of stem cells: CTNNB1* P-hsa04550-67 Signaling pathways regulating pluripotency of stem cells: MYC* -P-hsa04610-7 Complement and coagulation cascades: C00290 +P-hsa04610-7 Complement and coagulation cascades: Fibrin P-hsa04610-17 Complement and coagulation cascades: PLG P-hsa04610-57 Complement and coagulation cascades: PLAUR P-hsa04610-11 Complement and coagulation cascades: F2R @@ -705,7 +705,7 @@ P-hsa04610-23 Complement and coagulation cascades: BDKRB1 P-hsa04610-44 Complement and coagulation cascades: C3 P-hsa04611-7 Platelet activation: ITPR1 P-hsa04611-92 Platelet activation: RHOA* -P-hsa04611-34 Platelet activation: C02198* +P-hsa04611-34 Platelet activation: Thromboxane A2* P-hsa04611-43 Platelet activation: MYL12B P-hsa04611-25 Platelet activation: ORAI1 P-hsa04612-17 28 Antigen processing and presentation: CD4 HLA-DMA @@ -803,7 +803,7 @@ P-hsa04664-46 Fc epsilon RI signaling pathway: PLA2G4B P-hsa04666-27 Fc gamma R-mediated phagocytosis: ARPC5 P-hsa04666-38 Fc gamma R-mediated phagocytosis: CFL1 P-hsa04666-29 Fc gamma R-mediated phagocytosis: WAS -P-hsa04666-30 44 Fc gamma R-mediated phagocytosis: C04637 GSN +P-hsa04666-30 44 Fc gamma R-mediated phagocytosis: 1-Phosphatidyl-D-myo-inositol 4,5-bisphosphate GSN P-hsa04666-49 Fc gamma R-mediated phagocytosis: ARF6* P-hsa04666-20 Fc gamma R-mediated phagocytosis: PLA2G4B P-hsa04666-41 Fc gamma R-mediated phagocytosis: MARCKS @@ -926,10 +926,10 @@ P-hsa04728-60 Dopaminergic synapse: CACNA1A P-hsa04728-71 72 Dopaminergic synapse: CLOCK ARNTL P-hsa04728-36 Dopaminergic synapse: TH P-hsa04728-24 Dopaminergic synapse: SLC6A3 -P-hsa04730-20 Long-term depression: C00025 +P-hsa04730-20 Long-term depression: L-Glutamate P-hsa04730-8 Long-term depression: GNA13* P-hsa04730-7 Long-term depression: GNA13 -P-hsa04730-30 Long-term depression: C00025* +P-hsa04730-30 Long-term depression: L-Glutamate* P-hsa04740-10 Olfactory transduction: ANO2 P-hsa04740-37 Olfactory transduction: CNGB1* P-hsa04740-39 Olfactory transduction: PRKG1* @@ -945,7 +945,7 @@ P-hsa04742-18 Taste transduction: PDE1A P-hsa04742-34 Taste transduction: GRM1 P-hsa04742-27 Taste transduction: CALHM1 P-hsa04742-23 45 Taste transduction: PKD1L3 PKD2L1 -P-hsa04742-31 Taste transduction: C00076* +P-hsa04742-31 Taste transduction: Calcium cation* P-hsa04742-48 Taste transduction: GABBR1 P-hsa04742-47 Taste transduction: GABRA1 P-hsa04742-57 Taste transduction: HTR3C @@ -956,8 +956,8 @@ P-hsa04742-40 Taste transduction: P2RX2 P-hsa04742-46 Taste transduction: P2RY1 P-hsa04742-37 Taste transduction: P2RY4 P-hsa04750-7 Inflammatory mediator regulation of TRP channels: TRPV1 -P-hsa04750-39 Inflammatory mediator regulation of TRP channels: C01245* -P-hsa04750-40 Inflammatory mediator regulation of TRP channels: C00219 +P-hsa04750-39 Inflammatory mediator regulation of TRP channels: D-myo-Inositol 1,4,5-trisphosphate* +P-hsa04750-40 Inflammatory mediator regulation of TRP channels: Arachidonate P-hsa04750-53 Inflammatory mediator regulation of TRP channels: TRPM8 P-hsa04750-44 Inflammatory mediator regulation of TRP channels: TRPA1 P-hsa04750-51 Inflammatory mediator regulation of TRP channels: TRPV4 @@ -968,7 +968,7 @@ P-hsa04750-62 Inflammatory mediator regulation of TRP channels: TRPM8* P-hsa04750-63 Inflammatory mediator regulation of TRP channels: TRPA1* P-hsa04750-59 Inflammatory mediator regulation of TRP channels: TRPV2 P-hsa04750-60 Inflammatory mediator regulation of TRP channels: TRPV3 -P-hsa04750-90 Inflammatory mediator regulation of TRP channels: C01245** +P-hsa04750-90 Inflammatory mediator regulation of TRP channels: D-myo-Inositol 1,4,5-trisphosphate** P-hsa04810-82 83 Regulation of actin cytoskeleton: ACTB ARPC5 P-hsa04810-21 82 Regulation of actin cytoskeleton: CFL1 ACTB P-hsa04810-35 81 80 Regulation of actin cytoskeleton: MYL12B MYH9 ACTB @@ -987,8 +987,8 @@ P-hsa04910-24 Insulin signaling pathway: ACACA P-hsa04910-12 Insulin signaling pathway: FASN P-hsa04910-20 Insulin signaling pathway: PKLR P-hsa04910-57 Insulin signaling pathway: GCK -P-hsa04910-17 Insulin signaling pathway: C00031 -P-hsa04910-14 Insulin signaling pathway: C00369 +P-hsa04910-17 Insulin signaling pathway: D-Glucose +P-hsa04910-14 Insulin signaling pathway: Starch P-hsa04910-48 Insulin signaling pathway: PPARGC1A P-hsa04910-43 Insulin signaling pathway: G6PC P-hsa04910-46 Insulin signaling pathway: FBP1 @@ -1036,9 +1036,9 @@ P-hsa04914-34 Progesterone-mediated oocyte maturation: MAPK14 P-hsa04915-40 Estrogen signaling pathway: CREB3** P-hsa04915-58 Estrogen signaling pathway: CREB3*** P-hsa04915-21 Estrogen signaling pathway: CREB3 -P-hsa04915-3 11 Estrogen signaling pathway: ESR1 C00951 +P-hsa04915-3 11 Estrogen signaling pathway: ESR1 Estradiol-17beta P-hsa04915-12 14 Estrogen signaling pathway: ESR1 FOS -P-hsa04915-12 13 Estrogen signaling pathway: ESR1 C00951* +P-hsa04915-12 13 Estrogen signaling pathway: ESR1 Estradiol-17beta* P-hsa04915-66 Estrogen signaling pathway: AKT3* P-hsa04915-28 Estrogen signaling pathway: KCNJ3 P-hsa04915-30 Estrogen signaling pathway: CREB3* @@ -1095,12 +1095,12 @@ P-hsa04919-100 Thyroid hormone signaling pathway: CTNNB1* P-hsa04919-42 Thyroid hormone signaling pathway: SLC2A1 P-hsa04919-91 Thyroid hormone signaling pathway: PFKP P-hsa04919-40 Thyroid hormone signaling pathway: RCAN2 -P-hsa04919-21 53 Thyroid hormone signaling pathway: THRA C02465 +P-hsa04919-21 53 Thyroid hormone signaling pathway: THRA Triiodothyronine P-hsa04919-101 Thyroid hormone signaling pathway: NOTCH1 P-hsa04919-102 Thyroid hormone signaling pathway: BMP4 P-hsa04919-49 Thyroid hormone signaling pathway: ACTB -P-hsa04920-43 Adipocytokine signaling pathway: C00162 -P-hsa04920-2 Adipocytokine signaling pathway: C00638 +P-hsa04920-43 Adipocytokine signaling pathway: Fatty acid +P-hsa04920-2 Adipocytokine signaling pathway: Long-chain fatty acid P-hsa04920-28 Adipocytokine signaling pathway: SLC2A1 P-hsa04920-10 Adipocytokine signaling pathway: PCK1 P-hsa04920-9 Adipocytokine signaling pathway: G6PC @@ -1111,10 +1111,10 @@ P-hsa04920-26 Adipocytokine signaling pathway: NPY P-hsa04920-16 Adipocytokine signaling pathway: POMC P-hsa04920-40 Adipocytokine signaling pathway: PPARGC1A P-hsa04920-5 Adipocytokine signaling pathway: NFKBIA -P-hsa04920-12 Adipocytokine signaling pathway: C00165 -P-hsa04920-3 Adipocytokine signaling pathway: C15493 -P-hsa04920-1 Adipocytokine signaling pathway: C00195 -P-hsa04921-23 Oxytocin signaling pathway: C00219 +P-hsa04920-12 Adipocytokine signaling pathway: Diacylglycerol +P-hsa04920-3 Adipocytokine signaling pathway: 9-cis-Retinoic acid +P-hsa04920-1 Adipocytokine signaling pathway: N-Acylsphingosine +P-hsa04921-23 Oxytocin signaling pathway: Arachidonate P-hsa04921-41 Oxytocin signaling pathway: PTGS2 P-hsa04921-58 Oxytocin signaling pathway: MEF2C P-hsa04921-56 Oxytocin signaling pathway: JUN @@ -1125,7 +1125,7 @@ P-hsa04921-28 Oxytocin signaling pathway: EEF2 P-hsa04921-65 Oxytocin signaling pathway: TRPM2 P-hsa04921-67 Oxytocin signaling pathway: RYR1 P-hsa04921-34 35 Oxytocin signaling pathway: MYL9 ACTB -P-hsa04921-33 Oxytocin signaling pathway: C00942 +P-hsa04921-33 Oxytocin signaling pathway: 3,5-Cyclic GMP P-hsa04921-48 Oxytocin signaling pathway: PRKAG2 P-hsa04921-55 Oxytocin signaling pathway: PTGS2* P-hsa04921-53 Oxytocin signaling pathway: RGS2 @@ -1135,7 +1135,7 @@ P-hsa04921-11 Oxytocin signaling pathway: PRKACA P-hsa04921-76 Oxytocin signaling pathway: CDKN1A P-hsa04921-77 Oxytocin signaling pathway: KCNJ3 P-hsa04921-43 Oxytocin signaling pathway: CACNG3 -P-hsa04921-46 Oxytocin signaling pathway: C00942* +P-hsa04921-46 Oxytocin signaling pathway: 3,5-Cyclic GMP* P-hsa04922-51 Glucagon signaling pathway: G6PC P-hsa04922-50 Glucagon signaling pathway: PCK1 P-hsa04922-59 Glucagon signaling pathway: CPT1C @@ -1151,14 +1151,14 @@ P-hsa04923-16 Regulation of lipolysis in adipocytes: PLIN1 P-hsa04923-66 Regulation of lipolysis in adipocytes: LIPE P-hsa04923-31 Regulation of lipolysis in adipocytes: PRKACA* P-hsa04923-38 Regulation of lipolysis in adipocytes: PDE3B -P-hsa04923-43 Regulation of lipolysis in adipocytes: C00219 +P-hsa04923-43 Regulation of lipolysis in adipocytes: Arachidonate P-hsa04923-52 53 Regulation of lipolysis in adipocytes: PNPLA2 ABHD5* P-hsa04923-26 27 Regulation of lipolysis in adipocytes: PNPLA2 ABHD5 P-hsa04924-34 Renin secretion: REN P-hsa04924-47 Renin secretion: KCNMA1 P-hsa04924-30 Renin secretion: PDE3A P-hsa04924-23 Renin secretion: ITPR1 -P-hsa04924-31 Renin secretion: C02135 +P-hsa04924-31 Renin secretion: Angiotensin II P-hsa04924-58 Renin secretion: PPP3CA P-hsa04924-49 Renin secretion: PDE1A P-hsa04924-52 Renin secretion: KCNJ2 @@ -1168,26 +1168,26 @@ P-hsa04925-3 Aldosterone synthesis and secretion: ITPR1 P-hsa04925-5 Aldosterone synthesis and secretion: KCNK3 P-hsa04925-18 Aldosterone synthesis and secretion: PDE2A P-hsa04930-3 Type II diabetes mellitus: SLC2A4 -P-hsa04930-15 Type II diabetes mellitus: C00031* +P-hsa04930-15 Type II diabetes mellitus: D-Glucose* P-hsa04930-26 Type II diabetes mellitus: INS* -P-hsa04930-13 Type II diabetes mellitus: C00162 -P-hsa04930-8 Type II diabetes mellitus: C00022 -P-hsa04930-10 Type II diabetes mellitus: C00031 -P-hsa04930-7 Type II diabetes mellitus: C00002 -P-hsa04930-9 Type II diabetes mellitus: C00238 +P-hsa04930-13 Type II diabetes mellitus: Fatty acid +P-hsa04930-8 Type II diabetes mellitus: Pyruvate +P-hsa04930-10 Type II diabetes mellitus: D-Glucose +P-hsa04930-7 Type II diabetes mellitus: ATP +P-hsa04930-9 Type II diabetes mellitus: Potassium cation P-hsa04931-40 Insulin resistance: PRKCZ -P-hsa04931-35 Insulin resistance: C00369 +P-hsa04931-35 Insulin resistance: Starch P-hsa04931-13 Insulin resistance: AKT2 -P-hsa04931-104 Insulin resistance: C00369* +P-hsa04931-104 Insulin resistance: Starch* P-hsa04931-46 Insulin resistance: PIK3R5* P-hsa04931-61 Insulin resistance: ACACB P-hsa04931-151 Insulin resistance: CPT1A P-hsa04931-67 Insulin resistance: IKBKB** P-hsa04931-47 Insulin resistance: AKT2* P-hsa04931-77 Insulin resistance: PPP2R4** -P-hsa04931-87 Insulin resistance: C00031* +P-hsa04931-87 Insulin resistance: D-Glucose* P-hsa04931-29 Insulin resistance: CPT1B -P-hsa04931-144 Insulin resistance: C00533* +P-hsa04931-144 Insulin resistance: Nitric oxide* P-hsa04931-124 Insulin resistance: FOXO1* P-hsa04931-135 Insulin resistance: SREBF1** P-hsa04931-137 Insulin resistance: MLXIP* @@ -1247,7 +1247,7 @@ P-hsa04960-3 Aldosterone-regulated sodium reabsorption: SCNN1A P-hsa04960-27 Aldosterone-regulated sodium reabsorption: KCNJ1 P-hsa04960-13 Aldosterone-regulated sodium reabsorption: FXYD4 P-hsa04960-4 Aldosterone-regulated sodium reabsorption: ATP1B4 -P-hsa04960-15 Aldosterone-regulated sodium reabsorption: C00762 +P-hsa04960-15 Aldosterone-regulated sodium reabsorption: Cortisone P-hsa04961-5 Endocrine and other factor-regulated calcium reabsorption: TRPV5 P-hsa04961-20 Endocrine and other factor-regulated calcium reabsorption: CALB1* P-hsa04961-12 Endocrine and other factor-regulated calcium reabsorption: SLC8A1 @@ -1291,7 +1291,7 @@ P-hsa05010-49 Alzheimer's disease: EIF2AK3 P-hsa05010-50 Alzheimer's disease: ERN1 P-hsa05010-51 Alzheimer's disease: ATF6 P-hsa05010-37 Alzheimer's disease: MAPT -P-hsa05010-47 Alzheimer's disease: C00533 +P-hsa05010-47 Alzheimer's disease: Nitric oxide P-hsa05010-59 Alzheimer's disease: LRP1 P-hsa05010-61 Alzheimer's disease: GAPDH P-hsa05012-57 Parkinson's disease: CASP3 @@ -1305,7 +1305,7 @@ P-hsa05014-51 Amyotrophic lateral sclerosis (ALS): DERL1 P-hsa05014-31 34 Amyotrophic lateral sclerosis (ALS): NEFL PRPH P-hsa05014-32 34 Amyotrophic lateral sclerosis (ALS): NEFM PRPH P-hsa05014-33 34 Amyotrophic lateral sclerosis (ALS): NEFH PRPH -P-hsa05014-49 Amyotrophic lateral sclerosis (ALS): C00001 +P-hsa05014-49 Amyotrophic lateral sclerosis (ALS): H2O P-hsa05014-53 Amyotrophic lateral sclerosis (ALS): RAB5A P-hsa05016-12 Huntington's disease: REST P-hsa05016-55 Huntington's disease: TGM2 @@ -1357,7 +1357,7 @@ P-hsa05032-38 Morphine addiction: CACNA1A P-hsa05032-30 Morphine addiction: ADORA1 P-hsa05032-85 Morphine addiction: KCNJ6* P-hsa05032-55 Morphine addiction: GABRR3** -P-hsa05032-25 Morphine addiction: C00575* +P-hsa05032-25 Morphine addiction: 3,5-Cyclic AMP* P-hsa05034-99 Alcoholism: PDYN P-hsa05034-61 Alcoholism: CRH P-hsa05034-62 Alcoholism: NPY @@ -1368,19 +1368,19 @@ P-hsa05100-24 Bacterial invasion of epithelial cells: ACTB P-hsa05100-15 Bacterial invasion of epithelial cells: CTNNA1 P-hsa05100-33 Bacterial invasion of epithelial cells: DNM1 P-hsa05100-55 Bacterial invasion of epithelial cells: ACTB* -P-hsa05110-12 Vibrio cholerae infection: C00080 +P-hsa05110-12 Vibrio cholerae infection: H+ P-hsa05110-51 Vibrio cholerae infection: PDIA4 P-hsa05110-52 Vibrio cholerae infection: ADCY3 -P-hsa05110-17 Vibrio cholerae infection: C00698* -P-hsa05110-14 Vibrio cholerae infection: C00238* -P-hsa05110-15 Vibrio cholerae infection: C01330 -P-hsa05110-16 Vibrio cholerae infection: C00698 -P-hsa05110-13 Vibrio cholerae infection: C00238 +P-hsa05110-17 Vibrio cholerae infection: Cl-* +P-hsa05110-14 Vibrio cholerae infection: Potassium cation* +P-hsa05110-15 Vibrio cholerae infection: Sodium cation +P-hsa05110-16 Vibrio cholerae infection: Cl- +P-hsa05110-13 Vibrio cholerae infection: Potassium cation P-hsa05110-46 Vibrio cholerae infection: PLCG1 P-hsa05110-50 Vibrio cholerae infection: ACTB P-hsa05120-20 Epithelial cell signaling in Helicobacter pylori infection: CXCL8 P-hsa05120-19 Epithelial cell signaling in Helicobacter pylori infection: CXCL1 -P-hsa05120-35 Epithelial cell signaling in Helicobacter pylori infection: C00080 +P-hsa05120-35 Epithelial cell signaling in Helicobacter pylori infection: H+ P-hsa05120-18 Epithelial cell signaling in Helicobacter pylori infection: CCL5 P-hsa05120-50 Epithelial cell signaling in Helicobacter pylori infection: EGFR P-hsa05120-52 Epithelial cell signaling in Helicobacter pylori infection: LYN @@ -1423,12 +1423,12 @@ P-hsa05134-72 Legionellosis: IL12A P-hsa05134-71 Legionellosis: CXCL8 P-hsa05134-73 Legionellosis: CXCL1 P-hsa05140-21 Leishmaniasis: NFKB1 -P-hsa05140-26 Leishmaniasis: C00533 +P-hsa05140-26 Leishmaniasis: Nitric oxide P-hsa05140-37 Leishmaniasis: ELK1 P-hsa05140-55 Leishmaniasis: JUN P-hsa05140-16 Leishmaniasis: STAT1 P-hsa05140-41 57 Leishmaniasis: NOS2 CYBA -P-hsa05140-62 Leishmaniasis: C00584 +P-hsa05140-62 Leishmaniasis: Prostaglandin E2 P-hsa05140-43 Leishmaniasis: MAPK14 P-hsa05142-21 Chagas disease (American trypanosomiasis): TICAM1 P-hsa05142-29 Chagas disease (American trypanosomiasis): NOS2 @@ -1445,7 +1445,7 @@ P-hsa05145-8 Toxoplasmosis: NFKB1 P-hsa05145-11 Toxoplasmosis: MAPK14 P-hsa05145-10 Toxoplasmosis: MAPK8 P-hsa05145-9 Toxoplasmosis: MAPK1 -P-hsa05145-29 Toxoplasmosis: C06314 +P-hsa05145-29 Toxoplasmosis: Lipoxin A4 P-hsa05145-23 Toxoplasmosis: CIITA P-hsa05145-35 Toxoplasmosis: CASP3 P-hsa05145-67 Toxoplasmosis: BAD @@ -1635,7 +1635,7 @@ P-hsa05200-210 Pathways in cancer: MMP1 P-hsa05200-212 Pathways in cancer: CCND1*** P-hsa05200-207 Pathways in cancer: CDK4 P-hsa05200-76 Pathways in cancer: RAC1 -P-hsa05200-96 Pathways in cancer: C00416 +P-hsa05200-96 Pathways in cancer: Phosphatidate P-hsa05200-75 Pathways in cancer: MAPK8 P-hsa05200-65 Pathways in cancer: STK4 P-hsa05200-66 Pathways in cancer: CCND1 @@ -1674,7 +1674,7 @@ P-hsa05205-220 Proteoglycans in cancer: FAS P-hsa05205-109 Proteoglycans in cancer: SMAD2 P-hsa05205-120 Proteoglycans in cancer: PLAU P-hsa05205-121 Proteoglycans in cancer: PLAUR -P-hsa05205-233 234 Proteoglycans in cancer: ITGA2 C00925 +P-hsa05205-233 234 Proteoglycans in cancer: ITGA2 Heparan sulfate P-hsa05205-318 Proteoglycans in cancer: HSPB2 P-hsa05205-324 Proteoglycans in cancer: KDR* P-hsa05205-319 Proteoglycans in cancer: KDR @@ -1745,7 +1745,7 @@ P-hsa05211-22 Renal cell carcinoma: TGFA P-hsa05212-14 Pancreatic cancer: MAPK1 P-hsa05212-19 Pancreatic cancer: MAPK8 P-hsa05212-31 Pancreatic cancer: RAC1* -P-hsa05212-54 Pancreatic cancer: C00416 +P-hsa05212-54 Pancreatic cancer: Phosphatidate P-hsa05212-8 Pancreatic cancer: NFKB1 P-hsa05212-10 Pancreatic cancer: BCL2L1 P-hsa05212-12 Pancreatic cancer: CASP9 @@ -1767,7 +1767,7 @@ P-hsa05214-35 Glioma: E2F1 P-hsa05214-52 Glioma: E2F1* P-hsa05215-8 Prostate cancer: NFKBIA P-hsa05215-13 Prostate cancer: BCL2 -P-hsa05215-43 Prostate cancer: C05981 +P-hsa05215-43 Prostate cancer: Phosphatidylinositol-3,4,5-trisphosphate P-hsa05215-30 Prostate cancer: TP53 P-hsa05215-14 Prostate cancer: CCND1 P-hsa05215-46 Prostate cancer: MTOR @@ -1778,7 +1778,7 @@ P-hsa05215-24 Prostate cancer: CDKN1A P-hsa05215-9 Prostate cancer: CDKN1B P-hsa05215-12 Prostate cancer: KLK3 P-hsa05215-39 Prostate cancer: RB1 -P-hsa05215-22 Prostate cancer: C16038 +P-hsa05215-22 Prostate cancer: 2-Amino-1-methyl-6-phenylimidazo[4,5-b]pyridine P-hsa05216-5 Thyroid cancer: MAPK1 P-hsa05216-14 Thyroid cancer: MAPK1* P-hsa05216-11 Thyroid cancer: MYC diff --git a/drexml/resources/entrez_sym-table.tsv b/drexml/resources/entrez_sym-table.tsv index 249214e8..6c5ad995 100644 --- a/drexml/resources/entrez_sym-table.tsv +++ b/drexml/resources/entrez_sym-table.tsv @@ -2219,7 +2219,6 @@ entrez symbol 3250 HPR 3251 HPRT1 3257 HPS1 -3262 3263 HPX 3265 HRAS 3266 ERAS @@ -6052,7 +6051,6 @@ entrez symbol 9139 CBFA2T2 9140 ATG12 9141 PDCD5 -9142 9143 SYNGR3 9144 SYNGR2 9145 SYNGR1 @@ -6108,7 +6106,6 @@ entrez symbol 9217 VAPB 9218 VAPA 9219 MTA2 -9220 9221 NOLC1 9223 MAGI1 9227 LRAT @@ -6199,7 +6196,7 @@ entrez symbol 9348 NDST3 9349 RPL23 9350 CER1 -9351 SLC9A3R2 +9351 NHERF2 9352 TXNL1 9353 SLIT2 9354 UBE4A @@ -6214,7 +6211,7 @@ entrez symbol 9365 KL 9366 RAB9BP1 9367 RAB9A -9368 SLC9A3R1 +9368 NHERF1 9369 NRXN3 9370 ADIPOQ 9371 KIF3B @@ -7442,7 +7439,6 @@ entrez symbol 10893 MMP24 10894 LYVE1 10895 PPBPP2 -10896 10897 YIF1A 10898 CPSF4 10899 JTB @@ -7704,7 +7700,6 @@ entrez symbol 11214 AKAP13 11215 AKAP11 11216 AKAP10 -11217 11218 DDX20 11219 TREX2 11221 DUSP10 @@ -8168,7 +8163,6 @@ entrez symbol 23281 MTUS2 23283 CSTF2T 23284 ADGRL3 -23285 23286 WWC1 23287 AGTPBP1 23288 IQCE @@ -8514,7 +8508,6 @@ entrez symbol 25780 RASGRP3 25782 RAB3GAP2 25786 DGCR11 -25787 25788 RAD54B 25789 TMEM59L 25790 CFAP45 @@ -8779,7 +8772,7 @@ entrez symbol 26167 PCDHB5 26168 SENP3 26173 INTS1 -26175 TMEM251 +26175 LYSET 26184 OR1F2P 26188 OR1C1 26189 OR1A2 @@ -9981,7 +9974,7 @@ entrez symbol 51665 ASB1 51666 ASB4 51667 NUB1 -51668 HSPB11 +51668 IFT25 51669 SARAF 51673 TPPP3 51676 ASB2 @@ -10475,7 +10468,7 @@ entrez symbol 54972 TMEM132A 54973 INTS11 54974 THG1L -54976 C20orf27 +54976 ADISSP 54977 SLC25A38 54978 SLC35F6 54979 PLAAT2 @@ -11978,7 +11971,7 @@ entrez symbol 63915 BLOC1S5 63916 ELMO2 63917 GALNT11 -63920 ZBED8 +63920 FAM200C 63922 CHTF18 63923 TNN 63924 CIDEC @@ -12204,7 +12197,7 @@ entrez symbol 64771 ILRUN 64772 ENGASE 64773 PCED1A -64776 C11orf1 +64776 CFAP68 64777 RMND5B 64778 FNDC3B 64779 MTHFSD @@ -12574,7 +12567,7 @@ entrez symbol 79635 CCDC121 79637 ARMC7 79639 TMEM53 -79640 C22orf46 +79640 C22orf46P 79641 ROGDI 79642 ARSJ 79643 CHMP6 @@ -12743,7 +12736,7 @@ entrez symbol 79846 CFAP69 79847 MFSD13A 79848 CSPP1 -79849 PDZD3 +79849 NHERF4 79850 TLCD3A 79852 EPHX3 79853 TM4SF20 @@ -13045,7 +13038,6 @@ entrez symbol 80758 PRR7 80759 KHDC1 80760 ITIH5 -80761 80762 NDFIP1 80763 SPX 80764 THAP7 @@ -13396,7 +13388,6 @@ entrez symbol 83931 STK40 83932 SPRTN 83933 HDAC10 -83935 83937 RASSF4 83938 LRMDA 83939 EIF2A @@ -13786,7 +13777,7 @@ entrez symbol 84792 FAM220A 84793 FOXD2-AS1 84795 PYROXD2 -84798 C19orf48 +84798 C19orf48P 84803 GPAT3 84804 MFSD9 84807 NFKBID @@ -13891,7 +13882,6 @@ entrez symbol 84950 PRPF38A 84951 TNS4 84952 CGNL1 -84953 84954 MPND 84955 NUDCD1 84957 RELT @@ -14552,7 +14542,6 @@ entrez symbol 114132 SIGLEC11 114134 SLC2A13 114294 LACTB -114299 114327 EFHC1 114335 CGB1 114336 CGB2 @@ -14597,7 +14586,7 @@ entrez symbol 114815 SORCS1 114818 KLHL29 114819 CROCCP3 -114821 ZBED9 +114821 SCAND3 114822 RHPN1 114823 LENG8 114824 PNMA5 @@ -14760,7 +14749,6 @@ entrez symbol 117143 TADA1 117144 CATSPER1 117145 THEM4 -117153 117154 DACH2 117155 CATSPER2 117156 SCGB3A2 @@ -15226,7 +15214,6 @@ entrez symbol 129684 CNTNAP5 129685 TAF8 129787 TMEM18 -129790 129804 FBLN7 129807 NEU4 129831 RBM45 @@ -15349,7 +15336,7 @@ entrez symbol 133957 CCDC127 134083 OR2Y1 134111 UBE2QL1 -134121 C5orf49 +134121 CFAP90 134145 ATPSCKMT 134147 CMBL 134187 POU5F2 @@ -15611,7 +15598,7 @@ entrez symbol 143570 XRRA1 143630 UBQLNL 143662 MUC15 -143678 C11orf94 +143678 FREY1 143684 FAM76B 143686 SESN3 143689 PIWIL4 @@ -15980,7 +15967,7 @@ entrez symbol 151194 METTL21A 151195 CCNYL1 151230 KLHL23 -151234 SULT1C2P1 +151234 SULT1C5P 151242 PPP1R1C 151246 SGO2 151254 C2CD6 @@ -17289,7 +17276,6 @@ entrez symbol 283159 OR8D1 283160 OR8D2 283165 KIRREL3-AS3 -283174 283189 OR9G4 283194 LOC283194 283197 LINC00301 @@ -17411,7 +17397,7 @@ entrez symbol 283932 FBXL19-AS1 283933 ZNF843 283948 NHLRC4 -283951 C16orf91 +283951 UQCC4 283953 TMEM114 283971 CLEC18C 283985 FADS6 @@ -17435,7 +17421,6 @@ entrez symbol 284071 MEIOC 284076 TTLL6 284080 PICART1 -284083 284085 KRT18P55 284086 NEK8 284098 PIGW @@ -17473,7 +17458,7 @@ entrez symbol 284309 ZNF776 284312 ZSCAN1 284323 ZNF780A -284325 C19orf54 +284325 ACTMAP 284338 PRR19 284339 TMEM145 284340 CXCL17 @@ -17529,7 +17514,7 @@ entrez symbol 284576 LEMD1-AS1 284577 LEMD1-DT 284593 FAM41C -284611 FAM102B +284611 EEIG2 284612 SYPL2 284613 CYB561D1 284615 ANKRD34A @@ -17621,7 +17606,6 @@ entrez symbol 285441 F11-AS1 285456 RPL34-DT 285463 CTBP1-AS -285464 285489 DOK7 285498 RNF212 285501 LINC01098 @@ -17647,7 +17631,6 @@ entrez symbol 285613 RELL2 285626 LOC285626 285627 LINC01845 -285628 285629 LINC02159 285636 RIMOC1 285641 SLC36A3 @@ -17663,7 +17646,7 @@ entrez symbol 285755 PPIL6 285758 MROCKI 285761 DCBLD1 -285766 LOC285766 +285766 LINC03066 285780 LY86-AS1 285782 CAGE1 285796 PACRG-AS1 @@ -17719,7 +17702,6 @@ entrez symbol 286204 CRB2 286205 SCAI 286207 CFAP157 -286223 286234 SPATA31E1 286256 LCN12 286257 PAXX @@ -17847,7 +17829,6 @@ entrez symbol 338773 TMEM119 338785 KRT79 338799 LINC01089 -338809 338811 TAFA2 338817 LINC01252 338821 SLCO1B7 @@ -18414,7 +18395,6 @@ entrez symbol 387590 TPTEP1 387597 ILDR2 387601 SLC22A25 -387638 387640 SKIDA1 387680 WASHC2A 387694 SH2D4B @@ -18497,7 +18477,6 @@ entrez symbol 388566 ZNF470 388567 ZNF749 388569 ZNF324B -388572 388574 RPL23AP87 388581 C1QTNF12 388585 HES5 @@ -18747,7 +18726,7 @@ entrez symbol 392307 FAM221B 392309 OR13J1 392360 CTSL3P -392364 LOC392364 +392364 NPAP1P9 392376 OR13C2 392390 OR1L6 392391 OR5C1 @@ -18766,7 +18745,7 @@ entrez symbol 399474 TMEM200B 399512 SLC25A35 399664 MEX3D -399665 FAM102A +399665 EEIG1 399669 ZNF321P 399670 RPL13AP17 399671 HEATR4 @@ -19222,7 +19201,7 @@ entrez symbol 440567 UQCRHL 440574 MICOS10 440584 SLC2A1-DT -440585 FAM183A +440585 CFAP144 440590 ZYG11A 440594 LINC01761 440600 RBM15-AS1 @@ -19253,7 +19232,7 @@ entrez symbol 440952 EIF1B-AS1 440955 TMEM89 440956 IQCF6 -440957 SMIM4 +440957 UQCC5 440970 LINC00971 441009 CPEB2-DT 441024 MTHFD2L @@ -19299,7 +19278,6 @@ entrez symbol 441509 GLRA4 441518 RTL8B 441519 CT45A3 -441520 441521 CT45A5 441525 SPANXN4 441531 PGAM4 @@ -19321,7 +19299,6 @@ entrez symbol 441925 BECN2 441933 OR13G1 441951 ZFAS1 -441956 442028 LOC442028 442038 SULT1C3 442117 GALNTL6 @@ -19450,7 +19427,6 @@ entrez symbol 554212 MIR448 554213 MIR449A 554214 MIR450A1 -554223 554226 ANKRD30BL 554235 ASPDH 554251 FBXO48 @@ -19583,7 +19559,6 @@ entrez symbol 642402 GOLGA6L17P 642446 TRIM64B 642475 MROH6 -642477 642517 AGAP9 642559 POU5F1P3 642597 AKAIN1 @@ -19635,7 +19610,6 @@ entrez symbol 643714 CASC16 643719 SCGB1B2P 643733 CASP4LP -643763 643770 LINC02453 643803 KRTAP24-1 643812 KRTAP27-1 @@ -19677,7 +19651,6 @@ entrez symbol 644656 LOC644656 644660 RAD21-AS1 644672 CLDN25 -644767 644815 FAM83G 644838 LINC01829 644844 PHGR1 @@ -19980,7 +19953,6 @@ entrez symbol 693146 MIR561 693147 MIR562 693148 MIR563 -693151 693152 MIR567 693154 MIR569 693155 MIR570 @@ -20136,7 +20108,7 @@ entrez symbol 728498 GOLGA8H 728537 C2orf92 728558 ENTPD1-AS1 -728568 C12orf73 +728568 UQCC6 728577 CNTNAP3B 728588 MS4A18 728591 CCDC169 @@ -20205,8 +20177,6 @@ entrez symbol 729506 LINC02226 729515 TMEM242 729528 PRAMEF14 -729574 -729587 729597 SPDYE6 729603 CHP1P2 729614 SPEN-AS1 @@ -20450,14 +20420,13 @@ entrez symbol 100128108 UBE2Q2P13 100128126 STAU2-AS1 100128139 LINC01233 -100128164 LOC100128164 +100128164 FHL1P1 100128191 TMPO-AS1 100128233 LINC02324 100128239 LINC02731 100128264 HTR5A-AS1 100128317 LOC100128317 100128327 TRAPPC3L -100128338 100128385 FAM225B 100128386 ARHGAP42-AS1 100128398 LOC100128398 @@ -20487,7 +20456,7 @@ entrez symbol 100128946 LINC01310 100128977 MAPT-AS1 100129027 PCBP3-AS1 -100129066 LOC100129066 +100129066 LINC03062 100129075 KTN1-AS1 100129128 KHDC1L 100129138 LOC100129138 @@ -20509,7 +20478,6 @@ entrez symbol 100129464 LINC01546 100129480 MKRN2OS 100129482 ZNF37BP -100129503 100129515 ETDB 100129520 TEX13C 100129534 LOC100129534 @@ -20538,7 +20506,7 @@ entrez symbol 100130015 URAHP 100130017 FTLP10 100130086 HSFX2 -100130111 LOC100130111 +100130111 LCIIAR 100130148 MAPT-IT1 100130197 EFCAB14-AS1 100130231 LINC00861 @@ -20580,7 +20548,6 @@ entrez symbol 100131027 SLC25A5P4 100131067 CKMT2-AS1 100131089 SRP14-DT -100131096 100131117 ZBTB20-AS1 100131137 BSPH1 100131138 LINC01405 @@ -20654,7 +20621,6 @@ entrez symbol 100133251 PRR23D2 100133267 DEFB130B 100133286 CBR1-AS1 -100133301 100133311 HOXA-AS3 100133319 PRO1804 100133461 LINC02171 @@ -20857,7 +20823,6 @@ entrez symbol 100302161 MIR1205 100302163 MIR1278 100302164 MIR2113 -100302165 100302167 MIR1299 100302169 MIR320D2 100302172 MIR1258 @@ -20899,7 +20864,6 @@ entrez symbol 100302265 MIR1283-1 100302268 MIR1285-2 100302270 MIR1305 -100302273 100302275 MIR548L 100302276 MIR1290 100302277 MIR548I2 @@ -21066,7 +21030,6 @@ entrez symbol 100422966 MIR4277 100422967 MIR3146 100422969 MIR2909 -100422970 100422971 MIR4312 100422972 MIR3181 100422973 MIR3169 @@ -21139,7 +21102,6 @@ entrez symbol 100500812 MIR3677 100500813 MIR3646 100500814 MIR3616 -100500815 100500816 MIR3649 100500817 MIR3612 100500818 MIR3945 @@ -21151,7 +21113,6 @@ entrez symbol 100500826 MIR3909 100500828 MIR3619 100500831 MIR3912 -100500833 100500834 MIR3924 100500835 MIR3907 100500836 MIR3914-1 @@ -21292,7 +21253,7 @@ entrez symbol 100506082 LINC02749 100506083 DDX19A-DT 100506085 LINC02275 -100506098 MACC1-DT +100506098 GIRGL 100506100 ZDHHC12-DT 100506108 SIX3-AS1 100506119 LINC01503 @@ -21354,12 +21315,10 @@ entrez symbol 100506530 LINC02349 100506542 LINC01082 100506551 LOC100506551 -100506557 100506563 LOC100506563 100506564 THEGL 100506581 C16orf95 100506585 PTPRN2-AS1 -100506596 100506599 PPP1R26-AS1 100506603 VASH1-AS1 100506606 LOC100506606 @@ -21438,7 +21397,7 @@ entrez symbol 100507140 LINC01792 100507143 LINC00708 100507144 CD44-DT -100507156 LOC100507156 +100507156 LOXL2-AS1 100507170 CT47A12 100507171 BOLA3-DT 100507173 LINC01012 @@ -21522,7 +21481,6 @@ entrez symbol 100508631 LINC02616 100509620 AQP7B 100509894 CPB2-AS1 -100526648 100526771 SMIM35 100526820 CAHM 100529063 BCL2L2-PABPN1 @@ -21551,7 +21509,6 @@ entrez symbol 100616140 MIR4506 100616141 MIR4428 100616144 MIR548AN -100616145 100616147 MIR4769 100616148 MIR4760 100616149 MIR4512 @@ -21559,7 +21516,6 @@ entrez symbol 100616152 MIR4804 100616153 MIR4726 100616154 MIR4466 -100616156 100616157 MIR4772 100616158 MIR4505 100616159 MIR4779 @@ -21575,7 +21531,6 @@ entrez symbol 100616174 MIR4643 100616175 MIR4633 100616176 MIR4708 -100616177 100616178 MIR4641 100616179 MIR4498 100616180 MIR4465 @@ -21603,7 +21558,6 @@ entrez symbol 100616213 MIR4437 100616215 MIR548AL 100616216 MIR4797 -100616217 100616218 MIR3135B 100616219 MIR4765 100616220 MIR4736 @@ -21616,7 +21570,6 @@ entrez symbol 100616229 MIR4473 100616230 MIR4646 100616232 MIR4528 -100616233 100616235 MIR4457 100616236 MIR4669 100616239 MIR4705 @@ -21658,7 +21611,6 @@ entrez symbol 100616292 MIR4690 100616294 MIR4740 100616295 MIR4764 -100616298 100616299 MIR4450 100616300 MIR4710 100616301 MIR4674 @@ -21700,7 +21652,6 @@ entrez symbol 100616350 MIR4660 100616351 MIR4670 100616352 MIR4642 -100616353 100616354 MIR550A3 100616356 MIR4774 100616359 MIR4730 @@ -21747,7 +21698,6 @@ entrez symbol 100616423 MIR4703 100616425 MIR4748 100616426 MIR4694 -100616427 100616428 MIR548AM 100616429 MIR4672 100616430 MIR4644 @@ -21762,7 +21712,6 @@ entrez symbol 100616440 MIR548AG2 100616441 MIR4474 100616447 MIR4780 -100616448 100616449 MIR4725 100616450 MIR548AG1 100616451 MIR4471 @@ -21770,7 +21719,6 @@ entrez symbol 100616455 MIR548H5 100616456 MIR4476 100616457 MIR4693 -100616458 100616460 MIR3689E 100616463 MIR4452 100616464 MIR4778 @@ -21793,7 +21741,6 @@ entrez symbol 100616485 MIR4447 100616486 MIR4698 100616488 MIR548AK -100616489 100616490 MIR4706 100616491 MIR3978 100616492 MIR378F @@ -22255,7 +22202,6 @@ entrez symbol 101927017 LINC01180 101927018 LOC101927018 101927023 LOC101927023 -101927032 101927034 ROR1-AS1 101927040 LOC101927040 101927043 EPCAM-DT @@ -22300,7 +22246,6 @@ entrez symbol 101927193 CHL1-AS1 101927196 FSIP2-AS2 101927207 LINC02075 -101927210 101927215 LINC01266 101927217 LINC01473 101927219 HNF4A-AS1 @@ -22320,7 +22265,6 @@ entrez symbol 101927273 LINC01416 101927274 LINC02071 101927275 NDUFV2-AS1 -101927277 101927282 LINC02466 101927285 LINC01793 101927286 LINC02254 @@ -22336,7 +22280,6 @@ entrez symbol 101927323 PPP4R1-AS1 101927324 LINC01475 101927334 LINC02127 -101927337 101927346 LINC02047 101927347 GRM7-AS3 101927348 LINC02186 @@ -22390,8 +22333,6 @@ entrez symbol 101927526 LINC01656 101927528 LINC01204 101927532 LINC01736 -101927533 -101927534 101927539 LOC101927539 101927541 LINC01273 101927542 LINC01712 @@ -22429,7 +22370,6 @@ entrez symbol 101927653 LINC02388 101927657 LOC101927657 101927659 SMAD1-AS2 -101927660 101927661 LOC101927661 101927666 DYNLL2-DT 101927667 LINC01535 @@ -22511,7 +22451,6 @@ entrez symbol 101927950 LOC101927950 101927953 EPIST 101927957 LINC01572 -101927964 101927972 FARS2-AS1 101927973 LINC01695 101927987 CTNNA2-AS1 @@ -22523,7 +22462,6 @@ entrez symbol 101928008 LOC101928008 101928009 LOC101928009 101928012 LOC101928012 -101928017 101928031 LINC01809 101928033 KCNIP1-OT1 101928035 PSMD7-DT @@ -22548,7 +22486,6 @@ entrez symbol 101928134 RYR3-DT 101928136 LINC01484 101928137 LINC02444 -101928139 101928141 LINC01028 101928144 LINC02837 101928147 C21orf140 @@ -22566,7 +22503,6 @@ entrez symbol 101928201 LOC101928201 101928203 LINC02125 101928205 LINC02097 -101928225 101928227 LINC02345 101928233 LINC01671 101928238 ZNF426-DT @@ -22669,7 +22605,6 @@ entrez symbol 101928656 LINC01099 101928659 C16orf95-DT 101928661 ADGB-DT -101928668 101928673 PRDX6-AS1 101928674 SOCS3-DT 101928682 LOC101928682 @@ -22765,7 +22700,7 @@ entrez symbol 101929069 LINC01633 101929071 LINC01182 101929074 PIK3CD-AS2 -101929076 LOC101929076 +101929076 SKOR1-AS1 101929080 LINC02292 101929081 CTD-2194D22.4 101929082 LINC01333 @@ -22777,7 +22712,6 @@ entrez symbol 101929106 LOC101929106 101929109 LOC101929109 101929110 CASC18 -101929112 101929116 LOC101929116 101929123 LINC02493 101929124 LOC101929124 @@ -22934,7 +22868,6 @@ entrez symbol 101929745 LINC02119 101929746 ZNF341-AS1 101929754 ZBTB20-AS5 -101929759 101929760 PIK3IP1-DT 101929765 LINC01585 101929769 LINC01063 @@ -22943,11 +22876,9 @@ entrez symbol 101929897 IKBKB-DT 101929926 TEX51 101929983 PRAMEF27 -101929988 101930028 LOC101930028 101930100 LOC101930100 101930114 HSD11B1-AS1 -101930171 101930452 LINC02367 101930748 LINC00367 101937451 LINC01030 @@ -22980,7 +22911,6 @@ entrez symbol 102464829 MIR6078 102464832 MIR6083 102464834 MIR6085 -102464835 102464836 MIR6088 102464837 MIR6089 102465135 MIR6128 @@ -23345,8 +23275,6 @@ entrez symbol 102724826 ZNF337-AS1 102724849 LOC102724849 102724862 TBC1D3I -102724885 -102724889 102724913 LINC01899 102724917 LINC02327 102724919 PDC-AS1 @@ -23373,7 +23301,6 @@ entrez symbol 103352670 LINC01419 103504726 MIR3670-3 103504727 MIR6724-2 -103504728 103504729 MIR3179-4 103504731 MIR3648-2 103504733 MIR6724-4 @@ -23384,7 +23311,6 @@ entrez symbol 103504740 MIR3670-4 103504741 MIR5701-3 103581031 CASC23 -103611081 103625681 LLPH-DT 103625684 RNU6-2 103689843 LINC01046 @@ -23427,7 +23353,6 @@ entrez symbol 104326057 GACAT1 104326189 LMO7DN-IT1 104326190 LINC01309 -104326191 104326193 DLX2-DT 104355136 LINC01033 104355137 LINC01072 @@ -23480,7 +23405,6 @@ entrez symbol 105369900 LINC02404 105369911 LOC105369911 105369920 LINC02410 -105369922 105369954 C12orf75-AS1 105369984 LINC02356 105370016 LINC02439 @@ -23503,13 +23427,11 @@ entrez symbol 105371027 PCSK6-AS1 105371115 LOC105371115 105371242 PPIAL4H -105371426 105371485 LOC105371485 105371564 SMCR2 105371620 RC3H1-DT 105371653 GS1-204I12.4 105371766 LINC02079 -105371782 105371795 LOC105371795 105371807 SKAP1-AS2 105371814 LOC105371814 @@ -23520,13 +23442,11 @@ entrez symbol 105372107 LOC105372107 105372127 TCF4-AS1 105372179 LOC105372179 -105372257 105372267 NFILZ 105372273 LOC105372273 105372290 LINC01764 105372352 UQCRFS1-DT -105372367 -105372440 LOC105372440 +105372440 SMIM47 105372556 LINC00237 105372566 LINC01747 105372582 LOC105372582 @@ -23536,11 +23456,9 @@ entrez symbol 105372894 LINC01774 105372897 LINC01696 105372918 USH2A-AS1 -105372941 105373098 KLHDC7B-DT 105373100 LOC105373100 105373185 LINC02601 -105373278 105373343 LOC105373343 105373373 LOC105373373 105373383 LOC105373383 @@ -23548,23 +23466,19 @@ entrez symbol 105373496 LOC105373496 105373524 LOC105373524 105373525 LOC105373525 -105373580 105373635 LINC01832 105373876 LOC105373876 105374244 LINC01995 105374250 LINC02054 105374344 LOC105374344 105374436 LINC02383 -105374463 105374516 LOC105374516 105374524 LOC105374524 105374580 PRKCE-AS1 105374729 LINC02110 105374847 LINC01955 -105374896 105375009 LINC02829 105375014 LINC02570 -105375042 105375166 LOC105375166 105375448 LOC105375448 105375475 LINC02476 @@ -23585,7 +23499,6 @@ entrez symbol 105376064 FAM242F 105376072 TMEM252-DT 105376100 LOC105376100 -105376111 105376382 LASTR 105376480 LINC02644 105376554 LINC02547 @@ -23593,7 +23506,6 @@ entrez symbol 105376671 LGR4-AS1 105376672 LINC01345 105376736 EXOSC10-AS1 -105376887 105376912 LOC105376912 105376946 GRM7-AS2 105377105 FLNB-AS1 @@ -23601,25 +23513,18 @@ entrez symbol 105377245 LINC02619 105377247 LINC02429 105377348 UBE2D3-AS1 -105377371 105377390 LINC02263 105377391 LINC02264 105377443 LINC02172 -105377494 105377617 LINC01596 105377652 LINC02480 105377682 LINC01932 -105377888 105377924 LOC105377924 105378052 LOC105378052 -105378057 105378137 LOC105378137 -105378138 105378231 LOC105378231 -105378272 105378311 LOC105378311 105378328 LOC105378328 -105378405 105378663 LOC105378663 105378668 MYCL-AS1 105378732 LRP8-DT @@ -23630,13 +23535,10 @@ entrez symbol 105378933 LOC105378933 105378952 KLF18 105379051 LOC105379051 -105379175 105379194 CTNNA1-AS1 -105379374 105379391 LOC105379391 105379444 LOC105379444 105379695 IER3-AS1 -105379715 105416157 NKILA 105447648 LINC02130 105463123 XACT diff --git a/drexml/resources/experiment.env b/drexml/resources/experiment.env index faec24b2..75acf218 100644 --- a/drexml/resources/experiment.env +++ b/drexml/resources/experiment.env @@ -9,4 +9,4 @@ pathvals=pathvals.tsv.gz circuits=circuits.tsv.gz circuits_column=in_disease genes=genes.tsv.gz -genes_column=approved_targets +genes_column=drugbank_approved_targets diff --git a/drexml/resources/experiment1.env b/drexml/resources/experiment1.env index 8c131988..26f76074 100644 --- a/drexml/resources/experiment1.env +++ b/drexml/resources/experiment1.env @@ -9,4 +9,4 @@ pathvals=pathvals.tsv.gz circuits=circuits1.tsv.gz circuits_column=in_disease genes=genes.tsv.gz -genes_column=approved_targets +genes_column=drugbank_approved_targets diff --git a/drexml/resources/experiment_default.env b/drexml/resources/experiment_default.env index 531e1bce..9288409f 100644 --- a/drexml/resources/experiment_default.env +++ b/drexml/resources/experiment_default.env @@ -9,4 +9,4 @@ pathvals=$default$ circuits=circuits.tsv.gz circuits_column=in_disease genes=$default$ -genes_column=approved_targets +genes_column=drugbank_approved_targets diff --git a/drexml/resources/genes.tsv.gz b/drexml/resources/genes.tsv.gz index f99d7aa2..3d614b8e 100644 Binary files a/drexml/resources/genes.tsv.gz and b/drexml/resources/genes.tsv.gz differ diff --git a/drexml/utils.py b/drexml/utils.py index 056886bb..9a4324c0 100644 --- a/drexml/utils.py +++ b/drexml/utils.py @@ -5,12 +5,24 @@ import ctypes import importlib.resources as pkg_resources +import warnings from importlib.metadata import version from pathlib import Path import joblib import pandas as pd -from shap.utils import assert_import +from numba.core.errors import NumbaDeprecationWarning, NumbaPendingDeprecationWarning + +with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", module="shap", message="IPython could not be loaded!" + ) + warnings.filterwarnings("ignore", module="shap", category=NumbaDeprecationWarning) + warnings.filterwarnings( + "ignore", module="shap", category=NumbaPendingDeprecationWarning + ) + import shap + from sklearn.model_selection import ShuffleSplit, train_test_split from sklearn.preprocessing import MinMaxScaler @@ -18,6 +30,33 @@ from drexml.models import get_model +def rename_results(folder): + """Translate entrez to symbols, and KEGG circuit IDs to names.""" + folder = Path(folder) + + for path in folder.rglob("shap_selection*.tsv"): + if "symbol" in path.stem: + continue + dataset = pd.read_csv(path, sep="\t", index_col=0) + path_out = path.absolute().parent.joinpath(f"{path.stem}_symbol.tsv") + dataset_out = convert_names(dataset, ["circuits", "genes"], axis=[0, 1]) + dataset_out.to_csv(path_out, sep="\t", index_label="circuit_name") + + for path in folder.rglob("shap_summary*.tsv"): + if "symbol" in path.stem: + continue + dataset = pd.read_csv(path, sep="\t", index_col=0) + path_out = path.absolute().parent.joinpath(f"{path.stem}_symbol.tsv") + dataset_out = convert_names(dataset, ["circuits", "genes"], axis=[0, 1]) + dataset_out.to_csv(path_out, sep="\t", index_label="circuit_name") + + for path in folder.rglob("stability_results.tsv"): + dataset = pd.read_csv(path, sep="\t", index_col=0) + path_out = path.absolute().parent.joinpath(f"{path.stem}_symbol.tsv") + dataset_out = convert_names(dataset, ["circuits"], axis=[0]) + dataset_out.to_csv(path_out, sep="\t", index_label="circuit_name") + + def parse_stab(argv): """Parse stab arguments. Parameters @@ -40,19 +79,20 @@ def parse_stab(argv): bool Debug flag. """ - _, data_folder, n_iters, n_gpus, n_cpus, debug, mode = argv + _, data_folder, n_iters, n_gpus, n_cpus, debug, add, mode = argv n_iters = int(n_iters) data_folder = Path(data_folder) n_gpus = int(n_gpus) n_cpus = int(n_cpus) debug = bool(int(debug)) + add = bool(int(add)) if mode == "final": n_splits = 1 else: n_splits = 3 if debug else 100 - return data_folder, n_iters, n_gpus, n_cpus, n_splits, debug + return data_folder, n_iters, n_gpus, n_cpus, n_splits, debug, add def get_stab(data_folder, n_splits, n_cpus, debug, n_iters): @@ -91,7 +131,7 @@ def get_stab(data_folder, n_splits, n_cpus, debug, n_iters): stab_cv = ShuffleSplit(n_splits=n_splits, train_size=0.5, random_state=0) stab_cv = list(stab_cv.split(features_orig, targets_orig)) stab_cv = [ - (*train_test_split(stab_cv[i][0], test_size=0.3), stab_cv[i][1]) + (*train_test_split(stab_cv[i][0], test_size=0.3, random_state=i), stab_cv[i][1]) for i in range(n_splits) ] @@ -120,11 +160,11 @@ def get_out_path(disease): The desired path. """ - env_possible = Path(disease) + env_possible = Path(disease).absolute() if env_possible.exists() and (env_possible.suffix == ".env"): print(f"Working with experiment {env_possible.parent.name}") - out_path = env_possible.parent.joinpath("ml") + out_path = env_possible.parent.joinpath("results") else: raise NotImplementedError("Use experiment") @@ -220,7 +260,7 @@ def get_number_cuda_devices_(): def check_gputree_availability(): """Check if GPUTree has been corectly compiled.""" try: - assert_import("cext_gpu") + shap.utils.assert_import("cext_gpu") return True except ImportError as ierr: print(ierr) diff --git a/makefile b/makefile index e9452007..0556eb95 100644 --- a/makefile +++ b/makefile @@ -1,12 +1,29 @@ .PHONY: install test format +.ONESHELL: + +SHELL = /bin/bash +CONDA_ACTIVATE = source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate + all: install format test + install: - poetry env use 3.8.13 +ifeq ($(use_gpu),1) + conda create -y -p ./.venv --override-channels -c "nvidia/label/cuda-11.8.0" \ + -c conda-forge cuda cuda-nvcc cuda-toolkit gxx=11.2 python=3.10 +else + conda create -y -p ./.venv --override-channels -c conda-forge python=3.10 +endif + $(CONDA_ACTIVATE) ./.venv poetry install poetry run pytest format: - poetry run isort drexml tests - poetry run black drexml tests + $(CONDA_ACTIVATE) ./.venv + poetry run isort drexml tests noxfile.py + poetry run black drexml tests noxfile.py (cd docs && poetry run make html) test: - poetry run tox +ifeq ($(use_gpu),1) + nox -- "gpu" +else + nox +endif diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 00000000..b694a2a9 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +""" +Test suite. +""" + +import nox +from nox_poetry import session + + +@session(venv_backend="conda") +@nox.parametrize("python", ["3.10", "3.9", "3.8"]) +def tests(session): + """Test with conda.""" + if session.posargs: + if any(("gpu" in arg for arg in session.posargs)): + session.conda_install( + "cuda", + "cuda-nvcc", + "cuda-toolkit", + "gxx=11.2", + "-c", + "nvidia/label/cuda-11.8.0", + "-c", + "conda-forge", + "--override-channels", + ) + + session.install("pytest", ".") + session.run("pytest") diff --git a/poetry.lock b/poetry.lock index ecce4ecf..14250a67 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,64 +1,89 @@ +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. + [[package]] name = "alabaster" -version = "0.7.12" +version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, + {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, +] [[package]] name = "astroid" -version = "2.11.6" +version = "2.15.0" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" +files = [ + {file = "astroid-2.15.0-py3-none-any.whl", hash = "sha256:e3e4d0ffc2d15d954065579689c36aac57a339a4679a679579af6401db4d3fdb"}, + {file = "astroid-2.15.0.tar.gz", hash = "sha256:525f126d5dc1b8b0b6ee398b33159105615d92dc4a17f2cd064125d57f6186fa"}, +] [package.dependencies] lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} -wrapt = ">=1.11,<2" - -[[package]] -name = "atomicwrites" -version = "1.4.0" -description = "Atomic file writes." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} [[package]] name = "attrs" -version = "21.4.0" +version = "22.2.0" description = "Classes Without Boilerplate" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" +files = [ + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, +] [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] [[package]] name = "babel" -version = "2.10.3" +version = "2.12.1" description = "Internationalization utilities" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, + {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, +] [package.dependencies] -pytz = ">=2015.7" +pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} [[package]] name = "black" -version = "22.6.0" +version = "22.12.0" description = "The uncompromising code formatter." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] [package.dependencies] click = ">=8.0.0" @@ -76,49 +101,214 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2022.6.15" +version = "2022.12.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, +] [[package]] name = "charset-normalizer" -version = "2.1.0" +version = "3.1.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" - -[package.extras] -unicode_backport = ["unicodedata2"] +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, + {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, +] [[package]] name = "click" -version = "8.0.4" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false -python-versions = ">=3.6" +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"}, +] [package.dependencies] 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.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.5" +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.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "contourpy" +version = "1.0.7" +description = "Python library for calculating contours of 2D quadrilateral grids" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"}, + {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"}, + {file = "contourpy-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8acf74b5d383414401926c1598ed77825cd530ac7b463ebc2e4f46638f56cce6"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c71fdd8f1c0f84ffd58fca37d00ca4ebaa9e502fb49825484da075ac0b0b803"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99e9486bf1bb979d95d5cffed40689cb595abb2b841f2991fc894b3452290e8"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f4d8941a9564cda3f7fa6a6cd9b32ec575830780677932abdec7bcb61717b0"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e20e5a1908e18aaa60d9077a6d8753090e3f85ca25da6e25d30dc0a9e84c2c6"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a877ada905f7d69b2a31796c4b66e31a8068b37aa9b78832d41c82fc3e056ddd"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6381fa66866b0ea35e15d197fc06ac3840a9b2643a6475c8fff267db8b9f1e69"}, + {file = "contourpy-1.0.7-cp310-cp310-win32.whl", hash = "sha256:3c184ad2433635f216645fdf0493011a4667e8d46b34082f5a3de702b6ec42e3"}, + {file = "contourpy-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:3caea6365b13119626ee996711ab63e0c9d7496f65641f4459c60a009a1f3e80"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed33433fc3820263a6368e532f19ddb4c5990855e4886088ad84fd7c4e561c71"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38e2e577f0f092b8e6774459317c05a69935a1755ecfb621c0a98f0e3c09c9a5"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae90d5a8590e5310c32a7630b4b8618cef7563cebf649011da80874d0aa8f414"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130230b7e49825c98edf0b428b7aa1125503d91732735ef897786fe5452b1ec2"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58569c491e7f7e874f11519ef46737cea1d6eda1b514e4eb5ac7dab6aa864d02"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d43960d809c4c12508a60b66cb936e7ed57d51fb5e30b513934a4a23874fae"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:152fd8f730c31fd67fe0ffebe1df38ab6a669403da93df218801a893645c6ccc"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9056c5310eb1daa33fc234ef39ebfb8c8e2533f088bbf0bc7350f70a29bde1ac"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a9d7587d2fdc820cc9177139b56795c39fb8560f540bba9ceea215f1f66e1566"}, + {file = "contourpy-1.0.7-cp311-cp311-win32.whl", hash = "sha256:4ee3ee247f795a69e53cd91d927146fb16c4e803c7ac86c84104940c7d2cabf0"}, + {file = "contourpy-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:5caeacc68642e5f19d707471890f037a13007feba8427eb7f2a60811a1fc1350"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd7dc0e6812b799a34f6d12fcb1000539098c249c8da54f3566c6a6461d0dbad"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0f9d350b639db6c2c233d92c7f213d94d2e444d8e8fc5ca44c9706cf72193772"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e96a08b62bb8de960d3a6afbc5ed8421bf1a2d9c85cc4ea73f4bc81b4910500f"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031154ed61f7328ad7f97662e48660a150ef84ee1bc8876b6472af88bf5a9b98"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e9ebb4425fc1b658e13bace354c48a933b842d53c458f02c86f371cecbedecc"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb8f6d08ca7998cf59eaf50c9d60717f29a1a0a09caa46460d33b2924839dbd"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6c180d89a28787e4b73b07e9b0e2dac7741261dbdca95f2b489c4f8f887dd810"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b8d587cc39057d0afd4166083d289bdeff221ac6d3ee5046aef2d480dc4b503c"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:769eef00437edf115e24d87f8926955f00f7704bede656ce605097584f9966dc"}, + {file = "contourpy-1.0.7-cp38-cp38-win32.whl", hash = "sha256:62398c80ef57589bdbe1eb8537127321c1abcfdf8c5f14f479dbbe27d0322e66"}, + {file = "contourpy-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:57119b0116e3f408acbdccf9eb6ef19d7fe7baf0d1e9aaa5381489bc1aa56556"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30676ca45084ee61e9c3da589042c24a57592e375d4b138bd84d8709893a1ba4"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e927b3868bd1e12acee7cc8f3747d815b4ab3e445a28d2e5373a7f4a6e76ba1"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:366a0cf0fc079af5204801786ad7a1c007714ee3909e364dbac1729f5b0849e5"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ba9bb365446a22411f0673abf6ee1fea3b2cf47b37533b970904880ceb72f3"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b0bf0c30d432278793d2141362ac853859e87de0a7dee24a1cea35231f0d50"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7281244c99fd7c6f27c1c6bfafba878517b0b62925a09b586d88ce750a016d2"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6d0f9e1d39dbfb3977f9dd79f156c86eb03e57a7face96f199e02b18e58d32a"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7f6979d20ee5693a1057ab53e043adffa1e7418d734c1532e2d9e915b08d8ec2"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5dd34c1ae752515318224cba7fc62b53130c45ac6a1040c8b7c1a223c46e8967"}, + {file = "contourpy-1.0.7-cp39-cp39-win32.whl", hash = "sha256:c5210e5d5117e9aec8c47d9156d1d3835570dd909a899171b9535cb4a3f32693"}, + {file = "contourpy-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:60835badb5ed5f4e194a6f21c09283dd6e007664a86101431bf870d9e86266c4"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce41676b3d0dd16dbcfabcc1dc46090aaf4688fd6e819ef343dbda5a57ef0161"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a011cf354107b47c58ea932d13b04d93c6d1d69b8b6dce885e642531f847566"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31a55dccc8426e71817e3fe09b37d6d48ae40aae4ecbc8c7ad59d6893569c436"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69f8ff4db108815addd900a74df665e135dbbd6547a8a69333a68e1f6e368ac2"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efe99298ba37e37787f6a2ea868265465410822f7bea163edcc1bd3903354ea9"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a1e97b86f73715e8670ef45292d7cc033548266f07d54e2183ecb3c87598888f"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc331c13902d0f50845099434cd936d49d7a2ca76cb654b39691974cb1e4812d"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24847601071f740837aefb730e01bd169fbcaa610209779a78db7ebb6e6a7051"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abf298af1e7ad44eeb93501e40eb5a67abbf93b5d90e468d01fc0c4451971afa"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:64757f6460fc55d7e16ed4f1de193f362104285c667c112b50a804d482777edd"}, + {file = "contourpy-1.0.7.tar.gz", hash = "sha256:d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e"}, +] + +[package.dependencies] +numpy = ">=1.16" + +[package.extras] +bokeh = ["bokeh", "chromedriver", "selenium"] +docs = ["furo", "sphinx-copybutton"] +mypy = ["contourpy[bokeh]", "docutils-stubs", "mypy (==0.991)", "types-Pillow"] +test = ["Pillow", "matplotlib", "pytest"] +test-no-images = ["pytest"] [[package]] name = "cycler" @@ -127,6 +317,10 @@ description = "Composable style cycles" category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +] [[package]] name = "dataclasses-json" @@ -135,6 +329,10 @@ description = "Easily serialize dataclasses to and from JSON" category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, + {file = "dataclasses_json-0.5.7-py3-none-any.whl", hash = "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd"}, +] [package.dependencies] marshmallow = ">=3.3.0,<4.0.0" @@ -142,46 +340,49 @@ marshmallow-enum = ">=1.5.1,<2.0.0" typing-inspect = ">=0.4.0" [package.extras] -dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] +dev = ["flake8", "hypothesis", "ipython", "mypy (>=0.710)", "portray", "pytest (>=6.2.3)", "simplejson", "types-dataclasses"] [[package]] name = "dill" -version = "0.3.5.1" +version = "0.3.6" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=3.7" +files = [ + {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, + {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, +] [package.extras] graph = ["objgraph (>=1.7.2)"] -[[package]] -name = "distlib" -version = "0.3.4" -description = "Distribution utilities" -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "docutils" -version = "0.17.1" +version = "0.18.1" description = "Docutils -- Python Documentation Utilities" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] [[package]] -name = "filelock" -version = "3.7.1" -description = "A platform independent file lock." +name = "exceptiongroup" +version = "1.1.0" +description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, + {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, +] [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)"] +test = ["pytest (>=6)"] [[package]] name = "flake8" @@ -190,6 +391,10 @@ description = "the modular source code checker: pep8 pyflakes and co" category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, + {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, +] [package.dependencies] mccabe = ">=0.6.0,<0.7.0" @@ -198,29 +403,40 @@ pyflakes = ">=2.4.0,<2.5.0" [[package]] name = "flake8-black" -version = "0.3.3" +version = "0.3.6" description = "flake8 plugin to call black as a code style validator" category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "flake8-black-0.3.6.tar.gz", hash = "sha256:0dfbca3274777792a5bcb2af887a4cad72c72d0e86c94e08e3a3de151bb41c34"}, + {file = "flake8_black-0.3.6-py3-none-any.whl", hash = "sha256:fe8ea2eca98d8a504f22040d9117347f6b367458366952862ac3586e7d4eeaca"}, +] [package.dependencies] black = ">=22.1.0" -flake8 = ">=3.0.0" -tomli = "*" +flake8 = ">=3" +tomli = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +develop = ["build", "twine"] [[package]] name = "fonttools" -version = "4.34.2" +version = "4.39.0" description = "Tools to manipulate font files" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "fonttools-4.39.0-py3-none-any.whl", hash = "sha256:f5e764e1fd6ad54dfc201ff32af0ba111bcfbe0d05b24540af74c63db4ed6390"}, + {file = "fonttools-4.39.0.zip", hash = "sha256:909c104558835eac27faeb56be5a4c32694192dca123d073bf746ce9254054af"}, +] [package.extras] -all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.0.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["scipy", "munkres"] +interpolatable = ["munkres", "scipy"] lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] @@ -228,16 +444,20 @@ repacker = ["uharfbuzz (>=0.23.0)"] symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=14.0.0)"] -woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] +unicode = ["unicodedata2 (>=15.0.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[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.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] [[package]] name = "imagesize" @@ -246,59 +466,60 @@ description = "Getting image size from png/jpeg/jpeg2000/gif file" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] [[package]] name = "importlib-metadata" -version = "4.12.0" +version = "6.0.0" description = "Read metadata from Python packages" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, + {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, +] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] - -[[package]] -name = "importlib-resources" -version = "5.8.0" -description = "Read resources from Python packages" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +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 = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] [[package]] name = "isort" -version = "5.10.1" +version = "5.12.0" description = "A Python utility / library to sort Python imports." category = "dev" optional = false -python-versions = ">=3.6.1,<4.0" +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, + {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, +] [package.extras] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] -requirements_deprecated_finder = ["pipreqs", "pip-api"] -colors = ["colorama (>=0.4.3,<0.5.0)"] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "jinja2" @@ -307,6 +528,10 @@ description = "A very fast and expressive template engine." category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] [package.dependencies] MarkupSafe = ">=2.0" @@ -316,59 +541,257 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "joblib" -version = "1.1.0" +version = "1.2.0" description = "Lightweight pipelining with Python functions" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "joblib-1.2.0-py3-none-any.whl", hash = "sha256:091138ed78f800342968c523bdde947e7a305b8594b910a0fea2ab83c3c6d385"}, + {file = "joblib-1.2.0.tar.gz", hash = "sha256:e1cee4a79e4af22881164f218d4311f60074197fb707e082e803b61f6d137018"}, +] [[package]] name = "kiwisolver" -version = "1.4.3" +version = "1.4.4" description = "A fast implementation of the Cassowary constraint solver" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, + {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, +] [[package]] name = "lazy-object-proxy" -version = "1.7.1" +version = "1.9.0" description = "A fast and thorough lazy object proxy." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, +] [[package]] name = "llvmlite" -version = "0.38.1" +version = "0.39.1" description = "lightweight wrapper around basic LLVM functionality" category = "main" optional = false -python-versions = ">=3.7,<3.11" +python-versions = ">=3.7" +files = [ + {file = "llvmlite-0.39.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6717c7a6e93c9d2c3d07c07113ec80ae24af45cde536b34363d4bcd9188091d9"}, + {file = "llvmlite-0.39.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ddab526c5a2c4ccb8c9ec4821fcea7606933dc53f510e2a6eebb45a418d3488a"}, + {file = "llvmlite-0.39.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3f331a323d0f0ada6b10d60182ef06c20a2f01be21699999d204c5750ffd0b4"}, + {file = "llvmlite-0.39.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c00ff204afa721b0bb9835b5bf1ba7fba210eefcec5552a9e05a63219ba0dc"}, + {file = "llvmlite-0.39.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16f56eb1eec3cda3a5c526bc3f63594fc24e0c8d219375afeb336f289764c6c7"}, + {file = "llvmlite-0.39.1-cp310-cp310-win32.whl", hash = "sha256:d0bfd18c324549c0fec2c5dc610fd024689de6f27c6cc67e4e24a07541d6e49b"}, + {file = "llvmlite-0.39.1-cp310-cp310-win_amd64.whl", hash = "sha256:7ebf1eb9badc2a397d4f6a6c8717447c81ac011db00064a00408bc83c923c0e4"}, + {file = "llvmlite-0.39.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6546bed4e02a1c3d53a22a0bced254b3b6894693318b16c16c8e43e29d6befb6"}, + {file = "llvmlite-0.39.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1578f5000fdce513712e99543c50e93758a954297575610f48cb1fd71b27c08a"}, + {file = "llvmlite-0.39.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3803f11ad5f6f6c3d2b545a303d68d9fabb1d50e06a8d6418e6fcd2d0df00959"}, + {file = "llvmlite-0.39.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50aea09a2b933dab7c9df92361b1844ad3145bfb8dd2deb9cd8b8917d59306fb"}, + {file = "llvmlite-0.39.1-cp37-cp37m-win32.whl", hash = "sha256:b1a0bbdb274fb683f993198775b957d29a6f07b45d184c571ef2a721ce4388cf"}, + {file = "llvmlite-0.39.1-cp37-cp37m-win_amd64.whl", hash = "sha256:e172c73fccf7d6db4bd6f7de963dedded900d1a5c6778733241d878ba613980e"}, + {file = "llvmlite-0.39.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e31f4b799d530255aaf0566e3da2df5bfc35d3cd9d6d5a3dcc251663656c27b1"}, + {file = "llvmlite-0.39.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:62c0ea22e0b9dffb020601bb65cb11dd967a095a488be73f07d8867f4e327ca5"}, + {file = "llvmlite-0.39.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ffc84ade195abd4abcf0bd3b827b9140ae9ef90999429b9ea84d5df69c9058c"}, + {file = "llvmlite-0.39.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0f158e4708dda6367d21cf15afc58de4ebce979c7a1aa2f6b977aae737e2a54"}, + {file = "llvmlite-0.39.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22d36591cd5d02038912321d9ab8e4668e53ae2211da5523f454e992b5e13c36"}, + {file = "llvmlite-0.39.1-cp38-cp38-win32.whl", hash = "sha256:4c6ebace910410daf0bebda09c1859504fc2f33d122e9a971c4c349c89cca630"}, + {file = "llvmlite-0.39.1-cp38-cp38-win_amd64.whl", hash = "sha256:fb62fc7016b592435d3e3a8f680e3ea8897c3c9e62e6e6cc58011e7a4801439e"}, + {file = "llvmlite-0.39.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa9b26939ae553bf30a9f5c4c754db0fb2d2677327f2511e674aa2f5df941789"}, + {file = "llvmlite-0.39.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e4f212c018db951da3e1dc25c2651abc688221934739721f2dad5ff1dd5f90e7"}, + {file = "llvmlite-0.39.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39dc2160aed36e989610fc403487f11b8764b6650017ff367e45384dff88ffbf"}, + {file = "llvmlite-0.39.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ec3d70b3e507515936e475d9811305f52d049281eaa6c8273448a61c9b5b7e2"}, + {file = "llvmlite-0.39.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60f8dd1e76f47b3dbdee4b38d9189f3e020d22a173c00f930b52131001d801f9"}, + {file = "llvmlite-0.39.1-cp39-cp39-win32.whl", hash = "sha256:03aee0ccd81735696474dc4f8b6be60774892a2929d6c05d093d17392c237f32"}, + {file = "llvmlite-0.39.1-cp39-cp39-win_amd64.whl", hash = "sha256:3fc14e757bc07a919221f0cbaacb512704ce5774d7fcada793f1996d6bc75f2a"}, + {file = "llvmlite-0.39.1.tar.gz", hash = "sha256:b43abd7c82e805261c425d50335be9a6c4f84264e34d6d6e475207300005d572"}, +] [[package]] name = "markupsafe" -version = "2.1.1" +version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, + {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, +] [[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.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 = ["pytest", "pytz", "simplejson", "mypy (==0.961)", "flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "pre-commit (>=2.4,<3.0)", "tox"] -docs = ["sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.8)"] -lint = ["mypy (==0.961)", "flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "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]] @@ -378,28 +801,75 @@ description = "Enum field for Marshmallow" category = "main" optional = false python-versions = "*" +files = [ + {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, + {file = "marshmallow_enum-1.5.1-py2.py3-none-any.whl", hash = "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072"}, +] [package.dependencies] marshmallow = ">=2.0.0" [[package]] name = "matplotlib" -version = "3.5.2" +version = "3.6.3" description = "Python plotting package" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:80c166a0e28512e26755f69040e6bf2f946a02ffdb7c00bf6158cca3d2b146e6"}, + {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eb9421c403ffd387fbe729de6d9a03005bf42faba5e8432f4e51e703215b49fc"}, + {file = "matplotlib-3.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5223affa21050fb6118353c1380c15e23aedfb436bf3e162c26dc950617a7519"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00c248ab6b92bea3f8148714837937053a083ff03b4c5e30ed37e28fc0e7e56"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca94f0362f6b6f424b555b956971dcb94b12d0368a6c3e07dc7a40d32d6d873d"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59400cc9451094b7f08cc3f321972e6e1db4cd37a978d4e8a12824bf7fd2f03b"}, + {file = "matplotlib-3.6.3-cp310-cp310-win32.whl", hash = "sha256:57ad1aee29043163374bfa8990e1a2a10ff72c9a1bfaa92e9c46f6ea59269121"}, + {file = "matplotlib-3.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:1fcc4cad498533d3c393a160975acc9b36ffa224d15a6b90ae579eacee5d8579"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:d2cfaa7fd62294d945b8843ea24228a27c8e7c5b48fa634f3c168153b825a21b"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c3f08df2ac4636249b8bc7a85b8b82c983bef1441595936f62c2918370ca7e1d"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff2aa84e74f80891e6bcf292ebb1dd57714ffbe13177642d65fee25384a30894"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11011c97d62c1db7bc20509572557842dbb8c2a2ddd3dd7f20501aa1cde3e54e"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c235bf9be052347373f589e018988cad177abb3f997ab1a2e2210c41562cc0c"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bebcff4c3ed02c6399d47329f3554193abd824d3d53b5ca02cf583bcd94470e2"}, + {file = "matplotlib-3.6.3-cp311-cp311-win32.whl", hash = "sha256:d5f18430f5cfa5571ab8f4c72c89af52aa0618e864c60028f11a857d62200cba"}, + {file = "matplotlib-3.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:dfba7057609ca9567b9704626756f0142e97ec8c5ba2c70c6e7bd1c25ef99f06"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:9fb8fb19d03abf3c5dab89a8677e62c4023632f919a62b6dd1d6d2dbf42cd9f5"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:bbf269e1d24bc25247095d71c7a969813f7080e2a7c6fa28931a603f747ab012"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:994637e2995b0342699b396a320698b07cd148bbcf2dd2fa2daba73f34dd19f2"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77b384cee7ab8cf75ffccbfea351a09b97564fc62d149827a5e864bec81526e5"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:73b93af33634ed919e72811c9703e1105185cd3fb46d76f30b7f4cfbbd063f89"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:debeab8e2ab07e5e3dac33e12456da79c7e104270d2b2d1df92b9e40347cca75"}, + {file = "matplotlib-3.6.3-cp38-cp38-win32.whl", hash = "sha256:acc3b1a4bddbf56fe461e36fb9ef94c2cb607fc90d24ccc650040bfcc7610de4"}, + {file = "matplotlib-3.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:1183877d008c752d7d535396096c910f4663e4b74a18313adee1213328388e1e"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6adc441b5b2098a4b904bbf9d9e92fb816fef50c55aa2ea6a823fc89b94bb838"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:6d81b11ede69e3a751424b98dc869c96c10256b2206bfdf41f9c720eee86844c"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:29f17b7f2e068dc346687cbdf80b430580bab42346625821c2d3abf3a1ec5417"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f56a7252eee8f3438447f75f5e1148a1896a2756a92285fe5d73bed6deebff4"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbddfeb1495484351fb5b30cf5bdf06b3de0bc4626a707d29e43dfd61af2a780"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809119d1cba3ece3c9742eb01827fe7a0e781ea3c5d89534655a75e07979344f"}, + {file = "matplotlib-3.6.3-cp39-cp39-win32.whl", hash = "sha256:e0a64d7cc336b52e90f59e6d638ae847b966f68582a7af041e063d568e814740"}, + {file = "matplotlib-3.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:79e501eb847f4a489eb7065bb8d3187117f65a4c02d12ea3a19d6c5bef173bcc"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2787a16df07370dcba385fe20cdd0cc3cfaabd3c873ddabca78c10514c799721"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68d94a436f62b8a861bf3ace82067a71bafb724b4e4f9133521e4d8012420dd7"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b409b2790cf8d7c1ef35920f01676d2ae7afa8241844e7aa5484fdf493a9a0"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:faff486b36530a836a6b4395850322e74211cd81fc17f28b4904e1bd53668e3e"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:38d38cb1ea1d80ee0f6351b65c6f76cad6060bbbead015720ba001348ae90f0c"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f999661589981e74d793ee2f41b924b3b87d65fd929f6153bf0f30675c59b1"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01b7f521a9a73c383825813af255f8c4485d1706e4f3e2ed5ae771e4403a40ab"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9ceebaf73f1a3444fa11014f38b9da37ff7ea328d6efa1652241fe3777bfdab9"}, + {file = "matplotlib-3.6.3.tar.gz", hash = "sha256:1f4d69707b1677560cd952544ee4962f68ff07952fb9069ff8c12b56353cb8c9"}, +] [package.dependencies] +contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" kiwisolver = ">=1.0.1" -numpy = ">=1.17" +numpy = ">=1.19" packaging = ">=20.0" pillow = ">=6.2.0" pyparsing = ">=2.2.1" python-dateutil = ">=2.7" -setuptools_scm = ">=4" [[package]] name = "mccabe" @@ -408,37 +878,84 @@ description = "McCabe checker, plugin for flake8" category = "dev" optional = false python-versions = "*" +files = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] [[package]] name = "more-click" -version = "0.1.1" +version = "0.1.2" description = "More click." category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "more_click-0.1.2-py3-none-any.whl", hash = "sha256:f6387af37ef7e7423bd94b72a81a53c79c5086a3bfe5cc035da534ff0c2a0a9e"}, + {file = "more_click-0.1.2.tar.gz", hash = "sha256:085da66d5a9b823c5d912a888dca1fa0c8b3a14ed1b21ea9c8a1b814857a3981"}, +] [package.dependencies] click = "*" +[package.extras] +tests = ["coverage", "pytest"] + [[package]] name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] [[package]] name = "numba" -version = "0.55.2" +version = "0.56.4" description = "compiling Python code using LLVM" category = "main" optional = false -python-versions = ">=3.7,<3.11" +python-versions = ">=3.7" +files = [ + {file = "numba-0.56.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9f62672145f8669ec08762895fe85f4cf0ead08ce3164667f2b94b2f62ab23c3"}, + {file = "numba-0.56.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c602d015478b7958408d788ba00a50272649c5186ea8baa6cf71d4a1c761bba1"}, + {file = "numba-0.56.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:85dbaed7a05ff96492b69a8900c5ba605551afb9b27774f7f10511095451137c"}, + {file = "numba-0.56.4-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f4cfc3a19d1e26448032049c79fc60331b104f694cf570a9e94f4e2c9d0932bb"}, + {file = "numba-0.56.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4e08e203b163ace08bad500b0c16f6092b1eb34fd1fce4feaf31a67a3a5ecf3b"}, + {file = "numba-0.56.4-cp310-cp310-win32.whl", hash = "sha256:0611e6d3eebe4cb903f1a836ffdb2bda8d18482bcd0a0dcc56e79e2aa3fefef5"}, + {file = "numba-0.56.4-cp310-cp310-win_amd64.whl", hash = "sha256:fbfb45e7b297749029cb28694abf437a78695a100e7c2033983d69f0ba2698d4"}, + {file = "numba-0.56.4-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:3cb1a07a082a61df80a468f232e452d818f5ae254b40c26390054e4e868556e0"}, + {file = "numba-0.56.4-cp37-cp37m-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d69ad934e13c15684e7887100a8f5f0f61d7a8e57e0fd29d9993210089a5b531"}, + {file = "numba-0.56.4-cp37-cp37m-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:dbcc847bac2d225265d054993a7f910fda66e73d6662fe7156452cac0325b073"}, + {file = "numba-0.56.4-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8a95ca9cc77ea4571081f6594e08bd272b66060634b8324e99cd1843020364f9"}, + {file = "numba-0.56.4-cp37-cp37m-win32.whl", hash = "sha256:fcdf84ba3ed8124eb7234adfbb8792f311991cbf8aed1cad4b1b1a7ee08380c1"}, + {file = "numba-0.56.4-cp37-cp37m-win_amd64.whl", hash = "sha256:42f9e1be942b215df7e6cc9948cf9c15bb8170acc8286c063a9e57994ef82fd1"}, + {file = "numba-0.56.4-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:553da2ce74e8862e18a72a209ed3b6d2924403bdd0fb341fa891c6455545ba7c"}, + {file = "numba-0.56.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4373da9757049db7c90591e9ec55a2e97b2b36ba7ae3bf9c956a513374077470"}, + {file = "numba-0.56.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a993349b90569518739009d8f4b523dfedd7e0049e6838c0e17435c3e70dcc4"}, + {file = "numba-0.56.4-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:720886b852a2d62619ae3900fe71f1852c62db4f287d0c275a60219e1643fc04"}, + {file = "numba-0.56.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e64d338b504c9394a4a34942df4627e1e6cb07396ee3b49fe7b8d6420aa5104f"}, + {file = "numba-0.56.4-cp38-cp38-win32.whl", hash = "sha256:03fe94cd31e96185cce2fae005334a8cc712fc2ba7756e52dff8c9400718173f"}, + {file = "numba-0.56.4-cp38-cp38-win_amd64.whl", hash = "sha256:91f021145a8081f881996818474ef737800bcc613ffb1e618a655725a0f9e246"}, + {file = "numba-0.56.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:d0ae9270a7a5cc0ede63cd234b4ff1ce166c7a749b91dbbf45e0000c56d3eade"}, + {file = "numba-0.56.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c75e8a5f810ce80a0cfad6e74ee94f9fde9b40c81312949bf356b7304ef20740"}, + {file = "numba-0.56.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a12ef323c0f2101529d455cfde7f4135eaa147bad17afe10b48634f796d96abd"}, + {file = "numba-0.56.4-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:03634579d10a6129181129de293dd6b5eaabee86881369d24d63f8fe352dd6cb"}, + {file = "numba-0.56.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0240f9026b015e336069329839208ebd70ec34ae5bfbf402e4fcc8e06197528e"}, + {file = "numba-0.56.4-cp39-cp39-win32.whl", hash = "sha256:14dbbabf6ffcd96ee2ac827389afa59a70ffa9f089576500434c34abf9b054a4"}, + {file = "numba-0.56.4-cp39-cp39-win_amd64.whl", hash = "sha256:0da583c532cd72feefd8e551435747e0e0fbb3c0530357e6845fcc11e38d6aea"}, + {file = "numba-0.56.4.tar.gz", hash = "sha256:32d9fef412c81483d7efe0ceb6cf4d3310fde8b624a9cecca00f790573ac96ee"}, +] [package.dependencies] -llvmlite = ">=0.38.0rc1,<0.39" -numpy = ">=1.18,<1.23" +importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} +llvmlite = ">=0.39.0dev0,<0.40" +numpy = ">=1.18,<1.24" +setuptools = "*" [[package]] name = "numpy" @@ -447,31 +964,92 @@ description = "NumPy is the fundamental package for array computing with Python. category = "main" optional = false python-versions = ">=3.7,<3.11" +files = [ + {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25"}, + {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e"}, + {file = "numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6"}, + {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb"}, + {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1"}, + {file = "numpy-1.21.6-cp310-cp310-win32.whl", hash = "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c"}, + {file = "numpy-1.21.6-cp310-cp310-win_amd64.whl", hash = "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f"}, + {file = "numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7"}, + {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46"}, + {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2"}, + {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db"}, + {file = "numpy-1.21.6-cp37-cp37m-win32.whl", hash = "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e"}, + {file = "numpy-1.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a"}, + {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552"}, + {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab"}, + {file = "numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3"}, + {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6"}, + {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a"}, + {file = "numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4"}, + {file = "numpy-1.21.6-cp38-cp38-win32.whl", hash = "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470"}, + {file = "numpy-1.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf"}, + {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1"}, + {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673"}, + {file = "numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0"}, + {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac"}, + {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b"}, + {file = "numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b"}, + {file = "numpy-1.21.6-cp39-cp39-win32.whl", hash = "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786"}, + {file = "numpy-1.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3"}, + {file = "numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0"}, + {file = "numpy-1.21.6.zip", hash = "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656"}, +] [[package]] name = "packaging" -version = "21.3" +version = "23.0" description = "Core utilities for Python packages" category = "main" optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +python-versions = ">=3.7" +files = [ + {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, + {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, +] [[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.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" @@ -482,35 +1060,122 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] [[package]] name = "pathspec" -version = "0.9.0" +version = "0.11.0" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +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 = "pillow" -version = "9.2.0" +version = "9.4.0" description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "Pillow-9.4.0-1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1"}, + {file = "Pillow-9.4.0-1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12"}, + {file = "Pillow-9.4.0-1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd"}, + {file = "Pillow-9.4.0-1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9"}, + {file = "Pillow-9.4.0-1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858"}, + {file = "Pillow-9.4.0-1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab"}, + {file = "Pillow-9.4.0-1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9"}, + {file = "Pillow-9.4.0-2-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0"}, + {file = "Pillow-9.4.0-2-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f"}, + {file = "Pillow-9.4.0-2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c"}, + {file = "Pillow-9.4.0-2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848"}, + {file = "Pillow-9.4.0-2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1"}, + {file = "Pillow-9.4.0-2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33"}, + {file = "Pillow-9.4.0-2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35"}, + {file = "Pillow-9.4.0-cp310-cp310-win32.whl", hash = "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a"}, + {file = "Pillow-9.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a"}, + {file = "Pillow-9.4.0-cp311-cp311-win32.whl", hash = "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c"}, + {file = "Pillow-9.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee"}, + {file = "Pillow-9.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5"}, + {file = "Pillow-9.4.0-cp37-cp37m-win32.whl", hash = "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e"}, + {file = "Pillow-9.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628"}, + {file = "Pillow-9.4.0-cp38-cp38-win32.whl", hash = "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d"}, + {file = "Pillow-9.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153"}, + {file = "Pillow-9.4.0-cp39-cp39-win32.whl", hash = "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c"}, + {file = "Pillow-9.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9"}, + {file = "Pillow-9.4.0.tar.gz", hash = "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e"}, +] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "3.1.0" +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 = [ + {file = "platformdirs-3.1.0-py3-none-any.whl", hash = "sha256:13b08a53ed71021350c9e300d4ea8668438fb0046ab3937ac9a29913a1a1350a"}, + {file = "platformdirs-3.1.0.tar.gz", hash = "sha256:accc3665857288317f32c7bebb5a8e482ba717b474f3fc1d18ca7f9214be0cef"}, +] [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] -test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -519,27 +1184,15 @@ description = "plugin and hook calling mechanisms for python" category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "poetry-core" -version = "1.0.8" -description = "Poetry PEP 517 Build Backend" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -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.*" - [[package]] name = "pyarrow" version = "8.0.0" @@ -547,6 +1200,38 @@ description = "Python library for Apache Arrow" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "pyarrow-8.0.0-cp310-cp310-macosx_10_13_universal2.whl", hash = "sha256:d5ef4372559b191cafe7db8932801eee252bfc35e983304e7d60b6954576a071"}, + {file = "pyarrow-8.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:863be6bad6c53797129610930794a3e797cb7d41c0a30e6794a2ac0e42ce41b8"}, + {file = "pyarrow-8.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:69b043a3fce064ebd9fbae6abc30e885680296e5bd5e6f7353e6a87966cf2ad7"}, + {file = "pyarrow-8.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51e58778fcb8829fca37fbfaea7f208d5ce7ea89ea133dd13d8ce745278ee6f0"}, + {file = "pyarrow-8.0.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:15511ce2f50343f3fd5e9f7c30e4d004da9134e9597e93e9c96c3985928cbe82"}, + {file = "pyarrow-8.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea132067ec712d1b1116a841db1c95861508862b21eddbcafefbce8e4b96b867"}, + {file = "pyarrow-8.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deb400df8f19a90b662babceb6dd12daddda6bb357c216e558b207c0770c7654"}, + {file = "pyarrow-8.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:3bd201af6e01f475f02be88cf1f6ee9856ab98c11d8bbb6f58347c58cd07be00"}, + {file = "pyarrow-8.0.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:78a6ac39cd793582998dac88ab5c1c1dd1e6503df6672f064f33a21937ec1d8d"}, + {file = "pyarrow-8.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d6f1e1040413651819074ef5b500835c6c42e6c446532a1ddef8bc5054e8dba5"}, + {file = "pyarrow-8.0.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c13b2e28a91b0fbf24b483df54a8d7814c074c2623ecef40dce1fa52f6539b"}, + {file = "pyarrow-8.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c97c8e288847e091dfbcdf8ce51160e638346f51919a9e74fe038b2e8aee62"}, + {file = "pyarrow-8.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edad25522ad509e534400d6ab98cf1872d30c31bc5e947712bfd57def7af15bb"}, + {file = "pyarrow-8.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ece333706a94c1221ced8b299042f85fd88b5db802d71be70024433ddf3aecab"}, + {file = "pyarrow-8.0.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:95c7822eb37663e073da9892f3499fe28e84f3464711a3e555e0c5463fd53a19"}, + {file = "pyarrow-8.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25a5f7c7f36df520b0b7363ba9f51c3070799d4b05d587c60c0adaba57763479"}, + {file = "pyarrow-8.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ce64bc1da3109ef5ab9e4c60316945a7239c798098a631358e9ab39f6e5529e9"}, + {file = "pyarrow-8.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:541e7845ce5f27a861eb5b88ee165d931943347eec17b9ff1e308663531c9647"}, + {file = "pyarrow-8.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cd86e04a899bef43e25184f4b934584861d787cf7519851a8c031803d45c6d8"}, + {file = "pyarrow-8.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba2b7aa7efb59156b87987a06f5241932914e4d5bbb74a465306b00a6c808849"}, + {file = "pyarrow-8.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:42b7982301a9ccd06e1dd4fabd2e8e5df74b93ce4c6b87b81eb9e2d86dc79871"}, + {file = "pyarrow-8.0.0-cp39-cp39-macosx_10_13_universal2.whl", hash = "sha256:1dd482ccb07c96188947ad94d7536ab696afde23ad172df8e18944ec79f55055"}, + {file = "pyarrow-8.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:81b87b782a1366279411f7b235deab07c8c016e13f9af9f7c7b0ee564fedcc8f"}, + {file = "pyarrow-8.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03a10daad957970e914920b793f6a49416699e791f4c827927fd4e4d892a5d16"}, + {file = "pyarrow-8.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:65c7f4cc2be195e3db09296d31a654bb6d8786deebcab00f0e2455fd109d7456"}, + {file = "pyarrow-8.0.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3fee786259d986f8c046100ced54d63b0c8c9f7cdb7d1bbe07dc69e0f928141c"}, + {file = "pyarrow-8.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ea2c54e6b5ecd64e8299d2abb40770fe83a718f5ddc3825ddd5cd28e352cce1"}, + {file = "pyarrow-8.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8392b9a1e837230090fe916415ed4c3433b2ddb1a798e3f6438303c70fbabcfc"}, + {file = "pyarrow-8.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:cb06cacc19f3b426681f2f6803cc06ff481e7fe5b3a533b406bc5b2138843d4f"}, + {file = "pyarrow-8.0.0.tar.gz", hash = "sha256:4a18a211ed888f1ac0b0ebcb99e2d9a3e913a481120ee9b1fe33d3fedb945d4e"}, +] [package.dependencies] numpy = ">=1.16.6" @@ -558,6 +1243,10 @@ description = "Python style guide checker" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, + {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, +] [[package]] name = "pyflakes" @@ -566,27 +1255,42 @@ description = "passive checker of Python programs" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, + {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, +] [[package]] name = "pygments" -version = "2.12.0" +version = "2.14.0" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, + {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, +] + +[package.extras] +plugins = ["importlib-metadata"] [[package]] name = "pylint" -version = "2.14.4" +version = "2.17.0" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" +files = [ + {file = "pylint-2.17.0-py3-none-any.whl", hash = "sha256:e097d8325f8c88e14ad12844e3fe2d963d3de871ea9a8f8ad25ab1c109889ddc"}, + {file = "pylint-2.17.0.tar.gz", hash = "sha256:1460829b6397cb5eb0cdb0b4fc4b556348e515cdca32115f74a1eb7c20b896b4"}, +] [package.dependencies] -astroid = ">=2.11.6,<=2.12.0-dev0" +astroid = ">=2.15.0,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = ">=0.2" +dill = {version = ">=0.2", markers = "python_version < \"3.11\""} isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" @@ -605,17 +1309,25 @@ description = "pyparsing module - Classes and methods to define and execute pars 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"}, +] [package.extras] -diagrams = ["railroad-diagrams", "jinja2"] +diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pystow" -version = "0.4.5" +version = "0.5.0" description = "Easily pick a place to store data for your python package." category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "pystow-0.5.0-py3-none-any.whl", hash = "sha256:816a9da33cd8a3f8fbda577c3d2957cfc99d1fa3ea45032dbfa087b9a21b630f"}, + {file = "pystow-0.5.0.tar.gz", hash = "sha256:490e9ecbe4f947c72f63297f43f6584323c9ca2f2d48d47f2a22a815dc552bb4"}, +] [package.dependencies] click = "*" @@ -624,7 +1336,7 @@ tqdm = "*" [package.extras] aws = ["boto3"] -docs = ["sphinx", "sphinx-rtd-theme", "sphinx-click", "sphinx-autodoc-typehints", "sphinx-automodapi"] +docs = ["sphinx", "sphinx-autodoc-typehints", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme"] pandas = ["pandas"] rdf = ["rdflib"] tests = ["coverage", "pytest", "requests-file"] @@ -632,21 +1344,24 @@ xml = ["lxml"] [[package]] name = "pytest" -version = "7.1.2" +version = "7.2.2" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"}, + {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"}, +] [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -tomli = ">=1.0.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] @@ -658,6 +1373,10 @@ description = "Extensions to the standard Python datetime module" category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] [package.dependencies] six = ">=1.5" @@ -669,35 +1388,47 @@ description = "Read key-value pairs from a .env file and set them as environment category = "main" optional = false python-versions = ">=3.5" +files = [ + {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, + {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, +] [package.extras] cli = ["click (>=5.0)"] [[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.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, + {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, +] [[package]] name = "requests" -version = "2.28.1" +version = "2.28.2" description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.7, <4" +files = [ + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, +] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "scikit-learn" @@ -706,6 +1437,26 @@ description = "A set of python modules for machine learning and data mining" category = "main" optional = false python-versions = ">=3.8" +files = [ + {file = "scikit-learn-1.1.1.tar.gz", hash = "sha256:3e77b71e8e644f86c8b5be7f1c285ef597de4c384961389ee3e9ca36c445b256"}, + {file = "scikit_learn-1.1.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:102f51797cd8944bf44a038d106848ddf2804f2c1edf7aea45fba81a4fdc4d80"}, + {file = "scikit_learn-1.1.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:723cdb278b1fa57a55f68945bc4e501a2f12abe82f76e8d21e1806cbdbef6fc5"}, + {file = "scikit_learn-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33cf061ed0b79d647a3e4c3f6c52c412172836718a7cd4d11c1318d083300133"}, + {file = "scikit_learn-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47464c110eaa9ed9d1fe108cb403510878c3d3a40f110618d2a19b2190a3e35c"}, + {file = "scikit_learn-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:542ccd2592fe7ad31f5c85fed3a3deb3e252383960a85e4b49a629353fffaba4"}, + {file = "scikit_learn-1.1.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:3be10d8d325821ca366d4fe7083d87c40768f842f54371a9c908d97c45da16fc"}, + {file = "scikit_learn-1.1.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b2db720e13e697d912a87c1a51194e6fb085dc6d8323caa5ca51369ca6948f78"}, + {file = "scikit_learn-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e851f8874398dcd50d1e174e810e9331563d189356e945b3271c0e19ee6f4d6f"}, + {file = "scikit_learn-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b928869072366dc138762fe0929e7dc88413f8a469aebc6a64adc10a9226180c"}, + {file = "scikit_learn-1.1.1-cp38-cp38-win32.whl", hash = "sha256:e9d228ced1214d67904f26fb820c8abbea12b2889cd4aa8cda20a4ca0ed781c1"}, + {file = "scikit_learn-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:f2d5b5d6e87d482e17696a7bfa03fe9515fdfe27e462a4ad37f3d7774a5e2fd6"}, + {file = "scikit_learn-1.1.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:0403ad13f283e27d43b0ad875f187ec7f5d964903d92d1ed06c51439560ecea0"}, + {file = "scikit_learn-1.1.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8fe80df08f5b9cee5dd008eccc672e543976198d790c07e5337f7dfb67eaac05"}, + {file = "scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ff56d07b9507fbe07ca0f4e5c8f3e171f74a429f998da03e308166251316b34"}, + {file = "scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2dad2bfc502344b869d4a3f4aa7271b2a5f4fe41f7328f404844c51612e2c58"}, + {file = "scikit_learn-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22145b60fef02e597a8e7f061ebc7c51739215f11ce7fcd2ca9af22c31aa9f86"}, + {file = "scikit_learn-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:45c0f6ae523353f1d99b85469d746f9c497410adff5ba8b24423705b6956a86e"}, +] [package.dependencies] joblib = ">=1.0.0" @@ -714,21 +1465,49 @@ scipy = ">=1.3.2" threadpoolctl = ">=2.0.0" [package.extras] -benchmark = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "memory-profiler (>=0.57.0)"] -docs = ["matplotlib (>=3.1.2)", "scikit-image (>=0.14.5)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)", "memory-profiler (>=0.57.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "numpydoc (>=1.2.0)", "Pillow (>=7.1.2)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] -examples = ["matplotlib (>=3.1.2)", "scikit-image (>=0.14.5)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)"] -tests = ["matplotlib (>=3.1.2)", "scikit-image (>=0.14.5)", "pandas (>=1.0.5)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "flake8 (>=3.8.2)", "black (>=22.3.0)", "mypy (>=0.770)", "pyamg (>=4.0.0)", "numpydoc (>=1.2.0)"] +benchmark = ["matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "scikit-image (>=0.14.5)", "seaborn (>=0.9.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "scikit-image (>=0.14.5)", "seaborn (>=0.9.0)"] +tests = ["black (>=22.3.0)", "flake8 (>=3.8.2)", "matplotlib (>=3.1.2)", "mypy (>=0.770)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pyamg (>=4.0.0)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "scikit-image (>=0.14.5)"] [[package]] name = "scipy" -version = "1.8.1" -description = "SciPy: Scientific Library for Python" +version = "1.10.1" +description = "Fundamental algorithms for scientific computing in Python" category = "main" optional = false -python-versions = ">=3.8,<3.11" +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.17.3,<1.25.0" +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 = "seaborn" @@ -737,6 +1516,10 @@ description = "seaborn: statistical data visualization" category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, + {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, +] [package.dependencies] matplotlib = ">=2.2" @@ -745,21 +1528,21 @@ pandas = ">=0.23" scipy = ">=1.0" [[package]] -name = "setuptools-scm" -version = "7.0.4" -description = "the blessed package to manage your versions by scm tags" +name = "setuptools" +version = "67.6.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" - -[package.dependencies] -packaging = ">=20.0" -tomli = ">=1.0.0" -typing-extensions = "*" +files = [ + {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, + {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, +] [package.extras] -test = ["pytest (>=6.2)", "virtualenv (>20)"] -toml = ["setuptools (>=42)"] +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-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 = "shap" @@ -768,6 +1551,7 @@ description = "A unified approach to explain the output of any machine learning category = "main" optional = false python-versions = "*" +files = [] develop = false [package.dependencies] @@ -782,11 +1566,11 @@ slicer = "0.0.7" tqdm = ">4.25.0" [package.extras] -all = ["lime", "lightgbm", "numpydoc", "xgboost", "torch", "pytest-cov", "sphinx", "nbsphinx", "matplotlib", "sphinx-rtd-theme", "pytest-mpl", "opencv-python", "pyspark", "pytest", "catboost", "ipython", "pyod", "sentencepiece", "transformers"] -docs = ["matplotlib", "ipython", "numpydoc", "sphinx-rtd-theme", "sphinx", "nbsphinx"] +all = ["catboost", "ipython", "lightgbm", "lime", "matplotlib", "nbsphinx", "numpydoc", "opencv-python", "pyod", "pyspark", "pytest", "pytest-cov", "pytest-mpl", "sentencepiece", "sphinx", "sphinx_rtd_theme", "torch", "transformers", "xgboost"] +docs = ["ipython", "matplotlib", "nbsphinx", "numpydoc", "sphinx", "sphinx_rtd_theme"] others = ["lime"] -plots = ["matplotlib", "ipython"] -test = ["pytest", "pytest-mpl", "pytest-cov", "xgboost", "lightgbm", "catboost", "pyspark", "pyod", "transformers", "torch", "sentencepiece", "opencv-python"] +plots = ["ipython", "matplotlib"] +test = ["catboost", "lightgbm", "opencv-python", "pyod", "pyspark", "pytest", "pytest-cov", "pytest-mpl", "sentencepiece", "torch", "transformers", "xgboost"] [package.source] type = "git" @@ -801,6 +1585,10 @@ description = "Python 2 and 3 compatibility utilities" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] [[package]] name = "slicer" @@ -809,6 +1597,10 @@ description = "A small package for big slicing." category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "slicer-0.0.7-py3-none-any.whl", hash = "sha256:0b94faa5251c0f23782c03f7b7eedda91d80144059645f452c4bc80fab875976"}, + {file = "slicer-0.0.7.tar.gz", hash = "sha256:f5d5f7b45f98d155b9c0ba6554fa9770c6b26d5793a3e77a1030fb56910ebeec"}, +] [[package]] name = "snowballstemmer" @@ -817,27 +1609,35 @@ description = "This package provides 29 stemmers for 28 languages generated from category = "dev" optional = false python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] [[package]] name = "sphinx" -version = "5.0.2" +version = "5.3.0" description = "Python documentation generator" category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5"}, + {file = "sphinx-5.3.0-py3-none-any.whl", hash = "sha256:060ca5c9f7ba57a08a1219e547b269fadf125ae25b06b9fa7f66768efb652d6d"}, +] [package.dependencies] alabaster = ">=0.7,<0.8" -babel = ">=1.3" -colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.14,<0.19" -imagesize = "*" -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} -Jinja2 = ">=2.3" -packaging = "*" -Pygments = ">=2.0" +babel = ">=2.9" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +docutils = ">=0.14,<0.20" +imagesize = ">=1.3" +importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} +Jinja2 = ">=3.0" +packaging = ">=21.0" +Pygments = ">=2.12" requests = ">=2.5.0" -snowballstemmer = ">=1.1" +snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" @@ -847,16 +1647,20 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.950)", "docutils-stubs", "types-typed-ast", "types-requests"] -test = ["pytest (>=4.6)", "html5lib", "cython", "typed-ast"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] +test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] [[package]] name = "sphinx-click" -version = "4.3.0" +version = "4.4.0" description = "Sphinx extension that automatically documents click applications" category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "sphinx-click-4.4.0.tar.gz", hash = "sha256:cc67692bd28f482c7f01531c61b64e9d2f069bfcf3d24cbbb51d4a84a749fa48"}, + {file = "sphinx_click-4.4.0-py3-none-any.whl", hash = "sha256:2821c10a68fc9ee6ce7c92fad26540d8d8c8f45e6d7258f0e4fb7529ae8fab49"}, +] [package.dependencies] click = ">=7.0" @@ -865,29 +1669,38 @@ sphinx = ">=2.0" [[package]] name = "sphinx-rtd-theme" -version = "1.0.0" +version = "1.2.0" description = "Read the Docs theme for Sphinx" category = "dev" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "sphinx_rtd_theme-1.2.0-py2.py3-none-any.whl", hash = "sha256:f823f7e71890abe0ac6aaa6013361ea2696fc8d3e1fa798f463e82bdb77eeff2"}, + {file = "sphinx_rtd_theme-1.2.0.tar.gz", hash = "sha256:a0d8bd1a2ed52e0b338cbe19c4b2eef3c5e7a048769753dac6a9f059c7b641b8"}, +] [package.dependencies] -docutils = "<0.18" -sphinx = ">=1.6" +docutils = "<0.19" +sphinx = ">=1.6,<7" +sphinxcontrib-jquery = {version = ">=2.0.0,<3.0.0 || >3.0.0", markers = "python_version > \"3\""} [package.extras] -dev = ["transifex-client", "sphinxcontrib-httpdomain", "bump2version"] +dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.2" -description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" +version = "1.0.4" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, + {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] @@ -897,22 +1710,45 @@ description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.0" +version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, + {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] -test = ["pytest", "html5lib"] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jquery" +version = "2.0.0" +description = "Extension to include jQuery on newer Sphinx releases" +category = "dev" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-2.0.0.tar.gz", hash = "sha256:8fb65f6dba84bf7bcd1aea1f02ab3955ac34611d838bcc95d4983b805b234daa"}, + {file = "sphinxcontrib_jquery-2.0.0-py3-none-any.whl", hash = "sha256:ed47fa425c338ffebe3c37e1cdb56e30eb806116b85f01055b158c7057fdb995"}, +] + +[package.dependencies] +setuptools = "*" [[package]] name = "sphinxcontrib-jsmath" @@ -921,9 +1757,13 @@ description = "A sphinx extension which renders display math in HTML via JavaScr category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] [package.extras] -test = ["pytest", "flake8", "mypy"] +test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" @@ -932,9 +1772,13 @@ description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp d category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] @@ -944,9 +1788,13 @@ description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, + {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, +] [package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] @@ -956,101 +1804,46 @@ description = "threadpoolctl" category = "main" optional = false python-versions = ">=3.6" - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "threadpoolctl-3.1.0-py3-none-any.whl", hash = "sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b"}, + {file = "threadpoolctl-3.1.0.tar.gz", hash = "sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380"}, +] [[package]] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" +category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] [[package]] name = "tomlkit" -version = "0.11.1" +version = "0.11.6" description = "Style preserving TOML library" category = "dev" optional = false -python-versions = ">=3.6,<4.0" - -[[package]] -name = "tox" -version = "3.25.1" -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" - -[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" - -[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)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] - -[[package]] -name = "tox-gh-actions" -version = "2.9.1" -description = "Seamless integration of tox into GitHub Actions" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" - -[package.dependencies] -importlib-resources = "*" -tox = ">=3.12,<4" - -[package.extras] -testing = ["coverage (<6)", "flake8 (>=3,<4)", "pytest-cov (>=2,<3)", "pytest-mock (>=2,<3)", "black", "pytest (>=4,<7)", "pytest (>=6.2.5,<7)", "pytest-randomly (>=3)"] - -[[package]] -name = "tox-poetry-installer" -version = "0.8.4" -description = "A plugin for Tox that lets you install test environment dependencies from the Poetry lockfile" -category = "dev" -optional = false -python-versions = ">=3.6.1,<4.0.0" - -[package.dependencies] -poetry-core = ">=1.0.0,<2.0.0" -tox = ">=3.8.0,<4.0.0" - -[package.extras] -poetry = ["poetry (>=1.0.0,<2.0.0)"] - -[[package]] -name = "tox-pyenv" -version = "1.1.0" -description = "tox plugin that makes tox use `pyenv which` to find python executables" -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -tox = ">=2.0" +python-versions = ">=3.6" +files = [ + {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, + {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, +] [[package]] name = "tqdm" -version = "4.64.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.65.0-py3-none-any.whl", hash = "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"}, + {file = "tqdm-4.65.0.tar.gz", hash = "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} @@ -1063,19 +1856,27 @@ telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.3.0" +version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, +] [[package]] name = "typing-inspect" -version = "0.7.1" +version = "0.8.0" description = "Runtime inspection utilities for typing module." category = "main" optional = false python-versions = "*" +files = [ + {file = "typing_inspect-0.8.0-py3-none-any.whl", hash = "sha256:5fbf9c1e65d4fa01e701fe12a5bca6c6e08a4ffd5bc60bfac028253a447c5188"}, + {file = "typing_inspect-0.8.0.tar.gz", hash = "sha256:8b1ff0c400943b6145df8119c41c244ca8207f1f10c9c057aeed1560e4806e3d"}, +] [package.dependencies] mypy-extensions = ">=0.3.0" @@ -1083,42 +1884,105 @@ typing-extensions = ">=3.7.4" [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.14" 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.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, + {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, +] [package.extras] -brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +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)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] -[[package]] -name = "virtualenv" -version = "20.15.1" -description = "Virtual Python Environment builder" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" - -[package.dependencies] -distlib = ">=0.3.1,<1" -filelock = ">=3.2,<4" -platformdirs = ">=2,<3" -six = ">=1.9.0,<2" - -[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)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] - [[package]] name = "wrapt" -version = "1.14.1" +version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, +] [[package]] name = "zenodo-client" @@ -1127,6 +1991,10 @@ description = "A wrapper for the Zenodo API." category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "zenodo_client-0.2.0-py3-none-any.whl", hash = "sha256:d39b2387031ce85839350d88a77230a2ac3f6dde2bec86c0e690c8aebc4b4613"}, + {file = "zenodo_client-0.2.0.tar.gz", hash = "sha256:8d402a0d3e28bff76994f14e7dee70aa6f64cc1b75b1f67da5e9d23357b76a64"}, +] [package.dependencies] click = "*" @@ -1136,844 +2004,25 @@ pystow = ">=0.1.0" requests = "*" [package.extras] -docs = ["sphinx", "sphinx-rtd-theme", "sphinx-click", "sphinx-autodoc-typehints"] +docs = ["sphinx", "sphinx-autodoc-typehints", "sphinx-click", "sphinx-rtd-theme"] [[package]] name = "zipp" -version = "3.8.0" +version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, + {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, +] [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-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)"] [metadata] -lock-version = "1.1" +lock-version = "2.0" python-versions = ">=3.8, <3.11" -content-hash = "0e6db7d4faf6135b0101eff321bec7bc9fd69c8a1c0f76e6249a2c5b1c17f08a" - -[metadata.files] -alabaster = [ - {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, - {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, -] -astroid = [ - {file = "astroid-2.11.6-py3-none-any.whl", hash = "sha256:ba33a82a9a9c06a5ceed98180c5aab16e29c285b828d94696bf32d6015ea82a9"}, - {file = "astroid-2.11.6.tar.gz", hash = "sha256:4f933d0bf5e408b03a6feb5d23793740c27e07340605f236496cd6ce552043d6"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] -attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, -] -babel = [ - {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, - {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, -] -black = [ - {file = "black-22.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69"}, - {file = "black-22.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807"}, - {file = "black-22.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e"}, - {file = "black-22.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def"}, - {file = "black-22.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666"}, - {file = "black-22.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d"}, - {file = "black-22.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256"}, - {file = "black-22.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78"}, - {file = "black-22.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849"}, - {file = "black-22.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c"}, - {file = "black-22.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e"}, - {file = "black-22.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6"}, - {file = "black-22.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad"}, - {file = "black-22.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2"}, - {file = "black-22.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee"}, - {file = "black-22.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b"}, - {file = "black-22.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4"}, - {file = "black-22.6.0-py3-none-any.whl", hash = "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c"}, - {file = "black-22.6.0.tar.gz", hash = "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9"}, -] -certifi = [ - {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, - {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"}, - {file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"}, -] -click = [ - {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, - {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, -] -cloudpickle = [ - {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, - {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, -] -colorama = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, -] -cycler = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, -] -dataclasses-json = [ - {file = "dataclasses-json-0.5.7.tar.gz", hash = "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90"}, - {file = "dataclasses_json-0.5.7-py3-none-any.whl", hash = "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd"}, -] -dill = [ - {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, - {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, -] -distlib = [ - {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, - {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, -] -docutils = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, -] -filelock = [ - {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, - {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"}, -] -flake8 = [ - {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, - {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, -] -flake8-black = [ - {file = "flake8-black-0.3.3.tar.gz", hash = "sha256:8211f5e20e954cb57c709acccf2f3281ce27016d4c4b989c3e51f878bb7ce12a"}, - {file = "flake8_black-0.3.3-py3-none-any.whl", hash = "sha256:7d667d0059fd1aa468de1669d77cc934b7f1feeac258d57bdae69a8e73c4cd90"}, -] -fonttools = [ - {file = "fonttools-4.34.2-py3-none-any.whl", hash = "sha256:c6c5a896c9760132614caa57b444ee5b4719c08f84b304bf8ce9295edfb7cbc3"}, - {file = "fonttools-4.34.2.zip", hash = "sha256:3fb3bef8e743dad8fe96e12a47a9ce9bd367ac0a24c089256615518c88309dbd"}, -] -idna = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, -] -imagesize = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] -importlib-metadata = [ - {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, - {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"}, -] -importlib-resources = [ - {file = "importlib_resources-5.8.0-py3-none-any.whl", hash = "sha256:7952325ffd516c05a8ad0858c74dff2c3343f136fe66a6002b2623dd1d43f223"}, - {file = "importlib_resources-5.8.0.tar.gz", hash = "sha256:568c9f16cb204f9decc8d6d24a572eeea27dacbb4cee9e6b03a8025736769751"}, -] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] -isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, -] -jinja2 = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, -] -joblib = [ - {file = "joblib-1.1.0-py2.py3-none-any.whl", hash = "sha256:f21f109b3c7ff9d95f8387f752d0d9c34a02aa2f7060c2135f465da0e5160ff6"}, - {file = "joblib-1.1.0.tar.gz", hash = "sha256:4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35"}, -] -kiwisolver = [ - {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fd2842a0faed9ab9aba0922c951906132d9384be89690570f0ed18cd4f20e658"}, - {file = "kiwisolver-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:caa59e2cae0e23b1e225447d7a9ddb0f982f42a6a22d497a484dfe62a06f7c0e"}, - {file = "kiwisolver-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d2c744aeedce22c122bb42d176b4aa6d063202a05a4abdacb3e413c214b3694"}, - {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:afe173ac2646c2636305ab820cc0380b22a00a7bca4290452e7166b4f4fa49d0"}, - {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40240da438c0ebfe2aa76dd04b844effac6679423df61adbe3437d32f23468d9"}, - {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21a3a98f0a21fc602663ca9bce2b12a4114891bdeba2dea1e9ad84db59892fca"}, - {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51078855a16b7a4984ed2067b54e35803d18bca9861cb60c60f6234b50869a56"}, - {file = "kiwisolver-1.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16635f8dddbeb1b827977d0b00d07b644b040aeb9ff8607a9fc0997afa3e567"}, - {file = "kiwisolver-1.4.3-cp310-cp310-win32.whl", hash = "sha256:2d76780d9c65c7529cedd49fa4802d713e60798d8dc3b0d5b12a0a8f38cca51c"}, - {file = "kiwisolver-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:3a297d77b3d6979693f5948df02b89431ae3645ec95865e351fb45578031bdae"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ca3eefb02ef17257fae8b8555c85e7c1efdfd777f671384b0e4ef27409b02720"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d248c46c0aa406695bda2abf99632db991f8b3a6d46018721a2892312a99f069"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb55258931448d61e2d50187de4ee66fc9d9f34908b524949b8b2b93d0c57136"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86bcf0009f2012847a688f2f4f9b16203ca4c835979a02549aa0595d9f457cc8"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e7cf940af5fee00a92e281eb157abe8770227a5255207818ea9a34e54a29f5b2"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dd22085446f3eca990d12a0878eeb5199dc9553b2e71716bfe7bed9915a472ab"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:d2578e5149ff49878934debfacf5c743fab49eca5ecdb983d0b218e1e554c498"}, - {file = "kiwisolver-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:5fb73cc8a34baba1dfa546ae83b9c248ef6150c238b06fc53d2773685b67ec67"}, - {file = "kiwisolver-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f70f3d028794e31cf9d1a822914efc935aadb2438ec4e8d4871d95eb1ce032d6"}, - {file = "kiwisolver-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:71af5b43e4fa286a35110fc5bb740fdeae2b36ca79fbcf0a54237485baeee8be"}, - {file = "kiwisolver-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26b5a70bdab09e6a2f40babc4f8f992e3771751e144bda1938084c70d3001c09"}, - {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1858ad3cb686eccc7c6b7c5eac846a1cfd45aacb5811b2cf575e80b208f5622a"}, - {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4dc350cb65fe4e3f737d50f0465fa6ea0dcae0e5722b7edf5d5b0a0e3cd2c3c7"}, - {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:007799c7fa934646318fc128b033bb6e6baabe7fbad521bfb2279aac26225cd7"}, - {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:46fb56fde006b7ef5f8eaa3698299b0ea47444238b869ff3ced1426aa9fedcb5"}, - {file = "kiwisolver-1.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b9eb88593159a53a5ee0b0159daee531ff7dd9c87fa78f5d807ca059c7eb1b2b"}, - {file = "kiwisolver-1.4.3-cp38-cp38-win32.whl", hash = "sha256:3b1dcbc49923ac3c973184a82832e1f018dec643b1e054867d04a3a22255ec6a"}, - {file = "kiwisolver-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:7118ca592d25b2957ff7b662bc0fe4f4c2b5d5b27814b9b1bc9f2fb249a970e7"}, - {file = "kiwisolver-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:747190fcdadc377263223f8f72b038381b3b549a8a3df5baf4d067da4749b046"}, - {file = "kiwisolver-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fd628e63ffdba0112e3ddf1b1e9f3db29dd8262345138e08f4938acbc6d0805a"}, - {file = "kiwisolver-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22ccba48abae827a0f952a78a7b1a7ff01866131e5bbe1f826ce9bda406bf051"}, - {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:af24b21c2283ca69c416a8a42cde9764dc36c63d3389645d28c69b0e93db3cd7"}, - {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:547111ef7cf13d73546c2de97ce434935626c897bdec96a578ca100b5fcd694b"}, - {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84f85adfebd7d3c3db649efdf73659e1677a2cf3fa6e2556a3f373578af14bf7"}, - {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ffd7cf165ff71afb202b3f36daafbf298932bee325aac9f58e1c9cd55838bef0"}, - {file = "kiwisolver-1.4.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b3136eecf7e1b4a4d23e4b19d6c4e7a8e0b42d55f30444e3c529700cdacaa0d"}, - {file = "kiwisolver-1.4.3-cp39-cp39-win32.whl", hash = "sha256:46c6e5018ba31d5ee7582f323d8661498a154dea1117486a571db4c244531f24"}, - {file = "kiwisolver-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:8395064d63b26947fa2c9faeea9c3eee35e52148c5339c37987e1d96fbf009b3"}, - {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:325fa1b15098e44fe4590a6c5c09a212ca10c6ebb5d96f7447d675f6c8340e4e"}, - {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:654280c5f41831ddcc5a331c0e3ce2e480bbc3d7c93c18ecf6236313aae2d61a"}, - {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae7aa0784aeadfbd693c27993727792fbe1455b84d49970bad5886b42976b18"}, - {file = "kiwisolver-1.4.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:130c6c35eded399d3967cf8a542c20b671f5ba85bd6f210f8b939f868360e9eb"}, - {file = "kiwisolver-1.4.3.tar.gz", hash = "sha256:ab8a15c2750ae8d53e31f77a94f846d0a00772240f1c12817411fa2344351f86"}, -] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, - {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, -] -llvmlite = [ - {file = "llvmlite-0.38.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a7dd2bd1d6406e7789273e3f8a304ed5d9adcfaa5768052fca7dc233a857be98"}, - {file = "llvmlite-0.38.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a5e0ed215a576f0f872f47a70b8cb49864e0aefc8586aff5ce83e3bff47bc23"}, - {file = "llvmlite-0.38.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:633c9026eb43b9903cc4ffbc1c7d5293b2e3ad95d06fa9eab0f6ce6ff6ea15b3"}, - {file = "llvmlite-0.38.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b98da8436dbc29013ea301f1fdb0d596ab53bf0ab65c976d96d00bb6faa0b479"}, - {file = "llvmlite-0.38.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0adce1793d66d009c554809f27baeb6258bf13f6fbaa12eff7443500caec25"}, - {file = "llvmlite-0.38.1-cp310-cp310-win32.whl", hash = "sha256:8c64c90a8b0b7b7e1ed1912ba82c1a3f43cf25affbe06aa3c56c84050edee8ac"}, - {file = "llvmlite-0.38.1-cp310-cp310-win_amd64.whl", hash = "sha256:ab070266f0f51304789a6c20d4be91a9e69683ad9bd4861eb89980e8eb613b3a"}, - {file = "llvmlite-0.38.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ed7528b8b85de930b76407e44b080e4f376b7a007c2879749599ff8e2fe32753"}, - {file = "llvmlite-0.38.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7db018da2863034ad9c73c946625637f3a89635bc70576068bab4bd085eea90d"}, - {file = "llvmlite-0.38.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c1e5805c92e049b4956ed01204c6647de6160ab9aefb0d67ea83ca02a1d889a"}, - {file = "llvmlite-0.38.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5559e46c79b4017c3c25edc3b9512d11adc3689b9046120c685b0905c08d48a5"}, - {file = "llvmlite-0.38.1-cp37-cp37m-win32.whl", hash = "sha256:ef9aa574eff2e15f8c47b255da0db5dab326dc7f76384c307ae35490e2d2489a"}, - {file = "llvmlite-0.38.1-cp37-cp37m-win_amd64.whl", hash = "sha256:84d5a0163c172db2b2ae561d2fc0866fbd9f716cf13f92c0d41ca4338e682672"}, - {file = "llvmlite-0.38.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a263252a68d85450110ec1f2b406c0414e49b04a4d216d31c0515ea1d59c3882"}, - {file = "llvmlite-0.38.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:de8bd61480173930f2a029673e7cd0738fbbb5171dfe490340839ad7301d4cf0"}, - {file = "llvmlite-0.38.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fbfbe546394c39db39a6898a51972aa131c8d6b0628517728b350552f58bdc19"}, - {file = "llvmlite-0.38.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c4f26c6c370e134a909ac555a671fa1376e74c69af0208f25c0979472577a9d"}, - {file = "llvmlite-0.38.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f95f455697c44d7c04ef95fdfce04629f48df08a832d0a0d9eb2363186dbb969"}, - {file = "llvmlite-0.38.1-cp38-cp38-win32.whl", hash = "sha256:41e638a71c85a9a4a33f279c4cd812bc2f84122505b1f6ab8984ec7debb8548b"}, - {file = "llvmlite-0.38.1-cp38-cp38-win_amd64.whl", hash = "sha256:5c07d63df4578f31b39b764d3b4291f70157af7f42e171a8884ae7aaf989d1f7"}, - {file = "llvmlite-0.38.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4e11bd9929dcbd55d5eb5cd7b08bf71b0097ea48cc192b69d102a90dd6e9816f"}, - {file = "llvmlite-0.38.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:edfa2c761cfa56cf76e783290d82e117f829bb691d8d90aa375505204888abac"}, - {file = "llvmlite-0.38.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e609f7312a439b53b6f622d99180c3ff6a3e1e4ceca4d18aca1c5b46f4e3664"}, - {file = "llvmlite-0.38.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9f53c3448410cc84d0e1af84dbc0d60ad32779853d40bcc8b1ee3c67ebbe94b1"}, - {file = "llvmlite-0.38.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c8fac4edbadefa4dddf5dc6cca76bc2ae81df211dcd16a6638d60cc41249e56"}, - {file = "llvmlite-0.38.1-cp39-cp39-win32.whl", hash = "sha256:3d76c0fa42390bef56979ed213fbf0150c3fef36f5ea68d3d780d5d725da8c01"}, - {file = "llvmlite-0.38.1-cp39-cp39-win_amd64.whl", hash = "sha256:66462d768c30d5f648ca3361d657b434efa8b09f6cf04d6b6eae66e62e993644"}, - {file = "llvmlite-0.38.1.tar.gz", hash = "sha256:0622a86301fcf81cc50d7ed5b4bebe992c030580d413a8443b328ed4f4d82561"}, -] -markupsafe = [ - {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"}, -] -marshmallow = [ - {file = "marshmallow-3.17.0-py3-none-any.whl", hash = "sha256:00040ab5ea0c608e8787137627a8efae97fabd60552a05dc889c888f814e75eb"}, - {file = "marshmallow-3.17.0.tar.gz", hash = "sha256:635fb65a3285a31a30f276f30e958070f5214c7196202caa5c7ecf28f5274bc7"}, -] -marshmallow-enum = [ - {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, - {file = "marshmallow_enum-1.5.1-py2.py3-none-any.whl", hash = "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072"}, -] -matplotlib = [ - {file = "matplotlib-3.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:03bbb3f5f78836855e127b5dab228d99551ad0642918ccbf3067fcd52ac7ac5e"}, - {file = "matplotlib-3.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49a5938ed6ef9dda560f26ea930a2baae11ea99e1c2080c8714341ecfda72a89"}, - {file = "matplotlib-3.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:77157be0fc4469cbfb901270c205e7d8adb3607af23cef8bd11419600647ceed"}, - {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5844cea45d804174bf0fac219b4ab50774e504bef477fc10f8f730ce2d623441"}, - {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c87973ddec10812bddc6c286b88fdd654a666080fbe846a1f7a3b4ba7b11ab78"}, - {file = "matplotlib-3.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a05f2b37222319753a5d43c0a4fd97ed4ff15ab502113e3f2625c26728040cf"}, - {file = "matplotlib-3.5.2-cp310-cp310-win32.whl", hash = "sha256:9776e1a10636ee5f06ca8efe0122c6de57ffe7e8c843e0fb6e001e9d9256ec95"}, - {file = "matplotlib-3.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:b4fedaa5a9aa9ce14001541812849ed1713112651295fdddd640ea6620e6cf98"}, - {file = "matplotlib-3.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ee175a571e692fc8ae8e41ac353c0e07259113f4cb063b0ec769eff9717e84bb"}, - {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e8bda1088b941ead50caabd682601bece983cadb2283cafff56e8fcddbf7d7f"}, - {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9480842d5aadb6e754f0b8f4ebeb73065ac8be1855baa93cd082e46e770591e9"}, - {file = "matplotlib-3.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6c623b355d605a81c661546af7f24414165a8a2022cddbe7380a31a4170fa2e9"}, - {file = "matplotlib-3.5.2-cp37-cp37m-win32.whl", hash = "sha256:a91426ae910819383d337ba0dc7971c7cefdaa38599868476d94389a329e599b"}, - {file = "matplotlib-3.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c4b82c2ae6d305fcbeb0eb9c93df2602ebd2f174f6e8c8a5d92f9445baa0c1d3"}, - {file = "matplotlib-3.5.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ebc27ad11df3c1661f4677a7762e57a8a91dd41b466c3605e90717c9a5f90c82"}, - {file = "matplotlib-3.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a32ea6e12e80dedaca2d4795d9ed40f97bfa56e6011e14f31502fdd528b9c89"}, - {file = "matplotlib-3.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a0967d4156adbd0d46db06bc1a877f0370bce28d10206a5071f9ecd6dc60b79"}, - {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2b696699386766ef171a259d72b203a3c75d99d03ec383b97fc2054f52e15cf"}, - {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f409716119fa39b03da3d9602bd9b41142fab7a0568758cd136cd80b1bf36c8"}, - {file = "matplotlib-3.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b8d3f4e71e26307e8c120b72c16671d70c5cd08ae412355c11254aa8254fb87f"}, - {file = "matplotlib-3.5.2-cp38-cp38-win32.whl", hash = "sha256:b6c63cd01cad0ea8704f1fd586e9dc5777ccedcd42f63cbbaa3eae8dd41172a1"}, - {file = "matplotlib-3.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:75c406c527a3aa07638689586343f4b344fcc7ab1f79c396699eb550cd2b91f7"}, - {file = "matplotlib-3.5.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4a44cdfdb9d1b2f18b1e7d315eb3843abb097869cd1ef89cfce6a488cd1b5182"}, - {file = "matplotlib-3.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3d8e129af95b156b41cb3be0d9a7512cc6d73e2b2109f82108f566dbabdbf377"}, - {file = "matplotlib-3.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:364e6bca34edc10a96aa3b1d7cd76eb2eea19a4097198c1b19e89bee47ed5781"}, - {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea75df8e567743207e2b479ba3d8843537be1c146d4b1e3e395319a4e1a77fe9"}, - {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:44c6436868186564450df8fd2fc20ed9daaef5caad699aa04069e87099f9b5a8"}, - {file = "matplotlib-3.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d7705022df2c42bb02937a2a824f4ec3cca915700dd80dc23916af47ff05f1a"}, - {file = "matplotlib-3.5.2-cp39-cp39-win32.whl", hash = "sha256:ee0b8e586ac07f83bb2950717e66cb305e2859baf6f00a9c39cc576e0ce9629c"}, - {file = "matplotlib-3.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:c772264631e5ae61f0bd41313bbe48e1b9bcc95b974033e1118c9caa1a84d5c6"}, - {file = "matplotlib-3.5.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:751d3815b555dcd6187ad35b21736dc12ce6925fc3fa363bbc6dc0f86f16484f"}, - {file = "matplotlib-3.5.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:31fbc2af27ebb820763f077ec7adc79b5a031c2f3f7af446bd7909674cd59460"}, - {file = "matplotlib-3.5.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4fa28ca76ac5c2b2d54bc058b3dad8e22ee85d26d1ee1b116a6fd4d2277b6a04"}, - {file = "matplotlib-3.5.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:24173c23d1bcbaed5bf47b8785d27933a1ac26a5d772200a0f3e0e38f471b001"}, - {file = "matplotlib-3.5.2.tar.gz", hash = "sha256:48cf850ce14fa18067f2d9e0d646763681948487a8080ec0af2686468b4607a2"}, -] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -more-click = [ - {file = "more_click-0.1.1-py3-none-any.whl", hash = "sha256:ff68c7e874fd409ce501903be3177363499aa9c2662607a3b66568f766dea527"}, - {file = "more_click-0.1.1.tar.gz", hash = "sha256:277c64767a6a9c6625ec6bc3e1241012867f6953b2295b2a1e8eeddec586eb53"}, -] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] -numba = [ - {file = "numba-0.55.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:dd05f7c0ce64b6977596aa4e5a44747c6ef414d7989da1c7672337c54381a5ef"}, - {file = "numba-0.55.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e36232eccd172c583b1f021c5c48744c087ae6fc9dc5c5f0dd2cb2286e517bf8"}, - {file = "numba-0.55.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:25410557d0deb1d97397b71e142a36772133986a7dd4fe2935786e2dd149245f"}, - {file = "numba-0.55.2-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:676c081162cc9403706071c1d1d42e479c0741551ab28096ba13859a2e3e9b80"}, - {file = "numba-0.55.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2665ef28e900b3a55bf370daa81c12ebc64cd434116accd60c38a95a159a3182"}, - {file = "numba-0.55.2-cp310-cp310-win32.whl", hash = "sha256:d7ac9ea5feef9536ab8bfbbb3ded1a0617ea8794d7547800d535b7857800f996"}, - {file = "numba-0.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:29b89a68af162acf87adeb8fbf01f6bb1effae4711b28146f95108d82e905624"}, - {file = "numba-0.55.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:6e0f9b5d1c8ea1bdef39b0ad921a9bbf0cc4a88e76d722d756c68f1653787c35"}, - {file = "numba-0.55.2-cp37-cp37m-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:135fb7694928f9f57b4ff5b1be58f20f4771fedd1680636a9affdead96051959"}, - {file = "numba-0.55.2-cp37-cp37m-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:de1f93bd7e2d431451aec20a52ac651a020e98a4ba46797fad860bba338a7e64"}, - {file = "numba-0.55.2-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3eaf53e73e700370163e58257257299ac0d46fea4f244bf5476e4635bc31d808"}, - {file = "numba-0.55.2-cp37-cp37m-win32.whl", hash = "sha256:da4485e0f0b9562f39c78887149b33d13d787aa696553c9257b95575122905ed"}, - {file = "numba-0.55.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5559c6684bf6cce7a22c656d8fef3e7c38ff5fec5153abef5955f6f7cae9f102"}, - {file = "numba-0.55.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a85779adc5234f7857615d1bd2c7b514314521f9f0163c33017707ed9816e6e6"}, - {file = "numba-0.55.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:16a52a0641c342b09b39f6762dcbe3846e44aa9baaaf4703b2ca42a3aee7346f"}, - {file = "numba-0.55.2-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:46715180f87d5a1f3e4077d207ade66c96fc01159f5b7d49cee2d6ffb9e6539f"}, - {file = "numba-0.55.2-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:d1c3cef3289fefb5673ceae32024ab5a8a08d4f4380bcb8348d01f1ba570ccff"}, - {file = "numba-0.55.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:68bb33eaef1d6155fc1ae4fa6c915b8a42e5052c89a58742254eaad072eab118"}, - {file = "numba-0.55.2-cp38-cp38-win32.whl", hash = "sha256:dfddd633141608a09cbce275fb9fe7aa514918625ace20b0e587898a2d93c030"}, - {file = "numba-0.55.2-cp38-cp38-win_amd64.whl", hash = "sha256:a669212aa66ffee4ad778016ac3819add33f9bcb96b4c384d3099531dd175085"}, - {file = "numba-0.55.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:dcde1a1a3a430fb5f83c7e095b0b6ac7adb5595f50a3ee05babb2964f31613c4"}, - {file = "numba-0.55.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69b2e823efa40d32b259f5c094476dde2226b92032f17015d8cd7c10472654ce"}, - {file = "numba-0.55.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:20de0139d2267c8f0e2470d4f88540446cd1bf40de0f29f31b7ab9bf25d49b45"}, - {file = "numba-0.55.2-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:09ff4d690abb05ffbb8a29a96d1cf35b46887a26796d3670de104beeec73d639"}, - {file = "numba-0.55.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1105449247f338e49d63eb04a4aaa5c440bb5435df00f718c8e6e7afad841bb0"}, - {file = "numba-0.55.2-cp39-cp39-win32.whl", hash = "sha256:32649584144c35ced239937ab2c416ab22bbc1490ef8d90609c30fff9f6aa1b8"}, - {file = "numba-0.55.2-cp39-cp39-win_amd64.whl", hash = "sha256:8d5760a1e6a48d98d6b9cf774e4d2a64813d981cca60d7b7356af61195a6ca17"}, - {file = "numba-0.55.2.tar.gz", hash = "sha256:e428d9e11d9ba592849ccc9f7a009003eb7d30612007e365afe743ce7118c6f4"}, -] -numpy = [ - {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25"}, - {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e"}, - {file = "numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6"}, - {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb"}, - {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1"}, - {file = "numpy-1.21.6-cp310-cp310-win32.whl", hash = "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c"}, - {file = "numpy-1.21.6-cp310-cp310-win_amd64.whl", hash = "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f"}, - {file = "numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db"}, - {file = "numpy-1.21.6-cp37-cp37m-win32.whl", hash = "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e"}, - {file = "numpy-1.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4"}, - {file = "numpy-1.21.6-cp38-cp38-win32.whl", hash = "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470"}, - {file = "numpy-1.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b"}, - {file = "numpy-1.21.6-cp39-cp39-win32.whl", hash = "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786"}, - {file = "numpy-1.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3"}, - {file = "numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0"}, - {file = "numpy-1.21.6.zip", hash = "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656"}, -] -packaging = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, -] -pandas = [ - {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"}, -] -pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] -pillow = [ - {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"}, - {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"}, - {file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"}, - {file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"}, - {file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"}, - {file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:408673ed75594933714482501fe97e055a42996087eeca7e5d06e33218d05aa8"}, - {file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:727dd1389bc5cb9827cbd1f9d40d2c2a1a0c9b32dd2261db522d22a604a6eec9"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"}, - {file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"}, - {file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"}, - {file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"}, - {file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"}, - {file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"}, - {file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"}, - {file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"}, - {file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"}, - {file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"}, - {file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"}, - {file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"}, - {file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"}, - {file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"}, - {file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"}, - {file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"}, - {file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"}, - {file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"}, -] -platformdirs = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, -] -pluggy = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] -poetry-core = [ - {file = "poetry-core-1.0.8.tar.gz", hash = "sha256:951fc7c1f8d710a94cb49019ee3742125039fc659675912ea614ac2aa405b118"}, - {file = "poetry_core-1.0.8-py2.py3-none-any.whl", hash = "sha256:54b0fab6f7b313886e547a52f8bf52b8cf43e65b2633c65117f8755289061924"}, -] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] -pyarrow = [ - {file = "pyarrow-8.0.0-cp310-cp310-macosx_10_13_universal2.whl", hash = "sha256:d5ef4372559b191cafe7db8932801eee252bfc35e983304e7d60b6954576a071"}, - {file = "pyarrow-8.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:863be6bad6c53797129610930794a3e797cb7d41c0a30e6794a2ac0e42ce41b8"}, - {file = "pyarrow-8.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:69b043a3fce064ebd9fbae6abc30e885680296e5bd5e6f7353e6a87966cf2ad7"}, - {file = "pyarrow-8.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51e58778fcb8829fca37fbfaea7f208d5ce7ea89ea133dd13d8ce745278ee6f0"}, - {file = "pyarrow-8.0.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:15511ce2f50343f3fd5e9f7c30e4d004da9134e9597e93e9c96c3985928cbe82"}, - {file = "pyarrow-8.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea132067ec712d1b1116a841db1c95861508862b21eddbcafefbce8e4b96b867"}, - {file = "pyarrow-8.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deb400df8f19a90b662babceb6dd12daddda6bb357c216e558b207c0770c7654"}, - {file = "pyarrow-8.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:3bd201af6e01f475f02be88cf1f6ee9856ab98c11d8bbb6f58347c58cd07be00"}, - {file = "pyarrow-8.0.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:78a6ac39cd793582998dac88ab5c1c1dd1e6503df6672f064f33a21937ec1d8d"}, - {file = "pyarrow-8.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d6f1e1040413651819074ef5b500835c6c42e6c446532a1ddef8bc5054e8dba5"}, - {file = "pyarrow-8.0.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c13b2e28a91b0fbf24b483df54a8d7814c074c2623ecef40dce1fa52f6539b"}, - {file = "pyarrow-8.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c97c8e288847e091dfbcdf8ce51160e638346f51919a9e74fe038b2e8aee62"}, - {file = "pyarrow-8.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edad25522ad509e534400d6ab98cf1872d30c31bc5e947712bfd57def7af15bb"}, - {file = "pyarrow-8.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ece333706a94c1221ced8b299042f85fd88b5db802d71be70024433ddf3aecab"}, - {file = "pyarrow-8.0.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:95c7822eb37663e073da9892f3499fe28e84f3464711a3e555e0c5463fd53a19"}, - {file = "pyarrow-8.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25a5f7c7f36df520b0b7363ba9f51c3070799d4b05d587c60c0adaba57763479"}, - {file = "pyarrow-8.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ce64bc1da3109ef5ab9e4c60316945a7239c798098a631358e9ab39f6e5529e9"}, - {file = "pyarrow-8.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:541e7845ce5f27a861eb5b88ee165d931943347eec17b9ff1e308663531c9647"}, - {file = "pyarrow-8.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cd86e04a899bef43e25184f4b934584861d787cf7519851a8c031803d45c6d8"}, - {file = "pyarrow-8.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba2b7aa7efb59156b87987a06f5241932914e4d5bbb74a465306b00a6c808849"}, - {file = "pyarrow-8.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:42b7982301a9ccd06e1dd4fabd2e8e5df74b93ce4c6b87b81eb9e2d86dc79871"}, - {file = "pyarrow-8.0.0-cp39-cp39-macosx_10_13_universal2.whl", hash = "sha256:1dd482ccb07c96188947ad94d7536ab696afde23ad172df8e18944ec79f55055"}, - {file = "pyarrow-8.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:81b87b782a1366279411f7b235deab07c8c016e13f9af9f7c7b0ee564fedcc8f"}, - {file = "pyarrow-8.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03a10daad957970e914920b793f6a49416699e791f4c827927fd4e4d892a5d16"}, - {file = "pyarrow-8.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:65c7f4cc2be195e3db09296d31a654bb6d8786deebcab00f0e2455fd109d7456"}, - {file = "pyarrow-8.0.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3fee786259d986f8c046100ced54d63b0c8c9f7cdb7d1bbe07dc69e0f928141c"}, - {file = "pyarrow-8.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ea2c54e6b5ecd64e8299d2abb40770fe83a718f5ddc3825ddd5cd28e352cce1"}, - {file = "pyarrow-8.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8392b9a1e837230090fe916415ed4c3433b2ddb1a798e3f6438303c70fbabcfc"}, - {file = "pyarrow-8.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:cb06cacc19f3b426681f2f6803cc06ff481e7fe5b3a533b406bc5b2138843d4f"}, - {file = "pyarrow-8.0.0.tar.gz", hash = "sha256:4a18a211ed888f1ac0b0ebcb99e2d9a3e913a481120ee9b1fe33d3fedb945d4e"}, -] -pycodestyle = [ - {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, - {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, -] -pyflakes = [ - {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, - {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, -] -pygments = [ - {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, - {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, -] -pylint = [ - {file = "pylint-2.14.4-py3-none-any.whl", hash = "sha256:89b61867db16eefb7b3c5b84afc94081edaf11544189e2b238154677529ad69f"}, - {file = "pylint-2.14.4.tar.gz", hash = "sha256:47705453aa9dce520e123a7d51843d5f0032cbfa06870f89f00927aa1f735a4a"}, -] -pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, -] -pystow = [ - {file = "pystow-0.4.5-py3-none-any.whl", hash = "sha256:b2ebc9630214d5801039d2cf2bbfd0d2bf249d9aa62b51af4b8f8083db8a296a"}, - {file = "pystow-0.4.5.tar.gz", hash = "sha256:9a5acb705376516ba663c4957d2b1a43a23b3f1df7af52ced4aee7ae2fcd0f1c"}, -] -pytest = [ - {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, - {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, -] -python-dateutil = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] -python-dotenv = [ - {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, - {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, -] -pytz = [ - {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, - {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, -] -requests = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, -] -scikit-learn = [ - {file = "scikit-learn-1.1.1.tar.gz", hash = "sha256:3e77b71e8e644f86c8b5be7f1c285ef597de4c384961389ee3e9ca36c445b256"}, - {file = "scikit_learn-1.1.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:102f51797cd8944bf44a038d106848ddf2804f2c1edf7aea45fba81a4fdc4d80"}, - {file = "scikit_learn-1.1.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:723cdb278b1fa57a55f68945bc4e501a2f12abe82f76e8d21e1806cbdbef6fc5"}, - {file = "scikit_learn-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33cf061ed0b79d647a3e4c3f6c52c412172836718a7cd4d11c1318d083300133"}, - {file = "scikit_learn-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47464c110eaa9ed9d1fe108cb403510878c3d3a40f110618d2a19b2190a3e35c"}, - {file = "scikit_learn-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:542ccd2592fe7ad31f5c85fed3a3deb3e252383960a85e4b49a629353fffaba4"}, - {file = "scikit_learn-1.1.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:3be10d8d325821ca366d4fe7083d87c40768f842f54371a9c908d97c45da16fc"}, - {file = "scikit_learn-1.1.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b2db720e13e697d912a87c1a51194e6fb085dc6d8323caa5ca51369ca6948f78"}, - {file = "scikit_learn-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e851f8874398dcd50d1e174e810e9331563d189356e945b3271c0e19ee6f4d6f"}, - {file = "scikit_learn-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b928869072366dc138762fe0929e7dc88413f8a469aebc6a64adc10a9226180c"}, - {file = "scikit_learn-1.1.1-cp38-cp38-win32.whl", hash = "sha256:e9d228ced1214d67904f26fb820c8abbea12b2889cd4aa8cda20a4ca0ed781c1"}, - {file = "scikit_learn-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:f2d5b5d6e87d482e17696a7bfa03fe9515fdfe27e462a4ad37f3d7774a5e2fd6"}, - {file = "scikit_learn-1.1.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:0403ad13f283e27d43b0ad875f187ec7f5d964903d92d1ed06c51439560ecea0"}, - {file = "scikit_learn-1.1.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8fe80df08f5b9cee5dd008eccc672e543976198d790c07e5337f7dfb67eaac05"}, - {file = "scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ff56d07b9507fbe07ca0f4e5c8f3e171f74a429f998da03e308166251316b34"}, - {file = "scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2dad2bfc502344b869d4a3f4aa7271b2a5f4fe41f7328f404844c51612e2c58"}, - {file = "scikit_learn-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22145b60fef02e597a8e7f061ebc7c51739215f11ce7fcd2ca9af22c31aa9f86"}, - {file = "scikit_learn-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:45c0f6ae523353f1d99b85469d746f9c497410adff5ba8b24423705b6956a86e"}, -] -scipy = [ - {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"}, -] -seaborn = [ - {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, - {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, -] -setuptools-scm = [ - {file = "setuptools_scm-7.0.4-py3-none-any.whl", hash = "sha256:53a6f51451a84d891ca485cec700a802413bbc5e76ee65da134e54c733a6e44d"}, - {file = "setuptools_scm-7.0.4.tar.gz", hash = "sha256:c27bc1f48593cfc9527251f1f0fc41ce282ea57bbc7fd5a1ea3acb99325fab4c"}, -] -shap = [] -six = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] -slicer = [ - {file = "slicer-0.0.7-py3-none-any.whl", hash = "sha256:0b94faa5251c0f23782c03f7b7eedda91d80144059645f452c4bc80fab875976"}, - {file = "slicer-0.0.7.tar.gz", hash = "sha256:f5d5f7b45f98d155b9c0ba6554fa9770c6b26d5793a3e77a1030fb56910ebeec"}, -] -snowballstemmer = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] -sphinx = [ - {file = "Sphinx-5.0.2-py3-none-any.whl", hash = "sha256:d3e57663eed1d7c5c50895d191fdeda0b54ded6f44d5621b50709466c338d1e8"}, - {file = "Sphinx-5.0.2.tar.gz", hash = "sha256:b18e978ea7565720f26019c702cd85c84376e948370f1cd43d60265010e1c7b0"}, -] -sphinx-click = [ - {file = "sphinx-click-4.3.0.tar.gz", hash = "sha256:bd4db5d3c1bec345f07af07b8e28a76cfc5006d997984e38ae246bbf8b9a3b38"}, - {file = "sphinx_click-4.3.0-py3-none-any.whl", hash = "sha256:23e85a3cb0b728a421ea773699f6acadefae171d1a764a51dd8ec5981503ccbe"}, -] -sphinx-rtd-theme = [ - {file = "sphinx_rtd_theme-1.0.0-py2.py3-none-any.whl", hash = "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8"}, - {file = "sphinx_rtd_theme-1.0.0.tar.gz", hash = "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"}, -] -sphinxcontrib-applehelp = [ - {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, - {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, -] -sphinxcontrib-devhelp = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, -] -sphinxcontrib-htmlhelp = [ - {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, - {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, -] -sphinxcontrib-jsmath = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] -sphinxcontrib-qthelp = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, -] -sphinxcontrib-serializinghtml = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, -] -threadpoolctl = [ - {file = "threadpoolctl-3.1.0-py3-none-any.whl", hash = "sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b"}, - {file = "threadpoolctl-3.1.0.tar.gz", hash = "sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] -tomlkit = [ - {file = "tomlkit-0.11.1-py3-none-any.whl", hash = "sha256:1c5bebdf19d5051e2e1de6cf70adfc5948d47221f097fcff7a3ffc91e953eaf5"}, - {file = "tomlkit-0.11.1.tar.gz", hash = "sha256:61901f81ff4017951119cd0d1ed9b7af31c821d6845c8c477587bbdcd5e5854e"}, -] -tox = [ - {file = "tox-3.25.1-py2.py3-none-any.whl", hash = "sha256:c38e15f4733683a9cc0129fba078633e07eb0961f550a010ada879e95fb32632"}, - {file = "tox-3.25.1.tar.gz", hash = "sha256:c138327815f53bc6da4fe56baec5f25f00622ae69ef3fe4e1e385720e22486f9"}, -] -tox-gh-actions = [ - {file = "tox-gh-actions-2.9.1.tar.gz", hash = "sha256:2bbb681eccd3fd3573231a05f7acf228caae1e3f12397b5517b404417ab90aba"}, - {file = "tox_gh_actions-2.9.1-py2.py3-none-any.whl", hash = "sha256:90306a6a04a203e47f861b35dca215fc1f6b7ae80de942a050ace61e2eb2b4ea"}, -] -tox-poetry-installer = [ - {file = "tox-poetry-installer-0.8.4.tar.gz", hash = "sha256:c1d4e25768c127c577c0930dec9a82e107a5c2c3b1ec60b95c88dbd2695ba6aa"}, - {file = "tox_poetry_installer-0.8.4-py3-none-any.whl", hash = "sha256:fb67d78794a5aeedcaf34b0db7440f089076a17400f950665a95eed3d87781d0"}, -] -tox-pyenv = [ - {file = "tox-pyenv-1.1.0.tar.gz", hash = "sha256:916c2213577aec0b3b5452c5bfb32fd077f3a3196f50a81ad57d7ef3fc2599e4"}, - {file = "tox_pyenv-1.1.0-py2.py3-none-any.whl", hash = "sha256:e470c18af115fe52eeff95e7e3cdd0793613eca19709966fc2724b79d55246cb"}, -] -tqdm = [ - {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, - {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, -] -typing-extensions = [ - {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, - {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, -] -typing-inspect = [ - {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, - {file = "typing_inspect-0.7.1-py3-none-any.whl", hash = "sha256:3cd7d4563e997719a710a3bfe7ffb544c6b72069b6812a02e9b414a8fa3aaa6b"}, - {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, -] -urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, -] -virtualenv = [ - {file = "virtualenv-20.15.1-py2.py3-none-any.whl", hash = "sha256:b30aefac647e86af6d82bfc944c556f8f1a9c90427b2fb4e3bfbf338cb82becf"}, - {file = "virtualenv-20.15.1.tar.gz", hash = "sha256:288171134a2ff3bfb1a2f54f119e77cd1b81c29fc1265a2356f3e8d14c7d58c4"}, -] -wrapt = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, -] -zenodo-client = [ - {file = "zenodo_client-0.2.0-py3-none-any.whl", hash = "sha256:d39b2387031ce85839350d88a77230a2ac3f6dde2bec86c0e690c8aebc4b4613"}, - {file = "zenodo_client-0.2.0.tar.gz", hash = "sha256:8d402a0d3e28bff76994f14e7dee70aa6f64cc1b75b1f67da5e9d23357b76a64"}, -] -zipp = [ - {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, - {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, -] +content-hash = "a3cd87b92a3d1f75d13d60de46d0b0960f67869b779f3031932281f14a0be999" diff --git a/poetry.toml b/poetry.toml index 5fcef8cd..08a2d767 100644 --- a/poetry.toml +++ b/poetry.toml @@ -1,3 +1,6 @@ [virtualenvs] in-project = true prefer-active-python = true + +[installer] +no-binary = ["shap"] diff --git a/pyproject.toml b/pyproject.toml index dc58a081..eae44f72 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,17 @@ [tool.poetry] name = "drexml" -version = "0.9.5" -description = "Drug repurposing using machine learning and mechanistic models of signal transduction\"" -authors = ["Carlos Loucera "] +version = "0.9.10" +description = "(DRExM³L) Drug REpurposing using and eXplainable Machine Learning and Mechanistic Models of signal transduction\"" +authors = [ + "Carlos Loucera ", + "Marina Esteban-Medina ", + "Maria Pena-Chilet " + ] license = "MIT" [tool.poetry.dependencies] python = ">=3.8, <3.11" -scikit-learn = "^1.1.1" +scikit-learn = "1.1.1" numpy = "<1.22" scipy = "^1.8.1" pandas = "^1.4.2" @@ -17,6 +21,7 @@ click = "^8" zenodo-client = "^0.2.0" pyarrow = "^8.0.0" shap = {git = "https://github.com/slundberg/shap", rev = "v0.41.0"} +matplotlib = "~3.6" [tool.poetry.dev-dependencies] black = "^22.3.0" @@ -27,11 +32,7 @@ Sphinx = "^5.0.1" sphinx-click = "^4.1.0" sphinx-rtd-theme = "^1.0.0" flake8 = "^4.0.1" -tox = "^3.25.0" -tox-poetry-installer = "^0.8.4" -tox-pyenv = "^1.1.0" flake8-black = "^0.3.3" -tox-gh-actions = "^2.9.1" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/scripts/hord.py b/scripts/hord.py deleted file mode 100644 index f5fcf1e9..00000000 --- a/scripts/hord.py +++ /dev/null @@ -1,414 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" -Author: Carlos Loucera -Author: Maria Pena Chilet -Author: Marina Esteban - -Entry CLI point for HORD multi-task framework. -""" - -import json -import os -import pathlib -import subprocess -import warnings -from pathlib import Path - -import click -import joblib -import matplotlib.pyplot as plt -import pandas as pd -import seaborn as sns -from dotenv import find_dotenv, load_dotenv -from sklearn import metrics -from sklearn.base import clone -from sklearn.model_selection import RepeatedKFold - -from scripts import ml_plots -from drexml.datasets import get_disease_data -from drexml.explain import compute_shap, run_stability -from drexml.models import get_model - - -def warn(*args, **kwargs): - pass - - -warnings.warn = warn - -dotenv_filepath = find_dotenv() -load_dotenv(dotenv_filepath) -project_path = os.path.dirname(dotenv_filepath) - -warnings.filterwarnings("ignore", category=DeprecationWarning, module="sklearn") - - -@click.command() -@click.option("--disease", type=click.Path(exists=True), help="Experiment path.") -@click.option("--n-iters", default=100, help="Number of Optimization iterations.") -@click.option( - "--gpu/--no-gpu", is_flag=True, default=True, help="Flag to use CUDA-enabled GPUs." -) -@click.option("--n-jobs", default=-1, help="Number of jobs, -1 uses all devices.") -@click.option("--debug", is_flag=True, default=False, help="Flag to run in debug mode.") -@click.version_option("1.0.0") -def hord(disease, n_iters, gpu, n_jobs, debug): - print( - "Working on disease {} {} {} {} {}".format(disease, n_iters, gpu, n_jobs, debug) - ) - - run_(disease, n_iters, gpu, n_jobs, debug) - - print(get_out_path(disease, n_iters, gpu, n_jobs, debug)) - - -def get_out_path(disease, n_iters, gpu, n_jobs, debug): - """Construct the path where the model must be saved. - - Returns - ------- - pathlib.Path - The desired path. - """ - - env_possible = Path(disease) - - if env_possible.exists() and (env_possible.suffix == ".env"): - print("Working with experiment {}".format(env_possible.parent.name)) - out_path = env_possible.parent.joinpath("ml") - else: - raise NotImplementedError("Use experiment") - if debug: - out_path.joinpath("debug") - out_path.mkdir(parents=True, exist_ok=True) - print("Storage folder: {}".format(out_path)) - - return out_path - - -def get_data(disease, debug, scale=True): - """Load disease data and metadata.""" - gene_xpr, pathvals, circuits, genes = get_disease_data(disease) - - if scale: - from sklearn.preprocessing import MinMaxScaler - - pathvals = pd.DataFrame( - MinMaxScaler().fit_transform(pathvals), - columns=pathvals.columns, - index=pathvals.index, - ) - - print(gene_xpr.shape, pathvals.shape) - - if debug: - size = 100 - gene_xpr = gene_xpr.iloc[:size, :] - pathvals = pathvals.iloc[:size, :] - - return gene_xpr, pathvals, circuits, genes - - -def run_(disease, n_iters, gpu, n_jobs, debug): - """Full model training, with hyperparametr optimization, unbiased CV - performance estimation and relevance computation. - """ - - output_folder = get_out_path(disease, n_iters, gpu, n_jobs, debug) - data_folder = output_folder.joinpath("tmp") - data_folder.mkdir(parents=True, exist_ok=True) - - # Load data - gene_xpr, pathvals, circuits, genes = get_data(disease, debug) - joblib.dump(gene_xpr, data_folder.joinpath("features.jbl")) - joblib.dump(pathvals, data_folder.joinpath("target.jbl")) - - n_features = gene_xpr.shape[1] - - # Get ML model - estimator = get_model(n_features, n_jobs, debug) - - # fs, cv = build_shap_fs(estimator, gene_xpr, pathvals, output_folder, gpu) - cmd = [ - "python", - "drexml/explain.py", - data_folder.as_posix(), - str(n_iters), - str(int(gpu)), - str(n_jobs), - str(int(debug)), - ] - subprocess.Popen(cmd).wait() - # from drexml.explain2 import run_gpu - # fs, cv = run_gpu(data_folder, n_iters, gpu, n_jobs, debug) - fs = joblib.load(data_folder.joinpath("fs.jbl")) - cv = joblib.load(data_folder.joinpath("cv.jbl")) - stability_results, stab_res_df = run_stability( - estimator, gene_xpr, pathvals, cv, fs, n_jobs, alpha=0.05 - ) - # Save results - stability_results_fname = "stability_results.json" - stability_results_fpath = output_folder.joinpath(stability_results_fname) - with open(stability_results_fpath, "w") as fjson: - json.dump(stability_results, fjson, indent=4) - print("Stability results saved to: {}".format(stability_results_fpath)) - print(stability_results["stability_score"]) - print(stability_results["stability_error"]) - - # Compute shap relevances - shap_summary, fs = compute_shap(estimator, gene_xpr, pathvals, gpu) - - # Save results - shap_summary_fname = "shap_summary.tsv" - shap_summary_fpath = output_folder.joinpath(shap_summary_fname) - shap_summary.to_csv(shap_summary_fpath, sep="\t") - print("Shap summary results saved to: {}".format(shap_summary_fpath)) - - # Save results - fs_fname = "shap_selection.tsv" - fs_fpath = output_folder.joinpath(fs_fname) - fs.to_csv(fs_fpath, sep="\t") - print("Shap selection results saved to: {}".format(fs_fpath)) - - # CV with optimal hyperparameters (unbiased performance) - genes_selected = fs.any(axis=0).index - features = gene_xpr.loc[:, genes_selected] - rf_params = {"max_features": 1.0} - estimator.set_params(**rf_params) - cv_stats = perform_cv(features, pathvals, estimator, debug) - - # Save results - stats_fname = "cv_stats.pkl" - stats_fpath = output_folder.joinpath(stats_fname) - with open(stats_fpath, "wb") as f: - joblib.dump(cv_stats, f) - print("Unbiased CV stats saved to: {}".format(stats_fpath)) - - tsv_stability_results_fname = "performance_stability_results.tsv" - tsv_res_results_fpath = output_folder.joinpath(tsv_stability_results_fname) - - cvmo = pd.DataFrame(cv_stats["r2_mo"]["test"], columns=pathvals.columns) - cvmo = cvmo.describe().T[["mean", "std", "25%", "75%"]] - cvmo.columns = "r2_cv_" + cvmo.columns - cvmap = pd.DataFrame(cv_stats["r2_ua"]["test"]) - cvmap = cvmap.describe().T[["mean", "std", "25%", "75%"]] - cvmap.columns = "r2_cv_" + cvmap.columns - cvmap.index = ["map"] - cv_df = pd.concat((cvmap, cvmo), axis=0) - stab_res_df = pd.concat((stab_res_df, cv_df), axis=1) - - stab_res_df.to_csv(tsv_res_results_fpath, sep="\t") - circuit_dict = ml_plots.get_circuit_dict() - ml_plots.convert_frame_ids( - tsv_stability_results_fname, output_folder, circuit_dict, frame=stab_res_df - ) - - plot(output_folder, features.columns, pathvals.columns, cv_stats) - - -def perform_cv(X, y, model, debug, n_jobs=-1): - """Unbiased performance estimation. - - Parameters - ---------- - X : array-like, shape = (n_samples, n_features) - Test samples. For some estimators this may be a - precomputed kernel matrix instead, shape = (n_samples, - n_samples_fitted], where n_samples_fitted is the number of - samples used in the fitting for the estimator. - y : (n_samples, n_outputs) - True values for X. - estimator : scikit-learn estimator. - The model to test its performance. - seed : int - Random seed. - tissue : array-like, [n_samples, ] - A categorical variable to use for CV stratification. - - Returns - ------- - dict - A dictionary with per fold regression stats. - """ - - stats = { - "evs_mo": {"train": [], "test": []}, - "evs_ua": {"train": [], "test": []}, - "mae_mo": {"train": [], "test": []}, - "mae_ua": {"train": [], "test": []}, - "mse_mo": {"train": [], "test": []}, - "mse_ua": {"train": [], "test": []}, - "msle_mo": {"train": [], "test": []}, - "msle_ua": {"train": [], "test": []}, - "r2_mo": {"train": [], "test": []}, - "r2_ua": {"train": [], "test": []}, - "relevance": [], - } - - n_repeats = 5 if debug else 10 - n_splits = 2 if debug else 10 - skf = RepeatedKFold(n_splits=n_splits, n_repeats=n_repeats, random_state=0) - - iter_ = 0 - for train_index, test_index in skf.split(X): - iter_ = iter_ + 1 - print("RepeatedKFold iteration {}. ".format(iter_)) - - X_train, X_test = X.iloc[train_index, :], X.iloc[test_index, :] - y_train, y_test = y.iloc[train_index, :], y.iloc[test_index, :] - - estimator = clone(model) - with joblib.parallel_backend("multiprocessing", n_jobs=n_jobs): - estimator.fit(X_train, y_train) - - y_train_hat = estimator.predict(X_train) - y_test_hat = estimator.predict(X_test) - - # metrics computation - - # Explained variance - - evs_mo_train = metrics.explained_variance_score( - y_train, y_train_hat, multioutput="raw_values" - ) - stats["evs_mo"]["train"].append(evs_mo_train) - - evs_mo_test = metrics.explained_variance_score( - y_test, y_test_hat, multioutput="raw_values" - ) - stats["evs_mo"]["test"].append(evs_mo_test) - - evs_ua_train = metrics.explained_variance_score( - y_train, y_train_hat, multioutput="uniform_average" - ) - stats["evs_ua"]["train"].append(evs_ua_train) - - evs_ua_test = metrics.explained_variance_score( - y_test, y_test_hat, multioutput="uniform_average" - ) - stats["evs_ua"]["test"].append(evs_ua_test) - - # MAE - - mae_mo_train = metrics.mean_absolute_error( - y_train, y_train_hat, multioutput="raw_values" - ) - stats["mae_mo"]["train"].append(mae_mo_train) - - mae_mo_test = metrics.mean_absolute_error( - y_test, y_test_hat, multioutput="raw_values" - ) - stats["mae_mo"]["test"].append(mae_mo_test) - - mae_ua_train = metrics.mean_absolute_error( - y_train, y_train_hat, multioutput="uniform_average" - ) - stats["mae_ua"]["train"].append(mae_ua_train) - - mae_ua_test = metrics.mean_absolute_error( - y_test, y_test_hat, multioutput="uniform_average" - ) - stats["mae_ua"]["test"].append(mae_ua_test) - - # MSE - - mse_mo_train = metrics.mean_squared_error( - y_train, y_train_hat, multioutput="raw_values" - ) - stats["mse_mo"]["train"].append(mse_mo_train) - - mse_mo_test = metrics.mean_squared_error( - y_test, y_test_hat, multioutput="raw_values" - ) - stats["mse_mo"]["test"].append(mse_mo_test) - - mse_ua_train = metrics.mean_squared_error( - y_train, y_train_hat, multioutput="uniform_average" - ) - stats["mse_ua"]["train"].append(mse_ua_train) - - mse_ua_test = metrics.mean_squared_error( - y_test, y_test_hat, multioutput="uniform_average" - ) - stats["mse_ua"]["test"].append(mse_ua_test) - - # MSLE - - msle_mo_train = metrics.mean_squared_log_error( - y_train, y_train_hat, multioutput="raw_values" - ) - stats["msle_mo"]["train"].append(msle_mo_train) - - msle_mo_test = metrics.mean_squared_log_error( - y_test, y_test_hat, multioutput="raw_values" - ) - stats["msle_mo"]["test"].append(msle_mo_test) - - msle_ua_train = metrics.mean_squared_log_error( - y_train, y_train_hat, multioutput="uniform_average" - ) - stats["msle_ua"]["train"].append(msle_ua_train) - - msle_ua_test = metrics.mean_squared_log_error( - y_test, y_test_hat, multioutput="uniform_average" - ) - stats["msle_ua"]["test"].append(msle_ua_test) - - # r2 - - r2_mo_train = metrics.r2_score(y_train, y_train_hat, multioutput="raw_values") - stats["r2_mo"]["train"].append(r2_mo_train) - - r2_mo_test = metrics.r2_score(y_test, y_test_hat, multioutput="raw_values") - stats["r2_mo"]["test"].append(r2_mo_test) - - r2_ua_train = metrics.r2_score( - y_train, y_train_hat, multioutput="uniform_average" - ) - stats["r2_ua"]["train"].append(r2_ua_train) - - r2_ua_test = metrics.r2_score(y_test, y_test_hat, multioutput="uniform_average") - stats["r2_ua"]["test"].append(r2_ua_test) - - if hasattr(estimator, "feature_importances_"): - stats["relevance"].append(estimator.feature_importances_) - if hasattr(estimator, "coef_"): - stats["relevance"].append(estimator.coef_) - - return stats - - -def plot(results_path, gene_ids, circuit_ids, cv_stats): - # _, folder, use_task, use_circuit_dict = sys.argv - - plt.style.use("fivethirtyeight") - sns.set_context("paper") - results_path = pathlib.Path(results_path) - - # load data - rel_cv = ml_plots.get_rel_cv(cv_stats, gene_ids) - cut = ml_plots.get_cut_point(rel_cv) - gene_symbols_dict = ml_plots.get_symbol_dict() - circuit_dict = ml_plots.get_circuit_dict() - - ## Median relevance - for use_symb_dict in [True, False]: - ml_plots.plot_median(rel_cv, use_symb_dict, gene_symbols_dict, results_path) - - ml_plots.save_median_df(rel_cv, cut, gene_symbols_dict, results_path) - - ## Relevance distribution - for symb_dict in [None, gene_symbols_dict]: - ml_plots.plot_relevance_distribution(rel_cv, cut, symb_dict, results_path) - - ## ML stats - ml_plots.plot_stats(cv_stats, circuit_ids, circuit_dict, results_path) - - for fname in ["shap_summary.tsv", "shap_selection.tsv"]: - ml_plots.convert_frame_ids(fname, results_path, circuit_dict, gene_symbols_dict) - - -if __name__ == "__main__": - # pylint: disable=no-value-for-parameter - hord() diff --git a/scripts/hord.sbatch b/scripts/hord.sbatch deleted file mode 100644 index 4483183c..00000000 --- a/scripts/hord.sbatch +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -#SBATCH --export=ALL -#SBATCH --mail-user=carlos.loucera@juntadeandalucia.es -#SBATCH --mail-type=ALL -#SBATCH --nodes=1 -#SBATCH --ntasks=24 -#SBATCH --mem=0 -#SBATCH -o fanconi_jobs/%j.out # Standard output -#SBATCH -e fanconi_jobs/%j.err # Standard error - - -# module load anaconda2 -# conda activate holrd - -module load python/3.7.3 -module load python373-matplotlib -module load python373-pandas -module load python373-scikit-learn -module load python373-scipy -module load python373-pyarrow -module load python373-shap -module load python373-xlrd -module load python373-xlwt - -source ~/.pyenv/holrd/bin/activate - -# Avoid multithreading issues while computing relevances with SHAP. -OMP_NUM_THREADS=1 - -if [[ -z "${PATHWAY2}" && -z "${PATHWAY1}" ]]; -then - python hord.py --disease ${DISEASE} --mlmodel ${MLMODEL} --opt ${OPT} --seed ${SEED} --mode ${MODE} --gset ${GSET} -elif [ -z "${PATHWAY2}" ]; -then - python hord.py --disease ${DISEASE} --mlmodel ${MLMODEL} --opt ${OPT} --seed ${SEED} --mode ${MODE} --pathways ${PATHWAY1} --gset ${GSET} -else - python hord.py --disease ${DISEASE} --mlmodel ${MLMODEL} --opt ${OPT} --seed ${SEED} --mode ${MODE} --pathways ${PATHWAY1} --pathways ${PATHWAY2} --gset ${GSET} -fi diff --git a/scripts/hord.sh b/scripts/hord.sh deleted file mode 100644 index 609e5543..00000000 --- a/scripts/hord.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env bash -BATCH_FILE="hord.sbatch" -DISEASE="fanconi" -MLMODEL="morf" -OPT="hyperopt" -SEED=42 -MODE="train" -PATHWAY1="hsa03460m" -PATHWAY2="hsa04110" - -# Read .env file -export $(egrep -v '^#' .env | xargs) - - -run_() { - # name, gset, pathway1, pathway2 - - if [[ -z "$2" && -z "$3" ]]; - then - NAME="all" - elif [ -z "$3" ]; - then - NAME=$2 - else - NAME="$2_$3" - fi - - echo "${NAME}" - - OUT_FOLDER="${OUT_PATH}/${DISEASE}/${NAME}/$1/${MLMODEL}/${OPT}/${MODE}/${SEED}" - mkdir -p ${OUT_FOLDER} - - git archive -o code_snapshot.tar.gz HEAD - gunzip -f code_snapshot.tar.gz - tar -uf code_snapshot.tar .env - gzip code_snapshot.tar - mv code_snapshot.tar.gz "${OUT_FOLDER}/code_snapshot.tar.gz" - echo "Code snapshot saved to ${OUT_FOLDER}" - JOB_NAME="hord_${DISEASE}_${MODE}_${NAME}_$1" - - if [[ -z "$2" && -z "$3" ]]; - then - sbatch -J ${JOB_NAME} --export=DISEASE=${DISEASE},MLMODEL=${MLMODEL},OPT=${OPT},SEED=${SEED},MODE=${MODE},GSET=$1 ${BATCH_FILE} - elif [[ -z "$3" ]]; - then - sbatch -J ${JOB_NAME} --export=DISEASE=${DISEASE},MLMODEL=${MLMODEL},OPT=${OPT},SEED=${SEED},MODE=${MODE},PATHWAY1=$2,GSET=$1 ${BATCH_FILE} - else - sbatch -J ${JOB_NAME} --export=DISEASE=${DISEASE},MLMODEL=${MLMODEL},OPT=${OPT},SEED=${SEED},MODE=${MODE},PATHWAY1=$2,PATHWAY2=$3,GSET=$1 ${BATCH_FILE} - fi -} - - -#################### -## All genes -#################### - -GSET="all" -run_ $GSET - -GSET="all" -run_ $GSET $PATHWAY1 - -GSET="all" -run_ $GSET $PATHWAY1 $PATHWAY2 - -#################### -## Target genes -#################### - -GSET="target" -run_ $GSET - -GSET="target" -run_ $GSET $PATHWAY1 - -GSET="target" -run_ $GSET $PATHWAY1 $PATHWAY2 diff --git a/scripts/hord_experiment.sbatch b/scripts/hord_experiment.sbatch deleted file mode 100644 index 070a1fde..00000000 --- a/scripts/hord_experiment.sbatch +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -#SBATCH --export=ALL -#SBATCH --mail-user=carlos.loucera@juntadeandalucia.es -#SBATCH --mail-type=ALL -#SBATCH --mem=100g -#SBATCH -N 1 -#SBATCH -n 24 -#SBATCH -J drexml_24_50 -#SBATCH -e drexml_24_50.err -#SBATCH -o drexml_24_50.out - -module load anaconda2 -conda activate ./.venv -export PYTHONPATH="${PYTHONPATH}:$(pwd)" - -EXPERIMENT_PATH="/home/cloucera/projects/drexml/data/46,XY_complete_gonadal_dysgenesis/experiment.env" -python hord.py --n-jobs 24 --no-gpu --disease ${EXPERIMENT_PATH} diff --git a/scripts/hord_experiment.sh b/scripts/hord_experiment.sh deleted file mode 100644 index a8aad3ad..00000000 --- a/scripts/hord_experiment.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash -BATCH_FILE="hord_experiment.sbatch" -MLMODEL="morf" -OPT="hyperopt" -SEED=42 - -MODE=$2 -EXPERIMENT_ENV_FILE=$1 -EXPERIMENT_DIR="$(dirname "${EXPERIMENT_ENV_FILE}")" -EXPERIMENT="$(basename "$EXPERIMENT_DIR")" -parentdir="$(dirname "${EXPERIMENT_DIR}")" -DISEASE="$(basename "$parentdir")" - -OUT_FOLDER="${EXPERIMENT_DIR}/ml/${MLMODEL}_${MODE}" - -# Read .env file -export $(egrep -v '^#' .env | xargs) - -mkdir -p ${OUT_FOLDER} - -git archive -o code_snapshot.tar.gz HEAD -gunzip -f code_snapshot.tar.gz -tar -uf code_snapshot.tar .env -gzip code_snapshot.tar -mv code_snapshot.tar.gz "${OUT_FOLDER}/code_snapshot.tar.gz" -echo "Code snapshot saved to ${OUT_FOLDER}" -JOB_NAME="hord_${DISEASE}_${EXPERIMENT}_${MODE}" -ERR_FILE="${OUT_FOLDER}/${JOB_NAME}.err" -OUT_FILE="${OUT_FOLDER}/${JOB_NAME}.out" - -if [ $LOCAL -eq 1 ] ; then - # local - python hord.py --disease ${EXPERIMENT_ENV_FILE} --mlmodel ${MLMODEL} --opt ${OPT} --seed ${SEED} --mode ${MODE} -else - sbatch -J ${JOB_NAME} -n ${NUM_CPUS} -e ${ERR_FILE} -o ${OUT_FILE} --export=EXPERIMENT_ENV_FILE=${EXPERIMENT_ENV_FILE},MLMODEL=${MLMODEL},OPT=${OPT},SEED=${SEED},MODE=${MODE} ${BATCH_FILE} -fi diff --git a/scripts/hord_local.sh b/scripts/hord_local.sh deleted file mode 100644 index fc458a27..00000000 --- a/scripts/hord_local.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env bash -BATCH_FILE="hord.sbatch" -DISEASE="fanconi" -MLMODEL="morf" -OPT="hyperopt" -SEED=42 -MODE="test" -PATHWAY1="hsa03460m" -PATHWAY2="hsa04110" - -export $(egrep -v '^#' .env | xargs) - -run_() { - - if [[ -z "$2" && -z "$3" ]]; - then - NAME="all" - elif [ -z "$3" ]; - then - NAME=$2 - else - NAME="$2_$3" - fi - - echo "${NAME}" - - # name, gset, pathway1, pathway2 - OUT_FOLDER="${OUT_PATH}/${DISEASE}/${NAME}/$1/${MLMODEL}/${OPT}/${MODE}/${SEED}" - mkdir -p ${OUT_FOLDER} - git archive -o code_snapshot.zip HEAD - zip -rv code_snapshot.zip .env - mv code_snapshot.zip "${OUT_FOLDER}/code_snapshot.zip" - echo "Code snapshot saved to ${OUT_FOLDER}" - JOB_NAME="hord_${DISEASE}_${MODE}_${NAME}_$1" - - if [[ -z "$2" && -z "$3" ]]; - then - python hord.py --disease ${DISEASE} --mlmodel ${MLMODEL} --opt ${OPT} --seed ${SEED} --mode ${MODE} --gset $1 - elif [[ -z "$3" ]]; - then - python hord.py --disease ${DISEASE} --mlmodel ${MLMODEL} --opt ${OPT} --seed ${SEED} --mode ${MODE} --pathways $2 --gset $1 - else - python hord.py --disease ${DISEASE} --mlmodel ${MLMODEL} --opt ${OPT} --seed ${SEED} --mode ${MODE} --pathways $2 --pathways $3 --gset $1 - fi -} - -GSET="all" -run_ $GSET - -GSET="all" -run_ $GSET $PATHWAY1 - -GSET="all" -run_ $GSET $PATHWAY1 $PATHWAY2 - -#################### -## Target genes -#################### - -GSET="target" -run_ $GSET - -GSET="target" -run_ $GSET $PATHWAY1 - -GSET="target" -run_ $GSET $PATHWAY1 $PATHWAY2 diff --git a/scripts/learn.py b/scripts/learn.py deleted file mode 100644 index c02189b9..00000000 --- a/scripts/learn.py +++ /dev/null @@ -1,354 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" -Author: Carlos Loucera -Author: Maria Pena Chilet -Author: Marina Esteban - -Learning module for HORD multi-task framework. -""" - -import json -from pathlib import Path - -import joblib -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd -from hpsklearn import HyperoptEstimator, random_forest_regression -from hyperopt import tpe -from sklearn.base import BaseEstimator, RegressorMixin -from sklearn.ensemble import RandomForestRegressor -from sklearn.utils.validation import check_is_fitted, check_X_y - - -def plot_feature_importances( - clf, - X_train, - y_train=None, - top_n=10, - figsize=(8, 8), - print_table=False, - title="Feature Importances", -): - """Plot feature importances of a tree-based sklearn estimator. - - Parameters - ---------- - clf : scikit-learn estimator - ML model, if not fitted the method tries to fit the model to the given - data. - X_train : DataFrame - Train features. - y_train : array like, shape [n_saples,] or [n_samples, n_tasks] - Training targets, by default None - top_n : int, optional - Maximum number of features to plot (in descending order of importance), - by default 10 - figsize : tuple, optional - Figure size, by default (8, 8) - print_table : bool, optional - Print relevance Data Frame, by default False - title : str, optional - Figure title, by default "Feature Importances" - - Returns - ------- - DataFrame, shape [n_features, 1] - Relevance DataFrame. - - Raises - ------ - AttributeError - An error is raised if the estimator lacks a feature_importances_ - attribute. - """ - - try: - if not hasattr(clf, "feature_importances_"): - clf.fit(X_train.values, y_train.values.ravel()) - - if not hasattr(clf, "feature_importances_"): - raise AttributeError( - "{} does not have feature_importances_ attribute".format( - clf.__class__.__name__ - ) - ) - - except ValueError: - clf.fit(X_train.values, y_train.values.ravel()) - - feat_imp = pd.DataFrame({"importance": clf.feature_importances_}) - feat_imp["feature"] = X_train.columns - feat_imp.sort_values(by="importance", ascending=False, inplace=True) - feat_imp = feat_imp.iloc[:top_n] - - feat_imp.sort_values(by="importance", inplace=True) - feat_imp = feat_imp.set_index("feature", drop=True) - feat_imp.plot.barh(title=title, figsize=figsize) - plt.xlabel("Feature Importance Score") - plt.show() - - if print_table: - from IPython.display import display - - print("Top {} features in descending order of importance".format(top_n)) - display(feat_imp.sort_values(by="importance", ascending=False)) - - return feat_imp - - -class AutoMorf(BaseEstimator, RegressorMixin): - """Automated Multi Output Random Forest. Multi task learning class via - Random Forest with only one set of hyperparameters which are automagically - tunned with either Tree-structured Parzen Estimator (TPE) or Bayesian - Optimization (BO). - """ - - def __init__( - self, - name, - framework="hyperopt", - n_jobs=1, - cv=10, - n_calls=100, - copy_X_train=True, - random_state=42, - ): - self.name = name - self.framework = framework - self.n_jobs = n_jobs - self.copy_X_train = (copy_X_train,) - self.random_state = random_state - self.cv = cv - self.n_calls = n_calls - self.opt = None - self.best_model = None - - def fit(self, X, y=None): - """Fit estimator. - - A suitable set of hyperparameters is found via either Tree-structured - Parzen Estimator (TPE) or Bayesian Optimization (BO). - - Parameters - ---------- - X : array-like or sparse matrix, shape=(n_samples, n_features) - The input samples. Use ``dtype=np.float32`` for maximum - efficiency. Sparse matrices are also supported, use sparse - ``csc_matrix`` for maximum efficiency. - y : array-like, [n_samples, n_outputs] - The target (continuous) values for regression. - - Returns - ------- - self : object - """ - - # validate X, y - X, y = check_X_y(X, y, multi_output=True, y_numeric=True) - - self.fit_(X, y) - - def fit_(self, X, y): - """Select the optimization method basen on the `framework` arguments and - fit the model to data. - - """ - if self.framework == "hyperopt": - self.fit_hyperopt(X, y) - - self.best_model.fit(X, y) - self.best_model.copy_X_train = self.copy_X_train - self.best_model.cv = self.cv - - self.best_model.X_train_ = np.copy(X) if self.copy_X_train else X - self.best_model.y_train_ = np.copy(y) if self.copy_X_train else y - - self.X_train_ = self.best_model.X_train_ - self.y_train_ = self.best_model.X_train_ - - def fit_hyperopt(self, X, y): - """Tree-structured Parzen Estimator (TPE)-based hyperparameter search.""" - estimator = random_forest_regression( - self.name, n_jobs=self.n_jobs, random_state=self.random_state - ) - - self.opt = HyperoptEstimator( - regressor=estimator, - algo=tpe.suggest, - max_evals=self.n_calls, - trial_timeout=None, - seed=self.random_state, - ) - - self.opt.fit(X, y) - - self.opt.cv = self.cv - self.opt.n_calls = self.n_calls - - self.best_model = self.opt.best_model()["learner"] - - def predict(self, X): - """Predict multiple regression targets for X. - - The predicted regression target of an input sample is computed as the - mean predicted regression targets of the trees in the forest. - - Parameters - ---------- - X : array-like or sparse matrix of shape = [n_samples, n_features] - The input samples. Internally, its dtype will be converted to - ``dtype=np.float32``. If a sparse matrix is provided, it will be - converted into a sparse ``csr_matrix``. - - Returns - ------- - y : [n_samples, n_outputs] - The predicted values. - """ - return self.best_model.predict(X) - - def score(self, X, y): - """Returns the coefficient of determination R^2 of the prediction. - The coefficient R^2 is defined as (1 - u/v), where u is the residual - sum of squares ((y_true - y_pred) ** 2).sum() and v is the total - sum of squares ((y_true - y_true.mean()) ** 2).sum(). - The best possible score is 1.0 and it can be negative (because the - model can be arbitrarily worse). A constant model that always - predicts the expected value of y, disregarding the input features, - would get a R^2 score of 0.0. - Parameters - ---------- - X : array-like, shape = (n_samples, n_features) - Test samples. For some estimators this may be a - precomputed kernel matrix instead, shape = (n_samples, - n_samples_fitted], where n_samples_fitted is the number of - samples used in the fitting for the estimator. - y : (n_samples, n_outputs) - True values for X. - - Returns - ------- - score : float - R^2 of self.predict(X) wrt. y. - """ - return self.best_model.score(X, y) - - @property - def feature_importances_(self): - """Return the feature importances (the higher, the more important the - feature). - Returns - ------- - feature_importances_ : array, shape = [n_features] - """ - - check_is_fitted(self.best_model, "estimators_") - - return self.best_model.feature_importances_ - - def save(self, out, fmt="json"): - """Save the model to specified folder. - - Due to serialization limitations the saved model is split into - two separte files: one file is used for the best estimator while the - other file is used for the (resumable) optimization history. - - Parameters - ---------- - out : str, pathlib.Path, or file object. - The path where the model must be stored in '.gz' format. - """ - out = self.get_output_folder(out) - if fmt == "json": - json_fname = "model_hyperparameters.json" - json_fpath = out.joinpath(json_fname) - model_hp = self.best_model.get_params() - with open(json_fpath, "w") as fjson: - json.dump(model_hp, fjson, indent=4) - else: - opt_path = out.joinpath(self.get_opt_fname(self.name)) - if self.framework == "hyperopt": - joblib.dump(self.opt, opt_path) - estimator_path = out.joinpath(self.get_estimator_fname(self.name)) - joblib.dump(self.best_model, estimator_path) - - @classmethod - def load(cls, out, name): - """Alternative AutoMorf cosntruction method. Load an stored AutoMorf - model. - - Parameters - ---------- - out : str, pathlib.Path, or file object. - The path where the model is stored. - name : str - Model name. - - Returns - ------- - AutoMorf instance. - A fitted AutoMorf model. - """ - out = cls.get_output_folder(out) - # load ML model - estimator_path = out.joinpath(cls.get_estimator_fname(name)) - with open(estimator_path, "rb") as f: - estimator = joblib.load(f) - - # load optimization result - opt_path = out.joinpath(cls.get_opt_fname(name)) - - if "hyperopt" in name: - with open(opt_path, "rb") as f: - opt = joblib.load(f) - - bomorf = AutoMorf( - name, - n_jobs=estimator.n_jobs, - cv=opt.cv, - n_calls=opt.n_calls, - copy_X_train=estimator.copy_X_train, - random_state=estimator.random_state, - ) - bomorf.best_model = estimator - bomorf.opt = opt - - return bomorf - - @staticmethod - def build_model_from_sko(opt, n_jobs=1, random_state=42): - """Parse a scikit-optimization history file to construct the - scikit-learn estimator. - """ - hyperparameters = { - "max_depth": opt.x[0], - "max_features": opt.x[1], - "min_samples_split": opt.x[2], - "min_samples_leaf": opt.x[3], - "n_estimators": opt.x[4], - } - - model = RandomForestRegressor( - n_jobs=n_jobs, random_state=random_state, **hyperparameters - ) - - return model - - @staticmethod - def get_opt_fname(name): - """Construct the optimization history file name.""" - return "{}_opt.pkl".format(name) - - @staticmethod - def get_estimator_fname(name): - """Construct the estimator file name.""" - return "{}_estimator.pkl".format(name) - - @staticmethod - def get_output_folder(out): - """Pathlib check and conversion of output folder.""" - if out: - out = Path(out) - return out diff --git a/scripts/ml_plots.py b/scripts/ml_plots.py deleted file mode 100644 index dcd30645..00000000 --- a/scripts/ml_plots.py +++ /dev/null @@ -1,204 +0,0 @@ -import pathlib - -import dotenv -import joblib -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd -import seaborn as sns - -dotenv_filepath = dotenv.find_dotenv() -project_path = pathlib.Path(dotenv_filepath).parent -resources_folder = project_path.joinpath("resources") -exts = ["pdf", "png", "eps", "svg"] - - -def get_symbol_dict(): - fname = "entrez_sym-table.tsv" - fpath = resources_folder.joinpath(fname) - - gene_names = pd.read_csv(fpath, sep="\t", dtype={"entrez": str}) - gene_names.set_index("entrez", drop=True, inplace=True) - - gene_symbols_dict = gene_names.to_dict()["symbol"] - - return gene_symbols_dict - - -def get_circuit_dict(): - fname = "circuit_names.tsv" - fpath = resources_folder.joinpath(fname) - circuit_names = pd.read_csv( - fpath, sep="\t", index_col=0, header=None, names=["NAME"] - ) - circuit_names.index = circuit_names.index.str.replace(r"-| ", ".") - - return circuit_names["NAME"].to_dict() - - -def plot_median(rel_cv, use_symb, symb_dict, pdir, extensions=exts): - - name = "median" - if use_symb: - name = f"{name}_symbol" - df_plot = rel_cv.rename(columns=symb_dict).copy() - else: - name = f"{name}_entrez" - df_plot = rel_cv.copy() - - df_plot = df_plot.median().sort_values(ascending=False) - cut = get_cut_point(rel_cv) - - plt.figure() - df_plot.plot(figsize=(16, 9), rot=90) - plt.axhline(cut, color="k", linestyle="--") - fnz = np.nonzero(df_plot.values.ravel() < cut)[0][0] - 1 - plt.axvline(fnz, color="k", linestyle="--") - plt.xlabel("Gene") - plt.ylabel("Median Relevance") - plt.tight_layout() - for ext in extensions: - fname = f"{name}.{ext}" - fpath = pdir.joinpath(fname) - plt.savefig(fpath, dpi=300, bbox_inches="tight", pad_inches=0) - - -def plot_task_distribution(target, pdir, pdict, extensions=exts): - name = "task_distribution" - df_plot = target.apply(np.log1p).rename(columns=pdict) - - plt.figure() - df_plot.plot(kind="box", figsize=(16, 9)) - plt.tight_layout() - for ext in extensions: - fname = f"{name}.{ext}" - fpath = pdir.joinpath(fname) - plt.savefig(fpath, dpi=300, bbox_inches="tight", pad_inches=0) - - -def get_shap_relevance(results_path): - fname = "shap_values_task_relevance.tsv" - fpath = results_path.joinpath(fname) - task_rel = pd.read_csv(fpath, sep="\t", index_col=0) - - return task_rel - - -def get_cv_stats(results_path): - fname = "cv_stats.pkl" - fpath = results_path.joinpath(results_path, fname) - cv_stats = joblib.load(fpath) - - return cv_stats - - -def get_rel_cv(cv_stats, gene_ids): - rel_cv = pd.DataFrame(cv_stats["relevance"], columns=gene_ids) - - return rel_cv - - -def get_cut_point(rel_cv): - return rel_cv.median().mean() + 0.1 * rel_cv.median().std() - - -def save_median_df(rel_cv, cut, symbol_dict, results_path): - entrez_list = rel_cv.median().index.values.ravel() - symbol_list = [ - symbol_dict[entrez] if entrez in symbol_dict.keys() else None - for entrez in entrez_list - ] - is_selected = (rel_cv.median() > cut).values.ravel() - median_rel = rel_cv.median().values.ravel() - - sel = pd.DataFrame( - { - "entrez": entrez_list, - "symbol": symbol_list, - "is_selected": is_selected, - "median_rel": median_rel, - } - ) - - sel.sort_values(by="median_rel", ascending=False, inplace=True) - sel.to_csv(results_path.joinpath("median_relevance" + ".csv"), index=False) - - -def plot_relevance_distribution(rel_cv, cut, symb_dict, pdir, extensions=exts): - sns.set_theme(context="paper", style="whitegrid") - query_top = rel_cv.columns[rel_cv.median() > cut] - to_plot = rel_cv.loc[:, query_top].copy() - to_plot = to_plot.loc[:, to_plot.median().sort_values(ascending=False).index] - - if symb_dict is not None: - to_plot.rename(columns=symb_dict, inplace=True) - n_genes = to_plot.shape[1] - - # sns.set_context("poster") - fig, ax = plt.subplots(1, 1) - # def set_size(fig): - # fig.set_size_inches(6, 3) - # plt.tight_layout() - figsize_x = 1.0 if n_genes < 90 else 1.2 - to_plot = to_plot.melt() - sns.boxplot(x="variable", y="value", data=to_plot, color="lightgray", ax=ax) - # ax = to_plot.plot(kind="box", rot=90, color="lightgray") - ax.set_ylabel("Relevance", fontsize=12) - ax.set_xlabel("Gene", fontsize=12) - ax.set_xticklabels(ax.get_xticklabels(), rotation=90) - # set_size(fig) - sns.despine() - # g.fig.set_size_inches(6, 3) - fig.set_size_inches(6, 3) - plt.tight_layout() - - name = "cv_relevance_distribution" - if symb_dict is None: - name = f"{name}_entrez" - else: - name = f"{name}_symbol" - - for ext in extensions: - fname = f"{name}.{ext}" - fpath = pdir.joinpath(fname) - fig.savefig(fpath, dpi=300, bbox_inches="tight", pad_inches=0.05) - plt.close() - - -def plot_stats(cv_stats, circuit_ids, circuit_dict, pdir, extensions=exts): - stat = "r2_mo" - sns.set_theme(context="paper", style="whitegrid") - - d = pd.DataFrame(cv_stats[stat]["test"], columns=circuit_ids) - d = d.rename(columns=circuit_dict) - n_circuits = d.shape[1] - d = d.melt(value_name="score", var_name="Circuit") - figsize_y = int((20 * n_circuits) / 150) - plt.figure(figsize=(8, figsize_y)) - g = sns.boxplot(x="score", y="Circuit", data=d, color="lightgray") - g.set_xlabel("10 times 10-fold $R^{2}$ Cross-Validation Distribution", fontsize=12) - g.set_ylabel("Circuit", fontsize=12) - sns.despine(left=True, bottom=True) - - name = f"{stat}_cv_performance_distribution" - for ext in extensions: - fname = f"{name}.{ext}" - fpath = pdir.joinpath(fname) - plt.savefig(fpath, dpi=300, bbox_inches="tight", pad_inches=0) - - -def convert_frame_ids( - fname, results_path, circuit_dict, gene_symbols_dict=None, frame=None -): - fpath = results_path.joinpath(fname) - if frame is None: - frame = pd.read_csv(fpath, sep="\t", index_col=0) - frame = frame.rename(index=circuit_dict) - if gene_symbols_dict is not None: - frame = frame.rename(columns=gene_symbols_dict) - - fname_out = fname.replace(".tsv", "_symbol.tsv") - fpath_out = results_path.joinpath(fname_out) - frame.to_csv(fpath_out, sep="\t") - - return frame diff --git a/scripts/plot.sbatch b/scripts/plot.sbatch deleted file mode 100644 index b7ddaee7..00000000 --- a/scripts/plot.sbatch +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -#SBATCH --export=ALL -#SBATCH --mail-user=carlos.loucera@juntadeandalucia.es -#SBATCH --mail-type=ALL -#SBATCH --mem=10G -#SBATCH -c 1 - - -module load anaconda2 -conda activate ./.venv - -python drexml/ml_plots.py $MLPATH 0 0 diff --git a/scripts/plot.sh b/scripts/plot.sh deleted file mode 100755 index 64d204b3..00000000 --- a/scripts/plot.sh +++ /dev/null @@ -1,31 +0,0 @@ -# BASE="/mnt/lustre/scratch/CBRA/research/projects/holrd/experiments/" -BASE="/home/cloucera/results/hord/experiments/" - -declare -a DISEASES -# DISEASES=("ALB" "EVC" "H" "RP" "WS") -# DISEASES=("COV2") -DISEASES=("Osteogenesis_Imperfecta_Extended" "covid_shap_sign" "Osteogenesis_Imperfecta_Reduced") -declare -a EXPERIMENTS -# EXPERIMENTS=("AT" "AT_C") -EXPERIMENTS=("AT") - -## now loop through the above array -for DISEASE in "${DISEASES[@]}" -do - for EXPERIMENT in "${EXPERIMENTS[@]}" - do - JOBNAME="plot_${DISEASE}_${EXPERIMENT}" - MLPATH=$BASE/${DISEASE}/${EXPERIMENT}/ml/morf_train - ERRPATH=$MLPATH/$JOBNAME.err - OUTPATH=$MLPATH/$JOBNAME.out - bkdate=$(date '+%Y-%m-%d-%H-%M') - bkpath="$MLPATH/bk/$bkdate" - mkdir -p $bkpath - mv $MLPATH/*.png $bkpath - mv $MLPATH/*.eps $bkpath - mv $MLPATH/*.pdf $bkpath - mv $MLPATH/*.svg $bkpath - sbatch -e $ERRPATH -o $OUTPATH -J ${JOBNAME} --export=MLPATH=$MLPATH plot.sbatch - done - # or do whatever with individual element of the array -done diff --git a/scripts/renamer.py b/scripts/renamer.py deleted file mode 100644 index a7896ad0..00000000 --- a/scripts/renamer.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -import pathlib -from drexml.utils import convert_names -import sys -import pandas as pd - - -if __name__ == "__main__": - _, folder = sys.argv - folder = pathlib.Path(folder) - - for path in folder.rglob("shap_selection.tsv"): - dataset = pd.read_csv(path, sep="\t", index_col=0) - path_out = path.absolute().parent.joinpath(f"{path.stem}_symbol.tsv") - dataset_out = convert_names(dataset, ["circuits", "genes"], axis=[0, 1]) - dataset_out.to_csv(path_out, sep="\t", index_label="circuit_name") - - for path in folder.rglob("shap_summary.tsv"): - dataset = pd.read_csv(path, sep="\t", index_col=0) - path_out = path.absolute().parent.joinpath(f"{path.stem}_symbol.tsv") - dataset_out = convert_names(dataset, ["circuits", "genes"], axis=[0, 1]) - dataset_out.to_csv(path_out, sep="\t", index_label="circuit_name") - - for path in folder.rglob("stability_results.tsv"): - dataset = pd.read_csv(path, sep="\t", index_col=0) - path_out = path.absolute().parent.joinpath(f"{path.stem}_symbol.tsv") - dataset_out = convert_names(dataset, ["circuits"], axis=[0]) - dataset_out.to_csv(path_out, sep="\t", index_label="circuit_name") diff --git a/scripts/run.sh b/scripts/run.sh deleted file mode 100755 index 3be0ac86..00000000 --- a/scripts/run.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -# some weird conda init things (cluster and gpu server issues) -source ~/.bashrc - -DATA_PATH="$1" -conda activate ./.venv -export PYTHONPATH="${PYTHONPATH}:$(pwd)" -echo $( which python ) - -DISEASE_LIST=$(find ${DATA_PATH} -mindepth 1 -maxdepth 1 -type d | sort) -echo $DISEASE_LIST -DISEASES_DONE_FPATH="${DATA_PATH}/diseases_done.txt" -#rm ${DISEASES_DONE_FPATH} -#touch ${DISEASES_DONE_FPATH} - -for DISEASE_FOLDER in ${DISEASE_LIST}; do - echo $DISEASE_FOLDER - DISEASE=$(basename ${DISEASE_FOLDER}) - is_disease_done=$( grep "${DISEASE}" "${DISEASES_DONE_FPATH}" ) - if [ -n "${is_disease_done}" ]; then - echo "${DISEASE} already done" - else - echo "Begin disease ${DISEASE}" - #DISEASE_FOLDER="${DATA_PATH}/results/${DISEASE}" - EXPERIMENT_PATH="${DISEASE_FOLDER}/experiment.env" - echo "Experiment $EXPERIMENT_PATH" - ML_FOLDER="${DISEASE_FOLDER}/ml" - TMP_FOLDER="${ML_FOLDER}/tmp" - rm -rf "${DISEASE_FOLDER}/ml" - mkdir -p "${TMP_FOLDER}" - out_path="${ML_FOLDER}/out.log" - err_path="${ML_FOLDER}/err.log" - - STARTTIME=$(date +%s) - - python hord.py --n-jobs 110 --gpu --disease ${EXPERIMENT_PATH} > ${out_path} 2> ${err_path} - - ENDTIME=$(date +%s) - - t=$(($ENDTIME - $STARTTIME)) - - echo "End disease ${DISEASE} in ${t} s" - echo "End disease ${DISEASE} in ${t} s" >> ${out_path} - echo "End disease ${DISEASE} in ${t} s" >> ${DISEASES_DONE_FPATH} - sleep 1m - fi -done diff --git a/scripts/run_explainer.py b/scripts/run_explainer.py deleted file mode 100644 index 4e003447..00000000 --- a/scripts/run_explainer.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" -Entry CLI point for stab. -""" - -import multiprocessing -import time - -import joblib -import numpy as np -import shap -from sklearn.model_selection import train_test_split - -from drexml.explain import compute_shap_fs, compute_shap_relevance, compute_shap_values_ -from drexml.models import get_model -from drexml.utils import parse_stab - -if __name__ == "__main__": - import sys - - data_folder, n_iters, n_gpus, n_cpus, n_splits, debug = parse_stab(sys.argv) - - queue = multiprocessing.Queue() - - n_devices = n_gpus if n_gpus > 0 else n_cpus - use_gpu = n_gpus > 0 - print(use_gpu, n_gpus, n_devices) - fs_lst = [] - data_path = data_folder - - for gpu_ids in range(n_devices): - queue.put(gpu_ids) - - features_orig_fpath = data_folder.joinpath("features.jbl") - features_orig = joblib.load(features_orig_fpath) - - targets_orig_fpath = data_folder.joinpath("target.jbl") - targets_orig = joblib.load(targets_orig_fpath) - - n_features = features_orig.shape[1] - n_targets = targets_orig.shape[1] - - this_model = get_model(n_features, n_targets, n_cpus, debug, n_iters) - - X_learn, X_val, Y_learn, Y_val = train_test_split( - features_orig, targets_orig, test_size=0.3, random_state=42 - ) - - this_model.fit(X_learn, Y_learn) - - chunk_size = len(X_val) // (n_devices) + 1 - - def runner(explainer, new, check_add): - - gpu_id = queue.get() - # explainer = shap.GPUTreeExplainer(estimator, background) - values = compute_shap_values_(new, explainer, check_add, gpu_id) - queue.put(gpu_id) - - return values - - if use_gpu: - this_explainer = shap.GPUTreeExplainer(this_model, X_learn) - else: - this_explainer = shap.TreeExplainer(this_model, X_learn) - - # bkg = shap.sample(features_learn, nsamples=1000, random_state=42) - t = time.time() - with joblib.parallel_backend("multiprocessing", n_jobs=n_devices): - shap_values = joblib.Parallel()( - joblib.delayed(runner)( - explainer=this_explainer, - new=gb, - check_add=True, - ) - for _, gb in X_val.groupby(np.arange(len(X_val)) // chunk_size) - ) - - # shape: (n_tasks, n_samples, n_features) - shap_values = np.concatenate(shap_values, axis=1) - elapsed = time.time() - t - print(f"time {elapsed}") - - shap_summary = compute_shap_relevance(shap_values, X_val, Y_val) - fs_df = compute_shap_fs( - shap_summary, model=this_model, X=X_val, Y=Y_val, q="r2", by_circuit=True - ) - fs_df = fs_df * 1 - - # Save results - shap_summary_fname = "shap_summary.tsv" - shap_summary_fpath = data_folder.joinpath(shap_summary_fname) - shap_summary.to_csv(shap_summary_fpath, sep="\t") - print(f"Shap summary results saved to: {shap_summary_fpath}") - - # Save results - fs_fname = "shap_selection.tsv" - fs_fpath = data_folder.joinpath(fs_fname) - fs_df.to_csv(fs_fpath, sep="\t") - print(f"Shap selection results saved to: {fs_fpath}") diff --git a/scripts/run_hord.sh b/scripts/run_hord.sh deleted file mode 100755 index 5c763421..00000000 --- a/scripts/run_hord.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -# some weird conda init things (cluster and gpu server issues) -source ~/.bashrc -# read and export .env -EXPERIMENT_PATH=$1 -export $(egrep -v '^#' .env | xargs) -conda activate ./.venv -export PYTHONPATH="${PYTHONPATH}:$(pwd)" -export CUDA_VISIBLE_DEVICES=0,1,2,3 -export OMP_NUM_THREADS=1 -STARTTIME=$(date +%s) -parentdir="$(dirname "${EXPERIMENT_PATH}")" -parentdir="${parentdir}/ml" -rm -rf ${parentdir} -mkdir -p ${parentdir} -out_path="${parentdir}/out.log" -err_path="${parentdir}/err.log" - - -python hord.py --n-jobs 100 --gpu --disease ${EXPERIMENT_PATH} > ${out_path} 2> ${err_path} -#python src/explain.py data/experiments/RP_2021/ml/tmp/ 100 1 33 1 - -ENDTIME=$(date +%s) - -t=$(($ENDTIME - $STARTTIME)) - -echo "End disease ${DISEASE} in ${t} s" >> ${out_path} - diff --git a/scripts/test_gpu.py b/scripts/test_gpu.py deleted file mode 100644 index d5f5fe00..00000000 --- a/scripts/test_gpu.py +++ /dev/null @@ -1,27 +0,0 @@ -from sklearn.ensemble import RandomForestRegressor - -import numpy as np -import shap - -# simulate some binary data and a linear outcome with an interaction term -# note we make the features in X perfectly independent of each other to make -# it easy to solve for the exact SHAP values -N = 2000 -X = np.zeros((N,5)) -X[:1000,0] = 1 -X[:500,1] = 1 -X[1000:1500,1] = 1 -X[:250,2] = 1 -X[500:750,2] = 1 -X[1000:1250,2] = 1 -X[1500:1750,2] = 1 -X[:,0:3] -= 0.5 -y = 2*X[:,0] - 3*X[:,1] - -# train a model with single tree -model = RandomForestRegressor(n_estimators=1000).fit(X, y) -print("Model error =", np.linalg.norm(y-model.predict(X))) - -# make sure the SHAP values add up to marginal predictions -explainer = shap.GPUTreeExplainer(model) -shap_values = explainer.shap_values(X) diff --git a/tests/test_datasets.py b/tests/test_datasets.py index 4807d113..a8fd2464 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -15,6 +15,7 @@ from drexml.datasets import get_disease_data, load_df from drexml.utils import check_gputree_availability +PLOTTING_EXTENSIONS = ["pdf", "png"] N_GPU_LST = [-1, 0] if check_gputree_availability() else [0] DATA_NAMES = [ @@ -99,7 +100,7 @@ def test_cli_run(n_gpus): click.echo("Running CLI tests fro DREXML.") disease_path = make_disease_path(use_default=False, one=True) - ml_folder_expected = disease_path.parent.joinpath("ml") + ml_folder_expected = disease_path.parent.joinpath("results") opts = ["run", "--debug", f"--n-gpus {n_gpus}", f"{disease_path.as_posix()}"] click.echo(" ".join(opts)) @@ -107,8 +108,36 @@ def test_cli_run(n_gpus): runner.invoke(main, " ".join(opts)) exist_files = [ - ml_folder_expected.joinpath(fname).exists() + ml_folder_expected.joinpath(fname) for fname in ["stability_results.tsv", "shap_selection.tsv", "shap_summary.tsv"] ] - assert all(exist_files) + assert all([x.exists() for x in exist_files]) + + renamed_files = [ + ml_folder_expected.joinpath(f"{x.stem}_symbol.tsv") for x in exist_files + ] + + opts = ["rename", f"{ml_folder_expected.as_posix()}"] + click.echo(" ".join(opts)) + runner = CliRunner() + runner.invoke(main, " ".join(opts)) + + assert all([x.exists() for x in renamed_files]) + + plot_files = [ + ml_folder_expected.joinpath(f"{x.stem}_symbol.png") + for ext in PLOTTING_EXTENSIONS + for x in exist_files + if "stability" in x.stem + ] + + opts = [ + "plot", + ml_folder_expected.joinpath("stability_results_symbol.tsv").as_posix(), + ] + click.echo(" ".join(opts)) + runner = CliRunner() + runner.invoke(main, " ".join(opts)) + + assert all([x.exists() for x in plot_files]) diff --git a/tests/test_models.py b/tests/test_models.py index 4864c717..6cf7a90d 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -2,9 +2,16 @@ """ Unit testing for datasets module. """ +import warnings + import numpy as np import pytest -from shap.utils import safe_isinstance + +with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", module="shap", message="IPython could not be loaded!" + ) + import shap from drexml.models import get_model @@ -22,4 +29,4 @@ def test_model_hp(debug): model = get_model(n_features, n_targets, n_jobs, debug) - assert safe_isinstance(model, "sklearn.ensemble.RandomForestRegressor") + assert shap.utils.safe_isinstance(model, "sklearn.ensemble.RandomForestRegressor") diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 3d4ac586..00000000 --- a/tox.ini +++ /dev/null @@ -1,31 +0,0 @@ -[tox] -envlist = py38,py39,py310 -isolated_build = true - -[gh-actions] -python = - 3.8: py38 - 3.9: py39 - 3.10: py310 - -[flake8] -# Recommend matching the black line length (default 88), -# rather than using the flake8 default of 79: -max-line-length = 88 -extend-ignore = - # See https://github.com/PyCQA/pycodestyle/issues/373 - E203, - -[testenv] -description = Linting, checking syntax and running tests -whitelist_externals = poetry -require_locked_deps = true -install_dev_deps = true -commands = - poetry install - poetry run isort wl tests - poetry run black drexml tests - poetry run flake8 --select BLK drexml - poetry run pylint --rcfile=.pylintrc drexml - poetry run pytest -v - \ No newline at end of file