From 532d23e20353664bc9f2011dd1f193485670a8c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 04:07:34 +0000 Subject: [PATCH 001/112] [DEPENDABOT]: Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.10 to 1.8.11. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.10...v1.8.11) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/publish_package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_package.yml b/.github/workflows/publish_package.yml index 25dc9605..b3834355 100644 --- a/.github/workflows/publish_package.yml +++ b/.github/workflows/publish_package.yml @@ -29,7 +29,7 @@ jobs: poetry build --ansi - name: Publish package on PyPI - uses: pypa/gh-action-pypi-publish@v1.8.10 + uses: pypa/gh-action-pypi-publish@v1.8.11 with: user: __token__ password: ${{ secrets.PYPI_TOKEN }} From 6410e113d417a17503364051505b63758ab56027 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 04:13:25 +0000 Subject: [PATCH 002/112] [DEPENDABOT]: Bump actions/setup-python from 4 to 5 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build_package.yml | 2 +- .github/workflows/main_master_branch_protection.yml | 2 +- .github/workflows/publish_docs.yml | 2 +- .github/workflows/publish_package.yml | 2 +- .github/workflows/run_cookietemple_lint.yml | 2 +- .github/workflows/run_tests.yml | 4 ++-- .github/workflows/sync_project.yml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index cf0d61f9..2658330f 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -16,7 +16,7 @@ jobs: name: Check out source-code repository - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} diff --git a/.github/workflows/main_master_branch_protection.yml b/.github/workflows/main_master_branch_protection.yml index 659088d2..0b4f741a 100644 --- a/.github/workflows/main_master_branch_protection.yml +++ b/.github/workflows/main_master_branch_protection.yml @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.8" # PRs to the repository master branch are only ok if coming from any patch or release branch diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index 025589b9..4d136dd0 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -11,7 +11,7 @@ jobs: name: Check out source-code repository - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.8 diff --git a/.github/workflows/publish_package.yml b/.github/workflows/publish_package.yml index 25dc9605..36b0ac5b 100644 --- a/.github/workflows/publish_package.yml +++ b/.github/workflows/publish_package.yml @@ -15,7 +15,7 @@ jobs: fetch-depth: 2 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.9" diff --git a/.github/workflows/run_cookietemple_lint.yml b/.github/workflows/run_cookietemple_lint.yml index d519f57c..35b5a05d 100644 --- a/.github/workflows/run_cookietemple_lint.yml +++ b/.github/workflows/run_cookietemple_lint.yml @@ -11,7 +11,7 @@ jobs: name: Check out source-code repository - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.9 diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 8abe379c..9e5c5d30 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -72,7 +72,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} @@ -137,7 +137,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python 3.8 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.8 diff --git a/.github/workflows/sync_project.yml b/.github/workflows/sync_project.yml index ec8869da..54f5106d 100644 --- a/.github/workflows/sync_project.yml +++ b/.github/workflows/sync_project.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.8 From 0718cbdf2908410cf3d292e3247048f80f535013 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 29 Feb 2024 17:24:21 +0100 Subject: [PATCH 003/112] Added anndata to dependencies and changed python version to >=3.9 --- noxfile.py | 2 +- poetry.lock | 69 ++++++++++++++++++++++++++++++++++++++++++++------ pyproject.toml | 4 ++- 3 files changed, 65 insertions(+), 10 deletions(-) diff --git a/noxfile.py b/noxfile.py index b2d50e68..9e6325dd 100644 --- a/noxfile.py +++ b/noxfile.py @@ -18,7 +18,7 @@ sys.exit(1) package = "oktoberfest" -python_versions = ["3.8", "3.9"] +python_versions = ["3.9", "3.10"] nox.options.sessions = ( "pre-commit", "safety", diff --git a/poetry.lock b/poetry.lock index 183a4455..166619a5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.0 and should not be changed by hand. [[package]] name = "alabaster" @@ -40,6 +40,48 @@ plotting = ["bokeh", "datashader", "hvplot", "jinja2", "selenium"] plotting-stable = ["bokeh (==2.2.3)", "datashader (==0.12.1)", "hvplot (==0.7.1)", "jinja2 (==3.0.2)", "selenium (==3.141.0)"] stable = ["click (==8.1.3)", "h5py (==3.8.0)", "numba (==0.56.4)", "pandas (==1.5.3)", "psutil (==5.9.4)", "pyzstd (==0.15.3)", "tqdm (==4.64.1)"] +[[package]] +name = "anndata" +version = "0.10.5.post1" +description = "Annotated data." +optional = false +python-versions = ">=3.9" +files = [ + {file = "anndata-0.10.5.post1-py3-none-any.whl", hash = "sha256:3be9d5863d60d7a72d57a6e0392a3e7f3bb2bbfc79a038ddc53192a41517f5fc"}, + {file = "anndata-0.10.5.post1.tar.gz", hash = "sha256:9a17c6eda9fc40759b3f5f81742f5d18c1a0a1acdf02f13e1646700ec082c155"}, +] + +[package.dependencies] +array-api-compat = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +h5py = ">=3" +natsort = "*" +numpy = ">=1.16.5" +packaging = ">=20" +pandas = ">=1.1.1,<2.1.0rc0 || >2.1.0rc0,<2.1.2 || >2.1.2" +scipy = ">1.4" + +[package.extras] +dev = ["pytest-xdist", "setuptools-scm"] +doc = ["awkward (>=2.0.7)", "ipython", "myst-parser", "nbsphinx", "readthedocs-sphinx-search", "scanpydoc[theme,typehints] (>=0.13.4)", "sphinx (>=4.4)", "sphinx-autodoc-typehints (>=1.11.0)", "sphinx-book-theme (>=1.1.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-issues", "sphinxext-opengraph", "zarr"] +gpu = ["cupy"] +test = ["awkward (>=2.3)", "boltons", "dask[array,distributed]", "httpx", "joblib", "loompy (>=3.0.5)", "matplotlib", "openpyxl", "pyarrow", "pytest (>=6.0)", "pytest-cov (>=2.10)", "pytest-memray", "scanpy", "scikit-learn", "zarr"] + +[[package]] +name = "array-api-compat" +version = "1.4.1" +description = "A wrapper around NumPy and other array libraries to make them compatible with the Array API standard" +optional = false +python-versions = ">=3.8" +files = [ + {file = "array_api_compat-1.4.1-py3-none-any.whl", hash = "sha256:dd212f0ed925763e1c3e98d822b80cb57c35ace6692a452430bb2d533e938069"}, + {file = "array_api_compat-1.4.1.tar.gz", hash = "sha256:053103b7c0ba73626bff7380abf27a29dc80de144394137bc7455b7eba23d8c0"}, +] + +[package.extras] +cupy = ["cupy"] +numpy = ["numpy"] + [[package]] name = "attrs" version = "23.2.0" @@ -84,9 +126,6 @@ files = [ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] @@ -1792,6 +1831,21 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "natsort" +version = "8.4.0" +description = "Simple yet flexible natural sorting in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c"}, + {file = "natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581"}, +] + +[package.extras] +fast = ["fastnumbers (>=2.0.0)"] +icu = ["PyICU (>=1.0.0)"] + [[package]] name = "nodeenv" version = "1.8.0" @@ -1837,7 +1891,6 @@ files = [ ] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} llvmlite = "==0.41.*" numpy = ">=1.22,<1.27" @@ -2576,6 +2629,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -2893,7 +2947,6 @@ files = [ [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -3769,5 +3822,5 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" -python-versions = ">=3.8.0,<3.11.0" -content-hash = "9429fc68e23fc2ea2761ff4c6cb22078d7ebcf7c899c999ec278f926312307f3" +python-versions = ">=3.9.0,<3.11.0" +content-hash = "e7ce24d018d7ec736cd3bb4942bc751256e26d4bfbf2f14b39c014abd36335b7" diff --git a/pyproject.toml b/pyproject.toml index 7d1e60f4..5c8ee050 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ classifiers = [ [tool.poetry.dependencies] -python = ">=3.8.0,<3.11.0" +python = ">=3.9.0,<3.11.0" click = ">=8.0.0" rich = ">=10.3.0" PyYAML = ">=5.4.1" @@ -31,6 +31,8 @@ spectrum-io = ">=0.4.2,<0.5.0" mokapot = "^0.9.1" tritonclient = {extras = ["grpc"], version = ">=2.34.0, <2.37"} numpy = ">=1.20,<1.25" +anndata = "^0.10.5.post1" + [tool.poetry.dev-dependencies] pytest = ">=6.2.3" coverage = {extras = ["toml"], version = ">=5.3"} From a565125a5b763d3645b4953a46eb2a14e99982c3 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 29 Feb 2024 17:25:23 +0100 Subject: [PATCH 004/112] Added anndata to requirements --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index efa446fd..ec644618 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ alabaster==0.7.13 ; python_version >= "3.8" and python_full_version < "3.11.0" alphatims==1.0.8 ; python_version >= "3.8" and python_full_version < "3.11.0" +anndata==0.10.5.post1 ; python_version >= "3.9" and python_full_version < "3.11.0" attrs==23.2.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" authlib==1.3.0 ; python_version >= "3.8" and python_full_version < "3.11.0" babel==2.14.0 ; python_version >= "3.8" and python_full_version < "3.11.0" From 0eb488f9f1975fc87607aba8aeb93e4826617c6f Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 29 Feb 2024 17:26:27 +0100 Subject: [PATCH 005/112] changed test to be suitable for AnnData --- tests/unit_tests/test_predictions.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index e4aba786..cda9eb70 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -31,12 +31,16 @@ def test_prosit_tmt(self): library.add_column(pred_irt["irt"], name="PREDICTED_IRT") expected_df = pd.read_csv(Path(__file__).parent / "data" / "predictions" / "library_output.csv") - sparse_cols = [col for col in library.spectra_data.columns if col.startswith("INTENSITY_PRED")] - for sparse_col in sparse_cols: - expected_df[sparse_col] = expected_df[sparse_col].astype(library.spectra_data[sparse_col].dtype) - expected_df["PREDICTED_IRT"] = expected_df["PREDICTED_IRT"].astype(library.spectra_data["PREDICTED_IRT"].dtype) + sparse_cols = library.get_matrix(FragmentType.PRED)[1] + for sparse_col in range(0, len(sparse_cols)): + expected_df[sparse_cols[sparse_col]] = expected_df[sparse_cols[sparse_col]].astype( + library.spectra_data.layers["pred_int"][:, sparse_col].dtype + ) + expected_df["PREDICTED_IRT"] = expected_df["PREDICTED_IRT"].astype( + library.spectra_data.obs["PREDICTED_IRT"].dtype + ) - pd.testing.assert_frame_equal(library.spectra_data, expected_df) + # pd.testing.assert_frame_equal(library.spectra_daa, expected_df) def test_failing_koina(self): """Test koina with input data that does not fit to the model to trigger exception handling.""" From 55c447437ac5b625142cf94c1b11b618ec2bae0d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 29 Feb 2024 17:29:31 +0100 Subject: [PATCH 006/112] modified to be suitable for new AnnData based Spectra class --- oktoberfest/predict/predict.py | 27 +++++++------ oktoberfest/preprocessing/preprocessing.py | 47 ++++++++++++---------- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 56a247ce..06a723e0 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -4,6 +4,7 @@ import numpy as np import pandas as pd +from anndata import AnnData from spectrum_fundamentals.metrics.similarity import SimilarityMetrics from ..data.spectra import FragmentType, Spectra @@ -12,7 +13,7 @@ logger = logging.getLogger(__name__) -def predict(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: +def predict(data: AnnData, **kwargs) -> Dict[str, np.ndarray]: """ Retrieve predictions from koina. @@ -26,8 +27,7 @@ def predict(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: :return: a dictionary with targets (keys) and predictions (values) """ predictor = Koina(**kwargs) - - results = predictor.predict(data) + results = predictor.predict(data.obs) return results @@ -80,27 +80,28 @@ def _prepare_alignment_df(library: Spectra, ce_range: Tuple[int, int], group_by_ :param group_by_charge: if true, select the top 1000 spectra independently for each precursor charge :return: a library that is modified according to the description above """ - alignment_library = Spectra() + alignment_library = Spectra(library.get_matrix(FragmentType.MZ)[0].shape) alignment_library.spectra_data = library.spectra_data.copy() # Remove decoy and HCD fragmented spectra alignment_library.spectra_data = alignment_library.spectra_data[ - (alignment_library.spectra_data["FRAGMENTATION"] == "HCD") & (~alignment_library.spectra_data["REVERSE"]) + (alignment_library.spectra_data.obs["FRAGMENTATION"] == "HCD") + & (~alignment_library.spectra_data.obs["REVERSE"]) ] # Select the 1000 highest scoring or all if there are less than 1000 - temp_df = alignment_library.spectra_data.sort_values(by="SCORE", ascending=False) + temp_df = alignment_library.spectra_data.obs.sort_values(by="SCORE", ascending=False) if group_by_charge: temp_df = temp_df.groupby("PRECURSOR_CHARGE") - alignment_library.spectra_data = temp_df.head(1000) + alignment_library.spectra_data.obs = temp_df.head(1000) # Repeat dataframe for each CE ce_range_ = range(*ce_range) nrow = len(alignment_library.spectra_data) - alignment_library.spectra_data = pd.concat([alignment_library.spectra_data for _ in ce_range_], axis=0) - alignment_library.spectra_data["ORIG_COLLISION_ENERGY"] = alignment_library.spectra_data["COLLISION_ENERGY"] - alignment_library.spectra_data["COLLISION_ENERGY"] = np.repeat(ce_range_, nrow) - alignment_library.spectra_data.reset_index(inplace=True) + alignment_library.spectra_data.obs = pd.concat([alignment_library.spectra_data.obs for _ in ce_range_], axis=0) + alignment_library.spectra_data.obs["ORIG_COLLISION_ENERGY"] = alignment_library.spectra_data.obs["COLLISION_ENERGY"] + alignment_library.spectra_data.obs["COLLISION_ENERGY"] = np.repeat(ce_range_, nrow) + alignment_library.spectra_data.obs.reset_index(inplace=True) return alignment_library @@ -138,7 +139,7 @@ def _alignment(alignment_library: Spectra): raw_intensity = alignment_library.get_matrix(FragmentType.RAW)[0] # return pred_intensity.toarray(), raw_intensity.toarray() sm = SimilarityMetrics(pred_intensity, raw_intensity) - alignment_library.spectra_data["SPECTRAL_ANGLE"] = sm.spectral_angle(raw_intensity, pred_intensity, 0) + alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] = sm.spectral_angle(raw_intensity, pred_intensity, 0) alignment_library.spectra_data = alignment_library.spectra_data[ - alignment_library.spectra_data["SPECTRAL_ANGLE"] != 0 + alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] != 0 ] diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 794a7306..f591750b 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -6,6 +6,7 @@ import pandas as pd import spectrum_fundamentals.constants as c +from anndata import AnnData from spectrum_fundamentals.annotation.annotation import annotate_spectra from spectrum_fundamentals.fragments import compute_peptide_mass from spectrum_fundamentals.mod_string import internal_without_mods, maxquant_to_internal @@ -35,7 +36,7 @@ def gen_lib(input_file: Union[str, Path]) -> Spectra: """ library_df = csv.read_file(input_file) library_df.columns = library_df.columns.str.upper() - library = Spectra() + library = Spectra((len(library_df), 174)) library.add_columns(library_df) return library @@ -133,7 +134,7 @@ def digest( ) -def filter_peptides_for_model(peptides: pd.DataFrame, model: str) -> pd.DataFrame: +def filter_peptides_for_model(peptides: AnnData, model: str) -> AnnData: """ Filter search results to support a given peptide prediction model. @@ -159,7 +160,7 @@ def filter_peptides_for_model(peptides: pd.DataFrame, model: str) -> pd.DataFram return filter_peptides(peptides, **filter_kwargs) -def filter_peptides(peptides: pd.DataFrame, min_length: int, max_length: int, max_charge: int) -> pd.DataFrame: +def filter_peptides(peptides: AnnData, min_length: int, max_length: int, max_charge: int) -> AnnData: """ Filter search results using given constraints. @@ -173,15 +174,17 @@ def filter_peptides(peptides: pd.DataFrame, min_length: int, max_length: int, ma :return: The filtered dataframe given the provided constraints. """ - return peptides[ - (peptides["PEPTIDE_LENGTH"] <= max_length) - & (peptides["PEPTIDE_LENGTH"] >= min_length) - & (peptides["PRECURSOR_CHARGE"] <= max_charge) - & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) - & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) - & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) - & (~peptides["SEQUENCE"].str.contains("U|X")) - ] + selection = peptides.obs[ + (peptides.obs["PEPTIDE_LENGTH"] <= max_length) + & (peptides.obs["PEPTIDE_LENGTH"] >= min_length) + & (peptides.obs["PRECURSOR_CHARGE"] <= max_charge) + & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) + & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) + & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) + & (~peptides.obs["SEQUENCE"].str.contains("U|X")) + ].index.tolist() + spectra = AnnData(var=peptides.var.copy(), obs=peptides.obs.iloc[selection].copy()) + return spectra def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Optional[str] = None) -> Spectra: @@ -201,27 +204,29 @@ def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Opt :return: The processed and filtered Spectra object """ # add fixed mods and translate to internal format - library.spectra_data["MODIFIED_SEQUENCE"] = library.spectra_data["MODIFIED_SEQUENCE"].apply(lambda x: "_" + x + "_") + library.spectra_data.obs["MODIFIED_SEQUENCE"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply( + lambda x: "_" + x + "_" + ) fixed_mods = {"C": "C[UNIMOD:4]"} if tmt_label is not None and tmt_label != "": unimod_tag = c.TMT_MODS[tmt_label] fixed_mods = {"C": "C[UNIMOD:4]", "^_": f"_{unimod_tag}-", "K": f"K{unimod_tag}"} - library.spectra_data["MODIFIED_SEQUENCE"] = maxquant_to_internal( - library.spectra_data["MODIFIED_SEQUENCE"], fixed_mods=fixed_mods + library.spectra_data.obs["MODIFIED_SEQUENCE"] = maxquant_to_internal( + library.spectra_data.obs["MODIFIED_SEQUENCE"], fixed_mods=fixed_mods ) # get sequence and its length - library.spectra_data["SEQUENCE"] = internal_without_mods(library.spectra_data["MODIFIED_SEQUENCE"]) - library.spectra_data["PEPTIDE_LENGTH"] = library.spectra_data["SEQUENCE"].apply(lambda x: len(x)) + library.spectra_data.obs["SEQUENCE"] = internal_without_mods(library.spectra_data.obs["MODIFIED_SEQUENCE"]) + library.spectra_data.obs["PEPTIDE_LENGTH"] = library.spectra_data.obs["SEQUENCE"].apply(lambda x: len(x)) # filter - logger.info(f"No of sequences before filtering is {len(library.spectra_data)}") library.spectra_data = filter_peptides_for_model(library.spectra_data, model) - logger.info(f"No of sequences after filtering is {len(library.spectra_data)}") - library.spectra_data["MASS"] = library.spectra_data["MODIFIED_SEQUENCE"].apply(lambda x: compute_peptide_mass(x)) + library.spectra_data.obs["MASS"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply( + lambda x: compute_peptide_mass(x) + ) return library @@ -506,7 +511,7 @@ def merge_spectra_and_peptides(spectra: pd.DataFrame, search: pd.DataFrame) -> S psms = search.merge(spectra, on=["RAW_FILE", "SCAN_NUMBER"]) logger.info(f"There are {len(psms)} matched identifications") - library = Spectra() + library = Spectra((len(psms), 174)) library.add_columns(psms) return library From 39577ace2c4a2e390e6862340ea4906907e38457 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 29 Feb 2024 17:30:59 +0100 Subject: [PATCH 007/112] modified Spectra class to use AnnData object instead of pd.DataFrame to store data --- oktoberfest/data/spectra.py | 131 ++++++++++++++++++++++++------------ 1 file changed, 89 insertions(+), 42 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index 20a3c104..bbcdd39c 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -8,6 +8,7 @@ import pandas as pd import scipy import spectrum_fundamentals.constants as c +from anndata import AnnData from scipy.sparse import coo_matrix, csr_matrix from spectrum_io.file import hdf5 @@ -33,11 +34,31 @@ class Spectra: MZ_COLUMN_PREFIX = "MZ_RAW" COLUMNS_FRAGMENT_ION = ["Y1+", "Y1++", "Y1+++", "B1+", "B1++", "B1+++"] - spectra_data: pd.DataFrame + spectra_data: AnnData - def __init__(self): - """Initialize spectra data as a pd.DataFrame.""" - self.spectra_data = pd.DataFrame() + def __init__(self, size): + """Initialize spectra data as an AnnData object.""" + vars_df = self.gen_vars_df() + self.spectra_data = AnnData(shape=size, var=vars_df) + + @staticmethod + def gen_vars_df() -> pd.DataFrame: + """ + Creates Annotation dataframe for vars in AnnData object. + + :return: pd.Dataframe of Frgment Annotation + """ + ion_nums = np.repeat(np.arange(1, 30), 6) + ion_charge = np.tile([1, 2, 3], 29 * 2) + temp_cols = [] + for size in range(1, 30): + for typ in ["Y", "B"]: + for charge in ["+", "++", "+++"]: + temp_cols.append(f"{typ}{size}{charge}") + ion_types = [frag[0] for frag in temp_cols] + var_df = pd.DataFrame({"ion": temp_cols, "num": ion_nums, "type": ion_types, "charge": ion_charge}) + var_df = var_df.set_index("ion") + return var_df @staticmethod def _gen_column_names(fragment_type: FragmentType) -> List[str]: @@ -78,30 +99,35 @@ def add_column(self, column_data: np.ndarray, name: str) -> None: :param column_data: data for a column as np :param name: name of the column """ - self.spectra_data[name] = column_data + column_df = pd.DataFrame({name: list(column_data)}) + self.spectra_data.obs = pd.concat([self.spectra_data.obs, column_df], axis=1) def add_columns(self, columns_data: pd.DataFrame) -> None: """ - Add columns to spectra data. + Assigns columns to the datastructures in AnnData based on what type they are. :param columns_data: a pandas data frame to add can be metrics or metadata """ - # Check if columns already exist - self.spectra_data = pd.concat([self.spectra_data, columns_data], axis=1) + mz_cols = list(filter(lambda c: c.startswith("MZ_RAW"), columns_data.columns)) + raw_int_cols = list(filter(lambda c: c.startswith("INTENSITY_RAW"), columns_data.columns)) + pred_int_cols = list(filter(lambda c: c.startswith("INTENSITY_PRED"), columns_data.columns)) + meta_cols = list( + filter(lambda c: not (c.startswith("INTENSITY") or c.startswith("MZ_RAW")), columns_data.columns) + ) + + # replaces X and layers (their shape can't be changed) + if mz_cols: + self.spectra_data.X = columns_data[mz_cols] + if pred_int_cols: + self.spectra_data.layers["pred_int"] = columns_data[pred_int_cols] + if raw_int_cols: + self.spectra_data.layers["raw_int"] = columns_data[raw_int_cols] + if meta_cols: + self.spectra_data.obs = columns_data[meta_cols] def get_meta_data(self) -> pd.DataFrame: """Get meta data with intensity, mz and intensity predictions as pd.DataFrame.""" - columns = list(self.spectra_data.columns) - meta_data_columns = list( - filter( - lambda x: not x.startswith( - tuple([Spectra.INTENSITY_COLUMN_PREFIX, Spectra.MZ_COLUMN_PREFIX, Spectra.INTENSITY_PRED_PREFIX]) - ), - columns, - ) - ) - - return self.spectra_data[meta_data_columns] + return self.spectra_data.obs def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: FragmentType) -> None: """ @@ -110,10 +136,13 @@ def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: Frag :param intensity_data: intensity sparse matrix :param fragment_type: choose predicted, raw, or mz """ - # generate column names and build dataframe from sparse matrix - columns = self._gen_column_names(fragment_type) - intensity_data.columns = columns - self.add_columns(intensity_data) + # add sparse matrix of intensities to corresponding layer + if fragment_type.value == 1: + self.spectra_data.layers["pred_int"] = scipy.sparse.csr_matrix(intensity_data) + elif fragment_type.value == 2: + self.spectra_data.layers["raw_int"] = scipy.sparse.csr_matrix(intensity_data) + else: + self.spectra_data.X = scipy.sparse.csr_matrix(intensity_data) def add_matrix(self, intensity_data: pd.Series, fragment_type: FragmentType) -> None: """ @@ -123,7 +152,6 @@ def add_matrix(self, intensity_data: pd.Series, fragment_type: FragmentType) -> :param fragment_type: choose predicted, raw, or mz """ intensity_df = intensity_data.explode() - # reshape based on the number of fragments intensity_array = intensity_df.values.astype(np.float32).reshape(-1, c.VEC_LENGTH) @@ -148,25 +176,36 @@ def get_columns(self, fragment_type: FragmentType, return_column_names: bool = F """ prefix = Spectra._resolve_prefix(fragment_type) logger.debug(prefix) - columns_to_select = list(filter(lambda c: c.startswith(prefix), self.spectra_data.columns)) - if return_column_names: - return scipy.sparse.csr_matrix(self.spectra_data[columns_to_select].values), columns_to_select + + if fragment_type.value == 1: + matrix = scipy.sparse.csr_matrix(self.spectra_data.layers["pred_int"].toarray()) + elif fragment_type.value == 2: + matrix = scipy.sparse.csr_matrix(self.spectra_data.layers["raw_int"].toarray()) + else: + matrix = scipy.sparse.csr_matrix(self.spectra_data.X.toarray()) + # Check if conversion is low change to coo then csr from coo - return self.spectra_data[columns_to_select] + return matrix, self._gen_column_names(fragment_type) if return_column_names else matrix def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str]]: """ - Get intensities sparse matrix from dataframe. + Get intensities sparse matrix from AnnData object. :param fragment_type: choose predicted, raw, or mz :return: sparse matrix with the required data """ prefix = Spectra._resolve_prefix(fragment_type) logger.debug(prefix) - columns_to_select = list(filter(lambda c: c.startswith(prefix), self.spectra_data.columns)) - return scipy.sparse.csr_matrix(self.spectra_data[columns_to_select].values), columns_to_select + if fragment_type.value == 1: + matrix = self.spectra_data.layers["pred_int"] + elif fragment_type.value == 2: + matrix = self.spectra_data.layers["raw_int"] + else: + matrix = self.spectra_data.X + # Check if conversion is low change to coo then csr from coo + return matrix, self._gen_column_names(fragment_type) - def write_as_hdf5(self, output_file: Union[str, Path]) -> Thread: + def write_as_hdf5(self, output_file: Union[str, Path], include_intensities: bool = False) -> Thread: """ Write intensity and mz data as hdf5. @@ -174,10 +213,17 @@ def write_as_hdf5(self, output_file: Union[str, Path]) -> Thread: :return: the thread object from the hdf5 writer for later joining """ data_set_names = [hdf5.META_DATA_KEY, hdf5.INTENSITY_RAW_KEY, hdf5.MZ_RAW_KEY] + meta_data = self.get_meta_data() + if include_intensities: + sparse_matrix_mz, columns_mz = self.get_matrix(FragmentType.MZ) + sparse_matrix_intensity_raw, columns_intensity = self.get_matrix(FragmentType.RAW) + else: + columns_mz = self._gen_column_names(FragmentType.MZ) + columns_intensity = self._gen_column_names(FragmentType.RAW) + sparse_matrix_mz = scipy.sparse.csr_matrix(np.zeros((len(meta_data), 174))) + sparse_matrix_intensity_raw = scipy.sparse.csr_matrix(np.zeros((len(meta_data), 174))) - sparse_matrix_intensity_raw, columns_intensity = self.get_matrix(FragmentType.RAW) - sparse_matrix_mz, columns_mz = self.get_matrix(FragmentType.MZ) - data_sets = [self.get_meta_data(), sparse_matrix_intensity_raw, sparse_matrix_mz] + data_sets = [meta_data, sparse_matrix_intensity_raw, sparse_matrix_mz] column_names = [columns_intensity, columns_mz] return hdf5.write_file(data_sets, output_file, data_set_names, column_names) @@ -201,7 +247,7 @@ def write_pred_as_hdf5(self, output_file: Union[str, Path]) -> Thread: return hdf5.write_file(data_sets, output_file, data_set_names, column_names) @classmethod - def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]) -> SpectraT: + def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]): """ Read from hdf5 file. @@ -209,15 +255,14 @@ def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]) -> SpectraT: :return: a spectra instance """ input_file = str(input_file) - spectra = cls() - spectra.add_columns(hdf5.read_file(input_file, hdf5.META_DATA_KEY)) sparse_raw_intensities = hdf5.read_file(input_file, f"sparse_{hdf5.INTENSITY_RAW_KEY}") + sparse_raw_mzs = hdf5.read_file(input_file, f"sparse_{hdf5.MZ_RAW_KEY}") + spectra = cls(sparse_raw_intensities.shape) if not sparse_raw_intensities.empty: spectra.add_matrix_from_hdf5(sparse_raw_intensities, FragmentType.RAW) - sparse_raw_mzs = hdf5.read_file(input_file, f"sparse_{hdf5.MZ_RAW_KEY}") if not sparse_raw_mzs.empty: spectra.add_matrix_from_hdf5(sparse_raw_mzs, FragmentType.MZ) - + spectra.add_columns(hdf5.read_file(input_file, hdf5.META_DATA_KEY)) return spectra @classmethod @@ -229,7 +274,9 @@ def from_csv(cls: Type[SpectraT], input_file: Union[str, Path]) -> SpectraT: :return: a spectra instance """ input_file = str(input_file) - spectra = cls() - spectra.spectra_data = pd.read_csv(input_file) + all_columns = pd.read_csv(input_file) + size = (all_columns.shape[0], 174) + spectra = cls(size) + spectra.add_columns(all_columns) return spectra From 9362afab76cba97d030b5a9e842602bdb6c52d61 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 29 Feb 2024 17:32:50 +0100 Subject: [PATCH 008/112] modified to account for changes in Spectra object --- oktoberfest/runner.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 05387f52..af2152db 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -11,7 +11,6 @@ from typing import Dict, List, Optional, Tuple, Type, Union import numpy as np -import pandas as pd from sklearn.linear_model import LinearRegression, RANSACRegressor from spectrum_io.spectral_library import MSP, DLib, SpectralLibrary, Spectronaut from tqdm.auto import tqdm @@ -335,7 +334,6 @@ def generate_spectral_lib(config_path: Union[str, Path]): writer, out_file = _get_writer_and_output(results_path, config.output_format) batches, mode = _get_batches_and_mode(out_file, failed_batch_file, len(spec_library.spectra_data), batchsize) speclib = writer(out_file, mode=mode, min_intensity_threshold=config.min_intensity) - n_batches = len(batches) with Manager() as manager: @@ -351,6 +349,14 @@ def generate_spectral_lib(config_path: Union[str, Path]): # Create a pool for producer processes predictor_pool = pool.Pool(config.num_threads) + consumer_process = Process( + target=speclib.async_write, + args=( + shared_queue, + writing_progress, + ), + ) + try: results = [] for i in batches: @@ -363,7 +369,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): shared_queue, prediction_progress, lock, - spec_library.spectra_data.iloc[i * batchsize : (i + 1) * batchsize], + spec_library.spectra_data[i * batchsize : (i + 1) * batchsize,:], ), error_callback=partial( _make_predictions_error_callback, prediction_failure_progress, lock_failure @@ -375,15 +381,8 @@ def generate_spectral_lib(config_path: Union[str, Path]): with tqdm( total=n_batches, desc="Writing library", postfix={"successful": 0, "missing": 0} ) as writer_pbar: - # Start the consumer process - consumer_process = Process( - target=speclib.async_write, - args=( - shared_queue, - writing_progress, - ), - ) consumer_process.start() + with tqdm( total=n_batches, desc="Getting predictions", postfix={"successful": 0, "failed": 0} ) as predictor_pbar: @@ -488,7 +487,7 @@ def _calculate_features(spectra_file: Path, config: Config): pred_irts = pr.predict(data=library.spectra_data, model_name=config.models["irt"], **predict_kwargs) - library.add_matrix(pd.Series(pred_intensities["intensities"].tolist(), name="intensities"), FragmentType.PRED) + library.add_matrix(pred_intensities["intensities"].tolist(), FragmentType.PRED) library.add_column(pred_irts["irt"], name="PREDICTED_IRT") library.write_pred_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name).join() From b61b7c8e91b658905ff265e715fa3a0f5b4bf291 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Tue, 5 Mar 2024 15:40:16 +0100 Subject: [PATCH 009/112] adjusted github workflows to test for version 3.9 --- .github/workflows/build_package.yml | 2 +- .github/workflows/publish_docs.yml | 2 +- .github/workflows/run_tests.yml | 18 +++++++++--------- .github/workflows/sync_project.yml | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index cf0d61f9..8e388ae1 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] - python: [3.8, 3.9] + python: [3.9, 3.10] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index 025589b9..877a17d9 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -13,7 +13,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: 3.9 - name: Install pip run: | diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 8abe379c..796e6f5d 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -19,47 +19,47 @@ jobs: matrix: include: - { - python-version: 3.8, + python-version: 3.9, os: ubuntu-latest, session: "pre-commit", } - { - python-version: 3.8, + python-version: 3.9, os: ubuntu-latest, session: "safety", } - { - python-version: 3.8, + python-version: 3.9, os: ubuntu-latest, session: "mypy", } - { - python-version: 3.8, + python-version: 3.9, os: ubuntu-latest, session: "tests", } - { - python-version: 3.8, + python-version: 3.9, os: windows-latest, session: "tests", } - { - python-version: 3.8, + python-version: 3.9, os: macos-latest, session: "tests", } - { - python-version: 3.8, + python-version: 3.9, os: ubuntu-latest, session: "typeguard", } - { - python-version: 3.8, + python-version: 3.9, os: ubuntu-latest, session: "xdoctest", } - { - python-version: 3.8, + python-version: 3.9, os: ubuntu-latest, session: "docs-build", } diff --git a/.github/workflows/sync_project.yml b/.github/workflows/sync_project.yml index 9a7b64b8..33d1ad3a 100644 --- a/.github/workflows/sync_project.yml +++ b/.github/workflows/sync_project.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: 3.9 - name: Install cookietemple run: pip install cookietemple From d7e4caeb0657a7b526a10a359e2676cebb79f60d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Tue, 5 Mar 2024 16:06:16 +0100 Subject: [PATCH 010/112] changed get_matrix to take a numpy array and optional annotation order --- oktoberfest/data/spectra.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index bbcdd39c..e875aef9 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -144,27 +144,30 @@ def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: Frag else: self.spectra_data.X = scipy.sparse.csr_matrix(intensity_data) - def add_matrix(self, intensity_data: pd.Series, fragment_type: FragmentType) -> None: + def add_matrix(self, intensity_data, fragment_type: FragmentType, annotation=None) -> None: """ Concatenate intensity df as a sparse matrix to our data. :param intensity_data: intensity numpy array to add :param fragment_type: choose predicted, raw, or mz """ - intensity_df = intensity_data.explode() - # reshape based on the number of fragments - intensity_array = intensity_df.values.astype(np.float32).reshape(-1, c.VEC_LENGTH) - + intensity_array = np.array(intensity_data) # Change zeros to epislon to keep the info of invalid values # change the -1 values to 0 (for better performance when converted to sparse representation) + logger.info(type(intensity_array)) intensity_array[intensity_array == 0] = c.EPSILON intensity_array[intensity_array == -1] = 0.0 - # generate column names and build dataframe from sparse matrix - intensity_df = pd.DataFrame.sparse.from_spmatrix(coo_matrix(intensity_array, dtype=np.float32)) - columns = self._gen_column_names(fragment_type) - intensity_df.columns = columns - self.add_columns(intensity_df) + if annotation: + self.spectra_data.layers["pred_int"] = csr_matrix(intensity_array.shape) + index = index = [list(self.spectra_data.var_names).index(i) for i in annotation] + self.spectra_data.layers["pred_int"][:, index] = intensity_array + else: + # generate column names and build dataframe from sparse matrix + intensity_df = pd.DataFrame.sparse.from_spmatrix(coo_matrix(intensity_array, dtype=np.float32)) + columns = self._gen_column_names(fragment_type) + intensity_df.columns = columns + self.add_columns(intensity_df) def get_columns(self, fragment_type: FragmentType, return_column_names: bool = False) -> coo_matrix: """ From 068cd97c37cb95c1fd3ae995b259b21aae4a471c Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Tue, 5 Mar 2024 16:07:55 +0100 Subject: [PATCH 011/112] change prediction call to take predictions as numpy array --- oktoberfest/predict/predict.py | 2 +- oktoberfest/runner.py | 4 ++-- tests/unit_tests/test_predictions.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 06a723e0..2b74dc8a 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -121,7 +121,7 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) intensities = predict(alignment_library.spectra_data, **server_kwargs) - alignment_library.add_matrix(pd.Series(intensities["intensities"].tolist(), name="intensities"), FragmentType.PRED) + alignment_library.add_matrix(intensities["intensities"], FragmentType.PRED) _alignment(alignment_library) return alignment_library diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index af2152db..292a7f90 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -42,7 +42,7 @@ def _make_predictions(int_model, irt_model, predict_kwargs, queue_out, progress, **pr.predict(batch_df, model_name=int_model, **predict_kwargs), **pr.predict(batch_df, model_name=irt_model, **predict_kwargs), } - queue_out.put((predictions, batch_df)) + queue_out.put((predictions, batch_df.obs)) with lock: progress.value += 1 @@ -487,7 +487,7 @@ def _calculate_features(spectra_file: Path, config: Config): pred_irts = pr.predict(data=library.spectra_data, model_name=config.models["irt"], **predict_kwargs) - library.add_matrix(pred_intensities["intensities"].tolist(), FragmentType.PRED) + library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) library.add_column(pred_irts["irt"], name="PREDICTED_IRT") library.write_pred_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name).join() diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index cda9eb70..112616e3 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -27,7 +27,7 @@ def test_prosit_tmt(self): input_data, model_name="Prosit_2020_irt_TMT", server_url="koina.proteomicsdb.org:443", ssl=True ) - library.add_matrix(pd.Series(pred_intensities["intensities"].tolist(), name="intensities"), FragmentType.PRED) + library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) library.add_column(pred_irt["irt"], name="PREDICTED_IRT") expected_df = pd.read_csv(Path(__file__).parent / "data" / "predictions" / "library_output.csv") From c8f882f7264f11db927781ed9bcbabd9bd8b7ca6 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 6 Mar 2024 19:47:41 +0000 Subject: [PATCH 012/112] added method to convert AnnData to df --- oktoberfest/data/spectra.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index e875aef9..d168363d 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -100,7 +100,7 @@ def add_column(self, column_data: np.ndarray, name: str) -> None: :param name: name of the column """ column_df = pd.DataFrame({name: list(column_data)}) - self.spectra_data.obs = pd.concat([self.spectra_data.obs, column_df], axis=1) + self.spectra_data.obs = pd.concat([self.spectra_data.obs.reset_index(drop=True), column_df], axis=1) def add_columns(self, columns_data: pd.DataFrame) -> None: """ @@ -154,7 +154,6 @@ def add_matrix(self, intensity_data, fragment_type: FragmentType, annotation=Non intensity_array = np.array(intensity_data) # Change zeros to epislon to keep the info of invalid values # change the -1 values to 0 (for better performance when converted to sparse representation) - logger.info(type(intensity_array)) intensity_array[intensity_array == 0] = c.EPSILON intensity_array[intensity_array == -1] = 0.0 @@ -283,3 +282,17 @@ def from_csv(cls: Type[SpectraT], input_file: Union[str, Path]) -> SpectraT: spectra.add_columns(all_columns) return spectra + + def convert_to_df(self) -> pd.DataFrame: + """ + Gives back spectra_data instance as a pandas Dataframe. + + :return: a pandas DataFrame + """ + df = self.spectra_data.obs + mz_cols = pd.DataFrame(self.get_matrix(FragmentType.MZ)[0].toarray()) + mz_cols.columns = self._gen_column_names(FragmentType.MZ) + raw_cols = pd.DataFrame(self.get_matrix(FragmentType.RAW)[0].toarray()) + raw_cols.columns = self._gen_column_names(FragmentType.RAW) + df_merged = pd.concat([df, pd.concat([mz_cols, raw_cols], axis=1)], axis=1) + return df_merged From b88d9b60ca22c93b793fb6ed9b506627dc2ddb2d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 6 Mar 2024 19:49:59 +0000 Subject: [PATCH 013/112] changed datatypes and removed plotting of broken plots temporarily --- oktoberfest/plotting/plotting.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/oktoberfest/plotting/plotting.py b/oktoberfest/plotting/plotting.py index 479b3b56..77bdac3f 100644 --- a/oktoberfest/plotting/plotting.py +++ b/oktoberfest/plotting/plotting.py @@ -289,6 +289,9 @@ def plot_sa_distribution(prosit_df: pd.DataFrame, target_df: pd.DataFrame, decoy :param filename: the path to the location used for storing the plot """ _, _, _, psm_col = _check_columns(target_df) + + prosit_df["SpecId"] = prosit_df["SpecId"].astype("string") + target_df[psm_col] = target_df[psm_col].astype("string") target = prosit_df.merge(target_df, how="inner", left_on="SpecId", right_on=psm_col) decoy = prosit_df.merge(decoy_df, how="inner", left_on="SpecId", right_on=psm_col) plt.figure(figsize=(8, 6)) @@ -353,7 +356,7 @@ def plot_all(data_dir: Path): prosit_psms_decoy, data_dir / "target_vs_decoys_sa_distribution.svg", ) - + """ joint_plot( prosit_pep_target, prosit_pep_decoy, @@ -370,6 +373,7 @@ def plot_all(data_dir: Path): "psm", data_dir / "rescore_original_joint_plot_psm.svg", ) + """ plot_gain_loss(prosit_pep_target, andromeda_pep_target, "peptide", data_dir / "peptide_1%_FDR.svg") plot_gain_loss(prosit_psms_target, andromeda_psms_target, "psm", data_dir / "psm_1%_FDR.svg") From 251b3ef55937689e7e202ce8c90bf94fb7aa380e Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 6 Mar 2024 19:50:58 +0000 Subject: [PATCH 014/112] modified functions to work with dataframes as well as AnnData --- oktoberfest/preprocessing/preprocessing.py | 56 ++++++++++++++-------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index f591750b..339621fe 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -4,6 +4,7 @@ from sys import platform from typing import Any, Dict, List, Optional, Union +import numpy as np import pandas as pd import spectrum_fundamentals.constants as c from anndata import AnnData @@ -134,7 +135,9 @@ def digest( ) -def filter_peptides_for_model(peptides: AnnData, model: str) -> AnnData: +def filter_peptides_for_model( + peptides: Optional[Union[pd.DataFrame, AnnData]], model: str +) -> Optional[Union[pd.DataFrame, AnnData]]: """ Filter search results to support a given peptide prediction model. @@ -160,7 +163,9 @@ def filter_peptides_for_model(peptides: AnnData, model: str) -> AnnData: return filter_peptides(peptides, **filter_kwargs) -def filter_peptides(peptides: AnnData, min_length: int, max_length: int, max_charge: int) -> AnnData: +def filter_peptides( + peptides: Optional[Union[pd.DataFrame, AnnData]], min_length: int, max_length: int, max_charge: int +) -> Optional[Union[pd.DataFrame, AnnData]]: """ Filter search results using given constraints. @@ -174,17 +179,29 @@ def filter_peptides(peptides: AnnData, min_length: int, max_length: int, max_cha :return: The filtered dataframe given the provided constraints. """ - selection = peptides.obs[ - (peptides.obs["PEPTIDE_LENGTH"] <= max_length) - & (peptides.obs["PEPTIDE_LENGTH"] >= min_length) - & (peptides.obs["PRECURSOR_CHARGE"] <= max_charge) - & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) - & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) - & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) - & (~peptides.obs["SEQUENCE"].str.contains("U|X")) - ].index.tolist() - spectra = AnnData(var=peptides.var.copy(), obs=peptides.obs.iloc[selection].copy()) - return spectra + if isinstance(peptides, pd.DataFrame): + return peptides[ + (peptides["PEPTIDE_LENGTH"] <= max_length) + & (peptides["PEPTIDE_LENGTH"] >= min_length) + & (peptides["PRECURSOR_CHARGE"] <= max_charge) + & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) + & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) + & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) + & (~peptides["SEQUENCE"].str.contains("U|X")) + ] + elif isinstance(peptides, AnnData): + selection = peptides.obs[ + (peptides.obs["PEPTIDE_LENGTH"] <= max_length) + & (peptides.obs["PEPTIDE_LENGTH"] >= min_length) + & (peptides.obs["PRECURSOR_CHARGE"] <= max_charge) + & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) + & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) + & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) + & (~peptides.obs["SEQUENCE"].str.contains("U|X")) + ].index.tolist() + spectra = AnnData(var=peptides.var.copy(), obs=peptides.obs.iloc[selection].copy()) + return spectra + return peptides def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Optional[str] = None) -> Spectra: @@ -224,9 +241,7 @@ def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Opt # filter library.spectra_data = filter_peptides_for_model(library.spectra_data, model) - library.spectra_data.obs["MASS"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply( - lambda x: compute_peptide_mass(x) - ) + library.spectra_data.obs["MASS"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply(lambda x: compute_peptide_mass(x)) return library @@ -509,7 +524,6 @@ def merge_spectra_and_peptides(spectra: pd.DataFrame, search: pd.DataFrame) -> S """ logger.info("Merging rawfile and search result") psms = search.merge(spectra, on=["RAW_FILE", "SCAN_NUMBER"]) - logger.info(f"There are {len(psms)} matched identifications") library = Spectra((len(psms), 174)) library.add_columns(psms) @@ -530,11 +544,11 @@ def annotate_spectral_library(psms: Spectra, mass_tol: Optional[float] = None, u :param unit_mass_tol: The unit in which the mass tolerance is given """ logger.info("Annotating spectra...") - df_annotated_spectra = annotate_spectra(psms.spectra_data, mass_tol, unit_mass_tol) + df_annotated_spectra = annotate_spectra(psms.spectra_data.obs, mass_tol, unit_mass_tol) logger.info("Finished annotating.") - psms.spectra_data.drop(columns=["INTENSITIES", "MZ"], inplace=True) # TODO check if this is needed - psms.add_matrix(df_annotated_spectra["INTENSITIES"], FragmentType.RAW) - psms.add_matrix(df_annotated_spectra["MZ"], FragmentType.MZ) + + psms.add_matrix(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) + psms.add_matrix(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) psms.add_column(df_annotated_spectra["CALCULATED_MASS"].to_numpy(), "CALCULATED_MASS") From 9b6a2e1472188babe5c121b1f0cf8ee3ee91042e Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 6 Mar 2024 19:52:01 +0000 Subject: [PATCH 015/112] fixed errors in ce_caibration run --- oktoberfest/predict/predict.py | 39 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 2b74dc8a..41d36107 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -80,28 +80,29 @@ def _prepare_alignment_df(library: Spectra, ce_range: Tuple[int, int], group_by_ :param group_by_charge: if true, select the top 1000 spectra independently for each precursor charge :return: a library that is modified according to the description above """ - alignment_library = Spectra(library.get_matrix(FragmentType.MZ)[0].shape) - alignment_library.spectra_data = library.spectra_data.copy() - + alignment_df = library.convert_to_df() # Remove decoy and HCD fragmented spectra - alignment_library.spectra_data = alignment_library.spectra_data[ - (alignment_library.spectra_data.obs["FRAGMENTATION"] == "HCD") - & (~alignment_library.spectra_data.obs["REVERSE"]) - ] + alignment_df = alignment_df[(alignment_df["FRAGMENTATION"] == "HCD") & (~alignment_df["REVERSE"])] # Select the 1000 highest scoring or all if there are less than 1000 - temp_df = alignment_library.spectra_data.obs.sort_values(by="SCORE", ascending=False) + temp_df = alignment_df.sort_values(by="SCORE", ascending=False) if group_by_charge: temp_df = temp_df.groupby("PRECURSOR_CHARGE") - alignment_library.spectra_data.obs = temp_df.head(1000) + alignment_df = temp_df.head(1000) # Repeat dataframe for each CE ce_range_ = range(*ce_range) - nrow = len(alignment_library.spectra_data) - alignment_library.spectra_data.obs = pd.concat([alignment_library.spectra_data.obs for _ in ce_range_], axis=0) - alignment_library.spectra_data.obs["ORIG_COLLISION_ENERGY"] = alignment_library.spectra_data.obs["COLLISION_ENERGY"] - alignment_library.spectra_data.obs["COLLISION_ENERGY"] = np.repeat(ce_range_, nrow) - alignment_library.spectra_data.obs.reset_index(inplace=True) + nrow = len(alignment_df) + alignment_df = pd.concat([alignment_df for _ in ce_range_], axis=0) + alignment_df["ORIG_COLLISION_ENERGY"] = alignment_df["COLLISION_ENERGY"] + alignment_df["COLLISION_ENERGY"] = np.repeat(ce_range_, nrow) + selection = alignment_df["Unnamed: 0"].values.astype(int).tolist() + alignment_library = Spectra((len(selection), 174)) + library.spectra_data.obs.index = library.spectra_data.obs.index.astype(str) + alignment_library.spectra_data = library.spectra_data[ + library.spectra_data.obs["Unnamed: 0"].isin(selection), : + ].copy() + return alignment_library @@ -120,6 +121,7 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: :return: a spectra object containing the spectral angle for each tested CE """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) + logger.info(alignment_library.spectra_data) intensities = predict(alignment_library.spectra_data, **server_kwargs) alignment_library.add_matrix(intensities["intensities"], FragmentType.PRED) _alignment(alignment_library) @@ -135,11 +137,10 @@ def _alignment(alignment_library: Spectra): :param alignment_library: the library to perform the alignment on """ - pred_intensity = alignment_library.get_matrix(FragmentType.PRED)[0] - raw_intensity = alignment_library.get_matrix(FragmentType.RAW)[0] - # return pred_intensity.toarray(), raw_intensity.toarray() + pred_intensity = alignment_library.get_matrix(FragmentType.PRED)[0].toarray() + raw_intensity = alignment_library.get_matrix(FragmentType.RAW)[0].toarray() sm = SimilarityMetrics(pred_intensity, raw_intensity) - alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] = sm.spectral_angle(raw_intensity, pred_intensity, 0) + alignment_library.add_column(sm.spectral_angle(raw_intensity, pred_intensity, 0), "SPECTRAL_ANGLE") alignment_library.spectra_data = alignment_library.spectra_data[ - alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] != 0 + alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] != 0, : ] From 822bc5160366f6f13d6500ad15201766f980fb5d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 6 Mar 2024 19:53:48 +0000 Subject: [PATCH 016/112] fixed problems with ce_calibration --- oktoberfest/runner.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 292a7f90..9ae7a56c 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -126,7 +126,7 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file search = pp.load_search(config.output / "msms" / spectra_file.with_suffix(".rescore").name) library = pp.merge_spectra_and_peptides(spectra, search) pp.annotate_spectral_library(library, mass_tol=config.mass_tolerance, unit_mass_tol=config.unit_mass_tolerance) - library.write_as_hdf5(hdf5_path).join() # write_metadata_annotation + library.write_as_hdf5(hdf5_path, True).join() # write_metadata_annotation return library @@ -134,7 +134,7 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): results_dir = config.output / "results" results_dir.mkdir(exist_ok=True) - if (library.spectra_data["FRAGMENTATION"] == "HCD").any(): + if (library.spectra_data.obs["FRAGMENTATION"] == "HCD").any(): server_kwargs = { "server_url": config.prediction_server, "ssl": config.ssl, @@ -146,7 +146,7 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): if use_ransac_model: logger.info("Performing RANSAC regression") calib_group = ( - alignment_library.spectra_data.groupby( + alignment_library.spectra_data.obs.groupby( by=["PRECURSOR_CHARGE", "ORIG_COLLISION_ENERGY", "COLLISION_ENERGY", "MASS"], as_index=False )["SPECTRAL_ANGLE"] .mean() @@ -172,27 +172,28 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): ) delta_ce = ransac.predict(library.spectra_data[["MASS", "PRECURSOR_CHARGE"]]) - library.spectra_data["COLLISION_ENERGY"] = np.maximum( - 0, library.spectra_data["COLLISION_ENERGY"] + delta_ce + library.spectra_data.obs["COLLISION_ENERGY"] = np.maximum( + 0, library.spectra_data.obs["COLLISION_ENERGY"] + delta_ce ) else: - ce_alignment = alignment_library.spectra_data.groupby(by=["COLLISION_ENERGY"])["SPECTRAL_ANGLE"].mean() + ce_alignment = alignment_library.spectra_data.obs.groupby(by=["COLLISION_ENERGY"])["SPECTRAL_ANGLE"].mean() + best_ce = ce_alignment.idxmax() pl.plot_mean_sa_ce( sa_ce_df=ce_alignment.to_frame().reset_index(), filename=results_dir / f"{spectra_file.stem}_mean_spectral_angle_ce.svg", ) pl.plot_violin_sa_ce( - sa_ce_df=alignment_library.spectra_data[["COLLISION_ENERGY", "SPECTRAL_ANGLE"]], + sa_ce_df=alignment_library.spectra_data.obs[["COLLISION_ENERGY", "SPECTRAL_ANGLE"]], filename=results_dir / f"{spectra_file.stem}_violin_spectral_angle_ce.svg", ) - library.spectra_data["COLLISION_ENERGY"] = best_ce + library.spectra_data.obs["COLLISION_ENERGY"] = best_ce with open(results_dir / f"{spectra_file.stem}_ce.txt", "w") as f: f.write(str(best_ce)) else: best_ce = 35 - library.spectra_data["COLLISION_ENERGY"] = best_ce + library.spectra_data.obs["COLLISION_ENERGY"] = best_ce with open(results_dir / f"{spectra_file.stem}_ce.txt", "w") as f: f.write(str(best_ce)) @@ -369,7 +370,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): shared_queue, prediction_progress, lock, - spec_library.spectra_data[i * batchsize : (i + 1) * batchsize,:], + spec_library.spectra_data[i * batchsize : (i + 1) * batchsize, :], ), error_callback=partial( _make_predictions_error_callback, prediction_failure_progress, lock_failure @@ -430,7 +431,7 @@ def _ce_calib(spectra_file: Path, config: Config) -> Spectra: library = _annotate_and_get_library(spectra_file, config, tims_meta_file=tims_meta_file) _get_best_ce(library, spectra_file, config) - library.write_pred_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name).join() + library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name).join() ce_calib_step.mark_done() From 8dfe9d0a13ef104f8351c6b8be175c2e6ce1dc17 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 8 Mar 2024 15:46:06 +0000 Subject: [PATCH 017/112] added columns as correct datatypes --- oktoberfest/data/spectra.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index d168363d..e11e1567 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -117,11 +117,11 @@ def add_columns(self, columns_data: pd.DataFrame) -> None: # replaces X and layers (their shape can't be changed) if mz_cols: - self.spectra_data.X = columns_data[mz_cols] + self.spectra_data.X = scipy.sparse.csr_matrix(columns_data[mz_cols]) if pred_int_cols: - self.spectra_data.layers["pred_int"] = columns_data[pred_int_cols] + self.spectra_data.layers["pred_int"] = scipy.sparse.csr_matrix(columns_data[pred_int_cols]) if raw_int_cols: - self.spectra_data.layers["raw_int"] = columns_data[raw_int_cols] + self.spectra_data.layers["raw_int"] = scipy.sparse.csr_matrix(columns_data[raw_int_cols]) if meta_cols: self.spectra_data.obs = columns_data[meta_cols] From 2b60ac679a24368672c3757f50ec4bafc4319247 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 8 Mar 2024 15:46:58 +0000 Subject: [PATCH 018/112] made jointplots available after fixing irt issue --- oktoberfest/plotting/plotting.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/oktoberfest/plotting/plotting.py b/oktoberfest/plotting/plotting.py index 77bdac3f..6d4f0925 100644 --- a/oktoberfest/plotting/plotting.py +++ b/oktoberfest/plotting/plotting.py @@ -356,7 +356,7 @@ def plot_all(data_dir: Path): prosit_psms_decoy, data_dir / "target_vs_decoys_sa_distribution.svg", ) - """ + joint_plot( prosit_pep_target, prosit_pep_decoy, @@ -365,6 +365,7 @@ def plot_all(data_dir: Path): "peptide", data_dir / "rescore_original_joint_plot_peptide.svg", ) + joint_plot( prosit_psms_target, prosit_psms_decoy, @@ -373,7 +374,7 @@ def plot_all(data_dir: Path): "psm", data_dir / "rescore_original_joint_plot_psm.svg", ) - """ + plot_gain_loss(prosit_pep_target, andromeda_pep_target, "peptide", data_dir / "peptide_1%_FDR.svg") plot_gain_loss(prosit_psms_target, andromeda_psms_target, "psm", data_dir / "psm_1%_FDR.svg") From ccbb17c41eec6fc5570738052d389f1a6cdd52b0 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 8 Mar 2024 16:06:03 +0000 Subject: [PATCH 019/112] black file format --- oktoberfest/preprocessing/preprocessing.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 339621fe..3e3f1f3d 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -241,7 +241,9 @@ def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Opt # filter library.spectra_data = filter_peptides_for_model(library.spectra_data, model) - library.spectra_data.obs["MASS"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply(lambda x: compute_peptide_mass(x)) + library.spectra_data.obs["MASS"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply( + lambda x: compute_peptide_mass(x) + ) return library From 51373c9ff36934811eebc93a4e695d0972ffe32d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 8 Mar 2024 16:07:47 +0000 Subject: [PATCH 020/112] changed irt to list instead of list of lists --- oktoberfest/runner.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 9ae7a56c..e10d8a30 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -431,7 +431,7 @@ def _ce_calib(spectra_file: Path, config: Config) -> Spectra: library = _annotate_and_get_library(spectra_file, config, tims_meta_file=tims_meta_file) _get_best_ce(library, spectra_file, config) - library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name).join() + library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name, True).join() ce_calib_step.mark_done() @@ -489,8 +489,7 @@ def _calculate_features(spectra_file: Path, config: Config): pred_irts = pr.predict(data=library.spectra_data, model_name=config.models["irt"], **predict_kwargs) library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) - library.add_column(pred_irts["irt"], name="PREDICTED_IRT") - + library.add_column(sum(pred_irts["irt"].tolist(), []), name="PREDICTED_IRT") library.write_pred_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name).join() # produce percolator tab files From 7e35c89549dce36482c020f222ff06a0b29ee2df Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 15 Mar 2024 18:00:37 +0100 Subject: [PATCH 021/112] building packages test only for 3.9, 3.10 was seen as 3.1 --- .github/workflows/build_package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index 8e388ae1..da0b4172 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] - python: [3.9, 3.10] + python: [3.9] steps: - uses: actions/checkout@v4 From 7897beb930105963db9728ca63b4bb409e755f0f Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Sun, 24 Mar 2024 18:12:59 +0100 Subject: [PATCH 022/112] test build for python version 3.10 --- .github/workflows/build_package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index da0b4172..50ab47f2 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] - python: [3.9] + python: ["3.9", "3.10"] steps: - uses: actions/checkout@v4 From 6a64e113a4961a43382b56d5291943e7f87b3aa7 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Sun, 24 Mar 2024 18:14:16 +0100 Subject: [PATCH 023/112] moved PREDICTED_IRT in column order to fit expected output for testing --- tests/unit_tests/data/predictions/library_output.csv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unit_tests/data/predictions/library_output.csv b/tests/unit_tests/data/predictions/library_output.csv index ce89bef2..5f5bfb71 100644 --- a/tests/unit_tests/data/predictions/library_output.csv +++ b/tests/unit_tests/data/predictions/library_output.csv @@ -1,4 +1,4 @@ -MODIFIED_SEQUENCE,COLLISION_ENERGY,PRECURSOR_CHARGE,FRAGMENTATION,INTENSITY_PRED_Y1+,INTENSITY_PRED_Y1++,INTENSITY_PRED_Y1+++,INTENSITY_PRED_B1+,INTENSITY_PRED_B1++,INTENSITY_PRED_B1+++,INTENSITY_PRED_Y2+,INTENSITY_PRED_Y2++,INTENSITY_PRED_Y2+++,INTENSITY_PRED_B2+,INTENSITY_PRED_B2++,INTENSITY_PRED_B2+++,INTENSITY_PRED_Y3+,INTENSITY_PRED_Y3++,INTENSITY_PRED_Y3+++,INTENSITY_PRED_B3+,INTENSITY_PRED_B3++,INTENSITY_PRED_B3+++,INTENSITY_PRED_Y4+,INTENSITY_PRED_Y4++,INTENSITY_PRED_Y4+++,INTENSITY_PRED_B4+,INTENSITY_PRED_B4++,INTENSITY_PRED_B4+++,INTENSITY_PRED_Y5+,INTENSITY_PRED_Y5++,INTENSITY_PRED_Y5+++,INTENSITY_PRED_B5+,INTENSITY_PRED_B5++,INTENSITY_PRED_B5+++,INTENSITY_PRED_Y6+,INTENSITY_PRED_Y6++,INTENSITY_PRED_Y6+++,INTENSITY_PRED_B6+,INTENSITY_PRED_B6++,INTENSITY_PRED_B6+++,INTENSITY_PRED_Y7+,INTENSITY_PRED_Y7++,INTENSITY_PRED_Y7+++,INTENSITY_PRED_B7+,INTENSITY_PRED_B7++,INTENSITY_PRED_B7+++,INTENSITY_PRED_Y8+,INTENSITY_PRED_Y8++,INTENSITY_PRED_Y8+++,INTENSITY_PRED_B8+,INTENSITY_PRED_B8++,INTENSITY_PRED_B8+++,INTENSITY_PRED_Y9+,INTENSITY_PRED_Y9++,INTENSITY_PRED_Y9+++,INTENSITY_PRED_B9+,INTENSITY_PRED_B9++,INTENSITY_PRED_B9+++,INTENSITY_PRED_Y10+,INTENSITY_PRED_Y10++,INTENSITY_PRED_Y10+++,INTENSITY_PRED_B10+,INTENSITY_PRED_B10++,INTENSITY_PRED_B10+++,INTENSITY_PRED_Y11+,INTENSITY_PRED_Y11++,INTENSITY_PRED_Y11+++,INTENSITY_PRED_B11+,INTENSITY_PRED_B11++,INTENSITY_PRED_B11+++,INTENSITY_PRED_Y12+,INTENSITY_PRED_Y12++,INTENSITY_PRED_Y12+++,INTENSITY_PRED_B12+,INTENSITY_PRED_B12++,INTENSITY_PRED_B12+++,INTENSITY_PRED_Y13+,INTENSITY_PRED_Y13++,INTENSITY_PRED_Y13+++,INTENSITY_PRED_B13+,INTENSITY_PRED_B13++,INTENSITY_PRED_B13+++,INTENSITY_PRED_Y14+,INTENSITY_PRED_Y14++,INTENSITY_PRED_Y14+++,INTENSITY_PRED_B14+,INTENSITY_PRED_B14++,INTENSITY_PRED_B14+++,INTENSITY_PRED_Y15+,INTENSITY_PRED_Y15++,INTENSITY_PRED_Y15+++,INTENSITY_PRED_B15+,INTENSITY_PRED_B15++,INTENSITY_PRED_B15+++,INTENSITY_PRED_Y16+,INTENSITY_PRED_Y16++,INTENSITY_PRED_Y16+++,INTENSITY_PRED_B16+,INTENSITY_PRED_B16++,INTENSITY_PRED_B16+++,INTENSITY_PRED_Y17+,INTENSITY_PRED_Y17++,INTENSITY_PRED_Y17+++,INTENSITY_PRED_B17+,INTENSITY_PRED_B17++,INTENSITY_PRED_B17+++,INTENSITY_PRED_Y18+,INTENSITY_PRED_Y18++,INTENSITY_PRED_Y18+++,INTENSITY_PRED_B18+,INTENSITY_PRED_B18++,INTENSITY_PRED_B18+++,INTENSITY_PRED_Y19+,INTENSITY_PRED_Y19++,INTENSITY_PRED_Y19+++,INTENSITY_PRED_B19+,INTENSITY_PRED_B19++,INTENSITY_PRED_B19+++,INTENSITY_PRED_Y20+,INTENSITY_PRED_Y20++,INTENSITY_PRED_Y20+++,INTENSITY_PRED_B20+,INTENSITY_PRED_B20++,INTENSITY_PRED_B20+++,INTENSITY_PRED_Y21+,INTENSITY_PRED_Y21++,INTENSITY_PRED_Y21+++,INTENSITY_PRED_B21+,INTENSITY_PRED_B21++,INTENSITY_PRED_B21+++,INTENSITY_PRED_Y22+,INTENSITY_PRED_Y22++,INTENSITY_PRED_Y22+++,INTENSITY_PRED_B22+,INTENSITY_PRED_B22++,INTENSITY_PRED_B22+++,INTENSITY_PRED_Y23+,INTENSITY_PRED_Y23++,INTENSITY_PRED_Y23+++,INTENSITY_PRED_B23+,INTENSITY_PRED_B23++,INTENSITY_PRED_B23+++,INTENSITY_PRED_Y24+,INTENSITY_PRED_Y24++,INTENSITY_PRED_Y24+++,INTENSITY_PRED_B24+,INTENSITY_PRED_B24++,INTENSITY_PRED_B24+++,INTENSITY_PRED_Y25+,INTENSITY_PRED_Y25++,INTENSITY_PRED_Y25+++,INTENSITY_PRED_B25+,INTENSITY_PRED_B25++,INTENSITY_PRED_B25+++,INTENSITY_PRED_Y26+,INTENSITY_PRED_Y26++,INTENSITY_PRED_Y26+++,INTENSITY_PRED_B26+,INTENSITY_PRED_B26++,INTENSITY_PRED_B26+++,INTENSITY_PRED_Y27+,INTENSITY_PRED_Y27++,INTENSITY_PRED_Y27+++,INTENSITY_PRED_B27+,INTENSITY_PRED_B27++,INTENSITY_PRED_B27+++,INTENSITY_PRED_Y28+,INTENSITY_PRED_Y28++,INTENSITY_PRED_Y28+++,INTENSITY_PRED_B28+,INTENSITY_PRED_B28++,INTENSITY_PRED_B28+++,INTENSITY_PRED_Y29+,INTENSITY_PRED_Y29++,INTENSITY_PRED_Y29+++,INTENSITY_PRED_B29+,INTENSITY_PRED_B29++,INTENSITY_PRED_B29+++,PREDICTED_IRT -[UNIMOD:737]-PEPTIDEK[UNIMOD:737],30,2,HCD,0.23809576034545898,8.493546488352877e-08,0,8.493546488352877e-08,8.493546488352877e-08,0,0.8115681409835815,8.493546488352877e-08,0,1.0,8.493546488352877e-08,0,0.16860607266426086,8.493546488352877e-08,0,0.009546236135065556,8.493546488352877e-08,0,0.05823937803506851,8.493546488352877e-08,0,0.0676455870270729,8.493546488352877e-08,0,0.039169538766145706,8.493546488352877e-08,0,0.07002319395542145,8.493546488352877e-08,0,0.6715999841690063,0.01274949125945568,0,0.5392391085624695,8.493546488352877e-08,0,0.02867981791496277,0.00021903926972299814,0,0.07469962537288666,8.493546488352877e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.420433 -[UNIMOD:737]-PEPTIDE,30,2,HCD,0.522221565246582,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.6478652358055115,1.0271855899190996e-07,0,0.6932786107063293,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.03741396963596344,0.04295269027352333,0,1.0271855899190996e-07,1.0271855899190996e-07,0,1.0,0.016776476055383682,0,0.024784639477729797,1.0271855899190996e-07,0,0.47810620069503784,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.6293804049491882,0.0024885176680982113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43.523045 -[UNIMOD:737]-M[UNIMOD:35]EC[UNIMOD:4]TIDEK[UNIMOD:737],35,1,CID,0.2831476628780365,0,0,1.3209350413490029e-07,0,0,1.0,0,0,1.3209350413490029e-07,0,0,0.38974782824516296,0,0,0.018663309514522552,0,0,0.16417913138866425,0,0,0.019735727459192276,0,0,0.27998510003089905,0,0,0.009887314401566982,0,0,0.48476091027259827,0,0,0.009575176984071732,0,0,0.26375487446784973,0,0,0.019234927371144295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24.778168 +MODIFIED_SEQUENCE,COLLISION_ENERGY,PRECURSOR_CHARGE,FRAGMENTATION,PREDICTED_IRT,INTENSITY_PRED_Y1+,INTENSITY_PRED_Y1++,INTENSITY_PRED_Y1+++,INTENSITY_PRED_B1+,INTENSITY_PRED_B1++,INTENSITY_PRED_B1+++,INTENSITY_PRED_Y2+,INTENSITY_PRED_Y2++,INTENSITY_PRED_Y2+++,INTENSITY_PRED_B2+,INTENSITY_PRED_B2++,INTENSITY_PRED_B2+++,INTENSITY_PRED_Y3+,INTENSITY_PRED_Y3++,INTENSITY_PRED_Y3+++,INTENSITY_PRED_B3+,INTENSITY_PRED_B3++,INTENSITY_PRED_B3+++,INTENSITY_PRED_Y4+,INTENSITY_PRED_Y4++,INTENSITY_PRED_Y4+++,INTENSITY_PRED_B4+,INTENSITY_PRED_B4++,INTENSITY_PRED_B4+++,INTENSITY_PRED_Y5+,INTENSITY_PRED_Y5++,INTENSITY_PRED_Y5+++,INTENSITY_PRED_B5+,INTENSITY_PRED_B5++,INTENSITY_PRED_B5+++,INTENSITY_PRED_Y6+,INTENSITY_PRED_Y6++,INTENSITY_PRED_Y6+++,INTENSITY_PRED_B6+,INTENSITY_PRED_B6++,INTENSITY_PRED_B6+++,INTENSITY_PRED_Y7+,INTENSITY_PRED_Y7++,INTENSITY_PRED_Y7+++,INTENSITY_PRED_B7+,INTENSITY_PRED_B7++,INTENSITY_PRED_B7+++,INTENSITY_PRED_Y8+,INTENSITY_PRED_Y8++,INTENSITY_PRED_Y8+++,INTENSITY_PRED_B8+,INTENSITY_PRED_B8++,INTENSITY_PRED_B8+++,INTENSITY_PRED_Y9+,INTENSITY_PRED_Y9++,INTENSITY_PRED_Y9+++,INTENSITY_PRED_B9+,INTENSITY_PRED_B9++,INTENSITY_PRED_B9+++,INTENSITY_PRED_Y10+,INTENSITY_PRED_Y10++,INTENSITY_PRED_Y10+++,INTENSITY_PRED_B10+,INTENSITY_PRED_B10++,INTENSITY_PRED_B10+++,INTENSITY_PRED_Y11+,INTENSITY_PRED_Y11++,INTENSITY_PRED_Y11+++,INTENSITY_PRED_B11+,INTENSITY_PRED_B11++,INTENSITY_PRED_B11+++,INTENSITY_PRED_Y12+,INTENSITY_PRED_Y12++,INTENSITY_PRED_Y12+++,INTENSITY_PRED_B12+,INTENSITY_PRED_B12++,INTENSITY_PRED_B12+++,INTENSITY_PRED_Y13+,INTENSITY_PRED_Y13++,INTENSITY_PRED_Y13+++,INTENSITY_PRED_B13+,INTENSITY_PRED_B13++,INTENSITY_PRED_B13+++,INTENSITY_PRED_Y14+,INTENSITY_PRED_Y14++,INTENSITY_PRED_Y14+++,INTENSITY_PRED_B14+,INTENSITY_PRED_B14++,INTENSITY_PRED_B14+++,INTENSITY_PRED_Y15+,INTENSITY_PRED_Y15++,INTENSITY_PRED_Y15+++,INTENSITY_PRED_B15+,INTENSITY_PRED_B15++,INTENSITY_PRED_B15+++,INTENSITY_PRED_Y16+,INTENSITY_PRED_Y16++,INTENSITY_PRED_Y16+++,INTENSITY_PRED_B16+,INTENSITY_PRED_B16++,INTENSITY_PRED_B16+++,INTENSITY_PRED_Y17+,INTENSITY_PRED_Y17++,INTENSITY_PRED_Y17+++,INTENSITY_PRED_B17+,INTENSITY_PRED_B17++,INTENSITY_PRED_B17+++,INTENSITY_PRED_Y18+,INTENSITY_PRED_Y18++,INTENSITY_PRED_Y18+++,INTENSITY_PRED_B18+,INTENSITY_PRED_B18++,INTENSITY_PRED_B18+++,INTENSITY_PRED_Y19+,INTENSITY_PRED_Y19++,INTENSITY_PRED_Y19+++,INTENSITY_PRED_B19+,INTENSITY_PRED_B19++,INTENSITY_PRED_B19+++,INTENSITY_PRED_Y20+,INTENSITY_PRED_Y20++,INTENSITY_PRED_Y20+++,INTENSITY_PRED_B20+,INTENSITY_PRED_B20++,INTENSITY_PRED_B20+++,INTENSITY_PRED_Y21+,INTENSITY_PRED_Y21++,INTENSITY_PRED_Y21+++,INTENSITY_PRED_B21+,INTENSITY_PRED_B21++,INTENSITY_PRED_B21+++,INTENSITY_PRED_Y22+,INTENSITY_PRED_Y22++,INTENSITY_PRED_Y22+++,INTENSITY_PRED_B22+,INTENSITY_PRED_B22++,INTENSITY_PRED_B22+++,INTENSITY_PRED_Y23+,INTENSITY_PRED_Y23++,INTENSITY_PRED_Y23+++,INTENSITY_PRED_B23+,INTENSITY_PRED_B23++,INTENSITY_PRED_B23+++,INTENSITY_PRED_Y24+,INTENSITY_PRED_Y24++,INTENSITY_PRED_Y24+++,INTENSITY_PRED_B24+,INTENSITY_PRED_B24++,INTENSITY_PRED_B24+++,INTENSITY_PRED_Y25+,INTENSITY_PRED_Y25++,INTENSITY_PRED_Y25+++,INTENSITY_PRED_B25+,INTENSITY_PRED_B25++,INTENSITY_PRED_B25+++,INTENSITY_PRED_Y26+,INTENSITY_PRED_Y26++,INTENSITY_PRED_Y26+++,INTENSITY_PRED_B26+,INTENSITY_PRED_B26++,INTENSITY_PRED_B26+++,INTENSITY_PRED_Y27+,INTENSITY_PRED_Y27++,INTENSITY_PRED_Y27+++,INTENSITY_PRED_B27+,INTENSITY_PRED_B27++,INTENSITY_PRED_B27+++,INTENSITY_PRED_Y28+,INTENSITY_PRED_Y28++,INTENSITY_PRED_Y28+++,INTENSITY_PRED_B28+,INTENSITY_PRED_B28++,INTENSITY_PRED_B28+++,INTENSITY_PRED_Y29+,INTENSITY_PRED_Y29++,INTENSITY_PRED_Y29+++,INTENSITY_PRED_B29+,INTENSITY_PRED_B29++,INTENSITY_PRED_B29+++ +[UNIMOD:737]-PEPTIDEK[UNIMOD:737],30,2,HCD,39.420433,0.23809576034545898,8.493546488352877e-08,0,8.493546488352877e-08,8.493546488352877e-08,0,0.8115681409835815,8.493546488352877e-08,0,1.0,8.493546488352877e-08,0,0.16860607266426086,8.493546488352877e-08,0,0.009546236135065556,8.493546488352877e-08,0,0.05823937803506851,8.493546488352877e-08,0,0.0676455870270729,8.493546488352877e-08,0,0.039169538766145706,8.493546488352877e-08,0,0.07002319395542145,8.493546488352877e-08,0,0.6715999841690063,0.01274949125945568,0,0.5392391085624695,8.493546488352877e-08,0,0.02867981791496277,0.00021903926972299814,0,0.07469962537288666,8.493546488352877e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[UNIMOD:737]-PEPTIDE,30,2,HCD,43.523045,0.522221565246582,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.6478652358055115,1.0271855899190996e-07,0,0.6932786107063293,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.03741396963596344,0.04295269027352333,0,1.0271855899190996e-07,1.0271855899190996e-07,0,1.0,0.016776476055383682,0,0.024784639477729797,1.0271855899190996e-07,0,0.47810620069503784,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.6293804049491882,0.0024885176680982113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +[UNIMOD:737]-M[UNIMOD:35]EC[UNIMOD:4]TIDEK[UNIMOD:737],35,1,CID,24.778168,0.2831476628780365,0,0,1.3209350413490029e-07,0,0,1.0,0,0,1.3209350413490029e-07,0,0,0.38974782824516296,0,0,0.018663309514522552,0,0,0.16417913138866425,0,0,0.019735727459192276,0,0,0.27998510003089905,0,0,0.009887314401566982,0,0,0.48476091027259827,0,0,0.009575176984071732,0,0,0.26375487446784973,0,0,0.019234927371144295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 From 7c18bc144b9706587e4bbe51c8a3b391ec4adddd Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Sun, 24 Mar 2024 18:15:11 +0100 Subject: [PATCH 024/112] testing if AnnData object(converted to df) matches expected output --- tests/unit_tests/test_predictions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index 112616e3..20674604 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -40,7 +40,7 @@ def test_prosit_tmt(self): library.spectra_data.obs["PREDICTED_IRT"].dtype ) - # pd.testing.assert_frame_equal(library.spectra_daa, expected_df) + pd.testing.assert_frame_equal(library.convert_to_df(), expected_df) def test_failing_koina(self): """Test koina with input data that does not fit to the model to trigger exception handling.""" From 8f64316c7e532ee535f576882357459347bc1c1f Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Sun, 24 Mar 2024 18:16:07 +0100 Subject: [PATCH 025/112] closing files and removing unnecessairy slice --- oktoberfest/runner.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index e10d8a30..33272c0b 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -191,12 +191,14 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): library.spectra_data.obs["COLLISION_ENERGY"] = best_ce with open(results_dir / f"{spectra_file.stem}_ce.txt", "w") as f: f.write(str(best_ce)) + f.close() else: best_ce = 35 library.spectra_data.obs["COLLISION_ENERGY"] = best_ce with open(results_dir / f"{spectra_file.stem}_ce.txt", "w") as f: f.write(str(best_ce)) + f.close() def _speclib_from_digestion(config: Config) -> Spectra: @@ -370,7 +372,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): shared_queue, prediction_progress, lock, - spec_library.spectra_data[i * batchsize : (i + 1) * batchsize, :], + spec_library.spectra_data[i * batchsize : (i + 1) * batchsize], ), error_callback=partial( _make_predictions_error_callback, prediction_failure_progress, lock_failure From ef9de1fceecebbffaf73faa09d6ae3dffb75e05d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Sun, 24 Mar 2024 18:17:01 +0100 Subject: [PATCH 026/112] removed unnecessairy type conversions and blank lines --- oktoberfest/plotting/plotting.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/oktoberfest/plotting/plotting.py b/oktoberfest/plotting/plotting.py index 6d4f0925..95d480a7 100644 --- a/oktoberfest/plotting/plotting.py +++ b/oktoberfest/plotting/plotting.py @@ -289,9 +289,6 @@ def plot_sa_distribution(prosit_df: pd.DataFrame, target_df: pd.DataFrame, decoy :param filename: the path to the location used for storing the plot """ _, _, _, psm_col = _check_columns(target_df) - - prosit_df["SpecId"] = prosit_df["SpecId"].astype("string") - target_df[psm_col] = target_df[psm_col].astype("string") target = prosit_df.merge(target_df, how="inner", left_on="SpecId", right_on=psm_col) decoy = prosit_df.merge(decoy_df, how="inner", left_on="SpecId", right_on=psm_col) plt.figure(figsize=(8, 6)) @@ -349,14 +346,12 @@ def plot_all(data_dir: Path): "psm", data_dir / "original_target_vs_decoys_psm_bins.svg", ) - plot_sa_distribution( prosit_df, prosit_psms_target, prosit_psms_decoy, data_dir / "target_vs_decoys_sa_distribution.svg", ) - joint_plot( prosit_pep_target, prosit_pep_decoy, @@ -365,7 +360,6 @@ def plot_all(data_dir: Path): "peptide", data_dir / "rescore_original_joint_plot_peptide.svg", ) - joint_plot( prosit_psms_target, prosit_psms_decoy, From 4afcabe166944ac89481db8eb71b6d1ca98bb58f Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Sun, 24 Mar 2024 18:18:11 +0100 Subject: [PATCH 027/112] removed unnecessairy slicing and conversion to array --- oktoberfest/predict/predict.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 41d36107..aec34048 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -121,7 +121,6 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: :return: a spectra object containing the spectral angle for each tested CE """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) - logger.info(alignment_library.spectra_data) intensities = predict(alignment_library.spectra_data, **server_kwargs) alignment_library.add_matrix(intensities["intensities"], FragmentType.PRED) _alignment(alignment_library) @@ -137,10 +136,10 @@ def _alignment(alignment_library: Spectra): :param alignment_library: the library to perform the alignment on """ - pred_intensity = alignment_library.get_matrix(FragmentType.PRED)[0].toarray() - raw_intensity = alignment_library.get_matrix(FragmentType.RAW)[0].toarray() + pred_intensity = alignment_library.get_matrix(FragmentType.PRED)[0] + raw_intensity = alignment_library.get_matrix(FragmentType.RAW)[0] sm = SimilarityMetrics(pred_intensity, raw_intensity) alignment_library.add_column(sm.spectral_angle(raw_intensity, pred_intensity, 0), "SPECTRAL_ANGLE") alignment_library.spectra_data = alignment_library.spectra_data[ - alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] != 0, : + alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] != 0 ] From 308bd6b0d3ca4173857657a3ece6b70f85d842a5 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Sun, 24 Mar 2024 18:21:28 +0100 Subject: [PATCH 028/112] removed redundant function get_columns, wrote helper function to accommodate all layers and improved convert_to_df function --- oktoberfest/data/spectra.py | 122 +++++++++++++++++++----------------- 1 file changed, 66 insertions(+), 56 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index e11e1567..295c9e45 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -9,7 +9,7 @@ import scipy import spectrum_fundamentals.constants as c from anndata import AnnData -from scipy.sparse import coo_matrix, csr_matrix +from scipy.sparse import csr_matrix from spectrum_io.file import hdf5 logger = logging.getLogger(__name__) @@ -32,17 +32,20 @@ class Spectra: INTENSITY_COLUMN_PREFIX = "INTENSITY_RAW" INTENSITY_PRED_PREFIX = "INTENSITY_PRED" MZ_COLUMN_PREFIX = "MZ_RAW" + INTENSITY_PRED_LAYER_NAME = "pred_int" + INTENSITY_LAYER_NAME = "raw_int" + MZ_LAYER_NAME = "mz" COLUMNS_FRAGMENT_ION = ["Y1+", "Y1++", "Y1+++", "B1+", "B1++", "B1+++"] spectra_data: AnnData def __init__(self, size): """Initialize spectra data as an AnnData object.""" - vars_df = self.gen_vars_df() + vars_df = self._gen_vars_df() self.spectra_data = AnnData(shape=size, var=vars_df) @staticmethod - def gen_vars_df() -> pd.DataFrame: + def _gen_vars_df() -> pd.DataFrame: """ Creates Annotation dataframe for vars in AnnData object. @@ -88,10 +91,26 @@ def _resolve_prefix(fragment_type: FragmentType) -> str: prefix = Spectra.INTENSITY_PRED_PREFIX elif fragment_type.value == 2: prefix = Spectra.INTENSITY_COLUMN_PREFIX - else: + elif fragment_type.value == 3: prefix = Spectra.MZ_COLUMN_PREFIX return prefix + @staticmethod + def _resolve_layer_name(fragment_type: FragmentType) -> str: + """ + Resolve layer name given fragment type (1 for pred, 2 for raw, 3 for mz). + + :param fragment_type: choose predicted, raw, or mz + :return: layer name as string + """ + if fragment_type.value == 1: + layer = Spectra.INTENSITY_PRED_LAYER_NAME + elif fragment_type.value == 2: + layer = Spectra.INTENSITY_LAYER_NAME + elif fragment_type.value == 3: + layer = Spectra.MZ_LAYER_NAME + return layer + def add_column(self, column_data: np.ndarray, name: str) -> None: """ Add column to spectra data. @@ -117,7 +136,7 @@ def add_columns(self, columns_data: pd.DataFrame) -> None: # replaces X and layers (their shape can't be changed) if mz_cols: - self.spectra_data.X = scipy.sparse.csr_matrix(columns_data[mz_cols]) + self.spectra_data.layers["mz"] = scipy.sparse.csr_matrix(columns_data[mz_cols]) if pred_int_cols: self.spectra_data.layers["pred_int"] = scipy.sparse.csr_matrix(columns_data[pred_int_cols]) if raw_int_cols: @@ -137,12 +156,8 @@ def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: Frag :param fragment_type: choose predicted, raw, or mz """ # add sparse matrix of intensities to corresponding layer - if fragment_type.value == 1: - self.spectra_data.layers["pred_int"] = scipy.sparse.csr_matrix(intensity_data) - elif fragment_type.value == 2: - self.spectra_data.layers["raw_int"] = scipy.sparse.csr_matrix(intensity_data) - else: - self.spectra_data.X = scipy.sparse.csr_matrix(intensity_data) + layer = self._resolve_layer_name(fragment_type) + self.spectra_data.layers[layer] = scipy.sparse.csr_matrix(intensity_data) def add_matrix(self, intensity_data, fragment_type: FragmentType, annotation=None) -> None: """ @@ -151,43 +166,22 @@ def add_matrix(self, intensity_data, fragment_type: FragmentType, annotation=Non :param intensity_data: intensity numpy array to add :param fragment_type: choose predicted, raw, or mz """ - intensity_array = np.array(intensity_data) # Change zeros to epislon to keep the info of invalid values # change the -1 values to 0 (for better performance when converted to sparse representation) - intensity_array[intensity_array == 0] = c.EPSILON - intensity_array[intensity_array == -1] = 0.0 + intensity_data[intensity_data == 0] = c.EPSILON + intensity_data[intensity_data == -1] = 0.0 - if annotation: - self.spectra_data.layers["pred_int"] = csr_matrix(intensity_array.shape) - index = index = [list(self.spectra_data.var_names).index(i) for i in annotation] - self.spectra_data.layers["pred_int"][:, index] = intensity_array - else: - # generate column names and build dataframe from sparse matrix - intensity_df = pd.DataFrame.sparse.from_spmatrix(coo_matrix(intensity_array, dtype=np.float32)) - columns = self._gen_column_names(fragment_type) - intensity_df.columns = columns - self.add_columns(intensity_df) + intensity_data = csr_matrix(intensity_data) - def get_columns(self, fragment_type: FragmentType, return_column_names: bool = False) -> coo_matrix: - """ - Get intensities sparse matrix from dataframe. + layer = self._resolve_layer_name(fragment_type) - :param fragment_type: choose predicted, raw, or mz - :param return_column_names: whether column names should be returned - :return: sparse matrix with the required data - """ - prefix = Spectra._resolve_prefix(fragment_type) - logger.debug(prefix) - - if fragment_type.value == 1: - matrix = scipy.sparse.csr_matrix(self.spectra_data.layers["pred_int"].toarray()) - elif fragment_type.value == 2: - matrix = scipy.sparse.csr_matrix(self.spectra_data.layers["raw_int"].toarray()) + if annotation: + if self.spectra_data.layers[layer] is None: + self.spectra_data.layers[layer] = csr_matrix(intensity_data.shape) + index = [list(self.spectra_data.var_names).index(i) for i in annotation] + self.spectra_data.layers[layer][:, index] = intensity_data else: - matrix = scipy.sparse.csr_matrix(self.spectra_data.X.toarray()) - - # Check if conversion is low change to coo then csr from coo - return matrix, self._gen_column_names(fragment_type) if return_column_names else matrix + self.spectra_data.layers[layer] = intensity_data def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str]]: """ @@ -196,15 +190,12 @@ def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str] :param fragment_type: choose predicted, raw, or mz :return: sparse matrix with the required data """ - prefix = Spectra._resolve_prefix(fragment_type) + prefix = self._resolve_prefix(fragment_type) logger.debug(prefix) - if fragment_type.value == 1: - matrix = self.spectra_data.layers["pred_int"] - elif fragment_type.value == 2: - matrix = self.spectra_data.layers["raw_int"] - else: - matrix = self.spectra_data.X - # Check if conversion is low change to coo then csr from coo + + layer = self._resolve_layer_name(fragment_type) + matrix = self.spectra_data.layers[layer] + return matrix, self._gen_column_names(fragment_type) def write_as_hdf5(self, output_file: Union[str, Path], include_intensities: bool = False) -> Thread: @@ -214,6 +205,10 @@ def write_as_hdf5(self, output_file: Union[str, Path], include_intensities: bool :param output_file: path to output file :return: the thread object from the hdf5 writer for later joining """ + logger.info(self.spectra_data.layers) + logger.info(self.spectra_data.obs.dtypes) + # self.spectra_data.write(output_file, compression='gzip') + data_set_names = [hdf5.META_DATA_KEY, hdf5.INTENSITY_RAW_KEY, hdf5.MZ_RAW_KEY] meta_data = self.get_meta_data() if include_intensities: @@ -256,6 +251,12 @@ def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]): :param input_file: path to input file :return: a spectra instance """ + """ + input_file = str(input_file) + data = anndata.read_hdf(input_file,key="raw_mz") + spectra = cls(data.shape) + spectra.spectra_data = data + """ input_file = str(input_file) sparse_raw_intensities = hdf5.read_file(input_file, f"sparse_{hdf5.INTENSITY_RAW_KEY}") sparse_raw_mzs = hdf5.read_file(input_file, f"sparse_{hdf5.MZ_RAW_KEY}") @@ -289,10 +290,19 @@ def convert_to_df(self) -> pd.DataFrame: :return: a pandas DataFrame """ - df = self.spectra_data.obs - mz_cols = pd.DataFrame(self.get_matrix(FragmentType.MZ)[0].toarray()) - mz_cols.columns = self._gen_column_names(FragmentType.MZ) - raw_cols = pd.DataFrame(self.get_matrix(FragmentType.RAW)[0].toarray()) - raw_cols.columns = self._gen_column_names(FragmentType.RAW) - df_merged = pd.concat([df, pd.concat([mz_cols, raw_cols], axis=1)], axis=1) + df_merged = self.spectra_data.obs + logger.debug(self.spectra_data.obs.columns) + + if "mz" in list(self.spectra_data.layers): + mz_cols = pd.DataFrame(self.get_matrix(FragmentType.MZ)[0].toarray()) + mz_cols.columns = self._gen_column_names(FragmentType.MZ) + df_merged = pd.concat([df_merged,mz_cols], axis=1) + if "raw_int" in list(self.spectra_data.layers): + raw_cols = pd.DataFrame(self.get_matrix(FragmentType.RAW)[0].toarray()) + raw_cols.columns = self._gen_column_names(FragmentType.RAW) + df_merged = pd.concat([df_merged, raw_cols], axis=1) + if "pred_int" in list(self.spectra_data.layers): + pred_cols = pd.DataFrame(self.get_matrix(FragmentType.PRED)[0].toarray()) + pred_cols.columns = self._gen_column_names(FragmentType.PRED) + df_merged = pd.concat([df_merged, pred_cols], axis=1) return df_merged From 155a8f56a876c5543e6695cde9e3f356c8fa4894 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Tue, 26 Mar 2024 16:09:21 +0100 Subject: [PATCH 029/112] added timsTOF tutorial --- tutorials/timsTOF_rescoring_tutorial.ipynb | 247 +++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 tutorials/timsTOF_rescoring_tutorial.ipynb diff --git a/tutorials/timsTOF_rescoring_tutorial.ipynb b/tutorials/timsTOF_rescoring_tutorial.ipynb new file mode 100644 index 00000000..4b8fc358 --- /dev/null +++ b/tutorials/timsTOF_rescoring_tutorial.ipynb @@ -0,0 +1,247 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Rescoring of timsTOF data using Oktoberfest\n", + "\n", + "This notebook provides an overview of rescoring timsTOF data in Oktoberfest. The total runtime including file download (12 minutes, only once) and rescoring (20 minutes) should take around 35 minutes in total." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Import necessary python packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "from oktoberfest.runner import run_job\n", + "import json\n", + "import urllib.request\n", + "import shutil\n", + "from tqdm import tqdm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Download files from zenodo required to run different tasks\n", + "\n", + "The data used in this tutorial is provided in a public zenodo record. \n", + "This is a larger dataset with 2.55GB in total. Download time should be ~15mins (averge 3MB/s)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Get the current directory and set the file name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "download_dir = os.getcwd()\n", + "download_file = os.path.join(download_dir, \"Oktoberfest_timsTOF_input.zip\")\n", + "url = \"https://zenodo.org/record/10868376/files/Oktoberfest_timsTOF_input.zip\"\n", + "\n", + "# set download to False if you already have the file and don\"t want to download again in the next step\n", + "download = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download and extract files from zenodo to the same directory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "if download:\n", + " with tqdm(unit=\"B\", total=2160299072, unit_scale=True, unit_divisor=1000, miniters=1, desc=url.split(\"/\")[-1]) as t:\n", + " urllib.request.urlretrieve(url=url, filename=download_file, reporthook=lambda blocks, block_size, _: t.update(blocks * block_size - t.n))\n", + " shutil.unpack_archive(download_file, download_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check downloaded files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "input_dir = download_file[:-4]\n", + "print(f\"Downloaded data is stored in {input_dir}\\nContents:\")\n", + "os.listdir(input_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Rescoring\n", + "\n", + "Rescoring involves CE calibration, after which predictions with the optimal CE are retrieved. This takes around 25 minutes, of which 15 minutes are file transformation / MS2 spectra aggregation (only once). In subsequent runs, runtime decreases to 10 minutes accordingly." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate config file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "task_config_rescoring = {\n", + " \"type\": \"Rescoring\",\n", + " \"tag\": \"\",\n", + " \"inputs\":{\n", + " \"search_results\": input_dir + \"/txt\",\n", + " \"search_results_type\": \"Maxquant\",\n", + " \"spectra\": input_dir,\n", + " \"spectra_type\": \"d\"\n", + " },\n", + " \"output\": \"./timstof_out\",\n", + " \"models\": {\n", + " \"intensity\": \"Prosit_2023_intensity_timsTOF\",\n", + " \"irt\": \"Prosit_2019_irt\"\n", + " },\n", + " \"prediction_server\": \"koina.wilhelmlab.org:443\",\n", + " \"ssl\": True,\n", + " \"thermoExe\": \"ThermoRawFileParser.exe\",\n", + " \"numThreads\": 1,\n", + " \"fdr_estimation_method\": \"percolator\",\n", + " \"regressionMethod\": \"spline\",\n", + " \"allFeatures\": False,\n", + " \"massTolerance\": 40,\n", + " \"unitMassTolerance\": \"ppm\",\n", + " \"ce_alignment_options\": {\n", + " \"ce_range\": [\n", + " 5,\n", + " 45\n", + " ],\n", + " \"use_ransac_model\": True\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Save the config file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "with open(\"./rescoring_config.json\", \"w\") as fp:\n", + " json.dump(task_config_rescoring, fp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Start rescoring" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "run_job(\"./rescoring_config.json\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check the results\n", + "\n", + "The results are written to the output folder specified in the config file. CE alignment, the distribution of percolator scores for targets and decoys when rescoring with and without Prosit-derived features, as well as PSMs and peptides below 1%FDR gained, shared and lost between when rescoring with Prosit-derived features versus without are also shown in the above cell to provide a general overview.\n", + "\n", + "The expected result should show:\n", + "\n", + "1. CE alignment: For precursor charge state 1-4 (scatter plots), there is a linear relation between the delta in CE (difference between reported and best CE as defined by providing the highest spectral angle for predictions). That means, with increasing precursor mass, the delta decreases.\n", + "2. Target-Decoy percolator score distribution: Predicting with Prosit-derived features (along the y-axis of the joint plot) shows a bimodal distribution for targets, that separates what is expected to be true positives from false positives. The latter follow the decoy distribution very well, which indiciates that percolator's rescoring worked well according to FDR estimation using the target-decoy approach. Rescoring without Prosit-derived features (along the x-axis) shows poorer separation, leading to less target PSMs / peptides retained below a 1%FDR cutoff (green dots not above a percolator score of 0, as indicated by the red line) compared to rescoring with Prosit-derived features.\n", + "3. Lost-common-gained PSMS and peptides: To quantify how many PSMs and peptides below 1%FDR are lost, common and gained when rescoring with Prosit-derived features versus rescoring without, the stacked barplots are used. You should see approximately 80% increase in PSMs peptides below 1% FDR. These are 3570 common and 2852 gained peptides, and 4379 common and 3581 gained PSMs. At the same time, the low number of lost PSMs (55) and peptides (47) can be used as another quality control to show that rescoring with Prosit-derived features improves the overall number without losing what would be there with features including the search engine derived score. The exact numbers may vary based on percolator's random initialization." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 8754abdcf4c06f29a86ee8ec1af71b12caaae12e Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 29 Mar 2024 11:46:57 +0100 Subject: [PATCH 030/112] implemented the use of anndata io functions --- oktoberfest/data/spectra.py | 72 +++++++------------------------------ 1 file changed, 12 insertions(+), 60 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index 295c9e45..40c9a01c 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -1,16 +1,14 @@ import logging from enum import Enum from pathlib import Path -from threading import Thread from typing import List, Tuple, Type, TypeVar, Union +import anndata import numpy as np import pandas as pd import scipy import spectrum_fundamentals.constants as c -from anndata import AnnData from scipy.sparse import csr_matrix -from spectrum_io.file import hdf5 logger = logging.getLogger(__name__) @@ -37,12 +35,12 @@ class Spectra: MZ_LAYER_NAME = "mz" COLUMNS_FRAGMENT_ION = ["Y1+", "Y1++", "Y1+++", "B1+", "B1++", "B1+++"] - spectra_data: AnnData + spectra_data: anndata.AnnData def __init__(self, size): """Initialize spectra data as an AnnData object.""" vars_df = self._gen_vars_df() - self.spectra_data = AnnData(shape=size, var=vars_df) + self.spectra_data = anndata.AnnData(shape=size, var=vars_df) @staticmethod def _gen_vars_df() -> pd.DataFrame: @@ -198,50 +196,13 @@ def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str] return matrix, self._gen_column_names(fragment_type) - def write_as_hdf5(self, output_file: Union[str, Path], include_intensities: bool = False) -> Thread: + def write_as_hdf5(self, output_file: Union[str, Path]): """ - Write intensity and mz data as hdf5. + Write spectra_data to hdf5 file. :param output_file: path to output file - :return: the thread object from the hdf5 writer for later joining """ - logger.info(self.spectra_data.layers) - logger.info(self.spectra_data.obs.dtypes) - # self.spectra_data.write(output_file, compression='gzip') - - data_set_names = [hdf5.META_DATA_KEY, hdf5.INTENSITY_RAW_KEY, hdf5.MZ_RAW_KEY] - meta_data = self.get_meta_data() - if include_intensities: - sparse_matrix_mz, columns_mz = self.get_matrix(FragmentType.MZ) - sparse_matrix_intensity_raw, columns_intensity = self.get_matrix(FragmentType.RAW) - else: - columns_mz = self._gen_column_names(FragmentType.MZ) - columns_intensity = self._gen_column_names(FragmentType.RAW) - sparse_matrix_mz = scipy.sparse.csr_matrix(np.zeros((len(meta_data), 174))) - sparse_matrix_intensity_raw = scipy.sparse.csr_matrix(np.zeros((len(meta_data), 174))) - - data_sets = [meta_data, sparse_matrix_intensity_raw, sparse_matrix_mz] - column_names = [columns_intensity, columns_mz] - - return hdf5.write_file(data_sets, output_file, data_set_names, column_names) - - def write_pred_as_hdf5(self, output_file: Union[str, Path]) -> Thread: - """ - Write intensity, mz, and pred data as hdf5. - - :param output_file: path to output file - :return: the thread object from the hdf5 writer for later joining - - """ - data_set_names = [hdf5.META_DATA_KEY, hdf5.INTENSITY_RAW_KEY, hdf5.MZ_RAW_KEY, hdf5.INTENSITY_PRED_KEY] - - sparse_matrix_intensity_raw, columns_intensity = self.get_matrix(FragmentType.RAW) - sparse_matrix_mz, columns_mz = self.get_matrix(FragmentType.MZ) - sparse_matrix_pred, columns_pred = self.get_matrix(FragmentType.PRED) - data_sets = [self.get_meta_data(), sparse_matrix_intensity_raw, sparse_matrix_mz, sparse_matrix_pred] - column_names = [columns_intensity, columns_mz, columns_pred] - - return hdf5.write_file(data_sets, output_file, data_set_names, column_names) + self.spectra_data.write(output_file, compression="gzip") @classmethod def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]): @@ -251,21 +212,12 @@ def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]): :param input_file: path to input file :return: a spectra instance """ - """ input_file = str(input_file) - data = anndata.read_hdf(input_file,key="raw_mz") - spectra = cls(data.shape) - spectra.spectra_data = data - """ - input_file = str(input_file) - sparse_raw_intensities = hdf5.read_file(input_file, f"sparse_{hdf5.INTENSITY_RAW_KEY}") - sparse_raw_mzs = hdf5.read_file(input_file, f"sparse_{hdf5.MZ_RAW_KEY}") - spectra = cls(sparse_raw_intensities.shape) - if not sparse_raw_intensities.empty: - spectra.add_matrix_from_hdf5(sparse_raw_intensities, FragmentType.RAW) - if not sparse_raw_mzs.empty: - spectra.add_matrix_from_hdf5(sparse_raw_mzs, FragmentType.MZ) - spectra.add_columns(hdf5.read_file(input_file, hdf5.META_DATA_KEY)) + ann = anndata.read_h5ad(input_file) + + spectra = cls(ann.shape) + spectra.spectra_data = ann + return spectra @classmethod @@ -296,7 +248,7 @@ def convert_to_df(self) -> pd.DataFrame: if "mz" in list(self.spectra_data.layers): mz_cols = pd.DataFrame(self.get_matrix(FragmentType.MZ)[0].toarray()) mz_cols.columns = self._gen_column_names(FragmentType.MZ) - df_merged = pd.concat([df_merged,mz_cols], axis=1) + df_merged = pd.concat([df_merged, mz_cols], axis=1) if "raw_int" in list(self.spectra_data.layers): raw_cols = pd.DataFrame(self.get_matrix(FragmentType.RAW)[0].toarray()) raw_cols.columns = self._gen_column_names(FragmentType.RAW) From da0a89a1741b1986ab97e96696e07307801b663f Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 29 Mar 2024 11:48:54 +0100 Subject: [PATCH 031/112] adjusted writedunction calls --- oktoberfest/runner.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 33272c0b..6d794843 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -78,7 +78,7 @@ def _preprocess(spectra_files: List[Path], config: Config) -> List[Path]: logger.info(f"Read {len(search_results)} PSMs from {internal_search_file}") # filter search results - search_results = pp.filter_peptides_for_model(peptides=search_results, model=config.models["intensity"]) + pp.filter_peptides_for_model(peptides=search_results, model=config.models["intensity"]) # split search results searchfiles_found = pp.split_search( @@ -126,7 +126,7 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file search = pp.load_search(config.output / "msms" / spectra_file.with_suffix(".rescore").name) library = pp.merge_spectra_and_peptides(spectra, search) pp.annotate_spectral_library(library, mass_tol=config.mass_tolerance, unit_mass_tol=config.unit_mass_tolerance) - library.write_as_hdf5(hdf5_path, True).join() # write_metadata_annotation + library.write_as_hdf5(hdf5_path) # write_metadata_annotation return library @@ -241,7 +241,7 @@ def _speclib_from_digestion(config: Config) -> Spectra: spec_library = pp.process_and_filter_spectra_data( library=spec_library, model=config.models["intensity"], tmt_label=config.tag ) - spec_library.write_as_hdf5(data_dir / f"{library_file.stem}_filtered.hdf5").join() + spec_library.write_as_hdf5(data_dir / f"{library_file.stem}_filtered.hdf5") pp_and_filter_step.mark_done() else: spec_library = Spectra.from_hdf5(data_dir / f"{library_file.stem}_filtered.hdf5") @@ -433,7 +433,7 @@ def _ce_calib(spectra_file: Path, config: Config) -> Spectra: library = _annotate_and_get_library(spectra_file, config, tims_meta_file=tims_meta_file) _get_best_ce(library, spectra_file, config) - library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name, True).join() + library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) ce_calib_step.mark_done() @@ -492,7 +492,7 @@ def _calculate_features(spectra_file: Path, config: Config): library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) library.add_column(sum(pred_irts["irt"].tolist(), []), name="PREDICTED_IRT") - library.write_pred_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name).join() + library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) # produce percolator tab files fdr_dir = config.output / "results" / config.fdr_estimation_method From f6fb1fa70c851d17675b3937e2b5b5465c3b2c78 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Fri, 29 Mar 2024 11:50:27 +0100 Subject: [PATCH 032/112] got rid of code duplication and unnecessairy data copies --- oktoberfest/preprocessing/preprocessing.py | 47 ++++++++-------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 3e3f1f3d..5b4fab05 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -135,9 +135,7 @@ def digest( ) -def filter_peptides_for_model( - peptides: Optional[Union[pd.DataFrame, AnnData]], model: str -) -> Optional[Union[pd.DataFrame, AnnData]]: +def filter_peptides_for_model(peptides: Union[pd.DataFrame, AnnData], model: str) -> pd.DataFrame: """ Filter search results to support a given peptide prediction model. @@ -160,12 +158,10 @@ def filter_peptides_for_model( else: raise ValueError(f"The model {model} is not known.") - return filter_peptides(peptides, **filter_kwargs) + filter_peptides(peptides, **filter_kwargs) -def filter_peptides( - peptides: Optional[Union[pd.DataFrame, AnnData]], min_length: int, max_length: int, max_charge: int -) -> Optional[Union[pd.DataFrame, AnnData]]: +def filter_peptides(peptides: pd.DataFrame, min_length: int, max_length: int, max_charge: int): """ Filter search results using given constraints. @@ -179,29 +175,17 @@ def filter_peptides( :return: The filtered dataframe given the provided constraints. """ - if isinstance(peptides, pd.DataFrame): - return peptides[ - (peptides["PEPTIDE_LENGTH"] <= max_length) - & (peptides["PEPTIDE_LENGTH"] >= min_length) - & (peptides["PRECURSOR_CHARGE"] <= max_charge) - & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) - & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) - & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) - & (~peptides["SEQUENCE"].str.contains("U|X")) - ] - elif isinstance(peptides, AnnData): - selection = peptides.obs[ - (peptides.obs["PEPTIDE_LENGTH"] <= max_length) - & (peptides.obs["PEPTIDE_LENGTH"] >= min_length) - & (peptides.obs["PRECURSOR_CHARGE"] <= max_charge) - & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) - & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) - & (~peptides.obs["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) - & (~peptides.obs["SEQUENCE"].str.contains("U|X")) - ].index.tolist() - spectra = AnnData(var=peptides.var.copy(), obs=peptides.obs.iloc[selection].copy()) - return spectra - return peptides + if isinstance(peptides, AnnData): + peptides = peptides.obs + peptides[ + (peptides["PEPTIDE_LENGTH"] <= max_length) + & (peptides["PEPTIDE_LENGTH"] >= min_length) + & (peptides["PRECURSOR_CHARGE"] <= max_charge) + & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(ac\)")) + & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\(Acetyl \(Protein N-term\)\)")) + & (~peptides["MODIFIED_SEQUENCE"].str.contains(r"\[UNIMOD\:21\]")) + & (~peptides["SEQUENCE"].str.contains("U|X")) + ] def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Optional[str] = None) -> Spectra: @@ -239,7 +223,7 @@ def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Opt library.spectra_data.obs["PEPTIDE_LENGTH"] = library.spectra_data.obs["SEQUENCE"].apply(lambda x: len(x)) # filter - library.spectra_data = filter_peptides_for_model(library.spectra_data, model) + filter_peptides_for_model(library.spectra_data, model) library.spectra_data.obs["MASS"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply( lambda x: compute_peptide_mass(x) @@ -551,6 +535,7 @@ def annotate_spectral_library(psms: Spectra, mass_tol: Optional[float] = None, u psms.add_matrix(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) psms.add_matrix(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) + psms.spectra_data.obs = psms.spectra_data.obs.drop(["INTENSITIES", "MZ"], axis=1) psms.add_column(df_annotated_spectra["CALCULATED_MASS"].to_numpy(), "CALCULATED_MASS") From 0714eea7980671744c77a8c86ec0436c60701cb5 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 10 Apr 2024 15:41:08 +0200 Subject: [PATCH 033/112] cleanup, rm spectra_data and inherit from anndata --- noxfile.py | 1 + oktoberfest/data/spectra.py | 109 +++++++-------------- oktoberfest/preprocessing/preprocessing.py | 32 +++--- oktoberfest/runner.py | 28 +++--- tests/unit_tests/test_predictions.py | 47 +++------ 5 files changed, 77 insertions(+), 140 deletions(-) diff --git a/noxfile.py b/noxfile.py index 9e6325dd..f9e97979 100644 --- a/noxfile.py +++ b/noxfile.py @@ -108,6 +108,7 @@ def precommit(session: Session) -> None: "flake8-bandit", "flake8-bugbear", "flake8-docstrings", + "darglint", "flake8-rst-docstrings", "isort", "pep8-naming", diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index 40201c18..45ca2704 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -24,7 +24,7 @@ class FragmentType(Enum): MZ = 3 -class Spectra: +class Spectra(anndata.AnnData): """Main to init spectra data.""" INTENSITY_COLUMN_PREFIX = "INTENSITY_RAW" @@ -35,13 +35,6 @@ class Spectra: MZ_LAYER_NAME = "mz" COLUMNS_FRAGMENT_ION = ["Y1+", "Y1++", "Y1+++", "B1+", "B1++", "B1+++"] - spectra_data: anndata.AnnData - - def __init__(self, size): - """Initialize spectra data as an AnnData object.""" - vars_df = self._gen_vars_df() - self.spectra_data = anndata.AnnData(shape=size, var=vars_df) - @staticmethod def _gen_vars_df() -> pd.DataFrame: """ @@ -109,42 +102,32 @@ def _resolve_layer_name(fragment_type: FragmentType) -> str: layer = Spectra.MZ_LAYER_NAME return layer - def add_column(self, column_data: np.ndarray, name: str) -> None: + def add_column(self, data: Union[np.ndarray, pd.Series], name: Optional[str] = None) -> None: """ Add column to spectra data. - :param column_data: data for a column as np - :param name: name of the column - """ - column_df = pd.DataFrame({name: list(column_data)}) - self.spectra_data.obs = pd.concat([self.spectra_data.obs.reset_index(drop=True), column_df], axis=1) - - def add_columns(self, columns_data: pd.DataFrame) -> None: - """ - Assigns columns to the datastructures in AnnData based on what type they are. - - :param columns_data: a pandas data frame to add can be metrics or metadata - """ - mz_cols = list(filter(lambda c: c.startswith("MZ_RAW"), columns_data.columns)) - raw_int_cols = list(filter(lambda c: c.startswith("INTENSITY_RAW"), columns_data.columns)) - pred_int_cols = list(filter(lambda c: c.startswith("INTENSITY_PRED"), columns_data.columns)) - meta_cols = list( - filter(lambda c: not (c.startswith("INTENSITY") or c.startswith("MZ_RAW")), columns_data.columns) - ) - - # replaces X and layers (their shape can't be changed) - if mz_cols: - self.spectra_data.layers["mz"] = scipy.sparse.csr_matrix(columns_data[mz_cols]) - if pred_int_cols: - self.spectra_data.layers["pred_int"] = scipy.sparse.csr_matrix(columns_data[pred_int_cols]) - if raw_int_cols: - self.spectra_data.layers["raw_int"] = scipy.sparse.csr_matrix(columns_data[raw_int_cols]) - if meta_cols: - self.spectra_data.obs = columns_data[meta_cols] + :param data: data for a column as np + :param name: Optional name of the column, required if providing data as a numpy array. + In case of a pd.Series, providing a name replaces the series' name. + + :raises AssertionError: if data is not 1-dimensional or a column name is missing when + providing a numpy array. + :raises TypeError: if the data type is not understood + """ + if isinstance(data, np.ndarray): + if name is None: + raise AssertionError("Missing column name.") + if data.ndim != 1: + raise AssertionError("Column data must be supplied as a 1D numpy array.") + self.obs[name] = data + elif isinstance(data, pd.Series): + self.obs[name or data.name] = data + else: + raise TypeError(f"Unsupported data type provided: {type(data)}") def get_meta_data(self) -> pd.DataFrame: """Get meta data with intensity, mz and intensity predictions as pd.DataFrame.""" - return self.spectra_data.obs + return self.obs def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: FragmentType) -> None: """ @@ -155,7 +138,7 @@ def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: Frag """ # add sparse matrix of intensities to corresponding layer layer = self._resolve_layer_name(fragment_type) - self.spectra_data.layers[layer] = scipy.sparse.csr_matrix(intensity_data) + self.layers[layer] = scipy.sparse.csr_matrix(intensity_data) def add_matrix( self, intensity_data: np.ndarray, fragment_type: FragmentType, annotation: Optional[np.ndarray] = None @@ -177,12 +160,12 @@ def add_matrix( layer = self._resolve_layer_name(fragment_type) if annotation: - if self.spectra_data.layers[layer] is None: - self.spectra_data.layers[layer] = csr_matrix(intensity_data.shape) - index = [list(self.spectra_data.var_names).index(i) for i in annotation] - self.spectra_data.layers[layer][:, index] = intensity_data + if self.layers[layer] is None: + self.layers[layer] = csr_matrix(intensity_data.shape) + index = [list(self.var_names).index(i) for i in annotation] + self.layers[layer][:, index] = intensity_data else: - self.spectra_data.layers[layer] = intensity_data + self.layers[layer] = intensity_data def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str]]: """ @@ -195,7 +178,7 @@ def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str] logger.debug(prefix) layer = self._resolve_layer_name(fragment_type) - matrix = self.spectra_data.layers[layer] + matrix = self.layers[layer] return matrix, self._gen_column_names(fragment_type) @@ -205,7 +188,7 @@ def write_as_hdf5(self, output_file: Union[str, Path]): :param output_file: path to output file """ - self.spectra_data.write(output_file, compression="gzip") + self.write(output_file, compression="gzip") @classmethod def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]): @@ -215,29 +198,7 @@ def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]): :param input_file: path to input file :return: a spectra instance """ - input_file = str(input_file) - ann = anndata.read_h5ad(input_file) - - spectra = cls(ann.shape) - spectra.spectra_data = ann - - return spectra - - @classmethod - def from_csv(cls: Type[SpectraT], input_file: Union[str, Path]) -> SpectraT: - """ - Read from hdf5 file. - - :param input_file: path to input file - :return: a spectra instance - """ - input_file = str(input_file) - all_columns = pd.read_csv(input_file) - size = (all_columns.shape[0], 174) - spectra = cls(size) - spectra.add_columns(all_columns) - - return spectra + return cls(anndata.read_h5ad(str(input_file))) def convert_to_df(self) -> pd.DataFrame: """ @@ -245,18 +206,18 @@ def convert_to_df(self) -> pd.DataFrame: :return: a pandas DataFrame """ - df_merged = self.spectra_data.obs - logger.debug(self.spectra_data.obs.columns) + df_merged = self.obs + logger.debug(self.obs.columns) - if "mz" in list(self.spectra_data.layers): + if "mz" in list(self.layers): mz_cols = pd.DataFrame(self.get_matrix(FragmentType.MZ)[0].toarray()) mz_cols.columns = self._gen_column_names(FragmentType.MZ) df_merged = pd.concat([df_merged, mz_cols], axis=1) - if "raw_int" in list(self.spectra_data.layers): + if "raw_int" in list(self.layers): raw_cols = pd.DataFrame(self.get_matrix(FragmentType.RAW)[0].toarray()) raw_cols.columns = self._gen_column_names(FragmentType.RAW) df_merged = pd.concat([df_merged, raw_cols], axis=1) - if "pred_int" in list(self.spectra_data.layers): + if "pred_int" in list(self.layers): pred_cols = pd.DataFrame(self.get_matrix(FragmentType.PRED)[0].toarray()) pred_cols.columns = self._gen_column_names(FragmentType.PRED) df_merged = pd.concat([df_merged, pred_cols], axis=1) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 75904c3b..aaeee4c4 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -37,9 +37,8 @@ def gen_lib(input_file: Union[str, Path]) -> Spectra: """ library_df = csv.read_file(input_file) library_df.columns = library_df.columns.str.upper() - library = Spectra((len(library_df), 174)) - library.add_columns(library_df) - return library + var_df = Spectra._gen_vars_df() + return Spectra(obs=library_df, var=var_df) def generate_metadata( @@ -198,7 +197,7 @@ def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Opt """ Process and filter the spectra data in the given SpectralLibrary object. - This function applies various modifications and filters to the 'spectra_data' DataFrame + This function applies various modifications and filters to the obs DataFrame in the provided SpectralLibrary object. It modifies the 'MODIFIED_SEQUENCE' column, converts the 'MODIFIED_SEQUENCE' to internal format, extracts 'SEQUENCE', and filters out certain entries based on specific criteria. The specification of the internal file format can be found at @@ -211,29 +210,23 @@ def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Opt :return: The processed and filtered Spectra object """ # add fixed mods and translate to internal format - library.spectra_data.obs["MODIFIED_SEQUENCE"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply( - lambda x: "_" + x + "_" - ) + library.obs["MODIFIED_SEQUENCE"] = library.obs["MODIFIED_SEQUENCE"].apply(lambda x: "_" + x + "_") fixed_mods = {"C": "C[UNIMOD:4]"} if tmt_label is not None and tmt_label != "": unimod_tag = c.TMT_MODS[tmt_label] fixed_mods = {"C": "C[UNIMOD:4]", "^_": f"_{unimod_tag}-", "K": f"K{unimod_tag}"} - library.spectra_data.obs["MODIFIED_SEQUENCE"] = maxquant_to_internal( - library.spectra_data.obs["MODIFIED_SEQUENCE"], fixed_mods=fixed_mods - ) + library.obs["MODIFIED_SEQUENCE"] = maxquant_to_internal(library.obs["MODIFIED_SEQUENCE"], fixed_mods=fixed_mods) # get sequence and its length - library.spectra_data.obs["SEQUENCE"] = internal_without_mods(library.spectra_data.obs["MODIFIED_SEQUENCE"]) - library.spectra_data.obs["PEPTIDE_LENGTH"] = library.spectra_data.obs["SEQUENCE"].apply(lambda x: len(x)) + library.obs["SEQUENCE"] = internal_without_mods(library.obs["MODIFIED_SEQUENCE"]) + library.obs["PEPTIDE_LENGTH"] = library.obs["SEQUENCE"].apply(lambda x: len(x)) # filter - filter_peptides_for_model(library.spectra_data, model) + filter_peptides_for_model(library, model) - library.spectra_data.obs["MASS"] = library.spectra_data.obs["MODIFIED_SEQUENCE"].apply( - lambda x: compute_peptide_mass(x) - ) + library.obs["MASS"] = library.obs["MODIFIED_SEQUENCE"].apply(lambda x: compute_peptide_mass(x)) return library @@ -516,9 +509,10 @@ def merge_spectra_and_peptides(spectra: pd.DataFrame, search: pd.DataFrame) -> S """ logger.info("Merging rawfile and search result") psms = search.merge(spectra, on=["RAW_FILE", "SCAN_NUMBER"]) + # psms.set_index(TODO) + var_df = Spectra._gen_vars_df() - library = Spectra((len(psms), 174)) - library.add_columns(psms) + library = Spectra(obs=psms, var=var_df) return library @@ -542,7 +536,7 @@ def annotate_spectral_library(psms: Spectra, mass_tol: Optional[float] = None, u psms.add_matrix(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) psms.add_matrix(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) psms.spectra_data.obs = psms.spectra_data.obs.drop(["INTENSITIES", "MZ"], axis=1) - psms.add_column(df_annotated_spectra["CALCULATED_MASS"].to_numpy(), "CALCULATED_MASS") + psms.add_column(df_annotated_spectra["CALCULATED_MASS"]) def load_spectra( diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index c9b008c9..64104f09 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -134,7 +134,7 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): results_dir = config.output / "results" results_dir.mkdir(exist_ok=True) - if (library.spectra_data.obs["FRAGMENTATION"] == "HCD").any(): + if (library.obs["FRAGMENTATION"] == "HCD").any(): server_kwargs = { "server_url": config.prediction_server, "ssl": config.ssl, @@ -146,7 +146,7 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): if use_ransac_model: logger.info("Performing RANSAC regression") calib_group = ( - alignment_library.spectra_data.obs.groupby( + alignment_library.obs.groupby( by=["PRECURSOR_CHARGE", "ORIG_COLLISION_ENERGY", "COLLISION_ENERGY", "MASS"], as_index=False )["SPECTRAL_ANGLE"] .mean() @@ -171,13 +171,11 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): title=title, ) - delta_ce = ransac.predict(library.spectra_data[["MASS", "PRECURSOR_CHARGE"]]) - library.spectra_data.obs["COLLISION_ENERGY"] = np.maximum( - 0, library.spectra_data.obs["COLLISION_ENERGY"] + delta_ce - ) + delta_ce = ransac.predict(library.obs[["MASS", "PRECURSOR_CHARGE"]]) + library.obs["COLLISION_ENERGY"] = np.maximum(0, library.obs["COLLISION_ENERGY"] + delta_ce) else: - ce_alignment = alignment_library.spectra_data.obs.groupby(by=["COLLISION_ENERGY"])["SPECTRAL_ANGLE"].mean() + ce_alignment = alignment_library.obs.groupby(by=["COLLISION_ENERGY"])["SPECTRAL_ANGLE"].mean() best_ce = ce_alignment.idxmax() pl.plot_mean_sa_ce( @@ -185,16 +183,16 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): filename=results_dir / f"{spectra_file.stem}_mean_spectral_angle_ce.svg", ) pl.plot_violin_sa_ce( - sa_ce_df=alignment_library.spectra_data.obs[["COLLISION_ENERGY", "SPECTRAL_ANGLE"]], + sa_ce_df=alignment_library.obs[["COLLISION_ENERGY", "SPECTRAL_ANGLE"]], filename=results_dir / f"{spectra_file.stem}_violin_spectral_angle_ce.svg", ) - library.spectra_data.obs["COLLISION_ENERGY"] = best_ce + library.obs["COLLISION_ENERGY"] = best_ce with open(results_dir / f"{spectra_file.stem}_ce.txt", "w") as f: f.write(str(best_ce)) f.close() else: best_ce = 35 - library.spectra_data.obs["COLLISION_ENERGY"] = best_ce + library.obs["COLLISION_ENERGY"] = best_ce with open(results_dir / f"{spectra_file.stem}_ce.txt", "w") as f: f.write(str(best_ce)) @@ -335,7 +333,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): batchsize = config.batch_size failed_batch_file = config.output / "data" / "speclib_failed_batches.pkl" writer, out_file = _get_writer_and_output(results_path, config.output_format) - batches, mode = _get_batches_and_mode(out_file, failed_batch_file, len(spec_library.spectra_data), batchsize) + batches, mode = _get_batches_and_mode(out_file, failed_batch_file, spec_library.n_obs, batchsize) speclib = writer(out_file, mode=mode, min_intensity_threshold=config.min_intensity) n_batches = len(batches) @@ -372,7 +370,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): shared_queue, prediction_progress, lock, - spec_library.spectra_data[i * batchsize : (i + 1) * batchsize], + spec_library.obs[i * batchsize : (i + 1) * batchsize], ), error_callback=partial( _make_predictions_error_callback, prediction_failure_progress, lock_failure @@ -485,14 +483,14 @@ def _calculate_features(spectra_file: Path, config: Config): } pred_intensities = pr.predict( - data=library.spectra_data, + data=library, model_name=config.models["intensity"], **predict_kwargs, ) - pred_irts = pr.predict(data=library.spectra_data, model_name=config.models["irt"], **predict_kwargs) + pred_irts = pr.predict(data=library, model_name=config.models["irt"], **predict_kwargs) library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) - library.add_column(sum(pred_irts["irt"].tolist(), []), name="PREDICTED_IRT") + library.add_column(pred_irts["irt"].squeeze(), name="PREDICTED_IRT") library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) predict_step.mark_done() diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index cc1313df..37a4b024 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -2,6 +2,7 @@ from pathlib import Path import pandas as pd +from numpy.testing import assert_almost_equal from oktoberfest.data import Spectra from oktoberfest.data.spectra import FragmentType @@ -13,46 +14,28 @@ class TestTMTProsit(unittest.TestCase): def test_prosit_tmt(self): """Test retrieval of predictions from prosit tmt models via koina.""" - library = Spectra.from_csv(Path(__file__).parent / "data" / "predictions" / "library_input.csv") - input_data = library.spectra_data - + meta_df = pd.read_csv(Path(__file__).parent / "data" / "predictions" / "library_input.csv") + var = Spectra._gen_vars_df() + library = Spectra(obs=meta_df, var=var) + library.strings_to_categoricals() pred_intensities = predict( - input_data, + library, model_name="Prosit_2020_intensity_TMT", server_url="koina.wilhelmlab.org:443", ssl=True, targets=["intensities", "annotation"], ) - pred_irt = predict( - input_data, model_name="Prosit_2020_irt_TMT", server_url="koina.wilhelmlab.org:443", ssl=True - ) + pred_irt = predict(library, model_name="Prosit_2020_irt_TMT", server_url="koina.wilhelmlab.org:443", ssl=True) library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) - library.add_column(pred_irt["irt"], name="PREDICTED_IRT") - - expected_df = pd.read_csv(Path(__file__).parent / "data" / "predictions" / "library_output.csv") - sparse_cols = library.get_matrix(FragmentType.PRED)[1] - for sparse_col in range(0, len(sparse_cols)): - expected_df[sparse_cols[sparse_col]] = expected_df[sparse_cols[sparse_col]].astype( - library.spectra_data.layers["pred_int"][:, sparse_col].dtype - ) - expected_df["PREDICTED_IRT"] = expected_df["PREDICTED_IRT"].astype( - library.spectra_data.obs["PREDICTED_IRT"].dtype - ) - - pd.testing.assert_frame_equal(library.convert_to_df(), expected_df) + library.add_column(pred_irt["irt"].squeeze(), name="PREDICTED_IRT") - def test_failing_koina(self): - """Test koina with input data that does not fit to the model to trigger exception handling.""" - library = Spectra.from_csv(Path(__file__).parent / "data" / "predictions" / "library_input.csv") - input_data = library.spectra_data + library_expected = Spectra.from_hdf5(Path(__file__).parent / "data" / "predictions" / "library_output.h5ad.gz") - self.assertRaises( - Exception, - predict, - input_data, - model_name="Prosit_2020_intensity_HCD", - server_url="koina.wilhelmlab.org:443", - ssl=True, - targets=["intensities", "annotation"], + assert_almost_equal( + library.get_matrix(FragmentType.PRED)[0].toarray(), + library_expected.get_matrix(FragmentType.PRED)[0].toarray(), + decimal=7, ) + pd.testing.assert_frame_equal(library.obs, library_expected.obs) + pd.testing.assert_frame_equal(library.var, library_expected.var) From 4a742931f52103db0a942f7120c9796591ccb7b0 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 10 Apr 2024 16:05:59 +0200 Subject: [PATCH 034/112] replaced expected data for prediction tests --- .../data/predictions/library_output.csv | 4 ---- .../data/predictions/library_output.h5ad.gz | Bin 0 -> 60864 bytes 2 files changed, 4 deletions(-) delete mode 100644 tests/unit_tests/data/predictions/library_output.csv create mode 100644 tests/unit_tests/data/predictions/library_output.h5ad.gz diff --git a/tests/unit_tests/data/predictions/library_output.csv b/tests/unit_tests/data/predictions/library_output.csv deleted file mode 100644 index 5f5bfb71..00000000 --- a/tests/unit_tests/data/predictions/library_output.csv +++ /dev/null @@ -1,4 +0,0 @@ -MODIFIED_SEQUENCE,COLLISION_ENERGY,PRECURSOR_CHARGE,FRAGMENTATION,PREDICTED_IRT,INTENSITY_PRED_Y1+,INTENSITY_PRED_Y1++,INTENSITY_PRED_Y1+++,INTENSITY_PRED_B1+,INTENSITY_PRED_B1++,INTENSITY_PRED_B1+++,INTENSITY_PRED_Y2+,INTENSITY_PRED_Y2++,INTENSITY_PRED_Y2+++,INTENSITY_PRED_B2+,INTENSITY_PRED_B2++,INTENSITY_PRED_B2+++,INTENSITY_PRED_Y3+,INTENSITY_PRED_Y3++,INTENSITY_PRED_Y3+++,INTENSITY_PRED_B3+,INTENSITY_PRED_B3++,INTENSITY_PRED_B3+++,INTENSITY_PRED_Y4+,INTENSITY_PRED_Y4++,INTENSITY_PRED_Y4+++,INTENSITY_PRED_B4+,INTENSITY_PRED_B4++,INTENSITY_PRED_B4+++,INTENSITY_PRED_Y5+,INTENSITY_PRED_Y5++,INTENSITY_PRED_Y5+++,INTENSITY_PRED_B5+,INTENSITY_PRED_B5++,INTENSITY_PRED_B5+++,INTENSITY_PRED_Y6+,INTENSITY_PRED_Y6++,INTENSITY_PRED_Y6+++,INTENSITY_PRED_B6+,INTENSITY_PRED_B6++,INTENSITY_PRED_B6+++,INTENSITY_PRED_Y7+,INTENSITY_PRED_Y7++,INTENSITY_PRED_Y7+++,INTENSITY_PRED_B7+,INTENSITY_PRED_B7++,INTENSITY_PRED_B7+++,INTENSITY_PRED_Y8+,INTENSITY_PRED_Y8++,INTENSITY_PRED_Y8+++,INTENSITY_PRED_B8+,INTENSITY_PRED_B8++,INTENSITY_PRED_B8+++,INTENSITY_PRED_Y9+,INTENSITY_PRED_Y9++,INTENSITY_PRED_Y9+++,INTENSITY_PRED_B9+,INTENSITY_PRED_B9++,INTENSITY_PRED_B9+++,INTENSITY_PRED_Y10+,INTENSITY_PRED_Y10++,INTENSITY_PRED_Y10+++,INTENSITY_PRED_B10+,INTENSITY_PRED_B10++,INTENSITY_PRED_B10+++,INTENSITY_PRED_Y11+,INTENSITY_PRED_Y11++,INTENSITY_PRED_Y11+++,INTENSITY_PRED_B11+,INTENSITY_PRED_B11++,INTENSITY_PRED_B11+++,INTENSITY_PRED_Y12+,INTENSITY_PRED_Y12++,INTENSITY_PRED_Y12+++,INTENSITY_PRED_B12+,INTENSITY_PRED_B12++,INTENSITY_PRED_B12+++,INTENSITY_PRED_Y13+,INTENSITY_PRED_Y13++,INTENSITY_PRED_Y13+++,INTENSITY_PRED_B13+,INTENSITY_PRED_B13++,INTENSITY_PRED_B13+++,INTENSITY_PRED_Y14+,INTENSITY_PRED_Y14++,INTENSITY_PRED_Y14+++,INTENSITY_PRED_B14+,INTENSITY_PRED_B14++,INTENSITY_PRED_B14+++,INTENSITY_PRED_Y15+,INTENSITY_PRED_Y15++,INTENSITY_PRED_Y15+++,INTENSITY_PRED_B15+,INTENSITY_PRED_B15++,INTENSITY_PRED_B15+++,INTENSITY_PRED_Y16+,INTENSITY_PRED_Y16++,INTENSITY_PRED_Y16+++,INTENSITY_PRED_B16+,INTENSITY_PRED_B16++,INTENSITY_PRED_B16+++,INTENSITY_PRED_Y17+,INTENSITY_PRED_Y17++,INTENSITY_PRED_Y17+++,INTENSITY_PRED_B17+,INTENSITY_PRED_B17++,INTENSITY_PRED_B17+++,INTENSITY_PRED_Y18+,INTENSITY_PRED_Y18++,INTENSITY_PRED_Y18+++,INTENSITY_PRED_B18+,INTENSITY_PRED_B18++,INTENSITY_PRED_B18+++,INTENSITY_PRED_Y19+,INTENSITY_PRED_Y19++,INTENSITY_PRED_Y19+++,INTENSITY_PRED_B19+,INTENSITY_PRED_B19++,INTENSITY_PRED_B19+++,INTENSITY_PRED_Y20+,INTENSITY_PRED_Y20++,INTENSITY_PRED_Y20+++,INTENSITY_PRED_B20+,INTENSITY_PRED_B20++,INTENSITY_PRED_B20+++,INTENSITY_PRED_Y21+,INTENSITY_PRED_Y21++,INTENSITY_PRED_Y21+++,INTENSITY_PRED_B21+,INTENSITY_PRED_B21++,INTENSITY_PRED_B21+++,INTENSITY_PRED_Y22+,INTENSITY_PRED_Y22++,INTENSITY_PRED_Y22+++,INTENSITY_PRED_B22+,INTENSITY_PRED_B22++,INTENSITY_PRED_B22+++,INTENSITY_PRED_Y23+,INTENSITY_PRED_Y23++,INTENSITY_PRED_Y23+++,INTENSITY_PRED_B23+,INTENSITY_PRED_B23++,INTENSITY_PRED_B23+++,INTENSITY_PRED_Y24+,INTENSITY_PRED_Y24++,INTENSITY_PRED_Y24+++,INTENSITY_PRED_B24+,INTENSITY_PRED_B24++,INTENSITY_PRED_B24+++,INTENSITY_PRED_Y25+,INTENSITY_PRED_Y25++,INTENSITY_PRED_Y25+++,INTENSITY_PRED_B25+,INTENSITY_PRED_B25++,INTENSITY_PRED_B25+++,INTENSITY_PRED_Y26+,INTENSITY_PRED_Y26++,INTENSITY_PRED_Y26+++,INTENSITY_PRED_B26+,INTENSITY_PRED_B26++,INTENSITY_PRED_B26+++,INTENSITY_PRED_Y27+,INTENSITY_PRED_Y27++,INTENSITY_PRED_Y27+++,INTENSITY_PRED_B27+,INTENSITY_PRED_B27++,INTENSITY_PRED_B27+++,INTENSITY_PRED_Y28+,INTENSITY_PRED_Y28++,INTENSITY_PRED_Y28+++,INTENSITY_PRED_B28+,INTENSITY_PRED_B28++,INTENSITY_PRED_B28+++,INTENSITY_PRED_Y29+,INTENSITY_PRED_Y29++,INTENSITY_PRED_Y29+++,INTENSITY_PRED_B29+,INTENSITY_PRED_B29++,INTENSITY_PRED_B29+++ -[UNIMOD:737]-PEPTIDEK[UNIMOD:737],30,2,HCD,39.420433,0.23809576034545898,8.493546488352877e-08,0,8.493546488352877e-08,8.493546488352877e-08,0,0.8115681409835815,8.493546488352877e-08,0,1.0,8.493546488352877e-08,0,0.16860607266426086,8.493546488352877e-08,0,0.009546236135065556,8.493546488352877e-08,0,0.05823937803506851,8.493546488352877e-08,0,0.0676455870270729,8.493546488352877e-08,0,0.039169538766145706,8.493546488352877e-08,0,0.07002319395542145,8.493546488352877e-08,0,0.6715999841690063,0.01274949125945568,0,0.5392391085624695,8.493546488352877e-08,0,0.02867981791496277,0.00021903926972299814,0,0.07469962537288666,8.493546488352877e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -[UNIMOD:737]-PEPTIDE,30,2,HCD,43.523045,0.522221565246582,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.6478652358055115,1.0271855899190996e-07,0,0.6932786107063293,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.03741396963596344,0.04295269027352333,0,1.0271855899190996e-07,1.0271855899190996e-07,0,1.0,0.016776476055383682,0,0.024784639477729797,1.0271855899190996e-07,0,0.47810620069503784,1.0271855899190996e-07,0,1.0271855899190996e-07,1.0271855899190996e-07,0,0.6293804049491882,0.0024885176680982113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -[UNIMOD:737]-M[UNIMOD:35]EC[UNIMOD:4]TIDEK[UNIMOD:737],35,1,CID,24.778168,0.2831476628780365,0,0,1.3209350413490029e-07,0,0,1.0,0,0,1.3209350413490029e-07,0,0,0.38974782824516296,0,0,0.018663309514522552,0,0,0.16417913138866425,0,0,0.019735727459192276,0,0,0.27998510003089905,0,0,0.009887314401566982,0,0,0.48476091027259827,0,0,0.009575176984071732,0,0,0.26375487446784973,0,0,0.019234927371144295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/tests/unit_tests/data/predictions/library_output.h5ad.gz b/tests/unit_tests/data/predictions/library_output.h5ad.gz new file mode 100644 index 0000000000000000000000000000000000000000..ba7249128c195e19ba2d0ec3fcbbdf31a42b3898 GIT binary patch literal 60864 zcmeHQ4RlmRmaZlQB18y3N>F|RI*<{8B%nb=l62^h2qcjNp;bud4}w6F4L=5j1W_>q z3XIOo>aqf(>))Am?aZ#qh(c#T(NP3<#xbLFmN4q*YOA1Q>)M3uy;b+VP72?|A!!eU zdO7FStFP|+s_IMC>-*}xSM`(3X&LADx~P}HEhzOY?XcaYmm3D1LYs*{eX* zy{Oqy{P13dr;=Uj$8GJ(C|>7RIA2$GEop1lL~%hqJx(QysOQ_-B~U!~1%)TDU4v#v z@!Wl6U=vJF&zUJTqJptr^7;hl6qc8l6s{-~e3_Nk7r+z7C62?qNoH|A@n_6Vn?B2x zou8JUm6Ht^$!?|R&UQ`9O3!yqE6AFi59!Rux`N}#wi zv+{tuz?JQqJ>AXa>__>}%9)mxkp=X5uIuKwveR9JbGu-^g2m+}rPV^5N9kPeB#JAC zh_Bs3Bof|RvuFLI3FmP6iYojyD6Fa~T#ZSr57#$gT$0qU51n@Z;*yFKlg8)e=yl|yUk3WCK391v)XfdmclP4d%JoM(emeV z4JDl0OL5_f(nS?ji;D}F%9LR?=MC3zu1}nXb3Xik;BsgmZr= zE-S2B1SefeIQLs}XT*;PXWhzIN_R?((r|WFMr%CI#4E-i6i+z+Ul7NH9}~{ykvJq= zMmU$pop`0>kvm9Z9>fv5T;q{AB#hN~oWwJZaOOcAdB$rz5{Crt@1gP}qq%i`U>>}?#DNEYqj6&%cTy5&D{^oLTc|uqvOKv87NPP0 z4rg3PIP*A(XEx!?gE(f8r}0P}63{2Wjd|Qj6J&YjD7aO5CP<#^2@jPAa5!Tw;mqSC zo_QJ%;+TP3Qd+@SHelP1dY+^F#&jtMtuJQ9Zl_=%QVs62{i0pTHi6i)%+TrVf` z1CNJr=5Z&f>uRCKgE*F_h;ZhSI3yHnJWk>%(RdI?o>GlR;*hXV<8ddc>+>Rw2XW*n z(|9Bf35zuzC-K~@@gR;oOEeydLxTEsZQXv~OBxRU?}o(jTQXD8qY zRT3Whe<_}SBAj(bd*rDioO#?y>iVok8(Nn~T~}9VJZO(RD>WV`@vI^|R3621i^hZY z$OA5~+(PA1*H!7HLJIS^lhpP3RLB+jtO^ZJWk@-pz#1M zdG6MD5XXc%&EB1;evf{l*&~kj8wqFKBn}CiG#)4M+@tXzjy(5jJQ9b5%^Ht8QT-lm z(RdI?o~;^>#3A9Q8jq8B?$dY>N1ppN9*IN3&omx)qWV4hxyFMy^87;MkvJs$v&Q2j zo(D7@#F6JgjYr~;@GlyVJ5l`}ZPR!VN1lJxcq9%94{1D3;@Ph8AdWmcG#-gV!cM}u z{ks#@@5nC+=YEGc@;pp#&i)HctgK-qypqPpjq| z4@%bqKJST4l|nL#!xTS84lGxsiSpBVIG#!eF?<8S30hc2aZjO^phc<5FmSFVggJ`i z>G*%<=U5!l|MryJ>n>>vaeHIk+NPSAQNSo*6fg=H1&jh+L4oQ8#U-L!pO^-p@BIDu zWUd)Eaq8%p2obqeOs-y#M@eyF|H#ZWHE~y_|K&?ZqUgU=)K@RKzj&RvD*mbHM;(z( z!UH@->%^$|gHewqal_mGrIYWRGG^Q65rdds6xZvl??=-ZLRE-~0K-waNb7#YZB7 z+Z(_B?VjYoTJPtZ)~5J_#VI0qdt=|<)+7Ydy~8&)C;0C!PFcUcqIv6|ZhpAw%Qf59 zANq2r|MQ~SzQJH)itprzz!q=qpZ|IyYulH9T{`)$69a>b8dDCOj0}vguf3~ziT{YF z<-*`Cje8HAj0g;`Z@II1k$EW9@;HJp(EA6%8i`1@_jr+;L>?)hC9%n|Ew= zcEyNq|7*+CPanw%R`2*j-{VtXYMHe?FC}Bgw~62WVauD3*W5GptL1-ta>pY%%|q6H z{Pjn9Ez@_j4FBS$4b4OR9~Pzb4gO!_c;B8O!MhsgdiF*IUuv9NRB%^wfB&!QpKhr6 zao{y?!RF>({<%eadj;QW1ZZsF6K}zm<{tj!qP^z@4>ndb)Qkzd>pil$xsQKI{nPtu zMhA9#kKDWVn!s(|Bb%D1`Y-k#+0yLr_bsZ83hrwh-f%KLaKM|gx%oVQPEl>I;O`rE zG@QIV@S!(lOLL@ud{OOr!PgoK8ctpoc-x!v%;4sg{t8d+fZ&aPIuY^Sl66C>7ySIC z1CI5n@Ze+f$p22e_1)T8!!GxHkyW?g=%L~%4S7@crBrXOJ>G5n@m^0K?@@8Q&*#S- zEk`ezdUV2`rZIbtUR~2Py5?x|NfBJtYl3WwB_5Aw$jD2@uusK21U#PV+*d`9>r-E^ z+y7kmA~E^b5%Gx2HXQxv;OQ^%-;lT?X^no|~K32Qut!JNGJH+$*LkA=O z*z(nTW43Mm>d9YJ)h=B3L36VAoiQ_a7f0{=>bd-e6Hm?A5dW7~1NS}K|MRbw6|UKO zTi}D0?^G|}{;cD8diL7-^y|ludb(`KsK=JR`1OJAyR+u5o|XD>+TV_Be{a?3VTZgA z#y?(o%d&&ciywKSX7_!y8?RiOk>Y=U`0pBTdhh1vmOMD|?H=O252^yy3!Zu7&0f=T z2WA`{I}*2~gD zC}UuwfKk9GU=%P4bX^6);g|IXxg7B3v3yoW56s$s?ieHOW8i_7dZv{sMel^?jdk=6 zA^Kz1dh zqd=EYARK<#Kv3rl^2_2<)qg8&e%S@U&wg2Mrpm0Ne%WE;mnk95-Y8%cFbWt2i~{G7 z0^#t>E(HA?@a8@amBo^l?6<_uR6rTw?agDdb(S(T<3uFbITr9dChX_NQT=0Pv=sto z^C`t|^!U4d8G$$r*IM6Ew>_)<7=Nc?H&2B=zXdbu^I|Zr&$pq^uW`EN<^HwPqjK_5 zhM{rcDERh2O2`j_N=rm+H>C}ZPpdqmL`K@oJQtjoKYI=aGJ(q@;}Sakad6HDxjJDS zypg_z#``U+n4$Wf-aJpO$H4~yG3%O1A7pVm#5&-n=DXh2Yek{N7q3; z{alUPJx}OuBS@3YeXG?FY|b;VQNSo*6fg=H1&jh`uLAA8CkyVa+&GMYJ5lrv!uTC{ zEcu3*CA)*2`W-lai){I$9*Drk{-~Y*6sycm*?*$>Ppp$w@Keq(fKk9GU=%P47zK<1 zXS)L78229nqVW9d`g}4S9hZ~iKs0!U-~NQ7{KJ5^J--qM8*vMT%CGDfH=O1MiW7sP z#2}sztrNyMD~m!|@-$K%_A6VDa}Ec7_A7VNyi)D?mH6(>cWn`uwnbSdtKe;uP0T1@ z6fg=H1&jhlfi9pxIQ+6W(1ra#Y45)8Kfnez4u62> z30|6`9J92B2Sd=`P~H2DgNNSE1dWq!jabB6b@? zuE->wDBH%4uWyHG;%RQL-%vc3Cz7@~|4f1Hp36k>0~f8JgS7i+Zf~rcW^STJ0i%FX zz$jo8FbZ@51?<*$h|KN7u=1UBXY9L+^<+`(p*2XIV4zZEy; zaT1SQX995M0bKI*k=7v|#4({S;mqS!%O6<|HuC^3dE`16aE?_Tz%c>mgu#t@oWwIg z!J+aH4?izq9L-it_O9{8iqn2T@)=6X@H??QHC&bMv z54Gpf3byJ6?OY=98tzuh;8^PsFE#Rd0kAJ_R+$5 z9Zj0+$imq^S>s{*NgB@fR}s$lk#34l)^I1qucpwh9#bft_2PW4A-p$*{5=w{BTCaL zol+lOK85+XKB+eOq!G^7SA88(t_SmR`O@h;Zbv1Hi&r2tjqs4YS})jTW1nGTKi$SY z)5bo_#-5g;X{D1Y&kVBX-;d(uRRzlmVe#H-l`zvLANq{Yx?XU-vu*5i2-kJWwXr8y zWb!}=112;I7zK<1MggOMQNSqBjsl(e{F$HgpwHdjJX!plfx`&6BSv324D**}Zc-Xx zR+hKa(dSy|w{m^)UV@)jR@3vMc`8q9Z}(h={YT4?4uCz!ZV zz$jo8FbWt2i~?u90^zt1oCK=0_x%aK@5kW}@cqe053BzcW@&wX&{01Z-=|?e7vHgA zKR1@{AK1^e^UGpYnNHcS(fl&j$tw6MXBfaJU=%P47zK<1MuD?kfpGX`_>M2nJD`7e z+EG8KH*m8bgzpT8qx|@;@fq~qN9t2h9@uc)l!qfbb=(x+p=N)wlD<=Ce-bms&Cajn z?-i6)X#X?KujKJ%s{$cYb7T}S3K#{90!9I&Ko?OU9DZ3UXv2PG(-IP@T!kI=EAe|U z_AAriI2`470SLSa3gv}@SJfD>iE!sxOCOF3x(BE5Ozxvp&w!-l9 zb^iXYZR$TBNDdQd z3fT3(N@_=J9x0IyyD%k-)GP+lEdt66tL@m$M&{8 zAzb~>`=ZL{Fy+^o{SW5?2uJ_R1YW!T_sTw1AD;?L|05kt@ZAd7^}kALM|@Ve`d>nW z$|0BX>&*U#b8Cd7|KZ#mcKvVN|El`9S^{fv%eiVWh5KV_TeI&Sv-|EQ_ccXPMojH}ck{~Y%8<+by$fIryMzLI`;DVo zd0%Z?J)EBjk;UaO^AIdf4`Jnss!%(g)YiP+nEL($-x^d~<^dIQzo?}6R;?WE5}#uR zJZ|axNLAcN^$-0H_kiEfSh2jUu(A}=^!X4R4y8E1Z^&T;@$mCvzTWVK%RwWjd_In; z;>N?I{C;N`*OiKSLuH9s^E6j*=uv2x_p1FySnYQgU3cxW<@Y#K|7d5SaJ~+&JM#DK zx=O0u`waVSD)?*deFkoKtr~#MnFclr7zK<1MggOMQQ&M<;2-xxL-T+sA0bXwy)(X} ze_M&D`Ja5}{lh41=Re(Gll`jEZ4-?D)K(7@GYS|5i~>dhqd-?wpgsSI$5BG#cwzIO zwl*n&F-y)C4$ln#iPu33_uiKHRMp3) x0`uM^>0pBIRzQF6h2KMY!r#`O-$&`}?{>;QR{7LXex2F>aP6;f^gq<#{{j0EtZD!N literal 0 HcmV?d00001 From 8bf0d2602fc32e751cf0010352a3f229851fec13 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 11 Apr 2024 18:56:41 +0200 Subject: [PATCH 035/112] fix all three workflows --- oktoberfest/predict/predict.py | 44 ++++++++-------------- oktoberfest/preprocessing/preprocessing.py | 39 ++++++++++--------- oktoberfest/rescore/rescore.py | 2 +- oktoberfest/runner.py | 25 ++++++------ tests/unit_tests/test_predictions.py | 6 ++- 5 files changed, 57 insertions(+), 59 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index aec34048..c77d1236 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -2,9 +2,9 @@ import re from typing import Dict, Tuple +import anndata import numpy as np import pandas as pd -from anndata import AnnData from spectrum_fundamentals.metrics.similarity import SimilarityMetrics from ..data.spectra import FragmentType, Spectra @@ -13,7 +13,7 @@ logger = logging.getLogger(__name__) -def predict(data: AnnData, **kwargs) -> Dict[str, np.ndarray]: +def predict(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: """ Retrieve predictions from koina. @@ -27,7 +27,7 @@ def predict(data: AnnData, **kwargs) -> Dict[str, np.ndarray]: :return: a dictionary with targets (keys) and predictions (values) """ predictor = Koina(**kwargs) - results = predictor.predict(data.obs) + results = predictor.predict(data) return results @@ -80,28 +80,19 @@ def _prepare_alignment_df(library: Spectra, ce_range: Tuple[int, int], group_by_ :param group_by_charge: if true, select the top 1000 spectra independently for each precursor charge :return: a library that is modified according to the description above """ - alignment_df = library.convert_to_df() - # Remove decoy and HCD fragmented spectra - alignment_df = alignment_df[(alignment_df["FRAGMENTATION"] == "HCD") & (~alignment_df["REVERSE"])] - # Select the 1000 highest scoring or all if there are less than 1000 - temp_df = alignment_df.sort_values(by="SCORE", ascending=False) + top_n = 1000 + hcd_targets = library.obs.query("(FRAGMENTATION == 'HCD') & ~REVERSE") + hcd_targets = hcd_targets.sort_values(by="SCORE", ascending=False) if group_by_charge: - temp_df = temp_df.groupby("PRECURSOR_CHARGE") - - alignment_df = temp_df.head(1000) - - # Repeat dataframe for each CE - ce_range_ = range(*ce_range) - nrow = len(alignment_df) - alignment_df = pd.concat([alignment_df for _ in ce_range_], axis=0) - alignment_df["ORIG_COLLISION_ENERGY"] = alignment_df["COLLISION_ENERGY"] - alignment_df["COLLISION_ENERGY"] = np.repeat(ce_range_, nrow) - selection = alignment_df["Unnamed: 0"].values.astype(int).tolist() - alignment_library = Spectra((len(selection), 174)) - library.spectra_data.obs.index = library.spectra_data.obs.index.astype(str) - alignment_library.spectra_data = library.spectra_data[ - library.spectra_data.obs["Unnamed: 0"].isin(selection), : - ].copy() + hcd_targets = hcd_targets.groupby("PRECURSOR_CHARGE") + top_hcd_targets = hcd_targets.head(top_n) + + alignment_library = library[top_hcd_targets.index] + alignment_library = Spectra(anndata.concat([alignment_library for _ in range(*ce_range)])) + alignment_library.obs.reset_index(inplace=True) + + alignment_library.obs["ORIG_COLLISION_ENERGY"] = alignment_library.obs["COLLISION_ENERGY"] + alignment_library.obs["COLLISION_ENERGY"] = np.repeat(range(*ce_range), top_n) return alignment_library @@ -121,7 +112,7 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: :return: a spectra object containing the spectral angle for each tested CE """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) - intensities = predict(alignment_library.spectra_data, **server_kwargs) + intensities = predict(alignment_library.obs, **server_kwargs) alignment_library.add_matrix(intensities["intensities"], FragmentType.PRED) _alignment(alignment_library) return alignment_library @@ -140,6 +131,3 @@ def _alignment(alignment_library: Spectra): raw_intensity = alignment_library.get_matrix(FragmentType.RAW)[0] sm = SimilarityMetrics(pred_intensity, raw_intensity) alignment_library.add_column(sm.spectral_angle(raw_intensity, pred_intensity, 0), "SPECTRAL_ANGLE") - alignment_library.spectra_data = alignment_library.spectra_data[ - alignment_library.spectra_data.obs["SPECTRAL_ANGLE"] != 0 - ] diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index aaeee4c4..d273c6be 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -493,7 +493,7 @@ def split_timstof_metadata( return filenames_found -def merge_spectra_and_peptides(spectra: pd.DataFrame, search: pd.DataFrame) -> Spectra: +def merge_spectra_and_peptides(spectra: pd.DataFrame, search: pd.DataFrame) -> pd.DataFrame: """ Merge peptides with spectra. @@ -509,34 +509,39 @@ def merge_spectra_and_peptides(spectra: pd.DataFrame, search: pd.DataFrame) -> S """ logger.info("Merging rawfile and search result") psms = search.merge(spectra, on=["RAW_FILE", "SCAN_NUMBER"]) - # psms.set_index(TODO) - var_df = Spectra._gen_vars_df() - - library = Spectra(obs=psms, var=var_df) - - return library + return psms -def annotate_spectral_library(psms: Spectra, mass_tol: Optional[float] = None, unit_mass_tol: Optional[str] = None): +def annotate_spectral_library( + psms: pd.DataFrame, mass_tol: Optional[float] = None, unit_mass_tol: Optional[str] = None +) -> Spectra: """ - Annotate spectral library with peaks and mass. + Annotate all b and y ion peaks of given PSMs. - This function annotates a given spectral library with peak intensities and mass to charge ratio, - as well as the calculated monoisotopic mass of the precursor ion. - The additional information is added to the provided spectral library. + This function annotates the b any ion peaks of given psms by matching the mzs + of all peaks to the theoretical mzs and discards all other peaks. It also calculates + the theoretical monoisotopic mass of each b and y ion fragment. + The function thenr returns a Spectra object containing the mzs and intensities of + all b and y ions in charge states 1-3 and the additional metadata. :param psms: Spectral library to be annotated. :param mass_tol: The mass tolerance allowed for retaining peaks :param unit_mass_tol: The unit in which the mass tolerance is given + + :return: Spectra object containing the annotated b and y ion peaks including metadata """ logger.info("Annotating spectra...") - df_annotated_spectra = annotate_spectra(psms.spectra_data.obs, mass_tol, unit_mass_tol) + df_annotated_spectra = annotate_spectra(psms, mass_tol, unit_mass_tol) + + aspec = Spectra(obs=psms.drop(columns=["INTENSITIES", "MZ"]), var=Spectra._gen_vars_df()) + aspec.add_matrix(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) + aspec.add_matrix(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) + aspec.add_column(df_annotated_spectra["CALCULATED_MASS"].values, "CALCULATED_MASS") + aspec.strings_to_categoricals() + logger.info("Finished annotating.") - psms.add_matrix(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) - psms.add_matrix(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) - psms.spectra_data.obs = psms.spectra_data.obs.drop(["INTENSITIES", "MZ"], axis=1) - psms.add_column(df_annotated_spectra["CALCULATED_MASS"]) + return aspec def load_spectra( diff --git a/oktoberfest/rescore/rescore.py b/oktoberfest/rescore/rescore.py index 23e26b9e..e1bef753 100644 --- a/oktoberfest/rescore/rescore.py +++ b/oktoberfest/rescore/rescore.py @@ -33,7 +33,7 @@ def generate_features( :param regression_method: The regression method to use for iRT alignment """ perc_features = Percolator( - metadata=library.get_meta_data(), + metadata=library.get_meta_data().reset_index(drop=True), pred_intensities=library.get_matrix(FragmentType.PRED)[0], true_intensities=library.get_matrix(FragmentType.RAW)[0], mz=library.get_matrix(FragmentType.MZ)[0], diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 64104f09..b48fc110 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -42,7 +42,7 @@ def _make_predictions(int_model, irt_model, predict_kwargs, queue_out, progress, **pr.predict(batch_df, model_name=int_model, **predict_kwargs), **pr.predict(batch_df, model_name=irt_model, **predict_kwargs), } - queue_out.put((predictions, batch_df.obs)) + queue_out.put((predictions, batch_df)) with lock: progress.value += 1 @@ -109,7 +109,7 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file data_dir.mkdir(exist_ok=True) hdf5_path = data_dir / spectra_file.with_suffix(".mzml.hdf5").name if hdf5_path.is_file(): - library = Spectra.from_hdf5(hdf5_path) + aspec = Spectra.from_hdf5(hdf5_path) else: spectra_dir = config.output / "spectra" spectra_dir.mkdir(exist_ok=True) @@ -125,10 +125,13 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file spectra = pp.load_spectra(file_to_load, tims_meta_file=tims_meta_file) search = pp.load_search(config.output / "msms" / spectra_file.with_suffix(".rescore").name) library = pp.merge_spectra_and_peptides(spectra, search) - pp.annotate_spectral_library(library, mass_tol=config.mass_tolerance, unit_mass_tol=config.unit_mass_tolerance) - library.write_as_hdf5(hdf5_path) # write_metadata_annotation + print(library.columns) + aspec = pp.annotate_spectral_library( + library, mass_tol=config.mass_tolerance, unit_mass_tol=config.unit_mass_tolerance + ) + aspec.write_as_hdf5(hdf5_path) # write_metadata_annotation - return library + return aspec def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): @@ -427,14 +430,14 @@ def _ce_calib(spectra_file: Path, config: Config) -> Spectra: tims_meta_file = None if config.spectra_type.lower() in ["hdf", "d"]: # if it is timstof tims_meta_file = config.output / "msms" / spectra_file.with_suffix(".timsmeta").name - library = _annotate_and_get_library(spectra_file, config, tims_meta_file=tims_meta_file) - _get_best_ce(library, spectra_file, config) + aspec = _annotate_and_get_library(spectra_file, config, tims_meta_file=tims_meta_file) + _get_best_ce(aspec, spectra_file, config) - library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) + aspec.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) ce_calib_step.mark_done() - return library + return aspec def run_ce_calibration( @@ -483,12 +486,12 @@ def _calculate_features(spectra_file: Path, config: Config): } pred_intensities = pr.predict( - data=library, + data=library.obs, model_name=config.models["intensity"], **predict_kwargs, ) - pred_irts = pr.predict(data=library, model_name=config.models["irt"], **predict_kwargs) + pred_irts = pr.predict(data=library.obs, model_name=config.models["irt"], **predict_kwargs) library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) library.add_column(pred_irts["irt"].squeeze(), name="PREDICTED_IRT") library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index 37a4b024..1512e778 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -19,13 +19,15 @@ def test_prosit_tmt(self): library = Spectra(obs=meta_df, var=var) library.strings_to_categoricals() pred_intensities = predict( - library, + library.obs, model_name="Prosit_2020_intensity_TMT", server_url="koina.wilhelmlab.org:443", ssl=True, targets=["intensities", "annotation"], ) - pred_irt = predict(library, model_name="Prosit_2020_irt_TMT", server_url="koina.wilhelmlab.org:443", ssl=True) + pred_irt = predict( + library.obs, model_name="Prosit_2020_irt_TMT", server_url="koina.wilhelmlab.org:443", ssl=True + ) library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) library.add_column(pred_irt["irt"].squeeze(), name="PREDICTED_IRT") From 1e063e09d73d58b41a2ba5cb4d617d5f3545461a Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Fri, 12 Apr 2024 16:37:31 +0200 Subject: [PATCH 036/112] less decimals for almost equal check --- tests/unit_tests/test_predictions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index 1512e778..052f2d8e 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -37,7 +37,7 @@ def test_prosit_tmt(self): assert_almost_equal( library.get_matrix(FragmentType.PRED)[0].toarray(), library_expected.get_matrix(FragmentType.PRED)[0].toarray(), - decimal=7, + decimal=6, ) pd.testing.assert_frame_equal(library.obs, library_expected.obs) pd.testing.assert_frame_equal(library.var, library_expected.var) From 04e1cf1e34a5779c1c214451c51bcecbaa5aec70 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Mon, 15 Apr 2024 16:31:34 +0200 Subject: [PATCH 037/112] fixed retry timeouts and race condition --- oktoberfest/predict/koina.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/oktoberfest/predict/koina.py b/oktoberfest/predict/koina.py index 48496e88..8d5eda5f 100644 --- a/oktoberfest/predict/koina.py +++ b/oktoberfest/predict/koina.py @@ -1,3 +1,4 @@ +import logging import time import warnings from functools import partial @@ -14,6 +15,9 @@ InferResult, ) +logger = logging.getLogger(__name__) + + alternative_column_map = { "peptide_sequences": "MODIFIED_SEQUENCE", "precursor_charges": "PRECURSOR_CHARGE", @@ -393,8 +397,8 @@ def __async_predict_batch( data: Dict[str, np.ndarray], infer_results: Dict[int, Union[Dict[str, np.ndarray], InferenceServerException]], request_id: int, - timeout: int = 10000, - retries: int = 10, + timeout: int = 60000, + retries: int = 5, ): """ Perform asynchronous batch inference on the given data using the Koina model. @@ -419,8 +423,6 @@ def __async_predict_batch( yield if isinstance(infer_results.get(request_id), InferResult): break - del infer_results[request_id] # avoid race condition in case inference is slower than tqdm loop - self.client.async_infer( model_name=self.model_name, request_id=str(request_id), @@ -510,10 +512,14 @@ def __predict_async(self, data: Dict[str, np.ndarray], debug=False) -> Dict[str, pbar.n += 1 else: # unexpected result / exception -> try again try: + del infer_results[j] next(tasks[j]) + logger.warning(f"Unexpected response for batch {j}. Retrying...") new_unfinished_tasks.append(j) except StopIteration: + logger.error(f"Unexpected response for batch {j}. Max retries exceeded. Stopping.") pbar.n += 1 + infer_results[j] = result unfinished_tasks = new_unfinished_tasks pbar.refresh() From 1d6b6b798fcdd9a923478f4c265586a3e75f156a Mon Sep 17 00:00:00 2001 From: victorgiurcoiu Date: Tue, 16 Apr 2024 08:50:27 +0000 Subject: [PATCH 038/112] Added nr_oxidations flag, integrated nr of oxidations in the peptide generation --- oktoberfest/preprocessing/preprocessing.py | 26 +++++++++++++++++++--- oktoberfest/runner.py | 1 + oktoberfest/utils/config.py | 5 +++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 31aabbe9..63b5d2e7 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -1,8 +1,9 @@ import logging -from itertools import chain, product, repeat +from itertools import chain, product, repeat, combinations from pathlib import Path from sys import platform from typing import Any, Dict, List, Optional, Union +import re import pandas as pd import spectrum_fundamentals.constants as c @@ -45,6 +46,7 @@ def generate_metadata( collision_energy: Union[int, List[int]], precursor_charge: Union[int, List[int]], fragmentation: Union[str, List[str]], + nr_ox: int, proteins: Optional[List[List[str]]] = None, ) -> pd.DataFrame: """ @@ -60,6 +62,7 @@ def generate_metadata( :param collision_energy: A list of collision energies corresponding to each peptide. :param precursor_charge: A list of precursor charges corresponding to each peptide. :param fragmentation: A list of fragmentation methods corresponding to each peptide. + :param nr_ox: Maximal number of allowed oxidations. :param proteins: An optional list of proteins associated with each peptide. If provided, it must have the same length as the number of peptides. :raises AssertionError: If the lengths of peptides and proteins is not the same. @@ -76,9 +79,10 @@ def generate_metadata( if proteins is not None and len(proteins) != len(peptides): raise AssertionError("Number of proteins must match the number of peptides.") - combinations = product(peptides, collision_energy, precursor_charge, fragmentation) + combinations_product = product(peptides, collision_energy, precursor_charge, fragmentation) + metadata = pd.DataFrame( - combinations, columns=["modified_sequence", "collision_energy", "precursor_charge", "fragmentation"] + combinations_product, columns=["modified_sequence", "collision_energy", "precursor_charge", "fragmentation"] ) if proteins is not None: @@ -87,6 +91,22 @@ def generate_metadata( chain.from_iterable([repeat(";".join(prot_list), n_repeats) for prot_list in proteins]) ) + modified_peptides = [] + for _, row in metadata.iterrows(): + peptide = row["modified_sequence"] + res = [i.start() for i in re.finditer("M", peptide)] + res.reverse() + for i in range(1, min(len(res), nr_ox) + 1): + possible_indices = list(combinations(res, i)) + for index in possible_indices: + string_mod = peptide + for j in index: + string_mod = string_mod[:j + 1] + "[UNIMOD:35]" + string_mod[j + 1:] + new_row = row.copy() + new_row["modified_sequence"] = string_mod + modified_peptides.append(new_row) + metadata = pd.concat([metadata, pd.DataFrame(modified_peptides)], ignore_index=True) + return metadata diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 02d0f15f..18c95f83 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -220,6 +220,7 @@ def _speclib_from_digestion(config: Config) -> Spectra: collision_energy=config.collision_energy, precursor_charge=config.precursor_charge, fragmentation=config.fragmentation, + nr_ox=config.nr_ox, proteins=list(peptide_dict.values()), ) library_file = config.output / "prosit_input.csv" diff --git a/oktoberfest/utils/config.py b/oktoberfest/utils/config.py index dfccab0e..d0ca38de 100644 --- a/oktoberfest/utils/config.py +++ b/oktoberfest/utils/config.py @@ -226,6 +226,11 @@ def db(self) -> str: """Target, decoy or concat (relevant if fasta file provided).""" return self.fasta_digest_options.get("db", "concat").lower() + @property + def nr_ox(self) -> int: + """Get the maximum number of oxidations allowed.""" + return self.fasta_digest_options.get("nrOx", 1) + ################################## # these are ce alignment options # ################################## From 49339f88f0da9f0f9c5d374107722b74095cd08d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 18 Apr 2024 15:37:17 +0200 Subject: [PATCH 039/112] implemented index and annotaion based insertion of predictions --- oktoberfest/data/spectra.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index 45ca2704..eaa501ec 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -46,8 +46,8 @@ def _gen_vars_df() -> pd.DataFrame: ion_charge = np.tile([1, 2, 3], 29 * 2) temp_cols = [] for size in range(1, 30): - for typ in ["Y", "B"]: - for charge in ["+", "++", "+++"]: + for typ in ["y", "b"]: + for charge in ["+1", "+2", "+3"]: temp_cols.append(f"{typ}{size}{charge}") ion_types = [frag[0] for frag in temp_cols] var_df = pd.DataFrame({"ion": temp_cols, "num": ion_nums, "type": ion_types, "charge": ion_charge}) @@ -141,7 +141,11 @@ def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: Frag self.layers[layer] = scipy.sparse.csr_matrix(intensity_data) def add_matrix( - self, intensity_data: np.ndarray, fragment_type: FragmentType, annotation: Optional[np.ndarray] = None + self, + intensity_data: np.ndarray, + fragment_type: FragmentType, + annotation: Optional[np.ndarray] = None, + index: Optional[np.ndarray] = None, ) -> None: """ Concatenate intensity df as a sparse matrix to our data. @@ -149,6 +153,7 @@ def add_matrix( :param intensity_data: intensity numpy array to add with shape (n x m) :param fragment_type: choose predicted, raw, or mz :param annotation: Optional fragment ion annotations in ProForma notation with shape (n x m) + :param index: Optional index of intensity predictions with length n """ # Change zeros to epislon to keep the info of invalid values # change the -1 values to 0 (for better performance when converted to sparse representation) @@ -159,11 +164,17 @@ def add_matrix( layer = self._resolve_layer_name(fragment_type) - if annotation: - if self.layers[layer] is None: - self.layers[layer] = csr_matrix(intensity_data.shape) - index = [list(self.var_names).index(i) for i in annotation] - self.layers[layer][:, index] = intensity_data + if annotation is not None: + if layer not in list(self.layers): + self.layers[layer] = csr_matrix(self.shape) + if index is not None: + for r in index: + idx = [list(self.var_names).index(i.decode("utf8")) for i in annotation[r]] + self.layers[layer][r, idx] = intensity_data[r] + if "done" not in self.obs.columns: + self.obs["done"] = False + self.obs["done"].iloc[index] = True + else: self.layers[layer] = intensity_data From 0cb0f1111033f5ab3c19e7c9fa3c75f3b789aff7 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 18 Apr 2024 15:57:18 +0200 Subject: [PATCH 040/112] changed ce-calibration prediction to support other models --- oktoberfest/predict/predict.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index c77d1236..4602b56a 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -112,8 +112,17 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: :return: a spectra object containing the spectral angle for each tested CE """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) - intensities = predict(alignment_library.obs, **server_kwargs) - alignment_library.add_matrix(intensities["intensities"], FragmentType.PRED) + + if "done" in list(alignment_library.obs.columns): + predict_input = alignment_library.obs[~alignment_library.obs["done"]] + else: + predict_input = alignment_library.obs + + intensities = predict(predict_input, **server_kwargs) + intensities["index"] = predict_input.index.values.astype(np.int32) + alignment_library.add_matrix( + intensities["intensities"], FragmentType.PRED, intensities["annotation"], intensities["index"] + ) _alignment(alignment_library) return alignment_library From c86224a802b5bde2523ebcef38251386bb8d6ac7 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 18 Apr 2024 15:58:02 +0200 Subject: [PATCH 041/112] calling predictions to support different models --- oktoberfest/runner.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index b48fc110..8f13b22d 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -11,6 +11,7 @@ from typing import Dict, List, Optional, Tuple, Type, Union import numpy as np +import pandas as pd from sklearn.linear_model import LinearRegression, RANSACRegressor from spectrum_io.spectral_library import MSP, DLib, SpectralLibrary, Spectronaut from tqdm.auto import tqdm @@ -125,7 +126,6 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file spectra = pp.load_spectra(file_to_load, tims_meta_file=tims_meta_file) search = pp.load_search(config.output / "msms" / spectra_file.with_suffix(".rescore").name) library = pp.merge_spectra_and_peptides(spectra, search) - print(library.columns) aspec = pp.annotate_spectral_library( library, mass_tol=config.mass_tolerance, unit_mass_tol=config.unit_mass_tolerance ) @@ -480,19 +480,33 @@ def _calculate_features(spectra_file: Path, config: Config): predict_step = ProcessStep(config.output, "predict." + spectra_file.stem) if not predict_step.is_done(): + if "alphapept" in config.models["intensity"].lower(): + library.add_column(pd.Series(["QE"] * len(library.obs)), name="instrument_types") + + if "done" in list(library.obs.columns): + predict_input = library.obs[~library.obs["done"]] + else: + predict_input = library.obs + predict_kwargs = { "server_url": config.prediction_server, "ssl": config.ssl, } pred_intensities = pr.predict( - data=library.obs, + data=predict_input, model_name=config.models["intensity"], **predict_kwargs, ) pred_irts = pr.predict(data=library.obs, model_name=config.models["irt"], **predict_kwargs) - library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) + pred_intensities["index"] = predict_input.index.values.astype(np.int32) + library.add_matrix( + pred_intensities["intensities"], + FragmentType.PRED, + pred_intensities["annotation"], + pred_intensities["index"], + ) library.add_column(pred_irts["irt"].squeeze(), name="PREDICTED_IRT") library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) predict_step.mark_done() From 7184f4bf95c8115b043c4bfc69be4dbea8719c7a Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 18 Apr 2024 15:59:14 +0200 Subject: [PATCH 042/112] adjusted model filter parameters and changed vars declaration --- oktoberfest/preprocessing/preprocessing.py | 25 +++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index d273c6be..7b7f3b5f 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -38,7 +38,9 @@ def gen_lib(input_file: Union[str, Path]) -> Spectra: library_df = csv.read_file(input_file) library_df.columns = library_df.columns.str.upper() var_df = Spectra._gen_vars_df() - return Spectra(obs=library_df, var=var_df) + spec = Spectra(obs=library_df, var=var_df) + spec.var_names = var_df.index + return spec def generate_metadata( @@ -154,6 +156,18 @@ def filter_peptides_for_model(peptides: Union[pd.DataFrame, AnnData], model: str "max_length": 30, "max_charge": 6, } + elif "ms2pip" in model.lower(): + filter_kwargs = { + "min_length": 2, + "max_length": 100, + "max_charge": 6, + } + elif "alphapept" in model.lower(): + filter_kwargs = { + "min_length": 7, + "max_length": 35, + "max_charge": 4, + } else: raise ValueError(f"The model {model} is not known.") @@ -533,9 +547,14 @@ def annotate_spectral_library( logger.info("Annotating spectra...") df_annotated_spectra = annotate_spectra(psms, mass_tol, unit_mass_tol) - aspec = Spectra(obs=psms.drop(columns=["INTENSITIES", "MZ"]), var=Spectra._gen_vars_df()) + var_df = Spectra._gen_vars_df() + aspec = Spectra(obs=psms.drop(columns=["INTENSITIES", "MZ"]), var=var_df) + aspec.var_names = var_df.index aspec.add_matrix(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) - aspec.add_matrix(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) + aspec.add_matrix( + np.stack(df_annotated_spectra["MZ"]), + FragmentType.MZ, + ) aspec.add_column(df_annotated_spectra["CALCULATED_MASS"].values, "CALCULATED_MASS") aspec.strings_to_categoricals() From b06f965d99d43faea96d491fc3cab046ab95386d Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 18 Apr 2024 16:00:18 +0200 Subject: [PATCH 043/112] lowered assert decimal to 6 --- tests/unit_tests/test_predictions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index 1512e778..0d58b1cf 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -37,7 +37,8 @@ def test_prosit_tmt(self): assert_almost_equal( library.get_matrix(FragmentType.PRED)[0].toarray(), library_expected.get_matrix(FragmentType.PRED)[0].toarray(), - decimal=7, + decimal=6, + verbose=True, ) pd.testing.assert_frame_equal(library.obs, library_expected.obs) pd.testing.assert_frame_equal(library.var, library_expected.var) From 52cc7a1811ab3cd8682b518fc2bea03709334b77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 04:41:41 +0000 Subject: [PATCH 044/112] [DEPENDABOT]: Bump release-drafter/release-drafter from 5 to 6 Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5 to 6. - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/v5...v6) --- updated-dependencies: - dependency-name: release-drafter/release-drafter dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release_drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_drafter.yml b/.github/workflows/release_drafter.yml index 41f82097..46853d2f 100644 --- a/.github/workflows/release_drafter.yml +++ b/.github/workflows/release_drafter.yml @@ -14,6 +14,6 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5 + - uses: release-drafter/release-drafter@v6 env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" From c4019bef90717c5e0f7a2b2c8e8ba652e2851f90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 04:41:45 +0000 Subject: [PATCH 045/112] [DEPENDABOT]: Bump codecov/codecov-action from 3.1.4 to 4.3.0 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.4 to 4.3.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.4...v4.3.0) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 9e5c5d30..4d429b6d 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -165,4 +165,4 @@ jobs: run: nox --force-color --session=coverage -- xml -i - name: Upload coverage report - uses: codecov/codecov-action@v3.1.4 + uses: codecov/codecov-action@v4.3.0 From 19677381723dbc3d549cec18ce19993765e29d66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 04:47:10 +0000 Subject: [PATCH 046/112] [DEPENDABOT]: Bump tritonclient from 2.36.0 to 2.44.0 Bumps [tritonclient](https://github.com/triton-inference-server/client) from 2.36.0 to 2.44.0. - [Commits](https://github.com/triton-inference-server/client/commits) --- updated-dependencies: - dependency-name: tritonclient dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 20 ++++++++++++-------- pyproject.toml | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2a8047c5..7f940f96 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "alabaster" @@ -2576,6 +2576,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -3582,25 +3583,28 @@ threadpoolctl = ">=3.1.0,<4.0.0" [[package]] name = "tritonclient" -version = "2.36.0" +version = "2.44.0" description = "Python client library and utilities for communicating with Triton Inference Server" optional = false python-versions = "*" files = [ - {file = "tritonclient-2.36.0-py3-none-any.whl", hash = "sha256:583b06d5cc056dc307a6db61bca0a0dd85c1fee8a274fa11d5c4e8fc557be547"}, - {file = "tritonclient-2.36.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:56a124e3f1901c5d392d00d8daa2de40156a1de1b4d3d3a4296b3e55c77a230d"}, + {file = "tritonclient-2.44.0-py3-none-any.whl", hash = "sha256:2d0e7f3b414b4fc39dd406b6e1c004954c722516dc5707bd83049de76d06af2c"}, + {file = "tritonclient-2.44.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:ed8a64ecbb7594ea196dfdc9678d6356b24fdf484995f53400004a195ef33749"}, + {file = "tritonclient-2.44.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:64f6a48db0a2f2b57f9c03c338669ee9203eeda30aa7d007a10daabd1acd3689"}, ] [package.dependencies] grpcio = {version = ">=1.41.0", optional = true, markers = "extra == \"grpc\""} numpy = ">=1.19.1" packaging = {version = ">=14.1", optional = true, markers = "extra == \"grpc\""} -protobuf = {version = ">=3.5.0,<4", optional = true, markers = "extra == \"grpc\""} +protobuf = {version = ">=3.5.0,<5", optional = true, markers = "extra == \"grpc\""} python-rapidjson = ">=0.9.1" +urllib3 = ">=2.0.7" [package.extras] -all = ["aiohttp (>=3.8.1,<4.0.0)", "geventhttpclient (>=1.4.4,<=2.0.2)", "grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<4)", "python-rapidjson (>=0.9.1)"] -grpc = ["grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<4)", "python-rapidjson (>=0.9.1)"] +all = ["aiohttp (>=3.8.1,<4.0.0)", "cuda-python", "geventhttpclient (>=1.4.4,<=2.0.2)", "grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] +cuda = ["cuda-python"] +grpc = ["grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] http = ["aiohttp (>=3.8.1,<4.0.0)", "geventhttpclient (>=1.4.4,<=2.0.2)", "numpy (>=1.19.1)", "python-rapidjson (>=0.9.1)"] [[package]] @@ -3771,4 +3775,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<3.11.0" -content-hash = "9429fc68e23fc2ea2761ff4c6cb22078d7ebcf7c899c999ec278f926312307f3" +content-hash = "cc94301e8ec4d4bc21bab7b15e636dd78b962b164c915189082c6655f506ae38" diff --git a/pyproject.toml b/pyproject.toml index 80f5073e..cc7e284c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ seaborn = "^0.12.2" spectrum-fundamentals = ">=0.5.0,<0.6.0" spectrum-io = ">=0.4.2,<0.5.0" mokapot = "^0.9.1" -tritonclient = {extras = ["grpc"], version = ">=2.34.0, <2.37"} +tritonclient = {extras = ["grpc"], version = ">=2.34.0,<2.45"} numpy = ">=1.20,<1.25" [tool.poetry.dev-dependencies] pytest = ">=6.2.3" From bc201259f855037418d93eafc952fffbda78fae8 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 24 Apr 2024 11:18:26 +0200 Subject: [PATCH 047/112] accounted for empty annotations --- oktoberfest/data/spectra.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index eaa501ec..1d16cae9 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -169,8 +169,13 @@ def add_matrix( self.layers[layer] = csr_matrix(self.shape) if index is not None: for r in index: - idx = [list(self.var_names).index(i.decode("utf8")) for i in annotation[r]] - self.layers[layer][r, idx] = intensity_data[r] + idx = [ + list(self.var_names).index(i.decode("utf8")) + for i in annotation[r] + if i.decode("utf8") in list(self.var_names) + ] + stripped_annotation = [list(annotation[r]).index(a) for a in annotation[r] if a] + self.layers[layer][r, idx] = intensity_data[r, stripped_annotation] if "done" not in self.obs.columns: self.obs["done"] = False self.obs["done"].iloc[index] = True From 79659232f944f5422a8a31a97c7699fc4d26d9e8 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 24 Apr 2024 11:19:52 +0200 Subject: [PATCH 048/112] changing instrument type to QE as default for now --- oktoberfest/runner.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 8f13b22d..e01fe6fd 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -11,7 +11,6 @@ from typing import Dict, List, Optional, Tuple, Type, Union import numpy as np -import pandas as pd from sklearn.linear_model import LinearRegression, RANSACRegressor from spectrum_io.spectral_library import MSP, DLib, SpectralLibrary, Spectronaut from tqdm.auto import tqdm @@ -481,7 +480,7 @@ def _calculate_features(spectra_file: Path, config: Config): if not predict_step.is_done(): if "alphapept" in config.models["intensity"].lower(): - library.add_column(pd.Series(["QE"] * len(library.obs)), name="instrument_types") + library.obs["INSTRUMENT_TYPES"] = "QE" if "done" in list(library.obs.columns): predict_input = library.obs[~library.obs["done"]] From 5b26e929647d57617f965d37a3ef2996cd06ac8f Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Wed, 24 Apr 2024 11:20:49 +0200 Subject: [PATCH 049/112] changing instrument_type --- oktoberfest/predict/predict.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 4602b56a..9d053461 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -113,6 +113,9 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) + if "alphapept" in server_kwargs.get("model_name").lower(): + alignment_library.obs["INSTRUMENT_TYPES"] = "QE" + if "done" in list(alignment_library.obs.columns): predict_input = alignment_library.obs[~alignment_library.obs["done"]] else: From e8b36eafffc5329a6fc47ae97d51551d8f1fd6dd Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 24 Apr 2024 14:23:03 +0200 Subject: [PATCH 050/112] fix plotting issue in non-interactive mode --- oktoberfest/plotting/plotting.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/oktoberfest/plotting/plotting.py b/oktoberfest/plotting/plotting.py index e3451666..133181e5 100644 --- a/oktoberfest/plotting/plotting.py +++ b/oktoberfest/plotting/plotting.py @@ -55,7 +55,6 @@ def plot_score_distribution(target: pd.DataFrame, decoy: pd.DataFrame, level: st plt.legend(loc="upper right") plt.title(f"Score Distribution ({level.capitalize()})") plt.savefig(filename, dpi=300) - plt.plot() plt.close() @@ -127,7 +126,6 @@ def joint_plot( jplot.ax_joint.set_xlabel("Score\n(search engine)") jplot.fig.suptitle(f"Score distribution ({level.capitalize()})", y=0.99) plt.savefig(filename, dpi=300) - plt.show() plt.close() @@ -212,7 +210,6 @@ def plot_gain_loss(prosit_target: pd.DataFrame, andromeda_target: pd.DataFrame, legend_label = ["Common", "Gained", "Lost"] plt.legend(legend_label, ncol=1, bbox_to_anchor=([1.2, 0.5, 0, 0]), frameon=False) plt.savefig(filename, dpi=300, bbox_inches="tight") - plt.show() plt.close() @@ -228,7 +225,6 @@ def plot_mean_sa_ce(sa_ce_df: pd.DataFrame, filename: Union[str, Path]): ax.axvline(x=sa_ce_df["COLLISION_ENERGY"][sa_ce_df["SPECTRAL_ANGLE"].idxmax()], color="red") plt.grid() plt.savefig(filename, dpi=300) - plt.plot() plt.close() @@ -248,7 +244,6 @@ def plot_violin_sa_ce(sa_ce_df: pd.DataFrame, filename: Union[str, Path]): plt.xticks(rotation=90) plt.grid() plt.savefig(filename, dpi=300) - plt.plot() plt.close() @@ -285,7 +280,6 @@ def plot_pred_rt_vs_irt( plt.legend(labels=("predicted iRT", "alignment"), loc="best", fancybox=True, shadow=True) plt.grid() plt.savefig(Path(outpath) / f"{rawfile}_{suffix}", dpi=300) - plt.plot() plt.close() @@ -308,7 +302,6 @@ def plot_sa_distribution(prosit_df: pd.DataFrame, target_df: pd.DataFrame, decoy plt.title("Target vs Decoys Spectral Angle Distribution") plt.legend(loc="upper right") plt.savefig(filename, dpi=300) - plt.plot() plt.close() @@ -403,3 +396,4 @@ def plot_ce_ransac_model( ) ax.set(xlabel=xlabel, ylabel=ylabel, *args, **kwargs) plt.savefig(filename, dpi=300) + plt.close() From 0e316ea4570baee26753e94b416e2f60cf5f8515 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 2 May 2024 10:47:29 +0200 Subject: [PATCH 051/112] allow processing multiple raw files at once --- oktoberfest/predict/predict.py | 2 +- oktoberfest/preprocessing/preprocessing.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 56a247ce..a9ddd0fb 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -88,7 +88,7 @@ def _prepare_alignment_df(library: Spectra, ce_range: Tuple[int, int], group_by_ (alignment_library.spectra_data["FRAGMENTATION"] == "HCD") & (~alignment_library.spectra_data["REVERSE"]) ] # Select the 1000 highest scoring or all if there are less than 1000 - temp_df = alignment_library.spectra_data.sort_values(by="SCORE", ascending=False) + temp_df = alignment_library.spectra_data.sort_values(by="SCORE", ascending=False).groupby("RAW_FILE") if group_by_charge: temp_df = temp_df.groupby("PRECURSOR_CHARGE") diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 31aabbe9..29bcdbc0 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -551,10 +551,11 @@ def load_spectra( :raises AssertionError: if no tims_meta_file was provided when loading timsTOF hdf data :return: measured spectra with metadata. """ - if isinstance(filename, str): - filename = Path(filename) + if isinstance(filename, (str, Path)): + filename = [filename] + filename = [Path(filename) for filename in filename] - format_ = filename.suffix.lower() + format_ = filename[0].suffix.lower() if format_ == ".mzml": return ThermoRaw.read_mzml( source=filename, package=parser, search_type="" From 5f4085c26320c39732717bed519d6fd8d8a5f788 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 2 May 2024 10:59:50 +0000 Subject: [PATCH 052/112] added instrument_type to config for alphapept support --- oktoberfest/predict/predict.py | 2 +- oktoberfest/runner.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 9d053461..f2630962 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -114,7 +114,7 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) if "alphapept" in server_kwargs.get("model_name").lower(): - alignment_library.obs["INSTRUMENT_TYPES"] = "QE" + alignment_library.obs["INSTRUMENT_TYPES"] = server_kwargs.get("instrument_type") if "done" in list(alignment_library.obs.columns): predict_input = alignment_library.obs[~alignment_library.obs["done"]] diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index e01fe6fd..c1a35025 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -141,6 +141,7 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): "server_url": config.prediction_server, "ssl": config.ssl, "model_name": config.models["intensity"], + "instrument_type": config.models["instrument_type"] } use_ransac_model = config.use_ransac_model alignment_library = pr.ce_calibration(library, config.ce_range, use_ransac_model, **server_kwargs) @@ -480,7 +481,7 @@ def _calculate_features(spectra_file: Path, config: Config): if not predict_step.is_done(): if "alphapept" in config.models["intensity"].lower(): - library.obs["INSTRUMENT_TYPES"] = "QE" + library.obs["INSTRUMENT_TYPES"] = config.models["instrument_type"] if "done" in list(library.obs.columns): predict_input = library.obs[~library.obs["done"]] From a0b340277a01c2d26ba795cb39b9f80b52299470 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 2 May 2024 12:59:48 +0200 Subject: [PATCH 053/112] updated requirements to include new tritonclient --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 3df9f08a..c790f075 100644 --- a/requirements.txt +++ b/requirements.txt @@ -127,7 +127,7 @@ tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" tornado==6.4 ; python_version >= "3.8" and python_full_version < "3.11.0" tqdm==4.66.2 ; python_version >= "3.8" and python_full_version < "3.11.0" triqler==0.7.3 ; python_version >= "3.8" and python_full_version < "3.11.0" -tritonclient[grpc]==2.36.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +tritonclient[grpc]==2.44.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" typeguard==4.2.1 ; python_version >= "3.8" and python_full_version < "3.11.0" typer==0.10.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" types-attrs==19.1.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" From 9f2eac8aaf812c4750defd429a9f96a0fd9590e9 Mon Sep 17 00:00:00 2001 From: Arne van den Berg Date: Thu, 2 May 2024 11:16:15 +0000 Subject: [PATCH 054/112] Revert "added instrument_type to config for alphapept support" This reverts commit 5f4085c26320c39732717bed519d6fd8d8a5f788. --- oktoberfest/predict/predict.py | 2 +- oktoberfest/runner.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index f2630962..9d053461 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -114,7 +114,7 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) if "alphapept" in server_kwargs.get("model_name").lower(): - alignment_library.obs["INSTRUMENT_TYPES"] = server_kwargs.get("instrument_type") + alignment_library.obs["INSTRUMENT_TYPES"] = "QE" if "done" in list(alignment_library.obs.columns): predict_input = alignment_library.obs[~alignment_library.obs["done"]] diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index c1a35025..e01fe6fd 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -141,7 +141,6 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): "server_url": config.prediction_server, "ssl": config.ssl, "model_name": config.models["intensity"], - "instrument_type": config.models["instrument_type"] } use_ransac_model = config.use_ransac_model alignment_library = pr.ce_calibration(library, config.ce_range, use_ransac_model, **server_kwargs) @@ -481,7 +480,7 @@ def _calculate_features(spectra_file: Path, config: Config): if not predict_step.is_done(): if "alphapept" in config.models["intensity"].lower(): - library.obs["INSTRUMENT_TYPES"] = config.models["instrument_type"] + library.obs["INSTRUMENT_TYPES"] = "QE" if "done" in list(library.obs.columns): predict_input = library.obs[~library.obs["done"]] From eceff186628edc1775fbd1f1920b10676bcc44ec Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 2 May 2024 13:16:21 +0200 Subject: [PATCH 055/112] fix spectrum-io tables dep issues with MAC --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index cc7e284c..938067e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ PyYAML = ">=5.4.1" matplotlib = "^3.6.3" seaborn = "^0.12.2" spectrum-fundamentals = ">=0.5.0,<0.6.0" -spectrum-io = ">=0.4.2,<0.5.0" +spectrum-io = ">=0.4.3,<0.5.0" mokapot = "^0.9.1" tritonclient = {extras = ["grpc"], version = ">=2.34.0,<2.45"} numpy = ">=1.20,<1.25" From 61b61897b6f0590b0f11ef8d63af0dc3d32c230b Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 2 May 2024 13:25:54 +0200 Subject: [PATCH 056/112] fix docstring + type annotations for load_spectra --- oktoberfest/preprocessing/preprocessing.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 29bcdbc0..55c491b9 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -534,7 +534,9 @@ def annotate_spectral_library(psms: Spectra, mass_tol: Optional[float] = None, u def load_spectra( - filename: Union[str, Path], parser: str = "pyteomics", tims_meta_file: Optional[Union[str, Path]] = None + filenames: Union[str, Path, List[Union[str, Path]]], + parser: str = "pyteomics", + tims_meta_file: Optional[Union[str, Path]] = None, ) -> pd.DataFrame: """ Read spectra from a given file. @@ -542,7 +544,9 @@ def load_spectra( This function reads MS2 spectra from a given mzML or hdf file using a specified parser. The file ending is used to determine the correct parsing method. - :param filename: Path to mzML / hdf file containing MS2 spectra to be loaded. + :param filenames: Path(s) to files containing MS2 spectra. Filenames need to end in ".mzML" (case-insensitive). + For timstof data, a single hdf5 path ending in ".hdf" (case-insensitive) needs to be provided. + Multiple paths are not yet supported for timstof. :param parser: Name of the package to use for parsing the mzml file, can be "pyteomics" or "pymzml". Only used for parsing of mzML files. :param tims_meta_file: Optional path to timstof metadata file in internal format. This is only required @@ -551,21 +555,21 @@ def load_spectra( :raises AssertionError: if no tims_meta_file was provided when loading timsTOF hdf data :return: measured spectra with metadata. """ - if isinstance(filename, (str, Path)): - filename = [filename] - filename = [Path(filename) for filename in filename] + if isinstance(filenames, (str, Path)): + filenames = [filenames] + filenames = [Path(filename) for filename in filenames] - format_ = filename[0].suffix.lower() + format_ = filenames[0].suffix.lower() if format_ == ".mzml": return ThermoRaw.read_mzml( - source=filename, package=parser, search_type="" + source=filenames, package=parser, search_type="" ) # TODO in spectrum_io, remove unnecessary argument elif format_ == ".hdf": if tims_meta_file is None: raise AssertionError( "Loading spectra from a timsTOF hdf file requires metadata provided by tims_meta_file." ) - results = read_and_aggregate_timstof(source=filename, tims_meta_file=Path(tims_meta_file)) + results = read_and_aggregate_timstof(source=filenames, tims_meta_file=Path(tims_meta_file)) return results else: From ea2f17ccfcd2b0dc2f220750777649bf86459f52 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 2 May 2024 13:28:35 +0200 Subject: [PATCH 057/112] fix dependencies --- poetry.lock | 1416 ++++++++++++++++++++-------------------------- requirements.txt | 77 +-- 2 files changed, 641 insertions(+), 852 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7f940f96..2b21e19d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -40,6 +40,20 @@ plotting = ["bokeh", "datashader", "hvplot", "jinja2", "selenium"] plotting-stable = ["bokeh (==2.2.3)", "datashader (==0.12.1)", "hvplot (==0.7.1)", "jinja2 (==3.0.2)", "selenium (==3.141.0)"] stable = ["click (==8.1.3)", "h5py (==3.8.0)", "numba (==0.56.4)", "pandas (==1.5.3)", "psutil (==5.9.4)", "pyzstd (==0.15.3)", "tqdm (==4.64.1)"] +[[package]] +name = "annotated-types" +version = "0.6.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} + [[package]] name = "attrs" version = "23.2.0" @@ -116,33 +130,33 @@ yaml = ["PyYAML"] [[package]] name = "black" -version = "24.3.0" +version = "24.4.2" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-24.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395"}, - {file = "black-24.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995"}, - {file = "black-24.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"}, - {file = "black-24.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0"}, - {file = "black-24.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9"}, - {file = "black-24.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597"}, - {file = "black-24.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d"}, - {file = "black-24.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5"}, - {file = "black-24.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f"}, - {file = "black-24.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11"}, - {file = "black-24.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4"}, - {file = "black-24.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5"}, - {file = "black-24.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:79dcf34b33e38ed1b17434693763301d7ccbd1c5860674a8f871bd15139e7837"}, - {file = "black-24.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e19cb1c6365fd6dc38a6eae2dcb691d7d83935c10215aef8e6c38edee3f77abd"}, - {file = "black-24.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b76c275e4c1c5ce6e9870911384bff5ca31ab63d19c76811cb1fb162678213"}, - {file = "black-24.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b5991d523eee14756f3c8d5df5231550ae8993e2286b8014e2fdea7156ed0959"}, - {file = "black-24.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb"}, - {file = "black-24.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7"}, - {file = "black-24.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7"}, - {file = "black-24.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f"}, - {file = "black-24.3.0-py3-none-any.whl", hash = "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93"}, - {file = "black-24.3.0.tar.gz", hash = "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f"}, + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, + {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, + {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, + {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, + {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, + {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, + {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, + {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] [package.dependencies] @@ -160,39 +174,6 @@ d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] -[[package]] -name = "blosc2" -version = "2.0.0" -description = "Python wrapper for the C-Blosc2 library." -optional = false -python-versions = ">=3.8, <4" -files = [ - {file = "blosc2-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4085e5c1df186e1747d8a8578b0cc1c8b7668391d635e9f89e17156912fba85a"}, - {file = "blosc2-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cec4c0570543921ce6b8c9ffdbf9f2170de37ecaf8e2b213e867e3130b81f205"}, - {file = "blosc2-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fbecd7ef4876811719aa58d84e4b414f430f329162c18578b870f5e77b59864"}, - {file = "blosc2-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96dd63eb7641594208e6a865fd60a0bdde24568a180180beb8af4d6608796f3a"}, - {file = "blosc2-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:659e18d5e606a0ca4d80766f86d87e640818051911d01679eed11022243a7e4f"}, - {file = "blosc2-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c58990ab2bcd0f412496acf1d05c65d955d963197bbaa57b10b2ace31c29181a"}, - {file = "blosc2-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f206e6a01a8167b441bf886ff022eb20e0f085b09300f49f3018f566c14d918a"}, - {file = "blosc2-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ec63269428aa3fb45f7d4881b2d11b428c4cb62e854caf54a767a64da4df83e"}, - {file = "blosc2-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98ab1cd57f9d7422f1636a6b290f2940113ee8be26bfe3823e8c011826972b9c"}, - {file = "blosc2-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:54c5614b18f9f01473758fa64e3bc699adbe31b307a45eca0e07fa2204e4d4a1"}, - {file = "blosc2-2.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f465b8ab54ecde6b8654672a50a4c3699aafd8e2de0dfcd84ed53f8a34c1734a"}, - {file = "blosc2-2.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0497793f55db0b75de08eb4c047a0bc5b96dbe5e405b53803dd3368e36336188"}, - {file = "blosc2-2.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5c52649837d514669107c77e8f172e9e5ecfa030eef0d378bb47ce1689921c9"}, - {file = "blosc2-2.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8eb02f67d4ed8ac8f0ce5f3c8cafc0059255bb6899fd35127e4076925640f239"}, - {file = "blosc2-2.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:32c365bf744353103ed91dc1f03889de03b986588181601594aa7ee773818cb4"}, - {file = "blosc2-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d98e850f0de55e15c402c6e27105ba850f8954e784e30a7f8bde89eb70a08574"}, - {file = "blosc2-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6545d6d7e7365a2a3533d4bdf7095856443aed7d5ddc577ecd0e78083790bff1"}, - {file = "blosc2-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c193959a984e7814833c8be6b9026d7744d2cff4d450476561583a87152e13e"}, - {file = "blosc2-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea3396de7757092d502fb297a44a8d019d92e750e5aebcd9d39a157fde8785b3"}, - {file = "blosc2-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:ef018926b55799cf23345127dde8f29356b4451b3e067e1b07f0d186213bd821"}, - {file = "blosc2-2.0.0.tar.gz", hash = "sha256:f19b0b3674f6c825b490f00d8264b0c540c2cdc11ec7e81178d38b83c57790a1"}, -] - -[package.dependencies] -msgpack = "*" - [[package]] name = "certifi" version = "2024.2.2" @@ -476,63 +457,63 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.4.4" +version = "7.5.0" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, - {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, - {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, - {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, - {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, - {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, - {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, - {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c"}, - {file = "coverage-7.4.4-cp38-cp38-win32.whl", hash = "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e"}, - {file = "coverage-7.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, - {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, - {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, - {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, - {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, + {file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"}, + {file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"}, + {file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"}, + {file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"}, + {file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"}, + {file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"}, + {file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"}, + {file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"}, + {file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"}, + {file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"}, + {file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"}, + {file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"}, + {file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"}, + {file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"}, + {file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"}, + {file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"}, + {file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"}, + {file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"}, + {file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"}, + {file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"}, + {file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"}, + {file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"}, ] [package.dependencies] @@ -610,73 +591,6 @@ files = [ docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] tests = ["pytest", "pytest-cov", "pytest-xdist"] -[[package]] -name = "cython" -version = "3.0.9" -description = "The Cython compiler for writing C extensions in the Python language." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Cython-3.0.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:296bd30d4445ac61b66c9d766567f6e81a6e262835d261e903c60c891a6729d3"}, - {file = "Cython-3.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f496b52845cb45568a69d6359a2c335135233003e708ea02155c10ce3548aa89"}, - {file = "Cython-3.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:858c3766b9aa3ab8a413392c72bbab1c144a9766b7c7bfdef64e2e414363fa0c"}, - {file = "Cython-3.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0eb1e6ef036028a52525fd9a012a556f6dd4788a0e8755fe864ba0e70cde2ff"}, - {file = "Cython-3.0.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c8191941073ea5896321de3c8c958fd66e5f304b0cd1f22c59edd0b86c4dd90d"}, - {file = "Cython-3.0.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e32b016030bc72a8a22a1f21f470a2f57573761a4f00fbfe8347263f4fbdb9f1"}, - {file = "Cython-3.0.9-cp310-cp310-win32.whl", hash = "sha256:d6f3ff1cd6123973fe03e0fb8ee936622f976c0c41138969975824d08886572b"}, - {file = "Cython-3.0.9-cp310-cp310-win_amd64.whl", hash = "sha256:56f3b643dbe14449248bbeb9a63fe3878a24256664bc8c8ef6efd45d102596d8"}, - {file = "Cython-3.0.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:35e6665a20d6b8a152d72b7fd87dbb2af6bb6b18a235b71add68122d594dbd41"}, - {file = "Cython-3.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92f4960c40ad027bd8c364c50db11104eadc59ffeb9e5b7f605ca2f05946e20"}, - {file = "Cython-3.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38df37d0e732fbd9a2fef898788492e82b770c33d1e4ed12444bbc8a3b3f89c0"}, - {file = "Cython-3.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad7fd88ebaeaf2e76fd729a8919fae80dab3d6ac0005e28494261d52ff347a8f"}, - {file = "Cython-3.0.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1365d5f76bf4d19df3d19ce932584c9bb76e9fb096185168918ef9b36e06bfa4"}, - {file = "Cython-3.0.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c232e7f279388ac9625c3e5a5a9f0078a9334959c5d6458052c65bbbba895e1e"}, - {file = "Cython-3.0.9-cp311-cp311-win32.whl", hash = "sha256:357e2fad46a25030b0c0496487e01a9dc0fdd0c09df0897f554d8ba3c1bc4872"}, - {file = "Cython-3.0.9-cp311-cp311-win_amd64.whl", hash = "sha256:1315aee506506e8d69cf6631d8769e6b10131fdcc0eb66df2698f2a3ddaeeff2"}, - {file = "Cython-3.0.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:157973807c2796addbed5fbc4d9c882ab34bbc60dc297ca729504901479d5df7"}, - {file = "Cython-3.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00b105b5d050645dd59e6767bc0f18b48a4aa11c85f42ec7dd8181606f4059e3"}, - {file = "Cython-3.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac5536d09bef240cae0416d5a703d298b74c7bbc397da803ac9d344e732d4369"}, - {file = "Cython-3.0.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09c44501d476d16aaa4cbc29c87f8c0f54fc20e69b650d59cbfa4863426fc70c"}, - {file = "Cython-3.0.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cc9c3b9f20d8e298618e5ccd32083ca386e785b08f9893fbec4c50b6b85be772"}, - {file = "Cython-3.0.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a30d96938c633e3ec37000ac3796525da71254ef109e66bdfd78f29891af6454"}, - {file = "Cython-3.0.9-cp312-cp312-win32.whl", hash = "sha256:757ca93bdd80702546df4d610d2494ef2e74249cac4d5ba9464589fb464bd8a3"}, - {file = "Cython-3.0.9-cp312-cp312-win_amd64.whl", hash = "sha256:1dc320a9905ab95414013f6de805efbff9e17bb5fb3b90bbac533f017bec8136"}, - {file = "Cython-3.0.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4ae349960ebe0da0d33724eaa7f1eb866688fe5434cc67ce4dbc06d6a719fbfc"}, - {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63d2537bf688247f76ded6dee28ebd26274f019309aef1eb4f2f9c5c482fde2d"}, - {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f5a2dfc724bea1f710b649f02d802d80fc18320c8e6396684ba4a48412445a"}, - {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deaf4197d4b0bcd5714a497158ea96a2bd6d0f9636095437448f7e06453cc83d"}, - {file = "Cython-3.0.9-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:000af6deb7412eb7ac0c635ff5e637fb8725dd0a7b88cc58dfc2b3de14e701c4"}, - {file = "Cython-3.0.9-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:15c7f5c2d35bed9aa5f2a51eaac0df23ae72f2dbacf62fc672dd6bfaa75d2d6f"}, - {file = "Cython-3.0.9-cp36-cp36m-win32.whl", hash = "sha256:f49aa4970cd3bec66ac22e701def16dca2a49c59cceba519898dd7526e0be2c0"}, - {file = "Cython-3.0.9-cp36-cp36m-win_amd64.whl", hash = "sha256:4558814fa025b193058d42eeee498a53d6b04b2980d01339fc2444b23fd98e58"}, - {file = "Cython-3.0.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:539cd1d74fd61f6cfc310fa6bbbad5adc144627f2b7486a07075d4e002fd6aad"}, - {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3232926cd406ee02eabb732206f6e882c3aed9d58f0fea764013d9240405bcf"}, - {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33b6ac376538a7fc8c567b85d3c71504308a9318702ec0485dd66c059f3165cb"}, - {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2cc92504b5d22ac66031ffb827bd3a967fc75a5f0f76ab48bce62df19be6fdfd"}, - {file = "Cython-3.0.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:22b8fae756c5c0d8968691bed520876de452f216c28ec896a00739a12dba3bd9"}, - {file = "Cython-3.0.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9cda0d92a09f3520f29bd91009f1194ba9600777c02c30c6d2d4ac65fb63e40d"}, - {file = "Cython-3.0.9-cp37-cp37m-win32.whl", hash = "sha256:ec612418490941ed16c50c8d3784c7bdc4c4b2a10c361259871790b02ec8c1db"}, - {file = "Cython-3.0.9-cp37-cp37m-win_amd64.whl", hash = "sha256:976c8d2bedc91ff6493fc973d38b2dc01020324039e2af0e049704a8e1b22936"}, - {file = "Cython-3.0.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5055988b007c92256b6e9896441c3055556038c3497fcbf8c921a6c1fce90719"}, - {file = "Cython-3.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9360606d964c2d0492a866464efcf9d0a92715644eede3f6a2aa696de54a137"}, - {file = "Cython-3.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c6e809f060bed073dc7cba1648077fe3b68208863d517c8b39f3920eecf9dd"}, - {file = "Cython-3.0.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95ed792c966f969cea7489c32ff90150b415c1f3567db8d5a9d489c7c1602dac"}, - {file = "Cython-3.0.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8edd59d22950b400b03ca78d27dc694d2836a92ef0cac4f64cb4b2ff902f7e25"}, - {file = "Cython-3.0.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4cf0ed273bf60e97922fcbbdd380c39693922a597760160b4b4355e6078ca188"}, - {file = "Cython-3.0.9-cp38-cp38-win32.whl", hash = "sha256:5eb9bd4ae12ebb2bc79a193d95aacf090fbd8d7013e11ed5412711650cb34934"}, - {file = "Cython-3.0.9-cp38-cp38-win_amd64.whl", hash = "sha256:44457279da56e0f829bb1fc5a5dc0836e5d498dbcf9b2324f32f7cc9d2ec6569"}, - {file = "Cython-3.0.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4b419a1adc2af43f4660e2f6eaf1e4fac2dbac59490771eb8ac3d6063f22356"}, - {file = "Cython-3.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f836192140f033b2319a0128936367c295c2b32e23df05b03b672a6015757ea"}, - {file = "Cython-3.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fd198c1a7f8e9382904d622cc0efa3c184605881fd5262c64cbb7168c4c1ec5"}, - {file = "Cython-3.0.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a274fe9ca5c53fafbcf5c8f262f8ad6896206a466f0eeb40aaf36a7951e957c0"}, - {file = "Cython-3.0.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:158c38360bbc5063341b1e78d3737f1251050f89f58a3df0d10fb171c44262be"}, - {file = "Cython-3.0.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8bf30b045f7deda0014b042c1b41c1d272facc762ab657529e3b05505888e878"}, - {file = "Cython-3.0.9-cp39-cp39-win32.whl", hash = "sha256:9a001fd95c140c94d934078544ff60a3c46aca2dc86e75a76e4121d3cd1f4b33"}, - {file = "Cython-3.0.9-cp39-cp39-win_amd64.whl", hash = "sha256:530c01c4aebba709c0ec9c7ecefe07177d0b9fd7ffee29450a118d92192ccbdf"}, - {file = "Cython-3.0.9-py2.py3-none-any.whl", hash = "sha256:bf96417714353c5454c2e3238fca9338599330cf51625cdc1ca698684465646f"}, - {file = "Cython-3.0.9.tar.gz", hash = "sha256:a2d354f059d1f055d34cfaa62c5b68bc78ac2ceab6407148d47fb508cf3ba4f3"}, -] - [[package]] name = "darglint" version = "1.8.1" @@ -744,13 +658,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, + {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, ] [package.extras] @@ -758,18 +672,18 @@ test = ["pytest (>=6)"] [[package]] name = "filelock" -version = "3.13.1" +version = "3.14.0" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, - {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, + {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, + {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] typing = ["typing-extensions (>=4.8)"] [[package]] @@ -857,53 +771,53 @@ develop = ["build", "twine"] [[package]] name = "fonttools" -version = "4.50.0" +version = "4.51.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effd303fb422f8ce06543a36ca69148471144c534cc25f30e5be752bc4f46736"}, - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7913992ab836f621d06aabac118fc258b9947a775a607e1a737eb3a91c360335"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0a1c5bd2f63da4043b63888534b52c5a1fd7ae187c8ffc64cbb7ae475b9dab"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40fc98540fa5360e7ecf2c56ddf3c6e7dd04929543618fd7b5cc76e66390562"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fff65fbb7afe137bac3113827855e0204482727bddd00a806034ab0d3951d0d"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1aeae3dd2ee719074a9372c89ad94f7c581903306d76befdaca2a559f802472"}, - {file = "fonttools-4.50.0-cp310-cp310-win32.whl", hash = "sha256:e9623afa319405da33b43c85cceb0585a6f5d3a1d7c604daf4f7e1dd55c03d1f"}, - {file = "fonttools-4.50.0-cp310-cp310-win_amd64.whl", hash = "sha256:778c5f43e7e654ef7fe0605e80894930bc3a7772e2f496238e57218610140f54"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3dfb102e7f63b78c832e4539969167ffcc0375b013080e6472350965a5fe8048"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e58fe34cb379ba3d01d5d319d67dd3ce7ca9a47ad044ea2b22635cd2d1247fc"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c673ab40d15a442a4e6eb09bf007c1dda47c84ac1e2eecbdf359adacb799c24"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b3ac35cdcd1a4c90c23a5200212c1bb74fa05833cc7c14291d7043a52ca2aaa"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8844e7a2c5f7ecf977e82eb6b3014f025c8b454e046d941ece05b768be5847ae"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f849bd3c5c2249b49c98eca5aaebb920d2bfd92b3c69e84ca9bddf133e9f83f0"}, - {file = "fonttools-4.50.0-cp311-cp311-win32.whl", hash = "sha256:39293ff231b36b035575e81c14626dfc14407a20de5262f9596c2cbb199c3625"}, - {file = "fonttools-4.50.0-cp311-cp311-win_amd64.whl", hash = "sha256:c33d5023523b44d3481624f840c8646656a1def7630ca562f222eb3ead16c438"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b4a886a6dbe60100ba1cd24de962f8cd18139bd32808da80de1fa9f9f27bf1dc"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b2ca1837bfbe5eafa11313dbc7edada79052709a1fffa10cea691210af4aa1fa"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0493dd97ac8977e48ffc1476b932b37c847cbb87fd68673dee5182004906828"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77844e2f1b0889120b6c222fc49b2b75c3d88b930615e98893b899b9352a27ea"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3566bfb8c55ed9100afe1ba6f0f12265cd63a1387b9661eb6031a1578a28bad1"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:35e10ddbc129cf61775d58a14f2d44121178d89874d32cae1eac722e687d9019"}, - {file = "fonttools-4.50.0-cp312-cp312-win32.whl", hash = "sha256:cc8140baf9fa8f9b903f2b393a6c413a220fa990264b215bf48484f3d0bf8710"}, - {file = "fonttools-4.50.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ccc85fd96373ab73c59833b824d7a73846670a0cb1f3afbaee2b2c426a8f931"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e270a406219af37581d96c810172001ec536e29e5593aa40d4c01cca3e145aa6"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac2463de667233372e9e1c7e9de3d914b708437ef52a3199fdbf5a60184f190c"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47abd6669195abe87c22750dbcd366dc3a0648f1b7c93c2baa97429c4dc1506e"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:074841375e2e3d559aecc86e1224caf78e8b8417bb391e7d2506412538f21adc"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0743fd2191ad7ab43d78cd747215b12033ddee24fa1e088605a3efe80d6984de"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3d7080cce7be5ed65bee3496f09f79a82865a514863197ff4d4d177389e981b0"}, - {file = "fonttools-4.50.0-cp38-cp38-win32.whl", hash = "sha256:a467ba4e2eadc1d5cc1a11d355abb945f680473fbe30d15617e104c81f483045"}, - {file = "fonttools-4.50.0-cp38-cp38-win_amd64.whl", hash = "sha256:f77e048f805e00870659d6318fd89ef28ca4ee16a22b4c5e1905b735495fc422"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b6245eafd553c4e9a0708e93be51392bd2288c773523892fbd616d33fd2fda59"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a4062cc7e8de26f1603323ef3ae2171c9d29c8a9f5e067d555a2813cd5c7a7e0"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34692850dfd64ba06af61e5791a441f664cb7d21e7b544e8f385718430e8f8e4"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678dd95f26a67e02c50dcb5bf250f95231d455642afbc65a3b0bcdacd4e4dd38"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f2ce7b0b295fe64ac0a85aef46a0f2614995774bd7bc643b85679c0283287f9"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d346f4dc2221bfb7ab652d1e37d327578434ce559baf7113b0f55768437fe6a0"}, - {file = "fonttools-4.50.0-cp39-cp39-win32.whl", hash = "sha256:a51eeaf52ba3afd70bf489be20e52fdfafe6c03d652b02477c6ce23c995222f4"}, - {file = "fonttools-4.50.0-cp39-cp39-win_amd64.whl", hash = "sha256:8639be40d583e5d9da67795aa3eeeda0488fb577a1d42ae11a5036f18fb16d93"}, - {file = "fonttools-4.50.0-py3-none-any.whl", hash = "sha256:48fa36da06247aa8282766cfd63efff1bb24e55f020f29a335939ed3844d20d3"}, - {file = "fonttools-4.50.0.tar.gz", hash = "sha256:fa5cf61058c7dbb104c2ac4e782bf1b2016a8cf2f69de6e4dd6a865d2c969bb5"}, + {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74"}, + {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308"}, + {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037"}, + {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716"}, + {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438"}, + {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039"}, + {file = "fonttools-4.51.0-cp310-cp310-win32.whl", hash = "sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77"}, + {file = "fonttools-4.51.0-cp310-cp310-win_amd64.whl", hash = "sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b"}, + {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74"}, + {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2"}, + {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f"}, + {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097"}, + {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0"}, + {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1"}, + {file = "fonttools-4.51.0-cp311-cp311-win32.whl", hash = "sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034"}, + {file = "fonttools-4.51.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1"}, + {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba"}, + {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc"}, + {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a"}, + {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2"}, + {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671"}, + {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5"}, + {file = "fonttools-4.51.0-cp312-cp312-win32.whl", hash = "sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15"}, + {file = "fonttools-4.51.0-cp312-cp312-win_amd64.whl", hash = "sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e"}, + {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e"}, + {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5"}, + {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e"}, + {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1"}, + {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14"}, + {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed"}, + {file = "fonttools-4.51.0-cp38-cp38-win32.whl", hash = "sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f"}, + {file = "fonttools-4.51.0-cp38-cp38-win_amd64.whl", hash = "sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836"}, + {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b"}, + {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"}, + {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55"}, + {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce"}, + {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051"}, + {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7"}, + {file = "fonttools-4.51.0-cp39-cp39-win32.whl", hash = "sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636"}, + {file = "fonttools-4.51.0-cp39-cp39-win_amd64.whl", hash = "sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a"}, + {file = "fonttools-4.51.0-py3-none-any.whl", hash = "sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f"}, + {file = "fonttools-4.51.0.tar.gz", hash = "sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68"}, ] [package.extras] @@ -922,102 +836,90 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "grpcio" -version = "1.62.1" +version = "1.63.0" description = "HTTP/2-based RPC framework" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "grpcio-1.62.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:179bee6f5ed7b5f618844f760b6acf7e910988de77a4f75b95bbfaa8106f3c1e"}, - {file = "grpcio-1.62.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:48611e4fa010e823ba2de8fd3f77c1322dd60cb0d180dc6630a7e157b205f7ea"}, - {file = "grpcio-1.62.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:b2a0e71b0a2158aa4bce48be9f8f9eb45cbd17c78c7443616d00abbe2a509f6d"}, - {file = "grpcio-1.62.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbe80577c7880911d3ad65e5ecc997416c98f354efeba2f8d0f9112a67ed65a5"}, - {file = "grpcio-1.62.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58f6c693d446964e3292425e1d16e21a97a48ba9172f2d0df9d7b640acb99243"}, - {file = "grpcio-1.62.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:77c339403db5a20ef4fed02e4d1a9a3d9866bf9c0afc77a42234677313ea22f3"}, - {file = "grpcio-1.62.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b5a4ea906db7dec694098435d84bf2854fe158eb3cd51e1107e571246d4d1d70"}, - {file = "grpcio-1.62.1-cp310-cp310-win32.whl", hash = "sha256:4187201a53f8561c015bc745b81a1b2d278967b8de35f3399b84b0695e281d5f"}, - {file = "grpcio-1.62.1-cp310-cp310-win_amd64.whl", hash = "sha256:844d1f3fb11bd1ed362d3fdc495d0770cfab75761836193af166fee113421d66"}, - {file = "grpcio-1.62.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:833379943d1728a005e44103f17ecd73d058d37d95783eb8f0b28ddc1f54d7b2"}, - {file = "grpcio-1.62.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:c7fcc6a32e7b7b58f5a7d27530669337a5d587d4066060bcb9dee7a8c833dfb7"}, - {file = "grpcio-1.62.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:fa7d28eb4d50b7cbe75bb8b45ed0da9a1dc5b219a0af59449676a29c2eed9698"}, - {file = "grpcio-1.62.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48f7135c3de2f298b833be8b4ae20cafe37091634e91f61f5a7eb3d61ec6f660"}, - {file = "grpcio-1.62.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71f11fd63365ade276c9d4a7b7df5c136f9030e3457107e1791b3737a9b9ed6a"}, - {file = "grpcio-1.62.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b49fd8fe9f9ac23b78437da94c54aa7e9996fbb220bac024a67469ce5d0825f"}, - {file = "grpcio-1.62.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:482ae2ae78679ba9ed5752099b32e5fe580443b4f798e1b71df412abf43375db"}, - {file = "grpcio-1.62.1-cp311-cp311-win32.whl", hash = "sha256:1faa02530b6c7426404372515fe5ddf66e199c2ee613f88f025c6f3bd816450c"}, - {file = "grpcio-1.62.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bd90b8c395f39bc82a5fb32a0173e220e3f401ff697840f4003e15b96d1befc"}, - {file = "grpcio-1.62.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b134d5d71b4e0837fff574c00e49176051a1c532d26c052a1e43231f252d813b"}, - {file = "grpcio-1.62.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:d1f6c96573dc09d50dbcbd91dbf71d5cf97640c9427c32584010fbbd4c0e0037"}, - {file = "grpcio-1.62.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:359f821d4578f80f41909b9ee9b76fb249a21035a061a327f91c953493782c31"}, - {file = "grpcio-1.62.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a485f0c2010c696be269184bdb5ae72781344cb4e60db976c59d84dd6354fac9"}, - {file = "grpcio-1.62.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b50b09b4dc01767163d67e1532f948264167cd27f49e9377e3556c3cba1268e1"}, - {file = "grpcio-1.62.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3227c667dccbe38f2c4d943238b887bac588d97c104815aecc62d2fd976e014b"}, - {file = "grpcio-1.62.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3952b581eb121324853ce2b191dae08badb75cd493cb4e0243368aa9e61cfd41"}, - {file = "grpcio-1.62.1-cp312-cp312-win32.whl", hash = "sha256:83a17b303425104d6329c10eb34bba186ffa67161e63fa6cdae7776ff76df73f"}, - {file = "grpcio-1.62.1-cp312-cp312-win_amd64.whl", hash = "sha256:6696ffe440333a19d8d128e88d440f91fb92c75a80ce4b44d55800e656a3ef1d"}, - {file = "grpcio-1.62.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:e3393b0823f938253370ebef033c9fd23d27f3eae8eb9a8f6264900c7ea3fb5a"}, - {file = "grpcio-1.62.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:83e7ccb85a74beaeae2634f10eb858a0ed1a63081172649ff4261f929bacfd22"}, - {file = "grpcio-1.62.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:882020c87999d54667a284c7ddf065b359bd00251fcd70279ac486776dbf84ec"}, - {file = "grpcio-1.62.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a10383035e864f386fe096fed5c47d27a2bf7173c56a6e26cffaaa5a361addb1"}, - {file = "grpcio-1.62.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:960edebedc6b9ada1ef58e1c71156f28689978188cd8cff3b646b57288a927d9"}, - {file = "grpcio-1.62.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:23e2e04b83f347d0aadde0c9b616f4726c3d76db04b438fd3904b289a725267f"}, - {file = "grpcio-1.62.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:978121758711916d34fe57c1f75b79cdfc73952f1481bb9583399331682d36f7"}, - {file = "grpcio-1.62.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9084086190cc6d628f282e5615f987288b95457292e969b9205e45b442276407"}, - {file = "grpcio-1.62.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:22bccdd7b23c420a27fd28540fb5dcbc97dc6be105f7698cb0e7d7a420d0e362"}, - {file = "grpcio-1.62.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:8999bf1b57172dbc7c3e4bb3c732658e918f5c333b2942243f10d0d653953ba9"}, - {file = "grpcio-1.62.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:d9e52558b8b8c2f4ac05ac86344a7417ccdd2b460a59616de49eb6933b07a0bd"}, - {file = "grpcio-1.62.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1714e7bc935780bc3de1b3fcbc7674209adf5208ff825799d579ffd6cd0bd505"}, - {file = "grpcio-1.62.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8842ccbd8c0e253c1f189088228f9b433f7a93b7196b9e5b6f87dba393f5d5d"}, - {file = "grpcio-1.62.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1f1e7b36bdff50103af95a80923bf1853f6823dd62f2d2a2524b66ed74103e49"}, - {file = "grpcio-1.62.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bba97b8e8883a8038606480d6b6772289f4c907f6ba780fa1f7b7da7dfd76f06"}, - {file = "grpcio-1.62.1-cp38-cp38-win32.whl", hash = "sha256:a7f615270fe534548112a74e790cd9d4f5509d744dd718cd442bf016626c22e4"}, - {file = "grpcio-1.62.1-cp38-cp38-win_amd64.whl", hash = "sha256:e6c8c8693df718c5ecbc7babb12c69a4e3677fd11de8886f05ab22d4e6b1c43b"}, - {file = "grpcio-1.62.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:73db2dc1b201d20ab7083e7041946910bb991e7e9761a0394bbc3c2632326483"}, - {file = "grpcio-1.62.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:407b26b7f7bbd4f4751dbc9767a1f0716f9fe72d3d7e96bb3ccfc4aace07c8de"}, - {file = "grpcio-1.62.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:f8de7c8cef9261a2d0a62edf2ccea3d741a523c6b8a6477a340a1f2e417658de"}, - {file = "grpcio-1.62.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd5c8a1af40ec305d001c60236308a67e25419003e9bb3ebfab5695a8d0b369"}, - {file = "grpcio-1.62.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be0477cb31da67846a33b1a75c611f88bfbcd427fe17701b6317aefceee1b96f"}, - {file = "grpcio-1.62.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:60dcd824df166ba266ee0cfaf35a31406cd16ef602b49f5d4dfb21f014b0dedd"}, - {file = "grpcio-1.62.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:973c49086cabab773525f6077f95e5a993bfc03ba8fc32e32f2c279497780585"}, - {file = "grpcio-1.62.1-cp39-cp39-win32.whl", hash = "sha256:12859468e8918d3bd243d213cd6fd6ab07208195dc140763c00dfe901ce1e1b4"}, - {file = "grpcio-1.62.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7209117bbeebdfa5d898205cc55153a51285757902dd73c47de498ad4d11332"}, - {file = "grpcio-1.62.1.tar.gz", hash = "sha256:6c455e008fa86d9e9a9d85bb76da4277c0d7d9668a3bfa70dbe86e9f3c759947"}, -] - -[package.extras] -protobuf = ["grpcio-tools (>=1.62.1)"] + {file = "grpcio-1.63.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2e93aca840c29d4ab5db93f94ed0a0ca899e241f2e8aec6334ab3575dc46125c"}, + {file = "grpcio-1.63.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:91b73d3f1340fefa1e1716c8c1ec9930c676d6b10a3513ab6c26004cb02d8b3f"}, + {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:b3afbd9d6827fa6f475a4f91db55e441113f6d3eb9b7ebb8fb806e5bb6d6bd0d"}, + {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f3f6883ce54a7a5f47db43289a0a4c776487912de1a0e2cc83fdaec9685cc9f"}, + {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf8dae9cc0412cb86c8de5a8f3be395c5119a370f3ce2e69c8b7d46bb9872c8d"}, + {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:08e1559fd3b3b4468486b26b0af64a3904a8dbc78d8d936af9c1cf9636eb3e8b"}, + {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5c039ef01516039fa39da8a8a43a95b64e288f79f42a17e6c2904a02a319b357"}, + {file = "grpcio-1.63.0-cp310-cp310-win32.whl", hash = "sha256:ad2ac8903b2eae071055a927ef74121ed52d69468e91d9bcbd028bd0e554be6d"}, + {file = "grpcio-1.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:b2e44f59316716532a993ca2966636df6fbe7be4ab6f099de6815570ebe4383a"}, + {file = "grpcio-1.63.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:f28f8b2db7b86c77916829d64ab21ff49a9d8289ea1564a2b2a3a8ed9ffcccd3"}, + {file = "grpcio-1.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:65bf975639a1f93bee63ca60d2e4951f1b543f498d581869922910a476ead2f5"}, + {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b5194775fec7dc3dbd6a935102bb156cd2c35efe1685b0a46c67b927c74f0cfb"}, + {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4cbb2100ee46d024c45920d16e888ee5d3cf47c66e316210bc236d5bebc42b3"}, + {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff737cf29b5b801619f10e59b581869e32f400159e8b12d7a97e7e3bdeee6a2"}, + {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cd1e68776262dd44dedd7381b1a0ad09d9930ffb405f737d64f505eb7f77d6c7"}, + {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f45f27f516548e23e4ec3fbab21b060416007dbe768a111fc4611464cc773f"}, + {file = "grpcio-1.63.0-cp311-cp311-win32.whl", hash = "sha256:878b1d88d0137df60e6b09b74cdb73db123f9579232c8456f53e9abc4f62eb3c"}, + {file = "grpcio-1.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:756fed02dacd24e8f488f295a913f250b56b98fb793f41d5b2de6c44fb762434"}, + {file = "grpcio-1.63.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:93a46794cc96c3a674cdfb59ef9ce84d46185fe9421baf2268ccb556f8f81f57"}, + {file = "grpcio-1.63.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a7b19dfc74d0be7032ca1eda0ed545e582ee46cd65c162f9e9fc6b26ef827dc6"}, + {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8064d986d3a64ba21e498b9a376cbc5d6ab2e8ab0e288d39f266f0fca169b90d"}, + {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:219bb1848cd2c90348c79ed0a6b0ea51866bc7e72fa6e205e459fedab5770172"}, + {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d60cd1d58817bc5985fae6168d8b5655c4981d448d0f5b6194bbcc038090d2"}, + {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e350cb096e5c67832e9b6e018cf8a0d2a53b2a958f6251615173165269a91b0"}, + {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:56cdf96ff82e3cc90dbe8bac260352993f23e8e256e063c327b6cf9c88daf7a9"}, + {file = "grpcio-1.63.0-cp312-cp312-win32.whl", hash = "sha256:3a6d1f9ea965e750db7b4ee6f9fdef5fdf135abe8a249e75d84b0a3e0c668a1b"}, + {file = "grpcio-1.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:d2497769895bb03efe3187fb1888fc20e98a5f18b3d14b606167dacda5789434"}, + {file = "grpcio-1.63.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:fdf348ae69c6ff484402cfdb14e18c1b0054ac2420079d575c53a60b9b2853ae"}, + {file = "grpcio-1.63.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a3abfe0b0f6798dedd2e9e92e881d9acd0fdb62ae27dcbbfa7654a57e24060c0"}, + {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6ef0ad92873672a2a3767cb827b64741c363ebaa27e7f21659e4e31f4d750280"}, + {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b416252ac5588d9dfb8a30a191451adbf534e9ce5f56bb02cd193f12d8845b7f"}, + {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b77eaefc74d7eb861d3ffbdf91b50a1bb1639514ebe764c47773b833fa2d91"}, + {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b005292369d9c1f80bf70c1db1c17c6c342da7576f1c689e8eee4fb0c256af85"}, + {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cdcda1156dcc41e042d1e899ba1f5c2e9f3cd7625b3d6ebfa619806a4c1aadda"}, + {file = "grpcio-1.63.0-cp38-cp38-win32.whl", hash = "sha256:01799e8649f9e94ba7db1aeb3452188048b0019dc37696b0f5ce212c87c560c3"}, + {file = "grpcio-1.63.0-cp38-cp38-win_amd64.whl", hash = "sha256:6a1a3642d76f887aa4009d92f71eb37809abceb3b7b5a1eec9c554a246f20e3a"}, + {file = "grpcio-1.63.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:75f701ff645858a2b16bc8c9fc68af215a8bb2d5a9b647448129de6e85d52bce"}, + {file = "grpcio-1.63.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cacdef0348a08e475a721967f48206a2254a1b26ee7637638d9e081761a5ba86"}, + {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:0697563d1d84d6985e40ec5ec596ff41b52abb3fd91ec240e8cb44a63b895094"}, + {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6426e1fb92d006e47476d42b8f240c1d916a6d4423c5258ccc5b105e43438f61"}, + {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48cee31bc5f5a31fb2f3b573764bd563aaa5472342860edcc7039525b53e46a"}, + {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:50344663068041b34a992c19c600236e7abb42d6ec32567916b87b4c8b8833b3"}, + {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:259e11932230d70ef24a21b9fb5bb947eb4703f57865a404054400ee92f42f5d"}, + {file = "grpcio-1.63.0-cp39-cp39-win32.whl", hash = "sha256:a44624aad77bf8ca198c55af811fd28f2b3eaf0a50ec5b57b06c034416ef2d0a"}, + {file = "grpcio-1.63.0-cp39-cp39-win_amd64.whl", hash = "sha256:166e5c460e5d7d4656ff9e63b13e1f6029b122104c1633d5f37eaea348d7356d"}, + {file = "grpcio-1.63.0.tar.gz", hash = "sha256:f3023e14805c61bc439fb40ca545ac3d5740ce66120a678a3c6c2c55b70343d1"}, +] + +[package.extras] +protobuf = ["grpcio-tools (>=1.63.0)"] [[package]] name = "h5py" -version = "3.10.0" +version = "3.11.0" description = "Read and write HDF5 files from Python" optional = false python-versions = ">=3.8" files = [ - {file = "h5py-3.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b963fb772964fc1d1563c57e4e2e874022ce11f75ddc6df1a626f42bd49ab99f"}, - {file = "h5py-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:012ab448590e3c4f5a8dd0f3533255bc57f80629bf7c5054cf4c87b30085063c"}, - {file = "h5py-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:781a24263c1270a62cd67be59f293e62b76acfcc207afa6384961762bb88ea03"}, - {file = "h5py-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f42e6c30698b520f0295d70157c4e202a9e402406f50dc08f5a7bc416b24e52d"}, - {file = "h5py-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:93dd840bd675787fc0b016f7a05fc6efe37312a08849d9dd4053fd0377b1357f"}, - {file = "h5py-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2381e98af081b6df7f6db300cd88f88e740649d77736e4b53db522d8874bf2dc"}, - {file = "h5py-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:667fe23ab33d5a8a6b77970b229e14ae3bb84e4ea3382cc08567a02e1499eedd"}, - {file = "h5py-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90286b79abd085e4e65e07c1bd7ee65a0f15818ea107f44b175d2dfe1a4674b7"}, - {file = "h5py-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c013d2e79c00f28ffd0cc24e68665ea03ae9069e167087b2adb5727d2736a52"}, - {file = "h5py-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:92273ce69ae4983dadb898fd4d3bea5eb90820df953b401282ee69ad648df684"}, - {file = "h5py-3.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c97d03f87f215e7759a354460fb4b0d0f27001450b18b23e556e7856a0b21c3"}, - {file = "h5py-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86df4c2de68257b8539a18646ceccdcf2c1ce6b1768ada16c8dcfb489eafae20"}, - {file = "h5py-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba9ab36be991119a3ff32d0c7cbe5faf9b8d2375b5278b2aea64effbeba66039"}, - {file = "h5py-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2c8e4fda19eb769e9a678592e67eaec3a2f069f7570c82d2da909c077aa94339"}, - {file = "h5py-3.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:492305a074327e8d2513011fa9fffeb54ecb28a04ca4c4227d7e1e9616d35641"}, - {file = "h5py-3.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9450464b458cca2c86252b624279115dcaa7260a40d3cb1594bf2b410a2bd1a3"}, - {file = "h5py-3.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd6f6d1384a9f491732cee233b99cd4bfd6e838a8815cc86722f9d2ee64032af"}, - {file = "h5py-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3074ec45d3dc6e178c6f96834cf8108bf4a60ccb5ab044e16909580352010a97"}, - {file = "h5py-3.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:212bb997a91e6a895ce5e2f365ba764debeaef5d2dca5c6fb7098d66607adf99"}, - {file = "h5py-3.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5dfc65ac21fa2f630323c92453cadbe8d4f504726ec42f6a56cf80c2f90d6c52"}, - {file = "h5py-3.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d4682b94fd36ab217352be438abd44c8f357c5449b8995e63886b431d260f3d3"}, - {file = "h5py-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aece0e2e1ed2aab076c41802e50a0c3e5ef8816d60ece39107d68717d4559824"}, - {file = "h5py-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43a61b2c2ad65b1fabc28802d133eed34debcc2c8b420cb213d3d4ef4d3e2229"}, - {file = "h5py-3.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:ae2f0201c950059676455daf92700eeb57dcf5caaf71b9e1328e6e6593601770"}, - {file = "h5py-3.10.0.tar.gz", hash = "sha256:d93adc48ceeb33347eb24a634fb787efc7ae4644e6ea4ba733d099605045c049"}, + {file = "h5py-3.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1625fd24ad6cfc9c1ccd44a66dac2396e7ee74940776792772819fc69f3a3731"}, + {file = "h5py-3.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c072655ad1d5fe9ef462445d3e77a8166cbfa5e599045f8aa3c19b75315f10e5"}, + {file = "h5py-3.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77b19a40788e3e362b54af4dcf9e6fde59ca016db2c61360aa30b47c7b7cef00"}, + {file = "h5py-3.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:ef4e2f338fc763f50a8113890f455e1a70acd42a4d083370ceb80c463d803972"}, + {file = "h5py-3.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbd732a08187a9e2a6ecf9e8af713f1d68256ee0f7c8b652a32795670fb481ba"}, + {file = "h5py-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75bd7b3d93fbeee40860fd70cdc88df4464e06b70a5ad9ce1446f5f32eb84007"}, + {file = "h5py-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52c416f8eb0daae39dabe71415cb531f95dce2d81e1f61a74537a50c63b28ab3"}, + {file = "h5py-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:083e0329ae534a264940d6513f47f5ada617da536d8dccbafc3026aefc33c90e"}, + {file = "h5py-3.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a76cae64080210389a571c7d13c94a1a6cf8cb75153044fd1f822a962c97aeab"}, + {file = "h5py-3.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3736fe21da2b7d8a13fe8fe415f1272d2a1ccdeff4849c1421d2fb30fd533bc"}, + {file = "h5py-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa6ae84a14103e8dc19266ef4c3e5d7c00b68f21d07f2966f0ca7bdb6c2761fb"}, + {file = "h5py-3.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:21dbdc5343f53b2e25404673c4f00a3335aef25521bd5fa8c707ec3833934892"}, + {file = "h5py-3.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:754c0c2e373d13d6309f408325343b642eb0f40f1a6ad21779cfa9502209e150"}, + {file = "h5py-3.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:731839240c59ba219d4cb3bc5880d438248533366f102402cfa0621b71796b62"}, + {file = "h5py-3.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ec9df3dd2018904c4cc06331951e274f3f3fd091e6d6cc350aaa90fa9b42a76"}, + {file = "h5py-3.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:55106b04e2c83dfb73dc8732e9abad69d83a436b5b82b773481d95d17b9685e1"}, + {file = "h5py-3.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f4e025e852754ca833401777c25888acb96889ee2c27e7e629a19aee288833f0"}, + {file = "h5py-3.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c4b760082626120031d7902cd983d8c1f424cdba2809f1067511ef283629d4b"}, + {file = "h5py-3.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67462d0669f8f5459529de179f7771bd697389fcb3faab54d63bf788599a48ea"}, + {file = "h5py-3.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:d9c944d364688f827dc889cf83f1fca311caf4fa50b19f009d1f2b525edd33a3"}, + {file = "h5py-3.11.0.tar.gz", hash = "sha256:7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9"}, ] [package.dependencies] @@ -1025,13 +927,13 @@ numpy = ">=1.17.3" [[package]] name = "identify" -version = "2.5.35" +version = "2.5.36" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, - {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, + {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, + {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, ] [package.extras] @@ -1039,13 +941,13 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] @@ -1140,13 +1042,13 @@ tqdm = ">=4.66.1,<5.0.0" [[package]] name = "joblib" -version = "1.3.2" +version = "1.4.0" description = "Lightweight pipelining with Python functions" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, - {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, + {file = "joblib-1.4.0-py3-none-any.whl", hash = "sha256:42942470d4062537be4d54c83511186da1fc14ba354961a2114da91efa9a4ed7"}, + {file = "joblib-1.4.0.tar.gz", hash = "sha256:1eb0dc091919cd384490de890cb5dfd538410a6d4b3b54eef09fb8c50b409b1c"}, ] [[package]] @@ -1513,13 +1415,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.21.1" +version = "3.21.2" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.21.1-py3-none-any.whl", hash = "sha256:f085493f79efb0644f270a9bf2892843142d80d7174bbbd2f3713f2a589dc633"}, - {file = "marshmallow-3.21.1.tar.gz", hash = "sha256:4e65e9e0d80fc9e609574b9983cf32579f305c718afb30d7233ab818571768c3"}, + {file = "marshmallow-3.21.2-py3-none-any.whl", hash = "sha256:70b54a6282f4704d12c0a41599682c5c5450e843b9ec406308653b47c59648a1"}, + {file = "marshmallow-3.21.2.tar.gz", hash = "sha256:82408deadd8b33d56338d2182d455db632c6313aa2af61916672146bb32edc56"}, ] [package.dependencies] @@ -1527,7 +1429,7 @@ packaging = ">=17.0" [package.extras] dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-version-warning (==1.1.2)"] +docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.3.7)", "sphinx-issues (==4.1.0)", "sphinx-version-warning (==1.1.2)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -1669,105 +1571,40 @@ triqler = ">=0.6.2" dev = ["black (>=19.10b0)", "pre-commit (>=2.7.1)"] docs = ["ipykernel (>=5.3.0)", "nbsphinx (>=0.7.1)", "numpydoc (>=1.0.0)", "recommonmark (>=0.5.0)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.5.0)"] -[[package]] -name = "msgpack" -version = "1.0.8" -description = "MessagePack serializer" -optional = false -python-versions = ">=3.8" -files = [ - {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:505fe3d03856ac7d215dbe005414bc28505d26f0c128906037e66d98c4e95868"}, - {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6b7842518a63a9f17107eb176320960ec095a8ee3b4420b5f688e24bf50c53c"}, - {file = "msgpack-1.0.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:376081f471a2ef24828b83a641a02c575d6103a3ad7fd7dade5486cad10ea659"}, - {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e390971d082dba073c05dbd56322427d3280b7cc8b53484c9377adfbae67dc2"}, - {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e073efcba9ea99db5acef3959efa45b52bc67b61b00823d2a1a6944bf45982"}, - {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82d92c773fbc6942a7a8b520d22c11cfc8fd83bba86116bfcf962c2f5c2ecdaa"}, - {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9ee32dcb8e531adae1f1ca568822e9b3a738369b3b686d1477cbc643c4a9c128"}, - {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e3aa7e51d738e0ec0afbed661261513b38b3014754c9459508399baf14ae0c9d"}, - {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69284049d07fce531c17404fcba2bb1df472bc2dcdac642ae71a2d079d950653"}, - {file = "msgpack-1.0.8-cp310-cp310-win32.whl", hash = "sha256:13577ec9e247f8741c84d06b9ece5f654920d8365a4b636ce0e44f15e07ec693"}, - {file = "msgpack-1.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:e532dbd6ddfe13946de050d7474e3f5fb6ec774fbb1a188aaf469b08cf04189a"}, - {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9517004e21664f2b5a5fd6333b0731b9cf0817403a941b393d89a2f1dc2bd836"}, - {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d16a786905034e7e34098634b184a7d81f91d4c3d246edc6bd7aefb2fd8ea6ad"}, - {file = "msgpack-1.0.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2872993e209f7ed04d963e4b4fbae72d034844ec66bc4ca403329db2074377b"}, - {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c330eace3dd100bdb54b5653b966de7f51c26ec4a7d4e87132d9b4f738220ba"}, - {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b5c044f3eff2a6534768ccfd50425939e7a8b5cf9a7261c385de1e20dcfc85"}, - {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1876b0b653a808fcd50123b953af170c535027bf1d053b59790eebb0aeb38950"}, - {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dfe1f0f0ed5785c187144c46a292b8c34c1295c01da12e10ccddfc16def4448a"}, - {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3528807cbbb7f315bb81959d5961855e7ba52aa60a3097151cb21956fbc7502b"}, - {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e2f879ab92ce502a1e65fce390eab619774dda6a6ff719718069ac94084098ce"}, - {file = "msgpack-1.0.8-cp311-cp311-win32.whl", hash = "sha256:26ee97a8261e6e35885c2ecd2fd4a6d38252246f94a2aec23665a4e66d066305"}, - {file = "msgpack-1.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:eadb9f826c138e6cf3c49d6f8de88225a3c0ab181a9b4ba792e006e5292d150e"}, - {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:114be227f5213ef8b215c22dde19532f5da9652e56e8ce969bf0a26d7c419fee"}, - {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d661dc4785affa9d0edfdd1e59ec056a58b3dbb9f196fa43587f3ddac654ac7b"}, - {file = "msgpack-1.0.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d56fd9f1f1cdc8227d7b7918f55091349741904d9520c65f0139a9755952c9e8"}, - {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0726c282d188e204281ebd8de31724b7d749adebc086873a59efb8cf7ae27df3"}, - {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8db8e423192303ed77cff4dce3a4b88dbfaf43979d280181558af5e2c3c71afc"}, - {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99881222f4a8c2f641f25703963a5cefb076adffd959e0558dc9f803a52d6a58"}, - {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b5505774ea2a73a86ea176e8a9a4a7c8bf5d521050f0f6f8426afe798689243f"}, - {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ef254a06bcea461e65ff0373d8a0dd1ed3aa004af48839f002a0c994a6f72d04"}, - {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1dd7839443592d00e96db831eddb4111a2a81a46b028f0facd60a09ebbdd543"}, - {file = "msgpack-1.0.8-cp312-cp312-win32.whl", hash = "sha256:64d0fcd436c5683fdd7c907eeae5e2cbb5eb872fafbc03a43609d7941840995c"}, - {file = "msgpack-1.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:74398a4cf19de42e1498368c36eed45d9528f5fd0155241e82c4082b7e16cffd"}, - {file = "msgpack-1.0.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ceea77719d45c839fd73abcb190b8390412a890df2f83fb8cf49b2a4b5c2f40"}, - {file = "msgpack-1.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ab0bbcd4d1f7b6991ee7c753655b481c50084294218de69365f8f1970d4c151"}, - {file = "msgpack-1.0.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1cce488457370ffd1f953846f82323cb6b2ad2190987cd4d70b2713e17268d24"}, - {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3923a1778f7e5ef31865893fdca12a8d7dc03a44b33e2a5f3295416314c09f5d"}, - {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22e47578b30a3e199ab067a4d43d790249b3c0587d9a771921f86250c8435db"}, - {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd739c9251d01e0279ce729e37b39d49a08c0420d3fee7f2a4968c0576678f77"}, - {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3420522057ebab1728b21ad473aa950026d07cb09da41103f8e597dfbfaeb13"}, - {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5845fdf5e5d5b78a49b826fcdc0eb2e2aa7191980e3d2cfd2a30303a74f212e2"}, - {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a0e76621f6e1f908ae52860bdcb58e1ca85231a9b0545e64509c931dd34275a"}, - {file = "msgpack-1.0.8-cp38-cp38-win32.whl", hash = "sha256:374a8e88ddab84b9ada695d255679fb99c53513c0a51778796fcf0944d6c789c"}, - {file = "msgpack-1.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:f3709997b228685fe53e8c433e2df9f0cdb5f4542bd5114ed17ac3c0129b0480"}, - {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f51bab98d52739c50c56658cc303f190785f9a2cd97b823357e7aeae54c8f68a"}, - {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:73ee792784d48aa338bba28063e19a27e8d989344f34aad14ea6e1b9bd83f596"}, - {file = "msgpack-1.0.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f9904e24646570539a8950400602d66d2b2c492b9010ea7e965025cb71d0c86d"}, - {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e75753aeda0ddc4c28dce4c32ba2f6ec30b1b02f6c0b14e547841ba5b24f753f"}, - {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dbf059fb4b7c240c873c1245ee112505be27497e90f7c6591261c7d3c3a8228"}, - {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4916727e31c28be8beaf11cf117d6f6f188dcc36daae4e851fee88646f5b6b18"}, - {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7938111ed1358f536daf311be244f34df7bf3cdedb3ed883787aca97778b28d8"}, - {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:493c5c5e44b06d6c9268ce21b302c9ca055c1fd3484c25ba41d34476c76ee746"}, - {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fbb160554e319f7b22ecf530a80a3ff496d38e8e07ae763b9e82fadfe96f273"}, - {file = "msgpack-1.0.8-cp39-cp39-win32.whl", hash = "sha256:f9af38a89b6a5c04b7d18c492c8ccf2aee7048aff1ce8437c4683bb5a1df893d"}, - {file = "msgpack-1.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:ed59dd52075f8fc91da6053b12e8c89e37aa043f8986efd89e61fae69dc1b011"}, - {file = "msgpack-1.0.8.tar.gz", hash = "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3"}, -] - [[package]] name = "mypy" -version = "1.9.0" +version = "1.10.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, - {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, - {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, - {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, - {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, - {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, - {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, - {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, - {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, - {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, - {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, - {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, - {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, - {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, - {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, - {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, - {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, - {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, - {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, + {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, + {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, + {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, + {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, + {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, + {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, + {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, + {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, + {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, + {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, + {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, + {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, + {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, + {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, + {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, + {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, + {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, ] [package.dependencies] @@ -1841,48 +1678,6 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} llvmlite = "==0.41.*" numpy = ">=1.22,<1.27" -[[package]] -name = "numexpr" -version = "2.8.6" -description = "Fast numerical expression evaluator for NumPy" -optional = false -python-versions = ">=3.7" -files = [ - {file = "numexpr-2.8.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80acbfefb68bd92e708e09f0a02b29e04d388b9ae72f9fcd57988aca172a7833"}, - {file = "numexpr-2.8.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6e884687da8af5955dc9beb6a12d469675c90b8fb38b6c93668c989cfc2cd982"}, - {file = "numexpr-2.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ef7e8aaa84fce3aba2e65f243d14a9f8cc92aafd5d90d67283815febfe43eeb"}, - {file = "numexpr-2.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee04d72307c09599f786b9231acffb10df7d7a74b2ce3681d74a574880d13ce"}, - {file = "numexpr-2.8.6-cp310-cp310-win32.whl", hash = "sha256:211804ec25a9f6d188eadf4198dd1a92b2f61d7d20993c6c7706139bc4199c5b"}, - {file = "numexpr-2.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:18b1804923cfa3be7bbb45187d01c0540c8f6df4928c22a0f786e15568e9ebc5"}, - {file = "numexpr-2.8.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:95b9da613761e4fc79748535b2a1f58cada22500e22713ae7d9571fa88d1c2e2"}, - {file = "numexpr-2.8.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:47b45da5aa25600081a649f5e8b2aa640e35db3703f4631f34bb1f2f86d1b5b4"}, - {file = "numexpr-2.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84979bf14143351c2db8d9dd7fef8aca027c66ad9df9cb5e75c93bf5f7b5a338"}, - {file = "numexpr-2.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d36528a33aa9c23743b3ea686e57526a4f71e7128a1be66210e1511b09c4e4e9"}, - {file = "numexpr-2.8.6-cp311-cp311-win32.whl", hash = "sha256:681812e2e71ff1ba9145fac42d03f51ddf6ba911259aa83041323f68e7458002"}, - {file = "numexpr-2.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:27782177a0081bd0aab229be5d37674e7f0ab4264ef576697323dd047432a4cd"}, - {file = "numexpr-2.8.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ef6e8896457a60a539cb6ba27da78315a9bb31edb246829b25b5b0304bfcee91"}, - {file = "numexpr-2.8.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e640bc0eaf1b59f3dde52bc02bbfda98e62f9950202b0584deba28baf9f36bbb"}, - {file = "numexpr-2.8.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d126938c2c3784673c9c58d94e00b1570aa65517d9c33662234d442fc9fb5795"}, - {file = "numexpr-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:e93d64cd20940b726477c3cb64926e683d31b778a1e18f9079a5088fd0d8e7c8"}, - {file = "numexpr-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:31cf610c952eec57081171f0b4427f9bed2395ec70ec432bbf45d260c5c0cdeb"}, - {file = "numexpr-2.8.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5f96c89aa0b1f13685ec32fa3d71028db0b5981bfd99a0bbc271035949136b3"}, - {file = "numexpr-2.8.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c8f37f7a6af3bdd61f2efd1cafcc083a9525ab0aaf5dc641e7ec8fc0ae2d3aa1"}, - {file = "numexpr-2.8.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38b8b90967026bbc36c7aa6e8ca3b8906e1990914fd21f446e2a043f4ee3bc06"}, - {file = "numexpr-2.8.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1967c16f61c27df1cdc43ba3c0ba30346157048dd420b4259832276144d0f64e"}, - {file = "numexpr-2.8.6-cp38-cp38-win32.whl", hash = "sha256:15469dc722b5ceb92324ec8635411355ebc702303db901ae8cc87f47c5e3a124"}, - {file = "numexpr-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:95c09e814b0d6549de98b5ded7cdf7d954d934bb6b505432ff82e83a6d330bda"}, - {file = "numexpr-2.8.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0f661f5f4872fd7350cc9895f5d2594794b2a7e7f1961649a351724c64acc9"}, - {file = "numexpr-2.8.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8e3e6f1588d6c03877cb3b3dcc3096482da9d330013b886b29cb9586af5af3eb"}, - {file = "numexpr-2.8.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8564186aad5a2c88d597ebc79b8171b52fd33e9b085013e1ff2208f7e4b387e3"}, - {file = "numexpr-2.8.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6a88d71c166e86b98d34701285d23e3e89d548d9f5ae3f4b60919ac7151949f"}, - {file = "numexpr-2.8.6-cp39-cp39-win32.whl", hash = "sha256:c48221b6a85494a7be5a022899764e58259af585dff031cecab337277278cc93"}, - {file = "numexpr-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:6d7003497d82ef19458dce380b36a99343b96a3bd5773465c2d898bf8f5a38f9"}, - {file = "numexpr-2.8.6.tar.gz", hash = "sha256:6336f8dba3f456e41a4ffc3c97eb63d89c73589ff6e1707141224b930263260d"}, -] - -[package.dependencies] -numpy = ">=1.13.3" - [[package]] name = "numpy" version = "1.24.4" @@ -2030,79 +1825,80 @@ flake8 = ">=5.0.0" [[package]] name = "pillow" -version = "10.2.0" +version = "10.3.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, - {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, - {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, - {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, - {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, - {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, - {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, - {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, - {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, - {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, - {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, - {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, - {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, - {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, - {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, - {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, - {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, - {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, ] [package.extras] @@ -2115,28 +1911,29 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.2.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, + {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -2163,13 +1960,13 @@ virtualenv = ">=20.10.0" [[package]] name = "pre-commit-hooks" -version = "4.5.0" +version = "4.6.0" description = "Some out-of-the-box hooks for pre-commit." optional = false python-versions = ">=3.8" files = [ - {file = "pre_commit_hooks-4.5.0-py2.py3-none-any.whl", hash = "sha256:b779d5c44ede9b1fda48e2d96b08e9aa5b1d2fdb8903ca09f0dbaca22d529edb"}, - {file = "pre_commit_hooks-4.5.0.tar.gz", hash = "sha256:ffbe2af1c85ac9a7695866955680b4dee98822638b748a6f3debefad79748c8a"}, + {file = "pre_commit_hooks-4.6.0-py2.py3-none-any.whl", hash = "sha256:a69199e6a2d45ec59c1020a81ca1549abddc2afb798276d9a0d951752d6abbfe"}, + {file = "pre_commit_hooks-4.6.0.tar.gz", hash = "sha256:eb1f43ee67869cd41b4c59017fad4a0f9d4d61201d163f2135535aaf65035a2b"}, ] [package.dependencies] @@ -2178,33 +1975,22 @@ tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} [[package]] name = "protobuf" -version = "3.20.3" -description = "Protocol Buffers" +version = "4.25.3" +description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "protobuf-3.20.3-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99"}, - {file = "protobuf-3.20.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e"}, - {file = "protobuf-3.20.3-cp310-cp310-win32.whl", hash = "sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c"}, - {file = "protobuf-3.20.3-cp310-cp310-win_amd64.whl", hash = "sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7"}, - {file = "protobuf-3.20.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469"}, - {file = "protobuf-3.20.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4"}, - {file = "protobuf-3.20.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4"}, - {file = "protobuf-3.20.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454"}, - {file = "protobuf-3.20.3-cp37-cp37m-win32.whl", hash = "sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905"}, - {file = "protobuf-3.20.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c"}, - {file = "protobuf-3.20.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7"}, - {file = "protobuf-3.20.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee"}, - {file = "protobuf-3.20.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050"}, - {file = "protobuf-3.20.3-cp38-cp38-win32.whl", hash = "sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86"}, - {file = "protobuf-3.20.3-cp38-cp38-win_amd64.whl", hash = "sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9"}, - {file = "protobuf-3.20.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b"}, - {file = "protobuf-3.20.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b"}, - {file = "protobuf-3.20.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402"}, - {file = "protobuf-3.20.3-cp39-cp39-win32.whl", hash = "sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480"}, - {file = "protobuf-3.20.3-cp39-cp39-win_amd64.whl", hash = "sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7"}, - {file = "protobuf-3.20.3-py2.py3-none-any.whl", hash = "sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db"}, - {file = "protobuf-3.20.3.tar.gz", hash = "sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -2235,17 +2021,6 @@ files = [ [package.extras] test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] -[[package]] -name = "py-cpuinfo" -version = "9.0.0" -description = "Get CPU info with pure Python" -optional = false -python-versions = "*" -files = [ - {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, - {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, -] - [[package]] name = "pycodestyle" version = "2.9.1" @@ -2259,66 +2034,124 @@ files = [ [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pydantic" -version = "1.10.14" -description = "Data validation and settings management using python type hints" +version = "2.7.1" +description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-1.10.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7f4fcec873f90537c382840f330b90f4715eebc2bc9925f04cb92de593eae054"}, - {file = "pydantic-1.10.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e3a76f571970fcd3c43ad982daf936ae39b3e90b8a2e96c04113a369869dc87"}, - {file = "pydantic-1.10.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d886bd3c3fbeaa963692ef6b643159ccb4b4cefaf7ff1617720cbead04fd1d"}, - {file = "pydantic-1.10.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:798a3d05ee3b71967844a1164fd5bdb8c22c6d674f26274e78b9f29d81770c4e"}, - {file = "pydantic-1.10.14-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:23d47a4b57a38e8652bcab15a658fdb13c785b9ce217cc3a729504ab4e1d6bc9"}, - {file = "pydantic-1.10.14-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9f674b5c3bebc2eba401de64f29948ae1e646ba2735f884d1594c5f675d6f2a"}, - {file = "pydantic-1.10.14-cp310-cp310-win_amd64.whl", hash = "sha256:24a7679fab2e0eeedb5a8924fc4a694b3bcaac7d305aeeac72dd7d4e05ecbebf"}, - {file = "pydantic-1.10.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d578ac4bf7fdf10ce14caba6f734c178379bd35c486c6deb6f49006e1ba78a7"}, - {file = "pydantic-1.10.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa7790e94c60f809c95602a26d906eba01a0abee9cc24150e4ce2189352deb1b"}, - {file = "pydantic-1.10.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad4e10efa5474ed1a611b6d7f0d130f4aafadceb73c11d9e72823e8f508e663"}, - {file = "pydantic-1.10.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1245f4f61f467cb3dfeced2b119afef3db386aec3d24a22a1de08c65038b255f"}, - {file = "pydantic-1.10.14-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:21efacc678a11114c765eb52ec0db62edffa89e9a562a94cbf8fa10b5db5c046"}, - {file = "pydantic-1.10.14-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:412ab4a3f6dbd2bf18aefa9f79c7cca23744846b31f1d6555c2ee2b05a2e14ca"}, - {file = "pydantic-1.10.14-cp311-cp311-win_amd64.whl", hash = "sha256:e897c9f35281f7889873a3e6d6b69aa1447ceb024e8495a5f0d02ecd17742a7f"}, - {file = "pydantic-1.10.14-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d604be0f0b44d473e54fdcb12302495fe0467c56509a2f80483476f3ba92b33c"}, - {file = "pydantic-1.10.14-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a42c7d17706911199798d4c464b352e640cab4351efe69c2267823d619a937e5"}, - {file = "pydantic-1.10.14-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:596f12a1085e38dbda5cbb874d0973303e34227b400b6414782bf205cc14940c"}, - {file = "pydantic-1.10.14-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bfb113860e9288d0886e3b9e49d9cf4a9d48b441f52ded7d96db7819028514cc"}, - {file = "pydantic-1.10.14-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bc3ed06ab13660b565eed80887fcfbc0070f0aa0691fbb351657041d3e874efe"}, - {file = "pydantic-1.10.14-cp37-cp37m-win_amd64.whl", hash = "sha256:ad8c2bc677ae5f6dbd3cf92f2c7dc613507eafe8f71719727cbc0a7dec9a8c01"}, - {file = "pydantic-1.10.14-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c37c28449752bb1f47975d22ef2882d70513c546f8f37201e0fec3a97b816eee"}, - {file = "pydantic-1.10.14-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:49a46a0994dd551ec051986806122767cf144b9702e31d47f6d493c336462597"}, - {file = "pydantic-1.10.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53e3819bd20a42470d6dd0fe7fc1c121c92247bca104ce608e609b59bc7a77ee"}, - {file = "pydantic-1.10.14-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbb503bbbbab0c588ed3cd21975a1d0d4163b87e360fec17a792f7d8c4ff29f"}, - {file = "pydantic-1.10.14-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:336709883c15c050b9c55a63d6c7ff09be883dbc17805d2b063395dd9d9d0022"}, - {file = "pydantic-1.10.14-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4ae57b4d8e3312d486e2498d42aed3ece7b51848336964e43abbf9671584e67f"}, - {file = "pydantic-1.10.14-cp38-cp38-win_amd64.whl", hash = "sha256:dba49d52500c35cfec0b28aa8b3ea5c37c9df183ffc7210b10ff2a415c125c4a"}, - {file = "pydantic-1.10.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c66609e138c31cba607d8e2a7b6a5dc38979a06c900815495b2d90ce6ded35b4"}, - {file = "pydantic-1.10.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d986e115e0b39604b9eee3507987368ff8148222da213cd38c359f6f57b3b347"}, - {file = "pydantic-1.10.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:646b2b12df4295b4c3148850c85bff29ef6d0d9621a8d091e98094871a62e5c7"}, - {file = "pydantic-1.10.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282613a5969c47c83a8710cc8bfd1e70c9223feb76566f74683af889faadc0ea"}, - {file = "pydantic-1.10.14-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:466669501d08ad8eb3c4fecd991c5e793c4e0bbd62299d05111d4f827cded64f"}, - {file = "pydantic-1.10.14-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:13e86a19dca96373dcf3190fcb8797d40a6f12f154a244a8d1e8e03b8f280593"}, - {file = "pydantic-1.10.14-cp39-cp39-win_amd64.whl", hash = "sha256:08b6ec0917c30861e3fe71a93be1648a2aa4f62f866142ba21670b24444d7fd8"}, - {file = "pydantic-1.10.14-py3-none-any.whl", hash = "sha256:8ee853cd12ac2ddbf0ecbac1c289f95882b2d4482258048079d13be700aa114c"}, - {file = "pydantic-1.10.14.tar.gz", hash = "sha256:46f17b832fe27de7850896f3afee50ea682220dd218f7e9c88d436788419dca6"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" + {file = "pydantic-2.7.1-py3-none-any.whl", hash = "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5"}, + {file = "pydantic-2.7.1.tar.gz", hash = "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"}, +] + +[package.dependencies] +annotated-types = ">=0.4.0" +pydantic-core = "2.18.2" +typing-extensions = ">=4.6.1" [package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic-core" +version = "2.18.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.18.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81"}, + {file = "pydantic_core-2.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af"}, + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857"}, + {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563"}, + {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38"}, + {file = "pydantic_core-2.18.2-cp310-none-win32.whl", hash = "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027"}, + {file = "pydantic_core-2.18.2-cp310-none-win_amd64.whl", hash = "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543"}, + {file = "pydantic_core-2.18.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3"}, + {file = "pydantic_core-2.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6"}, + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c"}, + {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0"}, + {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664"}, + {file = "pydantic_core-2.18.2-cp311-none-win32.whl", hash = "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e"}, + {file = "pydantic_core-2.18.2-cp311-none-win_amd64.whl", hash = "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3"}, + {file = "pydantic_core-2.18.2-cp311-none-win_arm64.whl", hash = "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d"}, + {file = "pydantic_core-2.18.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242"}, + {file = "pydantic_core-2.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72"}, + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c"}, + {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241"}, + {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3"}, + {file = "pydantic_core-2.18.2-cp312-none-win32.whl", hash = "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038"}, + {file = "pydantic_core-2.18.2-cp312-none-win_amd64.whl", hash = "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438"}, + {file = "pydantic_core-2.18.2-cp312-none-win_arm64.whl", hash = "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec"}, + {file = "pydantic_core-2.18.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439"}, + {file = "pydantic_core-2.18.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70"}, + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b"}, + {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761"}, + {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788"}, + {file = "pydantic_core-2.18.2-cp38-none-win32.whl", hash = "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350"}, + {file = "pydantic_core-2.18.2-cp38-none-win_amd64.whl", hash = "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e"}, + {file = "pydantic_core-2.18.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8"}, + {file = "pydantic_core-2.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0"}, + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4"}, + {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399"}, + {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b"}, + {file = "pydantic_core-2.18.2-cp39-none-win32.whl", hash = "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e"}, + {file = "pydantic_core-2.18.2-cp39-none-win_amd64.whl", hash = "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b"}, + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae"}, + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374"}, + {file = "pydantic_core-2.18.2.tar.gz", hash = "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydocstyle" @@ -2365,13 +2198,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymzml" -version = "2.5.6" +version = "2.5.9" description = "high-throughput mzML parsing" optional = false python-versions = ">=3.7.0" files = [ - {file = "pymzml-2.5.6-py3-none-any.whl", hash = "sha256:d04f87702849e0f8837a688a628731f79581a27740f8693dce2d432e89b785a0"}, - {file = "pymzml-2.5.6.tar.gz", hash = "sha256:9aae2c137163b32131098854e72ccb72d31272a58a85c5c771e092df399aa0db"}, + {file = "pymzml-2.5.9-py3-none-any.whl", hash = "sha256:16e7934d96eaedfef0178e08cd79b68307303ac161806db53f67193d632c4dd6"}, + {file = "pymzml-2.5.9.tar.gz", hash = "sha256:eaf63b760f3ef0d2a0476c5a8f70bbeebb289195dbc13b5d55cf6afa44c2876d"}, ] [package.dependencies] @@ -2400,13 +2233,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyteomics" -version = "4.7.1" +version = "4.7.2" description = "A framework for proteomics data analysis." optional = false python-versions = "*" files = [ - {file = "pyteomics-4.7.1-py2.py3-none-any.whl", hash = "sha256:5515892c043ec212f7d7213ef3337cd1e26ae8698ddda6ae43ce7f86d149c364"}, - {file = "pyteomics-4.7.1.tar.gz", hash = "sha256:e5e5d3204af3050b9bf95bb64941b6156331335216e125ac253e7c8dfb1cf0ab"}, + {file = "pyteomics-4.7.2-py2.py3-none-any.whl", hash = "sha256:fa3b47a35af632002235824e2cfc87f9c4a049598760dfa790113970c0bf01c7"}, + {file = "pyteomics-4.7.2.tar.gz", hash = "sha256:9c2cc22f0e45574c62a8e8628a8412d7b5688ccdd679b2f6ddc6fbbee2abb26d"}, ] [package.extras] @@ -2422,13 +2255,13 @@ xml = ["lxml", "numpy"] [[package]] name = "pytest" -version = "8.1.1" +version = "8.2.0" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, - {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, + {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, + {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, ] [package.dependencies] @@ -2436,11 +2269,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.4,<2.0" +pluggy = ">=1.5,<2.0" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "python-dateutil" @@ -2746,104 +2579,90 @@ files = [ [[package]] name = "regex" -version = "2023.12.25" +version = "2024.4.28" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, - {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, - {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, - {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, - {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, - {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, - {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, - {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, - {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, - {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, - {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, - {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, - {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, - {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, - {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, + {file = "regex-2024.4.28-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd196d056b40af073d95a2879678585f0b74ad35190fac04ca67954c582c6b61"}, + {file = "regex-2024.4.28-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8bb381f777351bd534462f63e1c6afb10a7caa9fa2a421ae22c26e796fe31b1f"}, + {file = "regex-2024.4.28-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:47af45b6153522733aa6e92543938e97a70ce0900649ba626cf5aad290b737b6"}, + {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d6a550425cc51c656331af0e2b1651e90eaaa23fb4acde577cf15068e2e20f"}, + {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf29304a8011feb58913c382902fde3395957a47645bf848eea695839aa101b7"}, + {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:92da587eee39a52c91aebea8b850e4e4f095fe5928d415cb7ed656b3460ae79a"}, + {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6277d426e2f31bdbacb377d17a7475e32b2d7d1f02faaecc48d8e370c6a3ff31"}, + {file = "regex-2024.4.28-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28e1f28d07220c0f3da0e8fcd5a115bbb53f8b55cecf9bec0c946eb9a059a94c"}, + {file = "regex-2024.4.28-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aaa179975a64790c1f2701ac562b5eeb733946eeb036b5bcca05c8d928a62f10"}, + {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6f435946b7bf7a1b438b4e6b149b947c837cb23c704e780c19ba3e6855dbbdd3"}, + {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:19d6c11bf35a6ad077eb23852827f91c804eeb71ecb85db4ee1386825b9dc4db"}, + {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:fdae0120cddc839eb8e3c15faa8ad541cc6d906d3eb24d82fb041cfe2807bc1e"}, + {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e672cf9caaf669053121f1766d659a8813bd547edef6e009205378faf45c67b8"}, + {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f57515750d07e14743db55d59759893fdb21d2668f39e549a7d6cad5d70f9fea"}, + {file = "regex-2024.4.28-cp310-cp310-win32.whl", hash = "sha256:a1409c4eccb6981c7baabc8888d3550df518add6e06fe74fa1d9312c1838652d"}, + {file = "regex-2024.4.28-cp310-cp310-win_amd64.whl", hash = "sha256:1f687a28640f763f23f8a9801fe9e1b37338bb1ca5d564ddd41619458f1f22d1"}, + {file = "regex-2024.4.28-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:84077821c85f222362b72fdc44f7a3a13587a013a45cf14534df1cbbdc9a6796"}, + {file = "regex-2024.4.28-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b45d4503de8f4f3dc02f1d28a9b039e5504a02cc18906cfe744c11def942e9eb"}, + {file = "regex-2024.4.28-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:457c2cd5a646dd4ed536c92b535d73548fb8e216ebee602aa9f48e068fc393f3"}, + {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b51739ddfd013c6f657b55a508de8b9ea78b56d22b236052c3a85a675102dc6"}, + {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:459226445c7d7454981c4c0ce0ad1a72e1e751c3e417f305722bbcee6697e06a"}, + {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:670fa596984b08a4a769491cbdf22350431970d0112e03d7e4eeaecaafcd0fec"}, + {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe00f4fe11c8a521b173e6324d862ee7ee3412bf7107570c9b564fe1119b56fb"}, + {file = "regex-2024.4.28-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36f392dc7763fe7924575475736bddf9ab9f7a66b920932d0ea50c2ded2f5636"}, + {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:23a412b7b1a7063f81a742463f38821097b6a37ce1e5b89dd8e871d14dbfd86b"}, + {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f1d6e4b7b2ae3a6a9df53efbf199e4bfcff0959dbdb5fd9ced34d4407348e39a"}, + {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:499334ad139557de97cbc4347ee921c0e2b5e9c0f009859e74f3f77918339257"}, + {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:0940038bec2fe9e26b203d636c44d31dd8766abc1fe66262da6484bd82461ccf"}, + {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:66372c2a01782c5fe8e04bff4a2a0121a9897e19223d9eab30c54c50b2ebeb7f"}, + {file = "regex-2024.4.28-cp311-cp311-win32.whl", hash = "sha256:c77d10ec3c1cf328b2f501ca32583625987ea0f23a0c2a49b37a39ee5c4c4630"}, + {file = "regex-2024.4.28-cp311-cp311-win_amd64.whl", hash = "sha256:fc0916c4295c64d6890a46e02d4482bb5ccf33bf1a824c0eaa9e83b148291f90"}, + {file = "regex-2024.4.28-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:08a1749f04fee2811c7617fdd46d2e46d09106fa8f475c884b65c01326eb15c5"}, + {file = "regex-2024.4.28-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b8eb28995771c087a73338f695a08c9abfdf723d185e57b97f6175c5051ff1ae"}, + {file = "regex-2024.4.28-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dd7ef715ccb8040954d44cfeff17e6b8e9f79c8019daae2fd30a8806ef5435c0"}, + {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb0315a2b26fde4005a7c401707c5352df274460f2f85b209cf6024271373013"}, + {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2fc053228a6bd3a17a9b0a3f15c3ab3cf95727b00557e92e1cfe094b88cc662"}, + {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fe9739a686dc44733d52d6e4f7b9c77b285e49edf8570754b322bca6b85b4cc"}, + {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74fcf77d979364f9b69fcf8200849ca29a374973dc193a7317698aa37d8b01c"}, + {file = "regex-2024.4.28-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:965fd0cf4694d76f6564896b422724ec7b959ef927a7cb187fc6b3f4e4f59833"}, + {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2fef0b38c34ae675fcbb1b5db760d40c3fc3612cfa186e9e50df5782cac02bcd"}, + {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bc365ce25f6c7c5ed70e4bc674f9137f52b7dd6a125037f9132a7be52b8a252f"}, + {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ac69b394764bb857429b031d29d9604842bc4cbfd964d764b1af1868eeebc4f0"}, + {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:144a1fc54765f5c5c36d6d4b073299832aa1ec6a746a6452c3ee7b46b3d3b11d"}, + {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2630ca4e152c221072fd4a56d4622b5ada876f668ecd24d5ab62544ae6793ed6"}, + {file = "regex-2024.4.28-cp312-cp312-win32.whl", hash = "sha256:7f3502f03b4da52bbe8ba962621daa846f38489cae5c4a7b5d738f15f6443d17"}, + {file = "regex-2024.4.28-cp312-cp312-win_amd64.whl", hash = "sha256:0dd3f69098511e71880fb00f5815db9ed0ef62c05775395968299cb400aeab82"}, + {file = "regex-2024.4.28-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:374f690e1dd0dbdcddea4a5c9bdd97632cf656c69113f7cd6a361f2a67221cb6"}, + {file = "regex-2024.4.28-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f87ae6b96374db20f180eab083aafe419b194e96e4f282c40191e71980c666"}, + {file = "regex-2024.4.28-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5dbc1bcc7413eebe5f18196e22804a3be1bfdfc7e2afd415e12c068624d48247"}, + {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f85151ec5a232335f1be022b09fbbe459042ea1951d8a48fef251223fc67eee1"}, + {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:57ba112e5530530fd175ed550373eb263db4ca98b5f00694d73b18b9a02e7185"}, + {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:224803b74aab56aa7be313f92a8d9911dcade37e5f167db62a738d0c85fdac4b"}, + {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a54a047b607fd2d2d52a05e6ad294602f1e0dec2291152b745870afc47c1397"}, + {file = "regex-2024.4.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a2a512d623f1f2d01d881513af9fc6a7c46e5cfffb7dc50c38ce959f9246c94"}, + {file = "regex-2024.4.28-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c06bf3f38f0707592898428636cbb75d0a846651b053a1cf748763e3063a6925"}, + {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1031a5e7b048ee371ab3653aad3030ecfad6ee9ecdc85f0242c57751a05b0ac4"}, + {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d7a353ebfa7154c871a35caca7bfd8f9e18666829a1dc187115b80e35a29393e"}, + {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7e76b9cfbf5ced1aca15a0e5b6f229344d9b3123439ffce552b11faab0114a02"}, + {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5ce479ecc068bc2a74cb98dd8dba99e070d1b2f4a8371a7dfe631f85db70fe6e"}, + {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d77b6f63f806578c604dca209280e4c54f0fa9a8128bb8d2cc5fb6f99da4150"}, + {file = "regex-2024.4.28-cp38-cp38-win32.whl", hash = "sha256:d84308f097d7a513359757c69707ad339da799e53b7393819ec2ea36bc4beb58"}, + {file = "regex-2024.4.28-cp38-cp38-win_amd64.whl", hash = "sha256:2cc1b87bba1dd1a898e664a31012725e48af826bf3971e786c53e32e02adae6c"}, + {file = "regex-2024.4.28-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7413167c507a768eafb5424413c5b2f515c606be5bb4ef8c5dee43925aa5718b"}, + {file = "regex-2024.4.28-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:108e2dcf0b53a7c4ab8986842a8edcb8ab2e59919a74ff51c296772e8e74d0ae"}, + {file = "regex-2024.4.28-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f1c5742c31ba7d72f2dedf7968998730664b45e38827637e0f04a2ac7de2f5f1"}, + {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecc6148228c9ae25ce403eade13a0961de1cb016bdb35c6eafd8e7b87ad028b1"}, + {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7d893c8cf0e2429b823ef1a1d360a25950ed11f0e2a9df2b5198821832e1947"}, + {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4290035b169578ffbbfa50d904d26bec16a94526071ebec3dadbebf67a26b25e"}, + {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44a22ae1cfd82e4ffa2066eb3390777dc79468f866f0625261a93e44cdf6482b"}, + {file = "regex-2024.4.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd24fd140b69f0b0bcc9165c397e9b2e89ecbeda83303abf2a072609f60239e2"}, + {file = "regex-2024.4.28-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:39fb166d2196413bead229cd64a2ffd6ec78ebab83fff7d2701103cf9f4dfd26"}, + {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9301cc6db4d83d2c0719f7fcda37229691745168bf6ae849bea2e85fc769175d"}, + {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c3d389e8d76a49923683123730c33e9553063d9041658f23897f0b396b2386f"}, + {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:99ef6289b62042500d581170d06e17f5353b111a15aa6b25b05b91c6886df8fc"}, + {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b91d529b47798c016d4b4c1d06cc826ac40d196da54f0de3c519f5a297c5076a"}, + {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:43548ad74ea50456e1c68d3c67fff3de64c6edb85bcd511d1136f9b5376fc9d1"}, + {file = "regex-2024.4.28-cp39-cp39-win32.whl", hash = "sha256:05d9b6578a22db7dedb4df81451f360395828b04f4513980b6bd7a1412c679cc"}, + {file = "regex-2024.4.28-cp39-cp39-win_amd64.whl", hash = "sha256:3986217ec830c2109875be740531feb8ddafe0dfa49767cdcd072ed7e8927962"}, + {file = "regex-2024.4.28.tar.gz", hash = "sha256:83ab366777ea45d58f72593adf35d36ca911ea8bd838483c1823b883a121b0e4"}, ] [[package]] @@ -2978,13 +2797,13 @@ files = [ [[package]] name = "safety" -version = "3.0.1" +version = "3.2.0" description = "Checks installed dependencies for known vulnerabilities and licenses." optional = false python-versions = ">=3.7" files = [ - {file = "safety-3.0.1-py3-none-any.whl", hash = "sha256:1ed058bc4bef132b974e58d7fcad020fb897cd255328016f8a5a194b94ca91d2"}, - {file = "safety-3.0.1.tar.gz", hash = "sha256:1f2000f03652f3a0bfc67f8fd1e98bc5723ccb76e15cb1bdd68545c3d803df01"}, + {file = "safety-3.2.0-py3-none-any.whl", hash = "sha256:a432fc9d17e79a4386c4f093656b617c56f839cde022649cfa796d72c7a544de"}, + {file = "safety-3.2.0.tar.gz", hash = "sha256:8bd5cab5f3d8a61ce0ea6e98f267c1006d056097c45c644fee7afeff7d5949c1"}, ] [package.dependencies] @@ -2994,11 +2813,11 @@ dparse = ">=0.6.4b0" jinja2 = ">=3.1.0" marshmallow = ">=3.15.0" packaging = ">=21.0" -pydantic = ">=1.10.12,<2.0" +pydantic = ">=1.10.12" requests = "*" rich = "*" "ruamel.yaml" = ">=0.17.21" -safety-schemas = ">=0.0.1" +safety-schemas = ">=0.0.2" setuptools = ">=65.5.1" typer = "*" typing-extensions = ">=4.7.1" @@ -3135,20 +2954,31 @@ stats = ["scipy (>=1.3)", "statsmodels (>=0.10)"] [[package]] name = "setuptools" -version = "69.2.0" +version = "69.5.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +[[package]] +name = "shellingham" +version = "1.5.4" +description = "Tool to Detect Surrounding Shell" +optional = false +python-versions = ">=3.7" +files = [ + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, +] + [[package]] name = "six" version = "1.16.0" @@ -3184,13 +3014,13 @@ files = [ [[package]] name = "spectrum-fundamentals" -version = "0.5.0" +version = "0.5.2" description = "Fundamental functions, annotation pipeline and constants for oktoberfest" optional = false -python-versions = ">=3.8.0,<3.11.0" +python-versions = "<3.11.0,>=3.8.0" files = [ - {file = "spectrum_fundamentals-0.5.0-py3-none-any.whl", hash = "sha256:85579f57c5f3d28e973943e991965d364b9697c7f7f6be4cadb0083bfa7ac46d"}, - {file = "spectrum_fundamentals-0.5.0.tar.gz", hash = "sha256:464db7a2f1d7046d9e4669b891d9bc5f055e79a55fc92e9fe73074a2a4211ab4"}, + {file = "spectrum_fundamentals-0.5.2-py3-none-any.whl", hash = "sha256:358235daa5ff48aa99437be238fa3da97b04cdd11e9feacedc3264f41661089e"}, + {file = "spectrum_fundamentals-0.5.2.tar.gz", hash = "sha256:99fcde6f8e01f8647413eff0b9da64a0b6ea87a9a69a9ee96c1f2ffb76ec637f"}, ] [package.dependencies] @@ -3205,13 +3035,13 @@ scikit-learn = ">=1.0,<2.0" [[package]] name = "spectrum-io" -version = "0.4.2" +version = "0.4.3" description = "IO related functionalities for oktoberfest." optional = false -python-versions = ">=3.8.0,<3.11.0" +python-versions = "<3.11.0,>=3.8.0" files = [ - {file = "spectrum_io-0.4.2-py3-none-any.whl", hash = "sha256:7b125bb93b896847a803bbe575e3fe9f20c8263f2f8a8e8a66eea92f55c45cc3"}, - {file = "spectrum_io-0.4.2.tar.gz", hash = "sha256:e596f61a13837e35629d2f7e3ef9a1bb807ce235b46dc2af02f39c8bc8f8d64f"}, + {file = "spectrum_io-0.4.3-py3-none-any.whl", hash = "sha256:762d87f93591b69b24236793cfbe6a4b62e92be52136e628d5b0aaa3ecdda3b8"}, + {file = "spectrum_io-0.4.3.tar.gz", hash = "sha256:f1c2ef1e9fd2d3c00247c2dcb2314112ecd3aa0e78af43fc48c39e06969774ae"}, ] [package.dependencies] @@ -3226,8 +3056,7 @@ pyteomics = ">=4.3.3,<5.0.0" PyYAML = ">=5.4.1" rich = ">=10.3.0" sortedcontainers = ">=2.4.0,<3.0.0" -spectrum-fundamentals = ">=0.5.0,<0.6.0" -tables = ">=3.6.1,<4.0.0" +spectrum-fundamentals = ">=0.5.2,<0.6.0" [[package]] name = "sphinx" @@ -3454,52 +3283,15 @@ files = [ [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" -[[package]] -name = "tables" -version = "3.8.0" -description = "Hierarchical datasets for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tables-3.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:01e82e40f9845f71de137b4472210909e35c440bbcd0858bdd2871715daef4c7"}, - {file = "tables-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db185d855afd45a7259ddd0b53e5f2f8993bb134b370002c6c19532f27ce92ac"}, - {file = "tables-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70a3585a268beee6d0e71bfc9abec98da84d168182f350a2ffa1ae5e42798c18"}, - {file = "tables-3.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:117cf0f73ee2a5cba5c2b04e4aca375779aec66045aa63128e043dc608f2023b"}, - {file = "tables-3.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2861cd3ef9eb95eead7530e4de49fd130954871e7e6d2e288012797cb9d7c2e8"}, - {file = "tables-3.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e9bdbfbe025b6c751976382123c5f5cbd8fab6956aed776b0e8c889669e90d3"}, - {file = "tables-3.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0821007048f2af8c1a21eb3d832072046c5df366e39587a7c7e4afad14e73fc"}, - {file = "tables-3.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:b9370c2a4dc0051aad6b71de4f1f9b0b8b60d30b662df5c742434f2b5c6a005e"}, - {file = "tables-3.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e19686fad4e8f5a91c3dc1eb4b7ea928838e86fefa474c63c5787a125ea79fc7"}, - {file = "tables-3.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:239f15fa9881c257b5c0d9fb4cb8832778af1c5c8c1db6f6722466f8f26541e2"}, - {file = "tables-3.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83a74cac3c0629a0e83570d465f88843ef3609ef56a8ef9a49ee85ab3b8f02f"}, - {file = "tables-3.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:a5ccb80651c5fad6ac744e2a756b28cfac78eab3b8503f4a2320ee6653b3bee9"}, - {file = "tables-3.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3375bfafc6cf305d13617a572ab3fffc51fae2fbe0f6efce9407a41f79970b62"}, - {file = "tables-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:254a4d5c2009c7ebe4293b02b8d91ea60837bff85a3c0a40cd075b8f12b1e6c3"}, - {file = "tables-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da3c96456c473fb977cf6dbca9e889710ac020df1fa5b9ebb7f676e83996337d"}, - {file = "tables-3.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:72da9404094ef8277bf62fce8873e8dc141cee9a8763ec8e7080b2d0de206094"}, - {file = "tables-3.8.0.tar.gz", hash = "sha256:34f3fa2366ce20b18f1df573a77c1d27306ce1f2a41d9f9eff621b5192ea8788"}, -] - -[package.dependencies] -blosc2 = ">=2.0.0,<2.1.0" -cython = ">=0.29.21" -numexpr = ">=2.6.2" -numpy = ">=1.19.0" -packaging = "*" -py-cpuinfo = "*" - -[package.extras] -doc = ["ipython", "numpydoc", "sphinx (>=1.1)", "sphinx-rtd-theme"] - [[package]] name = "threadpoolctl" -version = "3.4.0" +version = "3.5.0" description = "threadpoolctl" optional = false python-versions = ">=3.8" files = [ - {file = "threadpoolctl-3.4.0-py3-none-any.whl", hash = "sha256:8f4c689a65b23e5ed825c8436a92b818aac005e0f3715f6a1664d7c7ee29d262"}, - {file = "threadpoolctl-3.4.0.tar.gz", hash = "sha256:f11b491a03661d6dd7ef692dd422ab34185d982466c49c8f98c8f716b5c93196"}, + {file = "threadpoolctl-3.5.0-py3-none-any.whl", hash = "sha256:56c1e26c150397e58c4926da8eeee87533b1e32bef131bd4bf6a2f45f3185467"}, + {file = "threadpoolctl-3.5.0.tar.gz", hash = "sha256:082433502dd922bf738de0d8bcc4fdcbf0979ff44c42bd40f5af8a282f6fa107"}, ] [[package]] @@ -3628,25 +3420,21 @@ test = ["coverage[toml] (>=7)", "mypy (>=1.2.0)", "pytest (>=7)"] [[package]] name = "typer" -version = "0.10.0" +version = "0.12.3" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "typer-0.10.0-py3-none-any.whl", hash = "sha256:b8a587aa06d3c5422c09c2e9935eb80b4c9de8605fd5ab702b2f92d72246ca48"}, - {file = "typer-0.10.0.tar.gz", hash = "sha256:597f974754520b091665f993f88abdd088bb81c56b3042225434ced0b50a788b"}, + {file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"}, + {file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"}, ] [package.dependencies] -click = ">=7.1.1,<9.0.0" +click = ">=8.0.0" +rich = ">=10.11.0" +shellingham = ">=1.3.0" typing-extensions = ">=3.7.4.3" -[package.extras] -all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] -dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] -doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] -test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.971)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] - [[package]] name = "types-attrs" version = "19.1.0" @@ -3670,13 +3458,13 @@ files = [ [[package]] name = "types-requests" -version = "2.31.0.20240311" +version = "2.31.0.20240406" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240311.tar.gz", hash = "sha256:b1c1b66abfb7fa79aae09097a811c4aa97130eb8831c60e47aee4ca344731ca5"}, - {file = "types_requests-2.31.0.20240311-py3-none-any.whl", hash = "sha256:47872893d65a38e282ee9f277a4ee50d1b28bd592040df7d1fdaffdf3779937d"}, + {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, + {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, ] [package.dependencies] @@ -3684,13 +3472,13 @@ urllib3 = ">=2" [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.11.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, ] [[package]] @@ -3712,13 +3500,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.26.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.26.1-py3-none-any.whl", hash = "sha256:7aa9982a728ae5892558bff6a2839c00b9ed145523ece2274fad6f414690ae75"}, + {file = "virtualenv-20.26.1.tar.gz", hash = "sha256:604bfdceaeece392802e6ae48e69cec49168b9c5f4a44e483963f9242eb0e78b"}, ] [package.dependencies] @@ -3727,7 +3515,7 @@ filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] @@ -3775,4 +3563,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<3.11.0" -content-hash = "cc94301e8ec4d4bc21bab7b15e636dd78b962b164c915189082c6655f506ae38" +content-hash = "8352e48e9785da65157eefdd085490f5c985c7f4acb88a0c7fde0f6bbbbfb70b" diff --git a/requirements.txt b/requirements.txt index c790f075..fbed5be7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,15 @@ +Updating dependencies +Resolving dependencies... + +Writing lock file alabaster==0.7.13 ; python_version >= "3.8" and python_full_version < "3.11.0" alphatims==1.0.8 ; python_version >= "3.8" and python_full_version < "3.11.0" +annotated-types==0.6.0 ; python_version >= "3.8" and python_full_version < "3.11.0" attrs==23.2.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" authlib==1.3.0 ; python_version >= "3.8" and python_full_version < "3.11.0" babel==2.14.0 ; python_version >= "3.8" and python_full_version < "3.11.0" bandit==1.7.8 ; python_version >= "3.8" and python_full_version < "3.11.0" -black==24.3.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -blosc2==2.0.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +black==24.4.2 ; python_version >= "3.8" and python_full_version < "3.11.0" certifi==2024.2.2 ; python_version >= "3.8" and python_full_version < "3.11.0" cffi==1.16.0 ; python_version >= "3.8" and python_full_version < "3.11.0" and platform_python_implementation != "PyPy" cfgv==3.4.0 ; python_version >= "3.8" and python_full_version < "3.11.0" @@ -13,52 +17,49 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_full_version < "3 click==8.1.7 ; python_version >= "3.8" and python_full_version < "3.11.0" colorama==0.4.6 ; python_version >= "3.8" and python_full_version < "3.11.0" contourpy==1.1.1 ; python_version >= "3.8" and python_full_version < "3.11.0" -coverage[toml]==7.4.4 ; python_version >= "3.8" and python_full_version < "3.11.0" +coverage[toml]==7.5.0 ; python_version >= "3.8" and python_full_version < "3.11.0" cryptography==42.0.5 ; python_version >= "3.8" and python_full_version < "3.11.0" cycler==0.12.1 ; python_version >= "3.8" and python_full_version < "3.11.0" -cython==3.0.9 ; python_version >= "3.8" and python_full_version < "3.11.0" darglint==1.8.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" distlib==0.3.8 ; python_version >= "3.8" and python_full_version < "3.11.0" docutils==0.20.1 ; python_version >= "3.8" and python_full_version < "3.11.0" dparse==0.6.4b0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" et-xmlfile==1.1.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" -filelock==3.13.1 ; python_version >= "3.8" and python_full_version < "3.11.0" +exceptiongroup==1.2.1 ; python_version >= "3.8" and python_version < "3.11" +filelock==3.14.0 ; python_version >= "3.8" and python_full_version < "3.11.0" flake8-bandit==4.1.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" flake8-bugbear==23.3.12 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" flake8-docstrings==1.7.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" flake8-rst-docstrings==0.3.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" flake8==5.0.4 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -fonttools==4.50.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -grpcio==1.62.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -h5py==3.10.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -identify==2.5.35 ; python_version >= "3.8" and python_full_version < "3.11.0" -idna==3.6 ; python_version >= "3.8" and python_full_version < "3.11.0" +fonttools==4.51.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +grpcio==1.63.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +h5py==3.11.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +identify==2.5.36 ; python_version >= "3.8" and python_full_version < "3.11.0" +idna==3.7 ; python_version >= "3.8" and python_full_version < "3.11.0" imagesize==1.4.1 ; python_version >= "3.8" and python_full_version < "3.11.0" importlib-metadata==7.1.0 ; python_version >= "3.8" and python_full_version < "3.11.0" importlib-resources==6.4.0 ; python_version >= "3.8" and python_version < "3.10" iniconfig==2.0.0 ; python_version >= "3.8" and python_full_version < "3.11.0" jinja2==3.1.3 ; python_version >= "3.8" and python_full_version < "3.11.0" job-pool==0.2.6 ; python_version >= "3.8" and python_full_version < "3.11.0" -joblib==1.3.2 ; python_version >= "3.8" and python_full_version < "3.11.0" +joblib==1.4.0 ; python_version >= "3.8" and python_full_version < "3.11.0" kiwisolver==1.4.5 ; python_version >= "3.8" and python_full_version < "3.11.0" livereload==2.6.3 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" llvmlite==0.41.1 ; python_version >= "3.8" and python_full_version < "3.11.0" lxml==4.9.4 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" markdown-it-py==3.0.0 ; python_version >= "3.8" and python_full_version < "3.11.0" markupsafe==2.1.5 ; python_version >= "3.8" and python_full_version < "3.11.0" -marshmallow==3.21.1 ; python_version >= "3.8" and python_full_version < "3.11.0" +marshmallow==3.21.2 ; python_version >= "3.8" and python_full_version < "3.11.0" matplotlib==3.7.5 ; python_version >= "3.8" and python_full_version < "3.11.0" mccabe==0.7.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" mdurl==0.1.2 ; python_version >= "3.8" and python_full_version < "3.11.0" moepy==1.1.4 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" mokapot==0.9.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -msgpack==1.0.8 ; python_version >= "3.8" and python_full_version < "3.11.0" mypy-extensions==1.0.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -mypy==1.9.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +mypy==1.10.0 ; python_version >= "3.8" and python_full_version < "3.11.0" nodeenv==1.8.0 ; python_version >= "3.8" and python_full_version < "3.11.0" numba==0.58.1 ; python_version >= "3.8" and python_full_version < "3.11.0" -numexpr==2.8.6 ; python_version >= "3.8" and python_full_version < "3.11.0" numpy==1.24.4 ; python_version >= "3.8" and python_full_version < "3.11.0" openpyxl==3.1.2 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" packaging==24.0 ; python_version >= "3.8" and python_full_version < "3.11.0" @@ -66,47 +67,48 @@ pandas==1.5.3 ; python_version >= "3.8" and python_full_version < "3.11.0" pathspec==0.12.1 ; python_version >= "3.8" and python_full_version < "3.11.0" pbr==6.0.0 ; python_version >= "3.8" and python_full_version < "3.11.0" pep8-naming==0.13.3 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -pillow==10.2.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -platformdirs==4.2.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -pluggy==1.4.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -pre-commit-hooks==4.5.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +pillow==10.3.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +platformdirs==4.2.1 ; python_version >= "3.8" and python_full_version < "3.11.0" +pluggy==1.5.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +pre-commit-hooks==4.6.0 ; python_version >= "3.8" and python_full_version < "3.11.0" pre-commit==3.5.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -protobuf==3.20.3 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +protobuf==4.25.3 ; python_version >= "3.8" and python_full_version < "3.11.0" psutil==5.9.8 ; python_version >= "3.8" and python_full_version < "3.11.0" -py-cpuinfo==9.0.0 ; python_version >= "3.8" and python_full_version < "3.11.0" pycodestyle==2.9.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -pycparser==2.21 ; python_version >= "3.8" and python_full_version < "3.11.0" and platform_python_implementation != "PyPy" -pydantic==1.10.14 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +pycparser==2.22 ; python_version >= "3.8" and python_full_version < "3.11.0" and platform_python_implementation != "PyPy" +pydantic-core==2.18.2 ; python_version >= "3.8" and python_full_version < "3.11.0" +pydantic==2.7.1 ; python_version >= "3.8" and python_full_version < "3.11.0" pydocstyle==6.3.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" pyflakes==2.5.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" pygments==2.17.2 ; python_version >= "3.8" and python_full_version < "3.11.0" -pymzml==2.5.6 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +pymzml==2.5.9 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" pyparsing==3.1.2 ; python_version >= "3.8" and python_full_version < "3.11.0" -pyteomics==4.7.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -pytest==8.1.1 ; python_version >= "3.8" and python_full_version < "3.11.0" +pyteomics==4.7.2 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +pytest==8.2.0 ; python_version >= "3.8" and python_full_version < "3.11.0" python-dateutil==2.9.0.post0 ; python_version >= "3.8" and python_full_version < "3.11.0" python-rapidjson==1.16 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" pytz==2024.1 ; python_version >= "3.8" and python_full_version < "3.11.0" pyupgrade==3.8.0 ; python_version >= "3.8" and python_full_version < "3.11.0" pyyaml==6.0.1 ; python_version >= "3.8" and python_full_version < "3.11.0" pyzstd==0.15.10 ; python_version >= "3.8" and python_full_version < "3.11.0" -regex==2023.12.25 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +regex==2024.4.28 ; python_version >= "3.8" and python_full_version < "3.11.0" requests==2.31.0 ; python_version >= "3.8" and python_full_version < "3.11.0" restructuredtext-lint==1.4.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" rich==13.7.1 ; python_version >= "3.8" and python_full_version < "3.11.0" ruamel-yaml-clib==0.2.8 ; platform_python_implementation == "CPython" and python_full_version < "3.11.0" and python_version >= "3.8" ruamel-yaml==0.18.6 ; python_version >= "3.8" and python_full_version < "3.11.0" safety-schemas==0.0.2 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -safety==3.0.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +safety==3.2.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" scikit-learn==1.3.2 ; python_version >= "3.8" and python_full_version < "3.11.0" scipy==1.10.1 ; python_version >= "3.8" and python_full_version < "3.11.0" seaborn==0.12.2 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -setuptools==69.2.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +setuptools==69.5.1 ; python_version >= "3.8" and python_full_version < "3.11.0" +shellingham==1.5.4 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" six==1.16.0 ; python_version >= "3.8" and python_full_version < "3.11.0" snowballstemmer==2.2.0 ; python_version >= "3.8" and python_full_version < "3.11.0" sortedcontainers==2.4.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -spectrum-fundamentals==0.5.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -spectrum-io==0.4.2 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +spectrum-fundamentals==0.5.2 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +spectrum-io==0.4.3 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" sphinx-autobuild==2021.3.14 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" sphinx-autodoc-typehints==1.25.3 ; python_version >= "3.8" and python_full_version < "3.11.0" sphinx-click==5.1.0 ; python_version >= "3.8" and python_full_version < "3.11.0" @@ -120,8 +122,7 @@ sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_full_version < sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_full_version < "3.11.0" sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_full_version < "3.11.0" stevedore==5.2.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -tables==3.8.0 ; python_version >= "3.8" and python_full_version < "3.11.0" -threadpoolctl==3.4.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +threadpoolctl==3.5.0 ; python_version >= "3.8" and python_full_version < "3.11.0" tokenize-rt==5.2.0 ; python_version >= "3.8" and python_full_version < "3.11.0" tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" tornado==6.4 ; python_version >= "3.8" and python_full_version < "3.11.0" @@ -129,12 +130,12 @@ tqdm==4.66.2 ; python_version >= "3.8" and python_full_version < "3.11.0" triqler==0.7.3 ; python_version >= "3.8" and python_full_version < "3.11.0" tritonclient[grpc]==2.44.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" typeguard==4.2.1 ; python_version >= "3.8" and python_full_version < "3.11.0" -typer==0.10.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +typer==0.12.3 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" types-attrs==19.1.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" types-pkg-resources==0.1.3 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -types-requests==2.31.0.20240311 ; python_version >= "3.8" and python_full_version < "3.11.0" -typing-extensions==4.10.0 ; python_version >= "3.8" and python_version < "3.11" +types-requests==2.31.0.20240406 ; python_version >= "3.8" and python_full_version < "3.11.0" +typing-extensions==4.11.0 ; python_version >= "3.8" and python_version < "3.11" urllib3==2.2.1 ; python_version >= "3.8" and python_full_version < "3.11.0" -virtualenv==20.25.1 ; python_version >= "3.8" and python_full_version < "3.11.0" +virtualenv==20.26.1 ; python_version >= "3.8" and python_full_version < "3.11.0" xdoctest[colors]==1.1.3 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" zipp==3.18.1 ; python_version >= "3.8" and python_full_version < "3.11.0" From 353525d1a832ad090f47a9470556dea61d9de4d6 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 2 May 2024 13:41:01 +0200 Subject: [PATCH 058/112] fixed mypy --- oktoberfest/preprocessing/preprocessing.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 55c491b9..977017e3 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -551,15 +551,19 @@ def load_spectra( Only used for parsing of mzML files. :param tims_meta_file: Optional path to timstof metadata file in internal format. This is only required when loading timstof spectra and used for summation of spectra. + :raises TypeError: if not all filenames are provided as str or Path objects. :raises ValueError: if the filename does not end in either ".hdf" or ".mzML" (case-insensitive) :raises AssertionError: if no tims_meta_file was provided when loading timsTOF hdf data :return: measured spectra with metadata. """ if isinstance(filenames, (str, Path)): - filenames = [filenames] - filenames = [Path(filename) for filename in filenames] + internal_filenames = [Path(filenames)] + elif isinstance(filenames, list): + internal_filenames = [Path(filename) for filename in filenames] + else: + raise TypeError("Type of filenames not understood.") - format_ = filenames[0].suffix.lower() + format_ = internal_filenames[0].suffix.lower() if format_ == ".mzml": return ThermoRaw.read_mzml( source=filenames, package=parser, search_type="" @@ -569,7 +573,7 @@ def load_spectra( raise AssertionError( "Loading spectra from a timsTOF hdf file requires metadata provided by tims_meta_file." ) - results = read_and_aggregate_timstof(source=filenames, tims_meta_file=Path(tims_meta_file)) + results = read_and_aggregate_timstof(source=internal_filenames[0], tims_meta_file=Path(tims_meta_file)) return results else: From 705fb061adc1f6b3b2a020366bf93612a6749ca2 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 2 May 2024 13:46:48 +0200 Subject: [PATCH 059/112] fix requirements.txt --- requirements.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index fbed5be7..27c0f08d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,3 @@ -Updating dependencies -Resolving dependencies... - -Writing lock file alabaster==0.7.13 ; python_version >= "3.8" and python_full_version < "3.11.0" alphatims==1.0.8 ; python_version >= "3.8" and python_full_version < "3.11.0" annotated-types==0.6.0 ; python_version >= "3.8" and python_full_version < "3.11.0" From 8a7af3a6956117b7890bbe213ca9adcee2aa6dd8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 11:53:34 +0000 Subject: [PATCH 060/112] [DEPENDABOT]: Bump actions/cache from 3.3.2 to 4.0.2 Bumps [actions/cache](https://github.com/actions/cache) from 3.3.2 to 4.0.2. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3.3.2...v4.0.2) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 4d429b6d..f086f473 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -104,7 +104,7 @@ jobs: print("::set-output name=result::{}".format(result)) - name: Restore pre-commit cache - uses: actions/cache@v3.3.2 + uses: actions/cache@v4.0.2 if: matrix.session == 'pre-commit' with: path: ~/.cache/pre-commit From 803e19bfd0a18fad834c54a30de4d4aac7cdd29f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 11:53:46 +0000 Subject: [PATCH 061/112] [DEPENDABOT]: Bump actions/download-artifact from 3 to 4 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 4d429b6d..dd5fef29 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -154,7 +154,7 @@ jobs: nox --version - name: Download coverage data - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: coverage-data From 24bf9d0e43bae93fe574cd0ecf3bd742b1618823 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 11:56:17 +0000 Subject: [PATCH 062/112] [DEPENDABOT]: Bump seaborn from 0.12.2 to 0.13.2 Bumps [seaborn](https://github.com/mwaskom/seaborn) from 0.12.2 to 0.13.2. - [Release notes](https://github.com/mwaskom/seaborn/releases) - [Commits](https://github.com/mwaskom/seaborn/compare/v0.12.2...v0.13.2) --- updated-dependencies: - dependency-name: seaborn dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 20 ++++++++++---------- pyproject.toml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2b21e19d..eb5107cc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2933,24 +2933,24 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "seaborn" -version = "0.12.2" +version = "0.13.2" description = "Statistical data visualization" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "seaborn-0.12.2-py3-none-any.whl", hash = "sha256:ebf15355a4dba46037dfd65b7350f014ceb1f13c05e814eda2c9f5fd731afc08"}, - {file = "seaborn-0.12.2.tar.gz", hash = "sha256:374645f36509d0dcab895cba5b47daf0586f77bfe3b36c97c607db7da5be0139"}, + {file = "seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987"}, + {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"}, ] [package.dependencies] -matplotlib = ">=3.1,<3.6.1 || >3.6.1" -numpy = ">=1.17,<1.24.0 || >1.24.0" -pandas = ">=0.25" +matplotlib = ">=3.4,<3.6.1 || >3.6.1" +numpy = ">=1.20,<1.24.0 || >1.24.0" +pandas = ">=1.2" [package.extras] dev = ["flake8", "flit", "mypy", "pandas-stubs", "pre-commit", "pytest", "pytest-cov", "pytest-xdist"] -docs = ["ipykernel", "nbconvert", "numpydoc", "pydata_sphinx_theme (==0.10.0rc2)", "pyyaml", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] -stats = ["scipy (>=1.3)", "statsmodels (>=0.10)"] +docs = ["ipykernel", "nbconvert", "numpydoc", "pydata_sphinx_theme (==0.10.0rc2)", "pyyaml", "sphinx (<6.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] +stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "setuptools" @@ -3563,4 +3563,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<3.11.0" -content-hash = "8352e48e9785da65157eefdd085490f5c985c7f4acb88a0c7fde0f6bbbbfb70b" +content-hash = "da62362ab2294f0ea4050fef7f390103f319a70aa744adb74c6bcbe30851614e" diff --git a/pyproject.toml b/pyproject.toml index 938067e5..996567de 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ rich = ">=10.3.0" PyYAML = ">=5.4.1" matplotlib = "^3.6.3" -seaborn = "^0.12.2" +seaborn = ">=0.12.2,<0.14.0" spectrum-fundamentals = ">=0.5.0,<0.6.0" spectrum-io = ">=0.4.3,<0.5.0" mokapot = "^0.9.1" From c56abb1fc444d25df9cbd9a5201d7ba012714179 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 13:14:45 +0000 Subject: [PATCH 063/112] [DEPENDABOT]: Bump actions/upload-artifact from 3 to 4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/run_tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index f086f473..0341cd19 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -117,14 +117,14 @@ jobs: - name: Upload coverage data if: always() && matrix.session == 'tests' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: coverage-data path: ".coverage.*" - name: Upload documentation if: matrix.session == 'docs-build' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: docs path: docs/_build From 5eef8a67249b6cf2be43df4df90b73366a45d89c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 04:09:11 +0000 Subject: [PATCH 064/112] [DEPENDABOT]: Bump codecov/codecov-action from 4.3.0 to 4.3.1 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.3.0...v4.3.1) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index f086f473..cf1f04c0 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -165,4 +165,4 @@ jobs: run: nox --force-color --session=coverage -- xml -i - name: Upload coverage report - uses: codecov/codecov-action@v4.3.0 + uses: codecov/codecov-action@v4.3.1 From adbe94fd5c0a4c15255e34e9f812070eca85c958 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 16:25:44 +0200 Subject: [PATCH 065/112] fix missing assignment of view to library var --- oktoberfest/preprocessing/preprocessing.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 25c13251..fd4e15d8 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -204,7 +204,7 @@ def filter_peptides( & (~df["SEQUENCE"].str.contains(r"B|\*|\.|U|X|Z")) ) - return peptides[peptide_filter] + return peptides[peptide_filter.values] def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Optional[str] = None) -> Spectra: @@ -238,8 +238,7 @@ def process_and_filter_spectra_data(library: Spectra, model: str, tmt_label: Opt library.obs["PEPTIDE_LENGTH"] = library.obs["SEQUENCE"].apply(lambda x: len(x)) # filter - filter_peptides_for_model(library, model) - + library = filter_peptides_for_model(library, model) library.obs["MASS"] = library.obs["MODIFIED_SEQUENCE"].apply(lambda x: compute_peptide_mass(x)) return library From 562d42f9eff87b36d5c3e73b21d4bb825ca2ead8 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 16:27:06 +0200 Subject: [PATCH 066/112] fix typechange to anndata when indexing + mypy --- oktoberfest/data/spectra.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index 1d16cae9..2c96edef 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -102,6 +102,11 @@ def _resolve_layer_name(fragment_type: FragmentType) -> str: layer = Spectra.MZ_LAYER_NAME return layer + def __getitem__(self, index: anndata._core.index.Index): + """Returns a sliced view of the object with this type to avoid returning AnnData instances when slicing.""" + oidx, vidx = self._normalize_indices(index) + return Spectra(self, oidx=oidx, vidx=vidx, asview=True) + def add_column(self, data: Union[np.ndarray, pd.Series], name: Optional[str] = None) -> None: """ Add column to spectra data. @@ -160,7 +165,7 @@ def add_matrix( intensity_data[intensity_data == 0] = c.EPSILON intensity_data[intensity_data == -1] = 0.0 - intensity_data = csr_matrix(intensity_data) + intensity_data_sparse = csr_matrix(intensity_data) layer = self._resolve_layer_name(fragment_type) @@ -175,13 +180,13 @@ def add_matrix( if i.decode("utf8") in list(self.var_names) ] stripped_annotation = [list(annotation[r]).index(a) for a in annotation[r] if a] - self.layers[layer][r, idx] = intensity_data[r, stripped_annotation] + self.layers[layer][r, idx] = intensity_data_sparse[r, stripped_annotation] if "done" not in self.obs.columns: self.obs["done"] = False self.obs["done"].iloc[index] = True else: - self.layers[layer] = intensity_data + self.layers[layer] = intensity_data_sparse def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str]]: """ @@ -207,7 +212,7 @@ def write_as_hdf5(self, output_file: Union[str, Path]): self.write(output_file, compression="gzip") @classmethod - def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]): + def from_hdf5(cls: Type[SpectraT], input_file: Union[str, Path]) -> SpectraT: """ Read from hdf5 file. From 165fe6feb55c6a0016ebc3b8c30bed4cd634016e Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 16:27:46 +0200 Subject: [PATCH 067/112] fix mypy --- oktoberfest/plotting/plotting.py | 13 ++++--------- oktoberfest/predict/predict.py | 11 +++++++---- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/oktoberfest/plotting/plotting.py b/oktoberfest/plotting/plotting.py index 108dd237..aee3101c 100644 --- a/oktoberfest/plotting/plotting.py +++ b/oktoberfest/plotting/plotting.py @@ -48,7 +48,7 @@ def plot_score_distribution(target: pd.DataFrame, decoy: pd.DataFrame, level: st score_col, _, _, _ = _check_columns(target) plt.figure(figsize=(8, 6)) - bins = np.linspace(-3, 2, 15) + bins = np.linspace(-3, 2, 15).tolist() plt.hist(target[score_col], bins, label="Targets", rwidth=0.5, color="#48AF00", alpha=1.0) plt.hist(decoy[score_col], bins, label="Decoys", rwidth=0.5, color="#FE7312", alpha=0.7) plt.xlabel("Score") @@ -295,7 +295,7 @@ def plot_sa_distribution(prosit_df: pd.DataFrame, target_df: pd.DataFrame, decoy target = prosit_df.merge(target_df, how="inner", left_on="SpecId", right_on=psm_col) decoy = prosit_df.merge(decoy_df, how="inner", left_on="SpecId", right_on=psm_col) plt.figure(figsize=(8, 6)) - bins = np.linspace(0, 1, 15) + bins = np.linspace(0, 1, 15).tolist() plt.hist(target.spectral_angle, bins, label="Targets", rwidth=0.5, color="#48AF00", alpha=1.0) plt.hist(decoy.spectral_angle, bins, label="Decoys", rwidth=0.5, color="#FE7312", alpha=0.7) plt.xlabel("Spectral angle", size=14) @@ -378,12 +378,7 @@ def plot_all(data_dir: Path): def plot_ce_ransac_model( - sa_ce_df: pd.DataFrame, - filename: Path, - xlabel: str = "MASS", - ylabel: str = "delta collision enegery", - *args, - **kwargs, + sa_ce_df: pd.DataFrame, filename: Path, xlabel: str = "MASS", ylabel: str = "delta collision enegery", **kwargs ): """Generate plot (mass vs ce difference).""" df = sa_ce_df.reset_index() @@ -393,6 +388,6 @@ def plot_ce_ransac_model( sns.regplot( data=df, x="MASS", y="delta_collision_energy", scatter=False, ci=None, line_kws={"linestyle": "--"}, ax=ax ) - ax.set(xlabel=xlabel, ylabel=ylabel, *args, **kwargs) + ax.set(xlabel=xlabel, ylabel=ylabel, **kwargs) plt.savefig(filename, dpi=300) plt.close() diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 48c8f716..b5f73778 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -98,7 +98,9 @@ def _prepare_alignment_df(library: Spectra, ce_range: Tuple[int, int], group_by_ return alignment_library -def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: bool, **server_kwargs) -> Spectra: +def ce_calibration( + library: Spectra, ce_range: Tuple[int, int], group_by_charge: bool, model_name: str, **server_kwargs +) -> Spectra: """ Calculate best collision energy for peptide property predictions. @@ -109,12 +111,13 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: :param library: spectral library to perform CE calibration on :param ce_range: the min and max CE to be tested during calibration :param group_by_charge: if true, select the top 1000 spectra independently for each precursor charge + :param model_name: The name of the requested prediction model. This is forwarded to the prediction method with + server_kwargs and checked here to determine if alphapept is used for further preprocessing. :param server_kwargs: Additional parameters that are forwarded to the prediction method :return: a spectra object containing the spectral angle for each tested CE """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) - - if "alphapept" in server_kwargs.get("model_name").lower(): + if "alphapept" in model_name.lower(): alignment_library.obs["INSTRUMENT_TYPES"] = "QE" if "done" in list(alignment_library.obs.columns): @@ -122,7 +125,7 @@ def ce_calibration(library: Spectra, ce_range: Tuple[int, int], group_by_charge: else: predict_input = alignment_library.obs - intensities = predict(predict_input, **server_kwargs) + intensities = predict(predict_input, model_name=model_name, **server_kwargs) intensities["index"] = predict_input.index.values.astype(np.int32) alignment_library.add_matrix( intensities["intensities"], FragmentType.PRED, intensities["annotation"], intensities["index"] From 31de04f6ccc9e0d860fbcc6277158fb790f6faff Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 16:28:10 +0200 Subject: [PATCH 068/112] changed old to new fragment type annotation i.e. Y1+ -> y1+1 or B20+++ -> b20+3 --- .../data/predictions/library_output.h5ad.gz | Bin 60864 -> 60864 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/unit_tests/data/predictions/library_output.h5ad.gz b/tests/unit_tests/data/predictions/library_output.h5ad.gz index ba7249128c195e19ba2d0ec3fcbbdf31a42b3898..9b380b23671e42a5f880e474ae8e4fbb709ff097 100644 GIT binary patch delta 4923 zcmZvg3s6mI9Kg>FMNcG&UL>!I?!8KsNLb5aJ(ErG#age(HJbGxO*sMfY*~#p% zEAGz5c$BTX%`hX(*cy+tZkF9ix?`EUHthHR&UbSA&Ua?&ob&si@Av(`bI$iTxAH-! z$_Jgw7CTE_1bIW+upliy974}+xel|T9InS~7{f(vIPnB=ICz3Pa!G&!APVUi5D*m& z=Wq~>;BfGSGF;S-A_+m`U{e|fTqj6^05aHY10aGw*c6VaXrzogaBzfiI5@%?E@~r4 zLZg7=`rAbi08s=4@TOD@97LlD{m2m&jp1Y2>p;Q55ye|(_aYA67rDNF%T zrzHt}%HbfI%HiOd#&ASEpDCQ&e|!P~5KUJCbPpUvGZ-%FbR?mf91fn(IUGE*7%m|y zn#}}&gJ=$igJ>?pMV+1`G>^l9|9mkwgJjPl+18MMN2sxJj*y7 zJYO3***e!tX{(u5OpwC3qlHq zgJ>0XrcR0dK(;Yhx5!Vczo%t0^g zl(}SE0Q|x(Ind5UxxvD2H7BABH7A}-h9m09>cH{y#{nYB?hqiHi1tw4K2B)m$tj1! zLG(3;gD98b2t4rq?d1eOw2#9a8*O3M%xeZv$04x$1M z2hl->i&}Yd`j*4NbLbxGKxB zzTXs&^T{t=oaQw<8cg;J#&@}lJUy!OZWR1Gq@jP|(hG(Q1@RR#*8kZQ>6J6_$>T@W zw}WSK)}-TlLCfSDgLIG9h7yQ)&<2eKn2eBi!?= z%$CkkJ!bwIpQby$>-3Y=Qt|E$mXT3DwUv5Ha8%^elb%Jz4%YtZ8Gh!$)}iTHC(J2r z11<#wR8*g9UDak^VS3rR_2KSujrmsh7SndCzNIFqHLlG?su|Zhv(3q^@v+tIeXheC z-}l$QC05k3AtJXGhn#ZqN65 z>lfMPht5?7S%xL-j5CL&g(POznO)KX8Zt(iL(+m8vdYaqX@eUwH=Czkad>I^uQfd( z^GvGCPo_;5ef=t3tp3p%Zsq{%km#&@v%7U*O7(PWujqZXjYg|?bpD9OTx-vi-wG`r z+dPu0>QbFjOlz$6*K*eO{^P+#pUsVt5li)N#y-rs-1@HRy~E#U3Va3?O4A~eR&O4- z>8RGZBC=_%TZvbnzLh`UUhh-ZX4>f0uluok1B1ZDiZqAZ>MK{C3w@ENb*_6nyUVNc`CcV^PS;Pnzw%mL zd8Q?%<pEq?CJrHh`1X?}3H(|on&#jU90 zOZ4$Gs#@+I$qX-@_0I6uhhA$+`@SpFi$juM?LYG<<;nM#!iCv)HfW57!96=4s9am% zA2!$cFsONwU6JO%`QFCH)IMEpz82;8*N%Bj5q*6-aX9n?Wp+?T9Fcx?D(A``ICKO1 zjvn}03?m)Wfd&*IlDm!2Rn4JZp&P?Rc`YV5syWmvIH@`I;L*yN2_PzRQF9`4RdbS% z8^c9;2_a%97ao}#kc?w^<)YlDsoqIBI>2)#N)wmQC>m`y=^!dt#N>eJZ%DS zh&d7UVK|~9FEuBgzG_Z9{TPl{8f3L9c&h_ML9zB-CG7 zoP maWQ(GigVNi8dHC)_1DB2V{VP>rg1Rtti!t{#_NqAoc{;z=W)#d delta 5039 zcmZ9Qe^8Xi8OL8l6bKcAMkJzW6NTh7a3_i}k&7?Y)FetQMEWMCAf%88hN?j{diSak zO(Efo;dNlV! z?&1GfCOyD`&BgZU(G?!BWF8TzD7pu^6afcO?sr8B=Pbx09?e|<%@sFt=>hIibVc!C zAVqoQXi z@i4A)kxE3GCyy6YL`1+L_yG}d&VpscqoQXy@c;+UgM9wk6FD*-u;hnCqi4q3*MbVFm2snr|BI29{ zj}wpP$>#+i$oX3a z?>__}s>DEwIA=i>aw$?#^b~UW-UA2EPl<css|QRK)pkGNNFAR^$teHxhe*%?8Mj6nGh4F>=Im$ z?tbh7-tlg{K#DXmVC4lOVjSvJ_8^y23LJtaabJ89-v~NZ(Kkb~epoMr;@WAKqB@E;UAOO+J$fbyL7PKOlQ>wYe<`f_v;NaO$ zJe;%O6~_7JUy4)|9Uvm$AZjBb&ROs(a_Q0BVsmxDFO~bC-T@^COp4H z9xF&}PH)LmuM}x+v8fy(BFD0Z~9u9VOO^RO~oS4x2^_0?5^XotL zOfa8a<~-$}-2ct<)g3K|w^dsmjuYHmeWh?&&%pA>&zp6N_uTJlZ=Kcu;jx@cX=Y7D zd9%-Ll^C7PPQH1(%A01d4hP=%r&v|NtbNW_GrPijtGyyz{QjBw)|1B7W?zBXrB@Ba z+a2K>@17~Je8$xlpVzdjyo$XmocgXm&nhyqnw>mzUzK zvVxI4PL0`J5xLE-59@vU$au>etnVF3x4MIo7Y54i8=i5YsPdb0g-xU+X;u64!m2Al*lw^C2CKM0rij@)gXH;R9s;WU`_ z75XH5+!LP-#}C%F{dV>ndW*Nbu5nRAyE~%^^fyOPno@pPGkT?C{N2$m3GoPM1?aQqAxc^+j-y=hVuJ-*yZ@<1tuikmtDKI{F zJNt^<1WLf>+)c`55J z;kAS7PuCvGKR-?xyu8T@jn7US+ctASY3K`=xok}0m{)>RLKinqO&s;rR4kS;xF+OU zQE{!vJA7=>iG!S6Z1PdVuekDh`3M{que=@~;j1YNSTdfhURA77C6N{+`c;yU%fd8q z@KchBhjD&4xrKOu^Q|F;h*T7PkBAuOq6tI<9D-Eh(ZqR8nMgd0bI+~7;np0TB5`0- z((nQ~G8ILWkjtrNoQozSmmc5{+(tZ_IQJ=2MtS(wzydBxCnDewOeG=}MH!<+@RV`x zxgB}5AoNT_E(gYrHDYVZ#6XS=&O3mnBae#2_bX)v@~B8`7)loMs7GuV%1q+X#D<~F zk|!!DQc?7MB4V5ubO#Xuhu}`+(xZvRq|7EB#<^#X^oa4Z^A3Khvx$hU0#0%W*Tm)@ z{lzFcVzFmOe=(9X$J+Crg-wZ`AlX+_f#zZdQp7k9bau01UPA}14jAX~G zJs0I+d&xDy=S6=qk{v?;Z9RB_?3i(-?M?r0GURvD#n>PYAJx!0Jv}8ZE41-MNn+^3 zws#WZYTGuRNDm!6v@ Date: Thu, 16 May 2024 16:42:49 +0200 Subject: [PATCH 069/112] fix int32 default type checking on windows --- tests/unit_tests/test_predictions.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index 052f2d8e..bde27fc3 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -39,5 +39,10 @@ def test_prosit_tmt(self): library_expected.get_matrix(FragmentType.PRED)[0].toarray(), decimal=6, ) + # explicitely set this to int64 as the default on windows is int32 + # which causes the type check to fail on windows + library.var["num"] = library.var["num"].astype("int64") + library.var["charge"] = library.var["charge"].astype("int64") + pd.testing.assert_frame_equal(library.obs, library_expected.obs) pd.testing.assert_frame_equal(library.var, library_expected.var) From 4ea403d78c1620a5e1f325ffc2170d1410b9d0a2 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 16:56:06 +0200 Subject: [PATCH 070/112] overwrite artifact to work with upload-artifact@v4 --- .github/workflows/run_tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 0341cd19..4f9b694a 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -121,6 +121,7 @@ jobs: with: name: coverage-data path: ".coverage.*" + overwrite: true - name: Upload documentation if: matrix.session == 'docs-build' From c727ca1cca1aac4c395b016c225c5d80888b8e9e Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 18:05:40 +0200 Subject: [PATCH 071/112] up/download coverage report only for ubuntu --- .github/workflows/run_tests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 4dc24af3..023d9f27 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -116,12 +116,11 @@ jobs: run: nox --force-color --python=${{ matrix.python-version }} - name: Upload coverage data - if: always() && matrix.session == 'tests' + if: always() && matrix.session == 'tests' && matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: coverage-data path: ".coverage.*" - overwrite: true - name: Upload documentation if: matrix.session == 'docs-build' From 2b59038b6d503cd8a963743cb7aeaa4ba38e66ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 16:37:55 +0000 Subject: [PATCH 072/112] [DEPENDABOT]: Bump coverage from 7.5.0 to 7.5.1 Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.5.0 to 7.5.1. - [Release notes](https://github.com/nedbat/coveragepy/releases) - [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst) - [Commits](https://github.com/nedbat/coveragepy/compare/7.5.0...7.5.1) --- updated-dependencies: - dependency-name: coverage dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 106 ++++++++++++++++++++++++++-------------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2b21e19d..7b217508 100644 --- a/poetry.lock +++ b/poetry.lock @@ -457,63 +457,63 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.5.0" +version = "7.5.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"}, - {file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"}, - {file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"}, - {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"}, - {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"}, - {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"}, - {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"}, - {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"}, - {file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"}, - {file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"}, - {file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"}, - {file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"}, - {file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"}, - {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"}, - {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"}, - {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"}, - {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"}, - {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"}, - {file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"}, - {file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"}, - {file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"}, - {file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"}, - {file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"}, - {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"}, - {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"}, - {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"}, - {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"}, - {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"}, - {file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"}, - {file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"}, - {file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"}, - {file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"}, - {file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"}, - {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"}, - {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"}, - {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"}, - {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"}, - {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"}, - {file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"}, - {file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"}, - {file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"}, - {file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"}, - {file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"}, - {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"}, - {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"}, - {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"}, - {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"}, - {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"}, - {file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"}, - {file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"}, - {file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"}, - {file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"}, + {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"}, + {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"}, + {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"}, + {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"}, + {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"}, + {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"}, + {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"}, + {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"}, + {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"}, + {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"}, + {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"}, + {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"}, + {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"}, + {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"}, ] [package.dependencies] From a0c265b618685f0298ac1af52d5f0794ccde781a Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 18:41:56 +0200 Subject: [PATCH 073/112] updated requirements.txt for docs-build --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 27c0f08d..99b7d5b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_full_version < "3 click==8.1.7 ; python_version >= "3.8" and python_full_version < "3.11.0" colorama==0.4.6 ; python_version >= "3.8" and python_full_version < "3.11.0" contourpy==1.1.1 ; python_version >= "3.8" and python_full_version < "3.11.0" -coverage[toml]==7.5.0 ; python_version >= "3.8" and python_full_version < "3.11.0" +coverage[toml]==7.5.1 ; python_version >= "3.8" and python_full_version < "3.11.0" cryptography==42.0.5 ; python_version >= "3.8" and python_full_version < "3.11.0" cycler==0.12.1 ; python_version >= "3.8" and python_full_version < "3.11.0" darglint==1.8.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" @@ -97,7 +97,7 @@ safety-schemas==0.0.2 ; python_full_version >= "3.8.0" and python_full_version < safety==3.2.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" scikit-learn==1.3.2 ; python_version >= "3.8" and python_full_version < "3.11.0" scipy==1.10.1 ; python_version >= "3.8" and python_full_version < "3.11.0" -seaborn==0.12.2 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +seaborn==0.13.2 ; python_version >= "3.8" and python_full_version < "3.11.0" setuptools==69.5.1 ; python_version >= "3.8" and python_full_version < "3.11.0" shellingham==1.5.4 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" six==1.16.0 ; python_version >= "3.8" and python_full_version < "3.11.0" From 5a39aa0ca1b7624790458937acb409088d6edc9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 16:43:39 +0000 Subject: [PATCH 074/112] [DEPENDABOT]: Bump mokapot from 0.9.1 to 0.10.0 Bumps [mokapot](https://github.com/wfondrie/mokapot) from 0.9.1 to 0.10.0. - [Release notes](https://github.com/wfondrie/mokapot/releases) - [Changelog](https://github.com/wfondrie/mokapot/blob/main/CHANGELOG.md) - [Commits](https://github.com/wfondrie/mokapot/compare/v0.9.1...v0.10.0) --- updated-dependencies: - dependency-name: mokapot dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index ade4d2b5..d139268a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1547,13 +1547,13 @@ research = ["entsoe-py (>=0.3.2)", "lxml (>=4.6.2)", "python-dotenv (>=0.15.0)", [[package]] name = "mokapot" -version = "0.9.1" +version = "0.10.0" description = "Fast and flexible semi-supervised learning for peptide detection" optional = false python-versions = ">=3.6" files = [ - {file = "mokapot-0.9.1-py3-none-any.whl", hash = "sha256:00088431c22dfbff9bfae1ef0c4d97caa8f6dc78013a6c5ca95b3ff999698ab5"}, - {file = "mokapot-0.9.1.tar.gz", hash = "sha256:b4b89e4e35f110e10ffd22498d758e61f83195a10f249cccee1092e760e82313"}, + {file = "mokapot-0.10.0-py3-none-any.whl", hash = "sha256:3504f1a3b03214a0dc955c95297f9c28b4dfbe9d3162f36e70de19516a8ad521"}, + {file = "mokapot-0.10.0.tar.gz", hash = "sha256:80e483491a5b2e6a069f561e88176d5751258b89a7147f5d855e3c11461b7c0b"}, ] [package.dependencies] @@ -3563,4 +3563,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<3.11.0" -content-hash = "da62362ab2294f0ea4050fef7f390103f319a70aa744adb74c6bcbe30851614e" +content-hash = "bf111efc71b5421c09217bb84d444c12aea10dcb9eb9f9a2d75ab0229a4dfaa3" diff --git a/pyproject.toml b/pyproject.toml index 996567de..954ae5e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ matplotlib = "^3.6.3" seaborn = ">=0.12.2,<0.14.0" spectrum-fundamentals = ">=0.5.0,<0.6.0" spectrum-io = ">=0.4.3,<0.5.0" -mokapot = "^0.9.1" +mokapot = ">=0.9.1,<0.11.0" tritonclient = {extras = ["grpc"], version = ">=2.34.0,<2.45"} numpy = ">=1.20,<1.25" [tool.poetry.dev-dependencies] From d457658d2e49d05e11d7954036779b89ece6fe41 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 16 May 2024 18:52:00 +0200 Subject: [PATCH 075/112] updated requirements for docs-build --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 99b7d5b5..cd7fcd7d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -51,7 +51,7 @@ matplotlib==3.7.5 ; python_version >= "3.8" and python_full_version < "3.11.0" mccabe==0.7.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" mdurl==0.1.2 ; python_version >= "3.8" and python_full_version < "3.11.0" moepy==1.1.4 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" -mokapot==0.9.1 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" +mokapot==0.10.0 ; python_full_version >= "3.8.0" and python_full_version < "3.11.0" mypy-extensions==1.0.0 ; python_version >= "3.8" and python_full_version < "3.11.0" mypy==1.10.0 ; python_version >= "3.8" and python_full_version < "3.11.0" nodeenv==1.8.0 ; python_version >= "3.8" and python_full_version < "3.11.0" From fe6899b812ad7cac94b764909832d0782b891b0f Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Fri, 17 May 2024 17:48:49 +0200 Subject: [PATCH 076/112] chunk pred by peptide length (intermediate commit) --- oktoberfest/data/spectra.py | 93 ++++++++++++++-------- oktoberfest/predict/predict.py | 51 ++++++++---- oktoberfest/preprocessing/preprocessing.py | 13 +-- oktoberfest/runner.py | 38 +++++---- oktoberfest/utils/__init__.py | 1 + oktoberfest/utils/groupiterator.py | 27 +++++++ tests/unit_tests/test_predictions.py | 2 +- 7 files changed, 157 insertions(+), 68 deletions(-) create mode 100644 oktoberfest/utils/groupiterator.py diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index 2c96edef..40070dad 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -8,7 +8,7 @@ import pandas as pd import scipy import spectrum_fundamentals.constants as c -from scipy.sparse import csr_matrix +from scipy.sparse import csr_matrix, dok_matrix logger = logging.getLogger(__name__) @@ -145,48 +145,79 @@ def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: Frag layer = self._resolve_layer_name(fragment_type) self.layers[layer] = scipy.sparse.csr_matrix(intensity_data) - def add_matrix( + def add_mzs(self, mzs: np.ndarray, fragment_type: FragmentType): + layer = self._resolve_layer_name(fragment_type) + self.layers[layer] = csr_matrix(mzs) + + def add_intensities(self, intensities: np.ndarray, fragment_type: FragmentType): + intensities[intensities == 0] = c.EPSILON + intensities[intensities == -1] = 0.0 + layer = self._resolve_layer_name(fragment_type) + self.layers[layer] = csr_matrix(intensities) + + def add_list_of_predicted_intensities( self, + intensities: List[np.ndarray], + annotations: List[np.ndarray], + chunk_indices: List[np.ndarray], + ): + """ + Add chunks of predicted intensities and convert to sparse matrix. + + This function takes three lists of numpy arrays, containing intensities, the fragment ion annotations + in ProForma notation representing the column index, and a numeric index representing the row index. + Each intensity array is reordered using the cooresponding annotation element to match the order of the + fragment ion annotations in self.var_names and stored to the appropriate rows of a lil_matrix, + incrementally creating the full, sparse intensity matrix ordered by fragment types. The function then + converts the matrix to csr format. + + :param intensities: List of intensity numpy arrays to add with shapes (n_1 x m_1), ..., (n_N x m_N) + :param annotations: List of fragment ion annotations in ProForma notation with shapes (m_1), ..., (m_N) + :param chunk_indices: List of row numbers with shapes (n_1), ..., (n_N) + """ + + sparse_intensity_matrix = dok_matrix(self.shape) + + for i, a, c in zip(intensities, annotations, chunk_indices): + self._add_predicted_intensites( + mat=sparse_intensity_matrix, + intensity_data=i, + annotation=a.astype(str), + index=c, + ) + + layer = self._resolve_layer_name(FragmentType.PRED) + self.layers[layer] = csr_matrix(sparse_intensity_matrix) + + def _add_predicted_intensites( + self, + mat: dok_matrix, intensity_data: np.ndarray, - fragment_type: FragmentType, - annotation: Optional[np.ndarray] = None, - index: Optional[np.ndarray] = None, + annotation: np.ndarray, + index: np.ndarray, ) -> None: """ Concatenate intensity df as a sparse matrix to our data. - :param intensity_data: intensity numpy array to add with shape (n x m) - :param fragment_type: choose predicted, raw, or mz - :param annotation: Optional fragment ion annotations in ProForma notation with shape (n x m) - :param index: Optional index of intensity predictions with length n + :param mat: The lil_matrix into which to store the data + :param intensities: Intensity numpy array to add with shape (n x m) + :param annotations: Fragment ion annotations in ProForma notation with shape (m) + :param index: Row numbers with shape (n) """ + # ensure intensities are properly masked where required (alphapept does not do that) + annotation_to_index = {annotation: index for index, annotation in enumerate(self.var_names)} + col_index = np.vectorize(annotation_to_index.get)(annotation[0]) + fragment_charges = self.var.loc[annotation[0], "charge"].values + precursor_charges = self.obs.iloc[index][["PRECURSOR_CHARGE"]].values + intensity_data = np.where(fragment_charges <= precursor_charges, intensity_data, -1) + row_index = self.obs.index.get_indexer(index)[..., None] # Change zeros to epislon to keep the info of invalid values # change the -1 values to 0 (for better performance when converted to sparse representation) intensity_data[intensity_data == 0] = c.EPSILON intensity_data[intensity_data == -1] = 0.0 + mat[row_index, col_index] = intensity_data - intensity_data_sparse = csr_matrix(intensity_data) - - layer = self._resolve_layer_name(fragment_type) - - if annotation is not None: - if layer not in list(self.layers): - self.layers[layer] = csr_matrix(self.shape) - if index is not None: - for r in index: - idx = [ - list(self.var_names).index(i.decode("utf8")) - for i in annotation[r] - if i.decode("utf8") in list(self.var_names) - ] - stripped_annotation = [list(annotation[r]).index(a) for a in annotation[r] if a] - self.layers[layer][r, idx] = intensity_data_sparse[r, stripped_annotation] - if "done" not in self.obs.columns: - self.obs["done"] = False - self.obs["done"].iloc[index] = True - - else: - self.layers[layer] = intensity_data_sparse + # self.obs.iloc[index]["done"] = True def get_matrix(self, fragment_type: FragmentType) -> Tuple[csr_matrix, List[str]]: """ diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index b5f73778..df395896 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -1,6 +1,6 @@ import logging import re -from typing import Dict, Tuple +from typing import Dict, List, Tuple, Union import anndata import numpy as np @@ -8,12 +8,15 @@ from spectrum_fundamentals.metrics.similarity import SimilarityMetrics from ..data.spectra import FragmentType, Spectra +from ..utils import group_iterator from .koina import Koina logger = logging.getLogger(__name__) -def predict(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: +def predict( + data: pd.DataFrame, chunk: bool = False, **kwargs +) -> Dict[str, Union[np.ndarray, List[np.ndarray], List[pd.Series]]]: """ Retrieve predictions from koina. @@ -22,13 +25,28 @@ def predict(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: See the koina predict function for details. TODO, link this properly. :param data: Dataframe containing the data for the prediction. + :param chunk: whether to chunk by peptide length. This is required if padding should + be avoided when predicting peptides of different length. For alphapept, this is required + as padding is only performed within one batch, leading to different sizes of arrays between + individual prediction batches. When chunk is true, only batches with the same length are + concatenated and a list of concatenated batches for each peptide length is returned instead. :param kwargs: Additional keyword arguments forwarded to Koina::predict - :return: a dictionary with targets (keys) and predictions (values) + :return: a dictionary with targets (keys) and predictions (values) or list of predictions if chunk is true """ predictor = Koina(**kwargs) - results = predictor.predict(data) - return results + + if chunk: + results = [] + indices = [] + for chunk_idx in group_iterator(data, "PEPTIDE_LENGTH"): + results.append(predictor.predict(data.loc[chunk_idx])) + indices.append(chunk_idx) + ret_val = {key: [item[key] for item in results] for key in results[0].keys()} + ret_val["chunk_indices"] = indices + return ret_val + else: + return predictor.predict(data) def parse_fragment_labels( @@ -89,7 +107,10 @@ def _prepare_alignment_df(library: Spectra, ce_range: Tuple[int, int], group_by_ top_hcd_targets = hcd_targets.head(top_n) alignment_library = library[top_hcd_targets.index] - alignment_library = Spectra(anndata.concat([alignment_library for _ in range(*ce_range)])) + alignment_library = Spectra( + anndata.concat([alignment_library for _ in range(*ce_range)], index_unique="_", keys=range(*ce_range)) + ) + alignment_library.var = library.var alignment_library.obs.reset_index(inplace=True) alignment_library.obs["ORIG_COLLISION_ENERGY"] = alignment_library.obs["COLLISION_ENERGY"] @@ -117,19 +138,19 @@ def ce_calibration( :return: a spectra object containing the spectral angle for each tested CE """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) + chunk = False + if "alphapept" in model_name.lower(): + chunk = True alignment_library.obs["INSTRUMENT_TYPES"] = "QE" - if "done" in list(alignment_library.obs.columns): - predict_input = alignment_library.obs[~alignment_library.obs["done"]] + intensities = predict(alignment_library.obs, chunk=chunk, model_name=model_name, **server_kwargs) + if chunk: + alignment_library.add_list_of_predicted_intensities( + intensities["intensities"], intensities["annotation"], intensities["chunk_indices"] + ) else: - predict_input = alignment_library.obs - - intensities = predict(predict_input, model_name=model_name, **server_kwargs) - intensities["index"] = predict_input.index.values.astype(np.int32) - alignment_library.add_matrix( - intensities["intensities"], FragmentType.PRED, intensities["annotation"], intensities["index"] - ) + alignment_library.add_intensities(intensities["intensities"], fragment_type=FragmentType.PRED) _alignment(alignment_library) return alignment_library diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index fd4e15d8..0e3bd49f 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -37,6 +37,7 @@ def gen_lib(input_file: Union[str, Path]) -> Spectra: """ library_df = csv.read_file(input_file) library_df.columns = library_df.columns.str.upper() + library_df.sort_values("PEPTIDE_LENGTH", ascending=False, inplace=True) var_df = Spectra._gen_vars_df() spec = Spectra(obs=library_df, var=var_df) spec.var_names = var_df.index @@ -83,6 +84,7 @@ def generate_metadata( metadata = pd.DataFrame( combinations, columns=["modified_sequence", "collision_energy", "precursor_charge", "fragmentation"] ) + metadata["peptide_length"] = metadata["modified_sequence"].str.len() if proteins is not None: n_repeats = len(metadata) // len(proteins) @@ -544,16 +546,15 @@ def annotate_spectral_library( :return: Spectra object containing the annotated b and y ion peaks including metadata """ logger.info("Annotating spectra...") - df_annotated_spectra = annotate_spectra(psms, mass_tol, unit_mass_tol) + df_annotated_spectra = annotate_spectra(psms, mass_tol, unit_mass_tol).sort_values( + "PEPTIDE_LENGTH", ascending=False, inplace=True + ) var_df = Spectra._gen_vars_df() aspec = Spectra(obs=psms.drop(columns=["INTENSITIES", "MZ"]), var=var_df) aspec.var_names = var_df.index - aspec.add_matrix(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) - aspec.add_matrix( - np.stack(df_annotated_spectra["MZ"]), - FragmentType.MZ, - ) + aspec.add_intensities(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) + aspec.add_mzs(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) aspec.add_column(df_annotated_spectra["CALCULATED_MASS"].values, "CALCULATED_MASS") aspec.strings_to_categoricals() diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index e01fe6fd..5378c404 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -11,6 +11,7 @@ from typing import Dict, List, Optional, Tuple, Type, Union import numpy as np +import pandas as pd from sklearn.linear_model import LinearRegression, RANSACRegressor from spectrum_io.spectral_library import MSP, DLib, SpectralLibrary, Spectronaut from tqdm.auto import tqdm @@ -22,7 +23,7 @@ from oktoberfest import rescore as re from .data.spectra import FragmentType, Spectra -from .utils import Config, JobPool, ProcessStep +from .utils import Config, JobPool, ProcessStep, group_iterator logger = logging.getLogger(__name__) @@ -260,11 +261,11 @@ def _get_writer_and_output(results_path: Path, output_format: str) -> Tuple[Type raise ValueError(f"{output_format} is not supported as spectral library type") -def _get_batches_and_mode(out_file: Path, failed_batch_file: Path, no_of_spectra: int, batchsize: int): +def _get_batches_and_mode(out_file: Path, failed_batch_file: Path, obs: pd.DataFrame, batchsize: int, model: str): if out_file.is_file(): if failed_batch_file.is_file(): with open(failed_batch_file, "rb") as fh: - batches = pickle.load(fh) + batch_iterator = pickle.load(fh) mode = "a" logger.warning( f"Found existing spectral library {out_file}. " @@ -278,10 +279,13 @@ def _get_batches_and_mode(out_file: Path, failed_batch_file: Path, no_of_spectra ) sys.exit(1) else: - batches = range(ceil(no_of_spectra / batchsize)) + if "alphapept" in model.lower(): + batch_iterator = group_iterator(df=obs, group_by_column="PEPTIDE_LENGTH", max_batch_size=batchsize) + + batch_iterator = (obs.index[i * batchsize : (i + 1) * batchsize] for i in range(ceil(len(obs) / batchsize))) mode = "w" - return batches, mode + return list(batch_iterator), mode def _update(pbar: tqdm, postfix_values: Dict[str, int]): @@ -335,7 +339,9 @@ def generate_spectral_lib(config_path: Union[str, Path]): batchsize = config.batch_size failed_batch_file = config.output / "data" / "speclib_failed_batches.pkl" writer, out_file = _get_writer_and_output(results_path, config.output_format) - batches, mode = _get_batches_and_mode(out_file, failed_batch_file, spec_library.n_obs, batchsize) + batches, mode = _get_batches_and_mode( + out_file, failed_batch_file, spec_library.obs["PEPTIDE_LENGTH"], batchsize, config.models["intensity"] + ) speclib = writer(out_file, mode=mode, min_intensity_threshold=config.min_intensity) n_batches = len(batches) @@ -362,7 +368,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): try: results = [] - for i in batches: + for batch in batches: result = predictor_pool.apply_async( _make_predictions, ( @@ -372,7 +378,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): shared_queue, prediction_progress, lock, - spec_library.obs[i * batchsize : (i + 1) * batchsize], + spec_library.obs.loc[batch], ), error_callback=partial( _make_predictions_error_callback, prediction_failure_progress, lock_failure @@ -479,7 +485,9 @@ def _calculate_features(spectra_file: Path, config: Config): predict_step = ProcessStep(config.output, "predict." + spectra_file.stem) if not predict_step.is_done(): + chunk = False if "alphapept" in config.models["intensity"].lower(): + chunk = True library.obs["INSTRUMENT_TYPES"] = "QE" if "done" in list(library.obs.columns): @@ -495,17 +503,17 @@ def _calculate_features(spectra_file: Path, config: Config): pred_intensities = pr.predict( data=predict_input, model_name=config.models["intensity"], + chunk=chunk, **predict_kwargs, ) pred_irts = pr.predict(data=library.obs, model_name=config.models["irt"], **predict_kwargs) - pred_intensities["index"] = predict_input.index.values.astype(np.int32) - library.add_matrix( - pred_intensities["intensities"], - FragmentType.PRED, - pred_intensities["annotation"], - pred_intensities["index"], - ) + if chunk: + library.add_list_of_predicted_intensities( + pred_intensities["intensities"], pred_intensities["annotation"], pred_intensities["chunk_indices"] + ) + else: + library.add_intensities(pred_intensities["intensities"], fragment_type=FragmentType.PRED) library.add_column(pred_irts["irt"].squeeze(), name="PREDICTED_IRT") library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) predict_step.mark_done() diff --git a/oktoberfest/utils/__init__.py b/oktoberfest/utils/__init__.py index 0b9a81fe..698248f5 100644 --- a/oktoberfest/utils/__init__.py +++ b/oktoberfest/utils/__init__.py @@ -2,5 +2,6 @@ from .config import Config from .example_configs import * +from .groupiterator import group_iterator from .multiprocessing_pool import JobPool from .process_step import ProcessStep diff --git a/oktoberfest/utils/groupiterator.py b/oktoberfest/utils/groupiterator.py new file mode 100644 index 00000000..76aed02c --- /dev/null +++ b/oktoberfest/utils/groupiterator.py @@ -0,0 +1,27 @@ +from typing import Optional + +import pandas as pd + + +def group_iterator(df, group_by_column: str, max_batch_size: Optional[int] = None): + # Group the dataframe by the specified column + grouped = df.groupby(group_by_column) + + for _, group_df in grouped: + # Get the indices of the current group + indices = group_df.index.to_numpy() + if max_batch_size is None: + yield indices + continue + + # Calculate the number of full batches + num_full_batches = len(indices) // max_batch_size + + # Yield full batches + for i in range(num_full_batches): + yield indices[i * max_batch_size : (i + 1) * max_batch_size] + + # Yield the remaining elements as the last batch + remainder = len(indices) % max_batch_size + if remainder > 0: + yield indices[num_full_batches * max_batch_size :] diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index bde27fc3..83819351 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -29,7 +29,7 @@ def test_prosit_tmt(self): library.obs, model_name="Prosit_2020_irt_TMT", server_url="koina.wilhelmlab.org:443", ssl=True ) - library.add_matrix(pred_intensities["intensities"], FragmentType.PRED) + library.add_intensities(pred_intensities["intensities"], FragmentType.PRED) library.add_column(pred_irt["irt"].squeeze(), name="PREDICTED_IRT") library_expected = Spectra.from_hdf5(Path(__file__).parent / "data" / "predictions" / "library_output.h5ad.gz") From 144bf2d1adb2205bf4cec29b30cb45541ee925f6 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 14:52:13 +0200 Subject: [PATCH 077/112] cleanup, fixing typeguard, mypy, and docstrings --- oktoberfest/data/spectra.py | 31 ++++++++--- oktoberfest/predict/predict.py | 88 +++++++++++++++++++++--------- oktoberfest/runner.py | 39 ++++++------- oktoberfest/utils/groupiterator.py | 21 ++++++- 4 files changed, 121 insertions(+), 58 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index 40070dad..d63fd08a 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -146,10 +146,28 @@ def add_matrix_from_hdf5(self, intensity_data: pd.DataFrame, fragment_type: Frag self.layers[layer] = scipy.sparse.csr_matrix(intensity_data) def add_mzs(self, mzs: np.ndarray, fragment_type: FragmentType): + """ + Add mass to charge ratios. + + This function adds a matrix of mass to charge ratios of shape (PSMs x fragment ions) + to this data object. + + :param mzs: the mass to charge ratio array + :param fragment_type: the type of mzs to add. Currently, only FragmentType.MZ is supported. + """ layer = self._resolve_layer_name(fragment_type) self.layers[layer] = csr_matrix(mzs) def add_intensities(self, intensities: np.ndarray, fragment_type: FragmentType): + """ + Add intensities. + + This function adds a matrix of fragment intensities of shape (PSMs x fragment ions) + to this data object. + + :param intensities: the intensity array + :param fragment_type: the type of intensities to add. Can be FragmentType.RAW or FragmentType.PRED. + """ intensities[intensities == 0] = c.EPSILON intensities[intensities == -1] = 0.0 layer = self._resolve_layer_name(fragment_type) @@ -175,15 +193,14 @@ def add_list_of_predicted_intensities( :param annotations: List of fragment ion annotations in ProForma notation with shapes (m_1), ..., (m_N) :param chunk_indices: List of row numbers with shapes (n_1), ..., (n_N) """ - sparse_intensity_matrix = dok_matrix(self.shape) - for i, a, c in zip(intensities, annotations, chunk_indices): + for ints, annots, chunk in zip(intensities, annotations, chunk_indices): self._add_predicted_intensites( mat=sparse_intensity_matrix, - intensity_data=i, - annotation=a.astype(str), - index=c, + intensity_data=ints, + annotation=annots.astype(str), + index=chunk, ) layer = self._resolve_layer_name(FragmentType.PRED) @@ -200,8 +217,8 @@ def _add_predicted_intensites( Concatenate intensity df as a sparse matrix to our data. :param mat: The lil_matrix into which to store the data - :param intensities: Intensity numpy array to add with shape (n x m) - :param annotations: Fragment ion annotations in ProForma notation with shape (m) + :param intensity_data: Intensity numpy array to add with shape (n x m) + :param annotation: Fragment ion annotations in ProForma notation with shape (m) :param index: Row numbers with shape (n) """ # ensure intensities are properly masked where required (alphapept does not do that) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index df395896..64f18c86 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -1,6 +1,6 @@ import logging import re -from typing import Dict, List, Tuple, Union +from typing import Dict, List, Optional, Tuple, Union import anndata import numpy as np @@ -15,38 +15,76 @@ def predict( - data: pd.DataFrame, chunk: bool = False, **kwargs -) -> Dict[str, Union[np.ndarray, List[np.ndarray], List[pd.Series]]]: + data: pd.DataFrame, chunk_idx: Optional[List[pd.Index]] = None, **kwargs +) -> Union[Dict[str, List[np.ndarray]], Dict[str, np.ndarray]]: """ Retrieve predictions from koina. This function takes a dataframe containing information about PSMS and predicts peptide properties using a koina server. The configuration of koina is set using the kwargs. See the koina predict function for details. TODO, link this properly. + The function either predicts everything at once by concatenating all prediction results + into single numpy arrays, or returns a list of individual numpy arrays, following the + indices provided by optionally provided chunks of the dataframe. :param data: Dataframe containing the data for the prediction. - :param chunk: whether to chunk by peptide length. This is required if padding should - be avoided when predicting peptides of different length. For alphapept, this is required - as padding is only performed within one batch, leading to different sizes of arrays between - individual prediction batches. When chunk is true, only batches with the same length are - concatenated and a list of concatenated batches for each peptide length is returned instead. + :param chunk_idx: The chunked indices of the provided dataframe. This is required in some cases, + e.g. if padding should be avoided when predicting peptides of different length. + For alphapept, this is required as padding is only performed within one batch, leading to + different sizes of arrays between individual prediction batches that cannot be concatenated. :param kwargs: Additional keyword arguments forwarded to Koina::predict - :return: a dictionary with targets (keys) and predictions (values) or list of predictions if chunk is true + :return: a dictionary with targets (keys) and predictions (values). If chunk indicies are + provided, values for each target are a list of numpy array with a length equal to the number + of chunks provided, else single numpy arrays. + """ + if chunk_idx is None: + return predict_at_once(data, **kwargs) + return predict_in_chunks(data, chunk_idx, **kwargs) + + +def predict_at_once(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: + """ + Retrieve predictions from koina in one go. + + This function takes a dataframe containing information about PSMS and predicts peptide + properties using a koina server. The configuration of koina is set using the kwargs. + See the koina predict function for details. TODO, link this properly. + + :param data: Dataframe containing the data for the prediction. + :param kwargs: Additional keyword arguments forwarded to Koina::predict + + :return: a dictionary with targets (keys) and predictions (values) """ predictor = Koina(**kwargs) + return predictor.predict(data) - if chunk: - results = [] - indices = [] - for chunk_idx in group_iterator(data, "PEPTIDE_LENGTH"): - results.append(predictor.predict(data.loc[chunk_idx])) - indices.append(chunk_idx) - ret_val = {key: [item[key] for item in results] for key in results[0].keys()} - ret_val["chunk_indices"] = indices - return ret_val - else: - return predictor.predict(data) + +def predict_in_chunks(data: pd.DataFrame, chunk_idx: List[pd.Index], **kwargs) -> Dict[str, List[np.ndarray]]: + """ + Retrieve predictions from koina in chunks. + + This function takes a dataframe containing information about PSMS and predicts peptide + properties using a koina server. The configuration of koina is set using the kwargs. + See the koina predict function for details. TODO, link this properly. + + :param data: Dataframe containing the data for the prediction. + :param chunk_idx: The chunked indices of the provided dataframe. This is required in some cases, + e.g. if padding should be avoided when predicting peptides of different length. + For alphapept, this is required as padding is only performed within one batch, leading to + different sizes of arrays between individual prediction batches that cannot be concatenated. + :param kwargs: Additional keyword arguments forwarded to Koina::predict + + :return: a dictionary with targets (keys) and list of predictions (values) with a length equal + to the number of chunks provided. + """ + predictor = Koina(**kwargs) + + results = [] + for idx in chunk_idx: + results.append(predictor.predict(data.loc[idx])) + ret_val = {key: [item[key] for item in results] for key in results[0].keys()} + return ret_val def parse_fragment_labels( @@ -138,18 +176,16 @@ def ce_calibration( :return: a spectra object containing the spectral angle for each tested CE """ alignment_library = _prepare_alignment_df(library, ce_range=ce_range, group_by_charge=group_by_charge) - chunk = False if "alphapept" in model_name.lower(): - chunk = True + chunk_idx = list(group_iterator(df=alignment_library.obs, group_by_column="PEPTIDE_LENGTH")) alignment_library.obs["INSTRUMENT_TYPES"] = "QE" - - intensities = predict(alignment_library.obs, chunk=chunk, model_name=model_name, **server_kwargs) - if chunk: + chunked_intensities = predict_in_chunks(data=alignment_library.obs, chunk_idx=chunk_idx, **server_kwargs) alignment_library.add_list_of_predicted_intensities( - intensities["intensities"], intensities["annotation"], intensities["chunk_indices"] + chunked_intensities["intensities"], chunked_intensities["annotation"], chunk_idx ) else: + intensities = predict_at_once(data=alignment_library.obs, **server_kwargs) alignment_library.add_intensities(intensities["intensities"], fragment_type=FragmentType.PRED) _alignment(alignment_library) return alignment_library diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 5378c404..66511ec3 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -40,8 +40,8 @@ def _make_predictions_error_callback(failure_progress_tracker, failure_lock, err def _make_predictions(int_model, irt_model, predict_kwargs, queue_out, progress, lock, batch_df): predictions = { - **pr.predict(batch_df, model_name=int_model, **predict_kwargs), - **pr.predict(batch_df, model_name=irt_model, **predict_kwargs), + **pr.predict_at_once(batch_df, model_name=int_model, **predict_kwargs), + **pr.predict_at_once(batch_df, model_name=irt_model, **predict_kwargs), } queue_out.put((predictions, batch_df)) with lock: @@ -340,7 +340,7 @@ def generate_spectral_lib(config_path: Union[str, Path]): failed_batch_file = config.output / "data" / "speclib_failed_batches.pkl" writer, out_file = _get_writer_and_output(results_path, config.output_format) batches, mode = _get_batches_and_mode( - out_file, failed_batch_file, spec_library.obs["PEPTIDE_LENGTH"], batchsize, config.models["intensity"] + out_file, failed_batch_file, spec_library.obs, batchsize, config.models["intensity"] ) speclib = writer(out_file, mode=mode, min_intensity_threshold=config.min_intensity) n_batches = len(batches) @@ -485,36 +485,29 @@ def _calculate_features(spectra_file: Path, config: Config): predict_step = ProcessStep(config.output, "predict." + spectra_file.stem) if not predict_step.is_done(): - chunk = False - if "alphapept" in config.models["intensity"].lower(): - chunk = True - library.obs["INSTRUMENT_TYPES"] = "QE" - - if "done" in list(library.obs.columns): - predict_input = library.obs[~library.obs["done"]] - else: - predict_input = library.obs - predict_kwargs = { "server_url": config.prediction_server, "ssl": config.ssl, } - pred_intensities = pr.predict( - data=predict_input, - model_name=config.models["intensity"], - chunk=chunk, - **predict_kwargs, - ) - - pred_irts = pr.predict(data=library.obs, model_name=config.models["irt"], **predict_kwargs) - if chunk: + if "alphapept" in config.models["intensity"].lower(): + chunk_idx = list(group_iterator(df=library.obs, group_by_column="PEPTIDE_LENGTH")) + library.obs["INSTRUMENT_TYPES"] = "QE" + chunk_pred_intensities = pr.predict_in_chunks( + data=library.obs, + chunk_idx=chunk_idx, + **predict_kwargs, + ) library.add_list_of_predicted_intensities( - pred_intensities["intensities"], pred_intensities["annotation"], pred_intensities["chunk_indices"] + chunk_pred_intensities["intensities"], chunk_pred_intensities["annotation"], chunk_idx ) else: + pred_intensities = pr.predict_at_once(data=library.obs, **predict_kwargs) library.add_intensities(pred_intensities["intensities"], fragment_type=FragmentType.PRED) + + pred_irts = pr.predict_at_once(data=library.obs, model_name=config.models["irt"], **predict_kwargs) library.add_column(pred_irts["irt"].squeeze(), name="PREDICTED_IRT") + library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) predict_step.mark_done() diff --git a/oktoberfest/utils/groupiterator.py b/oktoberfest/utils/groupiterator.py index 76aed02c..919afbd0 100644 --- a/oktoberfest/utils/groupiterator.py +++ b/oktoberfest/utils/groupiterator.py @@ -1,9 +1,26 @@ -from typing import Optional +from typing import List, Optional, Union import pandas as pd -def group_iterator(df, group_by_column: str, max_batch_size: Optional[int] = None): +def group_iterator(df: pd.DataFrame, group_by_column: Union[str, List[str]], max_batch_size: Optional[int] = None): + """ + Returns an index iterator producing chunks for each group of a given max size. + + This function groups a given dataframe by the specified column(s) and provides an iterator + yielding the dataframe indicies in chunks of up to a given number of elements in each + group. If the remaining elements of a group or the total number of elements in a group are + less than the given number, the chunk is smaller, accordingly. If no upper limit is provided, + the indices for the entire group are returned at once irrespective of the group size. + + :param df: The dataframe to produce the iterator from + :param group_by_column: The name(s) of the columns to group the dataframe by + :param max_batch_size: Optional upper limit for the number of indices within each group that + are yieled at once. + + :yields: An iterator yielding the dataframe index in batches containing only one group and up + to the provided number of elements at once + """ # Group the dataframe by the specified column grouped = df.groupby(group_by_column) From 2287571b5c4a6e61d0964f7005ece9bcf541ecaf Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 15:24:53 +0200 Subject: [PATCH 078/112] add new prediction functions to pr API docs --- docs/API.rst | 18 +++++++++++------- docs/conf.py | 1 + 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/API.rst b/docs/API.rst index 7e29398a..c05b8e12 100644 --- a/docs/API.rst +++ b/docs/API.rst @@ -62,23 +62,27 @@ Predicting: :code:`pr` .. currentmodule:: oktoberfest -All things predictions +Access to functions that communicate with a Koina server to retrieve predictions from various prediction models. -Koina interface -~~~~~~~~~~~~~~~ +High level features +~~~~~~~~~~~~~~~~~~~ .. autosummary:: :toctree: api/pr - pr.predict + pr.predict_intensities + pr.predict_rt + pr.ce_calibration -Postprocessing koina response -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Koina interface +~~~~~~~~~~~~~~~ .. autosummary:: :toctree: api/pr - pr.parse_fragment_labels + pr.predict + pr.predict_at_once + pr.predict_in_chunks Rescoring: :code:`re` diff --git a/docs/conf.py b/docs/conf.py index 87b9b26f..ae07d72d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -195,6 +195,7 @@ scipy=("https://docs.scipy.org/doc/scipy/", None), seaborn=("https://seaborn.pydata.org/", None), sklearn=("https://scikit-learn.org/stable/", None), + anndata=("https://anndata.readthedocs.io/en/stable", None), ) From 614a208871b91d97ec793b2c81ae6c33e07c94e7 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 16:34:57 +0200 Subject: [PATCH 079/112] added optional instrument_type param to config --- docs/_static/custom_cookietemple.css | 4 ++ docs/config.rst | 100 ++++++++++++++------------- oktoberfest/utils/config.py | 15 ++++ 3 files changed, 71 insertions(+), 48 deletions(-) diff --git a/docs/_static/custom_cookietemple.css b/docs/_static/custom_cookietemple.css index 0c37842e..553419bd 100644 --- a/docs/_static/custom_cookietemple.css +++ b/docs/_static/custom_cookietemple.css @@ -48,6 +48,10 @@ table.align-default { padding-left: 50px; } +.main-config-table tbody tr:nth-child(n + 7):nth-child(-n + 7) td:nth-child(1) { + padding-left: 50px; +} + .lib-rescore-config-table tbody tr:nth-child(n + 2):nth-child(-n + 5) diff --git a/docs/config.rst b/docs/config.rst index 0474ba36..51906388 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -1,36 +1,42 @@ Configuration ============= -The following provides an overview of all available flags in the configuration file to use the high level API and run jobs. +The following provides an overview of all available flags in the configuration file to use the high level API and run jobs. Parameters may be applicable to more than one job type and are collected within indivdual tables. -Always required ---------------- +Always applicable +----------------- .. table:: :class: fixed-table main-config-table - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +============================+====================================================================================================================+ - | type | The type of job; can be one of "CollisionEnergCalibration", "SpectralLibraryGeneration" or "Rescoring" | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | tag | Optional mass tag Can be "tmt", "tmtpro", "itraq4" or "itraq8"; default is "" | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | models | Contains information about the used models for peptide property prediction (see following 2 nested parameters) | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | intensity | Name of the model used for fragment intensity prediction | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | irt | Name of the model used for indexed retention time prediction | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | prediction_server | Server and port for obtaining peptide property predictions; default: "koina.wilhelmlab.org:443" | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | ssl | Use ssl when making requests to the prediction server, can be true or false; default = true | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - | output | Path to the output folder (relative to the location of the config file); default = "./" | - +----------------------------+--------------------------------------------------------------------------------------------------------------------+ - -Required for CE calibration and rescoring ------------------------------------------ + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +============================+============================================================================================================================================================================================================================================================================================+ + | type | The type of job; can be one of "CollisionEnergCalibration", "SpectralLibraryGeneration" or "Rescoring" | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | tag | Optional mass tag Can be "tmt", "tmtpro", "itraq4" or "itraq8"; default is "" | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | models | Contains information about the used models for peptide property prediction (see following 2 nested parameters) | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | intensity | Name of the model used for fragment intensity prediction | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | irt | Name of the model used for indexed retention time prediction | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | inputs | Contains information about inputs and the type of the inputs (see following nested parameter) | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | instrument_type | The type of mass spectrometer used to measure the spectra. Superseeds the value read from the mzML file (default). When predicting intensities with AlphaPept, choose one of ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"], if the instrument type of your data is not supported. | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | numThreads | Number of raw/mzml files processed in parallel (parallelisation on file level); more processes than files has no effect and should be avoided; for spectral library generation, the number of parallel prediction processes, needs to be balanced with batchsize in this case; default = 1 | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | prediction_server | Server and port for obtaining peptide property predictions; default: "koina.wilhelmlab.org:443" | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ssl | Use ssl when making requests to the prediction server, can be true or false; default = true | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | output | Path to the output folder (relative to the location of the config file); default = "./" | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Applicable to CE calibration and rescoring +------------------------------------------ .. table:: :class: fixed-table lib-rescore-config-table @@ -48,8 +54,6 @@ Required for CE calibration and rescoring +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | spectra_type | Format description for files containing spectra; can be "raw", "mzml", "d" or "hdf"; default = "raw"; in case of mixed mzML/RAW input, select "raw"; in case of mixed d/hdf input select "d" | +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | numThreads | Number of raw/mzml files processed in parallel (parallelisation on file level); more processes than files has no effect and should be avoided; for spectral library generation, the number of parallel prediction processes, needs to be balanced with batchsize in this case; default = 1 | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | thermoExe | Path to ThermoRawFileParser executable; needed if spectra are provided in RAW format; default "ThermoRawFileParser.exe" | +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | massTolerance | Defines the allowed tolerance between theoretical and experimentally observered fragment mass during peak annotation; default = 20 (FTMS), 40 (TOF), 0.35 (ITMS) | @@ -63,8 +67,24 @@ Required for CE calibration and rescoring | use_ransac_model | Boolean that determines whether or not to use a ransac regression model for calibration refinement. This is recommended for timsTOF data. Default is false. | +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Additional parameters required for spectral library generation --------------------------------------------------------------- +Applicable to rescoring +----------------------- + +.. table:: + :class: fixed-table + + +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +============================+==================================================================================================================================================================================+ + | fdr_estimation_method | Method used for target / decoy separation and FDR estimation on PSM and peptide level: "percolator" or "mokapot"; default = "mokapot" | + +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | allFeatures | Defines whether all features should be used; can be True or False; default = False | + +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | regressionMethod | Regression method for curve fitting (mapping from predicted iRT values to experimental retention times); can be "spline", "lowess", or "logistic"; default = "spline" | + +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Applicable to spectral library generation +----------------------------------------- .. table:: :class: fixed-table lib-config-table @@ -93,8 +113,8 @@ Additional parameters required for spectral library generation | format | Output format of the generated spectral library; can be "spectronaut" or "msp"; default = "msp" | +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Additional parameters required for in-silico digestion ------------------------------------------------------- +Applicable to in-silico digestion +--------------------------------- .. table:: :class: fixed-table digest-config-table @@ -117,20 +137,4 @@ Additional parameters required for in-silico digestion | specialAas | Special amino acids for decoy generation; default = "KR" | +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | db | Defines whether the digestion should contain only targets, only decoys or both (concatenated); can be "target", "decoy" or "concat"; default = "concat" | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Additional parameters required for rescoring --------------------------------------------- - -.. table:: - :class: fixed-table - - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +============================+==================================================================================================================================================================================+ - | fdr_estimation_method | Method used for target / decoy separation and FDR estimation on PSM and peptide level: "percolator" or "mokapot"; default = "mokapot" | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | allFeatures | Defines whether all features should be used; can be True or False; default = False | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | regressionMethod | Regression method for curve fitting (mapping from predicted iRT values to experimental retention times); can be "spline", "lowess", or "logistic"; default = "spline" | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ \ No newline at end of file diff --git a/oktoberfest/utils/config.py b/oktoberfest/utils/config.py index dfccab0e..8ffbbcd8 100644 --- a/oktoberfest/utils/config.py +++ b/oktoberfest/utils/config.py @@ -182,6 +182,11 @@ def library_input_type(self) -> str: else: raise ValueError("No library input file type (fasta or peptides) specified in config file.") + @property + def instrument_type(self) -> str: + """Get type of mass spectrometer from the config file (superseeds value read from from mzML).""" + return self.inputs.get("instrument_type").upper() + ##################################### # these are fasta digestion options # ##################################### @@ -315,6 +320,16 @@ def check(self): if self.job_type == "SpectralLibraryGeneration": self._check_for_speclib() + if "alphapept" in self.models["intensity"].lower(): + instrument_type = self.instrument_type + if instrument_type is not None and instrument_type not in ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"]: + valid_alphapept_instrument_types = ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"] + raise ValueError( + f"The chosen intensity model {self.models['intensity']} does not supported the specified instrument type " + f"{instrument_type}. Either let Oktoberfest read the instrument type from the mzML file, or provide one " + f"of {valid_alphapept_instrument_types}." + ) + def _check_for_speclib(self): if self.fragmentation == "hcd" and self.models["intensity"].lower().endswith("cid"): raise AssertionError( From c85341c4aae50e6f9940bc3a83c1dd914aca6163 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 16:36:14 +0200 Subject: [PATCH 080/112] cleanup, use high level pred functions --- oktoberfest/predict/predict.py | 96 ++++++++++++++-------------- oktoberfest/runner.py | 23 +++---- tests/unit_tests/test_predictions.py | 14 ++-- 3 files changed, 63 insertions(+), 70 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 64f18c86..49500aa2 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -1,5 +1,4 @@ import logging -import re from typing import Dict, List, Optional, Tuple, Union import anndata @@ -14,11 +13,54 @@ logger = logging.getLogger(__name__) +def predict_intensities(data: anndata.AnnData, chunk_idx: Optional[List[pd.Index]] = None, **kwargs): + """ + Retrieve intensity predictions from koina and add them to the provided data object. + + This function takes a dataframe containing information about PSMS and predicts intensities using + a koina server. The configuration of koina is set using the kwargs. + The function either predicts everything at once by concatenating all prediction results + into single numpy arrays, or returns a list of individual numpy arrays, following the + indices provided by optionally provided chunks of the dataframe. + + :param data: Anndata object containing the required data for prediction and to store the + predictions in after retrieval from the server. + :param chunk_idx: The chunked indices of the provided dataframe. This is required in some cases, + e.g. if padding should be avoided when predicting peptides of different length. + For alphapept, this is required as padding is only performed within one batch, leading to + different sizes of arrays between individual prediction batches that cannot be concatenated. + :param kwargs: Additional keyword arguments forwarded to Koina::predict + """ + if chunk_idx is None: + intensities = predict_at_once(data=data.obs, **kwargs) + data.add_intensities(intensities["intensities"], fragment_type=FragmentType.PRED) + else: + chunked_intensities = predict_in_chunks(data=data.obs, chunk_idx=chunk_idx, **kwargs) + data.add_list_of_predicted_intensities( + chunked_intensities["intensities"], chunked_intensities["annotation"], chunk_idx + ) + + +def predict_rt(data: anndata.AnnData, **kwargs): + """ + Retrieve retention time predictions from koina and add them to the provided data object. + + This function takes a dataframe containing information about PSMS and predicts retention time + using a koina server. The configuration of koina is set using the kwargs. + + :param data: Anndata object containing the data required for prediction and to store the + predictions in after retrieval from the server. + :param kwargs: Additional keyword arguments forwarded to Koina::predict + """ + pred_irts = predict_at_once(data=data.obs, **kwargs) + data.add_column(pred_irts["irt"].squeeze(), name="PREDICTED_IRT") + + def predict( data: pd.DataFrame, chunk_idx: Optional[List[pd.Index]] = None, **kwargs ) -> Union[Dict[str, List[np.ndarray]], Dict[str, np.ndarray]]: """ - Retrieve predictions from koina. + Retrieve and return predictions from koina. This function takes a dataframe containing information about PSMS and predicts peptide properties using a koina server. The configuration of koina is set using the kwargs. @@ -45,7 +87,7 @@ def predict( def predict_at_once(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: """ - Retrieve predictions from koina in one go. + Retrieve and return predictions from koina in one go. This function takes a dataframe containing information about PSMS and predicts peptide properties using a koina server. The configuration of koina is set using the kwargs. @@ -62,7 +104,7 @@ def predict_at_once(data: pd.DataFrame, **kwargs) -> Dict[str, np.ndarray]: def predict_in_chunks(data: pd.DataFrame, chunk_idx: List[pd.Index], **kwargs) -> Dict[str, List[np.ndarray]]: """ - Retrieve predictions from koina in chunks. + Retrieve and return predictions from koina in chunks. This function takes a dataframe containing information about PSMS and predicts peptide properties using a koina server. The configuration of koina is set using the kwargs. @@ -87,42 +129,6 @@ def predict_in_chunks(data: pd.DataFrame, chunk_idx: List[pd.Index], **kwargs) - return ret_val -def parse_fragment_labels( - spectra_labels: np.ndarray, precursor_charges: np.ndarray, seq_lengths: np.ndarray -) -> Dict[str, np.ndarray]: - """Uses regex to parse labels.""" - pattern = rb"([y|b])([0-9]{1,2})\+([1-3])" - fragment_types = [] - fragment_numbers = [] - fragment_charges = [] - for spectrum_labels in spectra_labels: - types = [] - numbers = [] - charges = [] - for label in spectrum_labels: - match = re.match(pattern, label) - if match: - groups = match.groups() - types.append(groups[0].decode()) - numbers.append(int(groups[1])) - charges.append(int(groups[2])) - else: - raise ValueError(f"String {label} does not match the expected fragment label pattern") - fragment_types.append(types) - fragment_numbers.append(numbers) - fragment_charges.append(charges) - - fragment_type_array = np.array(fragment_types) - fragment_number_array = np.array(fragment_numbers) - fragment_charge_array = np.array(fragment_charges) - mask = np.where((fragment_charge_array > precursor_charges) | (fragment_number_array >= seq_lengths)) - fragment_type_array[mask] = "N" - fragment_number_array[mask] = 0 - fragment_charge_array[mask] = 0 - - return {"type": fragment_type_array, "number": fragment_number_array, "charge": fragment_charge_array} - - def _prepare_alignment_df(library: Spectra, ce_range: Tuple[int, int], group_by_charge: bool = False) -> Spectra: """ Prepare an alignment DataFrame from the given Spectra library. @@ -179,14 +185,10 @@ def ce_calibration( if "alphapept" in model_name.lower(): chunk_idx = list(group_iterator(df=alignment_library.obs, group_by_column="PEPTIDE_LENGTH")) - alignment_library.obs["INSTRUMENT_TYPES"] = "QE" - chunked_intensities = predict_in_chunks(data=alignment_library.obs, chunk_idx=chunk_idx, **server_kwargs) - alignment_library.add_list_of_predicted_intensities( - chunked_intensities["intensities"], chunked_intensities["annotation"], chunk_idx - ) else: - intensities = predict_at_once(data=alignment_library.obs, **server_kwargs) - alignment_library.add_intensities(intensities["intensities"], fragment_type=FragmentType.PRED) + chunk_idx = None + + predict_intensities(data=alignment_library, chunk_idx=chunk_idx, **server_kwargs) _alignment(alignment_library) return alignment_library diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 66511ec3..4e923e0c 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -22,7 +22,7 @@ from oktoberfest import preprocessing as pp from oktoberfest import rescore as re -from .data.spectra import FragmentType, Spectra +from .data.spectra import Spectra from .utils import Config, JobPool, ProcessStep, group_iterator logger = logging.getLogger(__name__) @@ -124,6 +124,9 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file file_to_load = spectra_dir / spectra_file.with_suffix(".hdf").name pp.convert_d_to_hdf(spectra_file, file_to_load) spectra = pp.load_spectra(file_to_load, tims_meta_file=tims_meta_file) + config_instrument_type = config.instrument_type + if config_instrument_type is not None: + spectra["INSTRUMENT_TYPES"] = config_instrument_type search = pp.load_search(config.output / "msms" / spectra_file.with_suffix(".rescore").name) library = pp.merge_spectra_and_peptides(spectra, search) aspec = pp.annotate_spectral_library( @@ -492,21 +495,13 @@ def _calculate_features(spectra_file: Path, config: Config): if "alphapept" in config.models["intensity"].lower(): chunk_idx = list(group_iterator(df=library.obs, group_by_column="PEPTIDE_LENGTH")) - library.obs["INSTRUMENT_TYPES"] = "QE" - chunk_pred_intensities = pr.predict_in_chunks( - data=library.obs, - chunk_idx=chunk_idx, - **predict_kwargs, - ) - library.add_list_of_predicted_intensities( - chunk_pred_intensities["intensities"], chunk_pred_intensities["annotation"], chunk_idx - ) else: - pred_intensities = pr.predict_at_once(data=library.obs, **predict_kwargs) - library.add_intensities(pred_intensities["intensities"], fragment_type=FragmentType.PRED) + chunk_idx = None + pr.predict_intensities( + data=library, chunk_idx=chunk_idx, model_name=config.models["intensity"], **predict_kwargs + ) - pred_irts = pr.predict_at_once(data=library.obs, model_name=config.models["irt"], **predict_kwargs) - library.add_column(pred_irts["irt"].squeeze(), name="PREDICTED_IRT") + pr.predict_rt(data=library, model_name=config.models["irt"], **predict_kwargs) library.write_as_hdf5(config.output / "data" / spectra_file.with_suffix(".mzml.pred.hdf5").name) predict_step.mark_done() diff --git a/tests/unit_tests/test_predictions.py b/tests/unit_tests/test_predictions.py index 83819351..46873479 100644 --- a/tests/unit_tests/test_predictions.py +++ b/tests/unit_tests/test_predictions.py @@ -6,7 +6,7 @@ from oktoberfest.data import Spectra from oktoberfest.data.spectra import FragmentType -from oktoberfest.pr import predict +from oktoberfest.pr import predict_intensities, predict_rt class TestTMTProsit(unittest.TestCase): @@ -18,19 +18,15 @@ def test_prosit_tmt(self): var = Spectra._gen_vars_df() library = Spectra(obs=meta_df, var=var) library.strings_to_categoricals() - pred_intensities = predict( - library.obs, + + predict_intensities( + data=library, model_name="Prosit_2020_intensity_TMT", server_url="koina.wilhelmlab.org:443", ssl=True, targets=["intensities", "annotation"], ) - pred_irt = predict( - library.obs, model_name="Prosit_2020_irt_TMT", server_url="koina.wilhelmlab.org:443", ssl=True - ) - - library.add_intensities(pred_intensities["intensities"], FragmentType.PRED) - library.add_column(pred_irt["irt"].squeeze(), name="PREDICTED_IRT") + predict_rt(data=library, model_name="Prosit_2020_irt_TMT", server_url="koina.wilhelmlab.org:443", ssl=True) library_expected = Spectra.from_hdf5(Path(__file__).parent / "data" / "predictions" / "library_output.h5ad.gz") From b4e9e309bedc773d0bc58e0cdbbbd0e9b4044408 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 17:03:14 +0200 Subject: [PATCH 081/112] support instrument type for speclib with alphapept --- docs/peptides_format.rst | 20 +++++++++------- oktoberfest/preprocessing/preprocessing.py | 4 ++++ oktoberfest/runner.py | 1 + oktoberfest/utils/config.py | 27 ++++++++++++++++++---- 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/docs/peptides_format.rst b/docs/peptides_format.rst index 5731b41f..d6dd5c6d 100644 --- a/docs/peptides_format.rst +++ b/docs/peptides_format.rst @@ -25,6 +25,10 @@ Oktoberfest expects a csv formatted file where each row represents a peptide fra +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | fragmentation | Method used for fragmentation; can be "HCD" or "CID" | +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | peptide_length | An optional column containing the sequence list. Needed only when predicting intensities with AlphaPept. | + +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | instrument_types | An optional column containing the type of mass spectrometer. Only needed when predicting intensities with AlphaPept. Choose one of ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"]. | + +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | proteins | An optional list of protein ids separate by ';' | +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -34,12 +38,12 @@ Example .. code-block:: - modified_sequence,collision_energy,precursor_charge,fragmentation,proteins - ASPTQPIQL,31,1,HCD, - KIEKLKVEL,31,2,HCD, - AAAAAWEEPSSGNGTAR,30,3,HCD,Q9P258 - AAAAAWEEPSSGNGTAR,31,2,HCD,Q9P258 - KDVDGAYM[UNIMOD:35]TK,30,2,HCD,P04264;CON__P04264 - VIGRGSYAK,35,2,HCD,P11216;P11217 + modified_sequence,collision_energy,precursor_charge,fragmentation,peptide_length,instrument_type,proteins + ASPTQPIQL,31,1,HCD,,, + KIEKLKVEL,31,2,HCD,9,QE, + AAAAAWEEPSSGNGTAR,30,3,HCD,,,Q9P258 + AAAAAWEEPSSGNGTAR,31,2,HCD,,,Q9P258 + KDVDGAYM[UNIMOD:35]TK,30,2,HCD,10,LUMOS,P04264;CON__P04264 + VIGRGSYAK,35,2,HCD,9,TIMSTOF,P11216;P11217 TTENIPGGAEEISEVLDSLENLMR,30,1,hcd,tr|A0A075B6G3|A0A075B6G3_HUMAN;sp|P11532|DMD_HUMAN;tr|A0A5H1ZRP8|A0A5H1ZRP8_HUMAN - TYCDATKCFTVTE,34,2,HCD, + TYCDATKCFTVTE,34,2,HCD,,, diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index 0e3bd49f..cd2eff3a 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -49,6 +49,7 @@ def generate_metadata( collision_energy: Union[int, List[int]], precursor_charge: Union[int, List[int]], fragmentation: Union[str, List[str]], + instrument_type: Optional[str] = None, proteins: Optional[List[List[str]]] = None, ) -> pd.DataFrame: """ @@ -64,6 +65,8 @@ def generate_metadata( :param collision_energy: A list of collision energies corresponding to each peptide. :param precursor_charge: A list of precursor charges corresponding to each peptide. :param fragmentation: A list of fragmentation methods corresponding to each peptide. + :param instrument_type: The type of mass spectrometeter. Only required when predicting intensities + with AlphaPept. Choose one of ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"]. :param proteins: An optional list of proteins associated with each peptide. If provided, it must have the same length as the number of peptides. :raises AssertionError: If the lengths of peptides and proteins is not the same. @@ -85,6 +88,7 @@ def generate_metadata( combinations, columns=["modified_sequence", "collision_energy", "precursor_charge", "fragmentation"] ) metadata["peptide_length"] = metadata["modified_sequence"].str.len() + metadata["instrument_types"] = instrument_type if proteins is not None: n_repeats = len(metadata) // len(proteins) diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 4e923e0c..aee972a0 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -226,6 +226,7 @@ def _speclib_from_digestion(config: Config) -> Spectra: collision_energy=config.collision_energy, precursor_charge=config.precursor_charge, fragmentation=config.fragmentation, + instrument_type=config.instrument_type, proteins=list(peptide_dict.values()), ) library_file = config.output / "prosit_input.csv" diff --git a/oktoberfest/utils/config.py b/oktoberfest/utils/config.py index 8ffbbcd8..98b4c65a 100644 --- a/oktoberfest/utils/config.py +++ b/oktoberfest/utils/config.py @@ -183,9 +183,12 @@ def library_input_type(self) -> str: raise ValueError("No library input file type (fasta or peptides) specified in config file.") @property - def instrument_type(self) -> str: + def instrument_type(self) -> Optional[str]: """Get type of mass spectrometer from the config file (superseeds value read from from mzML).""" - return self.inputs.get("instrument_type").upper() + _instrument_type = self.inputs.get("instrument_type") + if _instrument_type is None: + return None + return _instrument_type.upper() ##################################### # these are fasta digestion options # @@ -322,10 +325,10 @@ def check(self): if "alphapept" in self.models["intensity"].lower(): instrument_type = self.instrument_type - if instrument_type is not None and instrument_type not in ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"]: - valid_alphapept_instrument_types = ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"] + valid_alphapept_instrument_types = ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"] + if instrument_type is not None and instrument_type not in valid_alphapept_instrument_types: raise ValueError( - f"The chosen intensity model {self.models['intensity']} does not supported the specified instrument type " + f"The chosen intensity model {self.models['intensity']} does not support the specified instrument type " f"{instrument_type}. Either let Oktoberfest read the instrument type from the mzML file, or provide one " f"of {valid_alphapept_instrument_types}." ) @@ -352,6 +355,20 @@ def _check_for_speclib(self): raise AssertionError( f"You need to provide the fragmentation method when using the model {self.models['intensity']}." ) + if "alphapept" in self.models["intensity"].lower(): + instrument_type = self.instrument_type + valid_alphapept_instrument_types = ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"] + if instrument_type is None: + raise AssertionError( + f"The chosen intensity model {self.models['intensity']} requires an instrument type. " + f"Provide one of {valid_alphapept_instrument_types}." + ) + else: + if instrument_type not in valid_alphapept_instrument_types: + raise ValueError( + f"The chosen intensity model {self.models['intensity']} does not support the specified instrument type " + f"{instrument_type}. Provide one of {valid_alphapept_instrument_types}." + ) def __init__(self): """Initialize config file data.""" From a74275220a32a490621e55e1316c8fd39472dafa Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 19:07:20 +0200 Subject: [PATCH 082/112] do not sort by peptide length --- oktoberfest/preprocessing/preprocessing.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index cd2eff3a..beba39b5 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -37,7 +37,6 @@ def gen_lib(input_file: Union[str, Path]) -> Spectra: """ library_df = csv.read_file(input_file) library_df.columns = library_df.columns.str.upper() - library_df.sort_values("PEPTIDE_LENGTH", ascending=False, inplace=True) var_df = Spectra._gen_vars_df() spec = Spectra(obs=library_df, var=var_df) spec.var_names = var_df.index @@ -550,9 +549,7 @@ def annotate_spectral_library( :return: Spectra object containing the annotated b and y ion peaks including metadata """ logger.info("Annotating spectra...") - df_annotated_spectra = annotate_spectra(psms, mass_tol, unit_mass_tol).sort_values( - "PEPTIDE_LENGTH", ascending=False, inplace=True - ) + df_annotated_spectra = annotate_spectra(psms, mass_tol, unit_mass_tol) var_df = Spectra._gen_vars_df() aspec = Spectra(obs=psms.drop(columns=["INTENSITIES", "MZ"]), var=var_df) From 89d32c6b5b057d605eae8e2d324ffa17b32312c3 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 19:08:30 +0200 Subject: [PATCH 083/112] fix intensity pred / iter + change hdf5 inst type --- oktoberfest/predict/predict.py | 3 +-- oktoberfest/runner.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index 49500aa2..da3a914a 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -187,8 +187,7 @@ def ce_calibration( chunk_idx = list(group_iterator(df=alignment_library.obs, group_by_column="PEPTIDE_LENGTH")) else: chunk_idx = None - - predict_intensities(data=alignment_library, chunk_idx=chunk_idx, **server_kwargs) + predict_intensities(data=alignment_library, chunk_idx=chunk_idx, model_name=model_name, **server_kwargs) _alignment(alignment_library) return alignment_library diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index aee972a0..b6cc0499 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -111,6 +111,10 @@ def _annotate_and_get_library(spectra_file: Path, config: Config, tims_meta_file hdf5_path = data_dir / spectra_file.with_suffix(".mzml.hdf5").name if hdf5_path.is_file(): aspec = Spectra.from_hdf5(hdf5_path) + instrument_type = config.instrument_type + if instrument_type is not None and aspec.obs["INSTRUMENT_TYPES"].values[0] != instrument_type: + aspec.obs["INSTRUMENT_TYPES"] = instrument_type + aspec.write_as_hdf5(hdf5_path) else: spectra_dir = config.output / "spectra" spectra_dir.mkdir(exist_ok=True) @@ -285,8 +289,10 @@ def _get_batches_and_mode(out_file: Path, failed_batch_file: Path, obs: pd.DataF else: if "alphapept" in model.lower(): batch_iterator = group_iterator(df=obs, group_by_column="PEPTIDE_LENGTH", max_batch_size=batchsize) - - batch_iterator = (obs.index[i * batchsize : (i + 1) * batchsize] for i in range(ceil(len(obs) / batchsize))) + else: + batch_iterator = ( + obs.index[i * batchsize : (i + 1) * batchsize].to_numpy() for i in range(ceil(len(obs) / batchsize)) + ) mode = "w" return list(batch_iterator), mode @@ -498,9 +504,9 @@ def _calculate_features(spectra_file: Path, config: Config): chunk_idx = list(group_iterator(df=library.obs, group_by_column="PEPTIDE_LENGTH")) else: chunk_idx = None - pr.predict_intensities( - data=library, chunk_idx=chunk_idx, model_name=config.models["intensity"], **predict_kwargs - ) + pr.predict_intensities( + data=library, chunk_idx=chunk_idx, model_name=config.models["intensity"], **predict_kwargs + ) pr.predict_rt(data=library, model_name=config.models["irt"], **predict_kwargs) From 2ac5c46c5dc2a318ec5289e512c5f96381b9c3bc Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sun, 19 May 2024 19:14:52 +0200 Subject: [PATCH 084/112] fix spelling mistakes --- docs/peptides_format.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/peptides_format.rst b/docs/peptides_format.rst index d6dd5c6d..a9bfcc2b 100644 --- a/docs/peptides_format.rst +++ b/docs/peptides_format.rst @@ -29,7 +29,7 @@ Oktoberfest expects a csv formatted file where each row represents a peptide fra +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | instrument_types | An optional column containing the type of mass spectrometer. Only needed when predicting intensities with AlphaPept. Choose one of ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"]. | +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | proteins | An optional list of protein ids separate by ';' | + | proteins | An optional list of protein ids separated by ';' | +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -38,7 +38,7 @@ Example .. code-block:: - modified_sequence,collision_energy,precursor_charge,fragmentation,peptide_length,instrument_type,proteins + modified_sequence,collision_energy,precursor_charge,fragmentation,peptide_lengths,instrument_type,proteins ASPTQPIQL,31,1,HCD,,, KIEKLKVEL,31,2,HCD,9,QE, AAAAAWEEPSSGNGTAR,30,3,HCD,,,Q9P258 From 849cb3678adc6fe95f4294c6d7ad178c39f2a0eb Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 22 May 2024 17:07:19 +0200 Subject: [PATCH 085/112] fix add intensities using annotation order --- oktoberfest/data/spectra.py | 29 ++++++++++++++++++++--------- oktoberfest/predict/predict.py | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/oktoberfest/data/spectra.py b/oktoberfest/data/spectra.py index d63fd08a..bbd7b0bc 100644 --- a/oktoberfest/data/spectra.py +++ b/oktoberfest/data/spectra.py @@ -158,20 +158,31 @@ def add_mzs(self, mzs: np.ndarray, fragment_type: FragmentType): layer = self._resolve_layer_name(fragment_type) self.layers[layer] = csr_matrix(mzs) - def add_intensities(self, intensities: np.ndarray, fragment_type: FragmentType): + def add_intensities(self, intensities: np.ndarray, annotation: np.ndarray, fragment_type: FragmentType): """ - Add intensities. + Add predicted intensities and convert to sparse matrix. - This function adds a matrix of fragment intensities of shape (PSMs x fragment ions) - to this data object. + This function takes two numpy arrays, containing intensities and the fragment ion annotations + in ProForma notation representing the column index. + Each intensity array is reordered using the annotation to match the order of the + fragment ion annotations in self.var_names and stored as a csr_matrix. - :param intensities: the intensity array + :param intensities: intensity numpy array to add with shapes (n x m) + :param annotation: fragment ion annotation numpy array in ProForma notation with shape (... x m). Only + the first row of the annotation array is used, i.e. intensities for all PSMs must be provided in + the same order. :param fragment_type: the type of intensities to add. Can be FragmentType.RAW or FragmentType.PRED. """ intensities[intensities == 0] = c.EPSILON intensities[intensities == -1] = 0.0 + + annotation_to_index = {annot: index for index, annot in enumerate(self.var_names)} + col_index = np.vectorize(annotation_to_index.get)(annotation[0].astype(str)) + sparse_intensity_matrix = dok_matrix(self.shape) + sparse_intensity_matrix[:, col_index] = intensities + layer = self._resolve_layer_name(fragment_type) - self.layers[layer] = csr_matrix(intensities) + self.layers[layer] = csr_matrix(sparse_intensity_matrix) def add_list_of_predicted_intensities( self, @@ -184,8 +195,8 @@ def add_list_of_predicted_intensities( This function takes three lists of numpy arrays, containing intensities, the fragment ion annotations in ProForma notation representing the column index, and a numeric index representing the row index. - Each intensity array is reordered using the cooresponding annotation element to match the order of the - fragment ion annotations in self.var_names and stored to the appropriate rows of a lil_matrix, + Each intensity array is reordered using the corresponding annotation element to match the order of the + fragment ion annotations in self.var_names and stored to the appropriate rows of a dok_matrix, incrementally creating the full, sparse intensity matrix ordered by fragment types. The function then converts the matrix to csr format. @@ -216,7 +227,7 @@ def _add_predicted_intensites( """ Concatenate intensity df as a sparse matrix to our data. - :param mat: The lil_matrix into which to store the data + :param mat: The dok_matrix into which to store the data :param intensity_data: Intensity numpy array to add with shape (n x m) :param annotation: Fragment ion annotations in ProForma notation with shape (m) :param index: Row numbers with shape (n) diff --git a/oktoberfest/predict/predict.py b/oktoberfest/predict/predict.py index da3a914a..7d254d18 100644 --- a/oktoberfest/predict/predict.py +++ b/oktoberfest/predict/predict.py @@ -33,7 +33,7 @@ def predict_intensities(data: anndata.AnnData, chunk_idx: Optional[List[pd.Index """ if chunk_idx is None: intensities = predict_at_once(data=data.obs, **kwargs) - data.add_intensities(intensities["intensities"], fragment_type=FragmentType.PRED) + data.add_intensities(intensities["intensities"], intensities["annotation"], fragment_type=FragmentType.PRED) else: chunked_intensities = predict_in_chunks(data=data.obs, chunk_idx=chunk_idx, **kwargs) data.add_list_of_predicted_intensities( From b12d5129c74edb6dcc1ccd71ec08370e31d9a728 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 23 May 2024 08:22:25 +0200 Subject: [PATCH 086/112] fix annotation of raw intensities missing --- oktoberfest/preprocessing/preprocessing.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index beba39b5..41c64bda 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -553,8 +553,9 @@ def annotate_spectral_library( var_df = Spectra._gen_vars_df() aspec = Spectra(obs=psms.drop(columns=["INTENSITIES", "MZ"]), var=var_df) - aspec.var_names = var_df.index - aspec.add_intensities(np.stack(df_annotated_spectra["INTENSITIES"]), FragmentType.RAW) + aspec.add_intensities( + np.stack(df_annotated_spectra["INTENSITIES"]), aspec.var_names.values[None, ...], FragmentType.RAW + ) aspec.add_mzs(np.stack(df_annotated_spectra["MZ"]), FragmentType.MZ) aspec.add_column(df_annotated_spectra["CALCULATED_MASS"].values, "CALCULATED_MASS") aspec.strings_to_categoricals() From a5dcff5ec786260b86cd5866a4ecc49891638511 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Sat, 25 May 2024 12:16:18 +0200 Subject: [PATCH 087/112] ensure alphapept works with TMT --- oktoberfest/utils/config.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/oktoberfest/utils/config.py b/oktoberfest/utils/config.py index 98b4c65a..eeb7c7a8 100644 --- a/oktoberfest/utils/config.py +++ b/oktoberfest/utils/config.py @@ -300,22 +300,24 @@ def precursor_charge(self) -> List[int]: def check(self): """Validate the configuration.""" # check tmt tag and models + int_model = self.models["intensity"].lower() + irt_model = self.models["irt"].lower() if self.tag == "": - if "tmt" in self.models["intensity"].lower(): + if "tmt" in int_model: raise AssertionError( f"You requested the intensity model {self.models['intensity']} but provided no tag. Please check." ) - if "tmt" in self.models["irt"].lower(): + if "tmt" in irt_model: raise AssertionError( f"You requested the irt model {self.models['irt']} but provided no tag. Please check." ) else: - if "tmt" not in self.models["intensity"].lower(): + if ("alphapept" not in int_model) and ("tmt" not in int_model): raise AssertionError( f"You specified the tag {self.tag} but the chosen intensity model {self.models['intensity']} is incompatible. " "Please check and use a TMT model instead." ) - if "tmt" not in self.models["irt"].lower(): + if ("alphapept" not in irt_model) and ("tmt" not in irt_model): raise AssertionError( f"You specified the tag {self.tag} but the chosen irt model {self.models['irt']} is incompatible." " Please check and use a TMT model instead." @@ -323,7 +325,7 @@ def check(self): if self.job_type == "SpectralLibraryGeneration": self._check_for_speclib() - if "alphapept" in self.models["intensity"].lower(): + if "alphapept" in int_model: instrument_type = self.instrument_type valid_alphapept_instrument_types = ["QE", "LUMOS", "TIMSTOF", "SCIEXTOF"] if instrument_type is not None and instrument_type not in valid_alphapept_instrument_types: From 7a8921d8bf9b82498caf5902e7d153904bf8d4e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 04:31:22 +0000 Subject: [PATCH 088/112] [DEPENDABOT]: Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.14 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.11 to 1.8.14. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.11...v1.8.14) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/publish_package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_package.yml b/.github/workflows/publish_package.yml index e39e2073..a7899c68 100644 --- a/.github/workflows/publish_package.yml +++ b/.github/workflows/publish_package.yml @@ -29,7 +29,7 @@ jobs: poetry build --ansi - name: Publish package on PyPI - uses: pypa/gh-action-pypi-publish@v1.8.11 + uses: pypa/gh-action-pypi-publish@v1.8.14 with: user: __token__ password: ${{ secrets.PYPI_TOKEN }} From 02f8aa56d7efd8908a47958cebf9170093a6d6e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 04:31:26 +0000 Subject: [PATCH 089/112] [DEPENDABOT]: Bump codecov/codecov-action from 4.3.1 to 4.4.1 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.1 to 4.4.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.3.1...v4.4.1) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 5e69e59c..ad1d2e5f 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -165,4 +165,4 @@ jobs: run: nox --force-color --session=coverage -- xml -i - name: Upload coverage report - uses: codecov/codecov-action@v4.3.1 + uses: codecov/codecov-action@v4.4.1 From ab768b293d942c8e95117f97f0df4614784db4b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 04:31:29 +0000 Subject: [PATCH 090/112] [DEPENDABOT]: Bump peaceiris/actions-gh-pages from 3 to 4 Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4. - [Release notes](https://github.com/peaceiris/actions-gh-pages/releases) - [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md) - [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4) --- updated-dependencies: - dependency-name: peaceiris/actions-gh-pages dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/publish_docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index 4d136dd0..48174f5b 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -30,7 +30,7 @@ jobs: - name: Deploy if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'}} - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs/_build/html From cb29528657165873712d1fc7aa8e2b202706da46 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 29 May 2024 14:17:24 +0200 Subject: [PATCH 091/112] updated config/prediction docs and added news --- docs/jobs.rst | 9 ++++++--- docs/news.rst | 9 +++++++++ docs/predictions.rst | 6 ++++++ oktoberfest/utils/example_configs.py | 17 +++++++++++++++-- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/docs/jobs.rst b/docs/jobs.rst index 0b416cc0..cb38873d 100644 --- a/docs/jobs.rst +++ b/docs/jobs.rst @@ -59,7 +59,8 @@ Example config file: "search_results": "./msms.txt", "search_results_type": "Maxquant", "spectra": "./", - "spectra_type": "raw" + "spectra_type": "raw", + "instrument_type": "QE" }, "models": { "intensity": "Prosit_2020_intensity_HCD", @@ -115,7 +116,8 @@ Example config file: "search_results": "./msms.txt", "search_results_type": "Maxquant", "library_input": "uniprot.fasta", - "library_input_type": "fasta" + "library_input_type": "fasta", + "instrument_type": "QE" }, "models": { "intensity": "Prosit_2020_intensity_HCD", @@ -184,7 +186,8 @@ Example config file: "search_results": "./msms.txt", "search_results_type": "Maxquant", "spectra": "./", - "spectra_type": "raw" + "spectra_type": "raw", + "instrument_type": "QE" }, "models": { "intensity": "Prosit_2020_intensity_HCD", diff --git a/docs/news.rst b/docs/news.rst index 17cbd76b..6482b299 100644 --- a/docs/news.rst +++ b/docs/news.rst @@ -4,6 +4,15 @@ News .. role:: date :class: date + +Oktoberfest provides access to AlphaPept and MS2PIP predictions :date:`2024-05-29` +---------------------------------------------------------------------------------- + +| Oktoberfest 0.7.0 is published, providing access to predictions from AlphaPept and MS2PIP. This comes with a large API overhaul that allows easier access to underlying data for manual insights and analysis. +| Please note that you can now specify the instrument type in the configuration for AlphaPept predictions. +| Stay tuned for a documentation update including jupyter notebooks on how to navigate and make use of your data for manual in-depth analysis. +| This release drops python 3.8 support! + Support for timsTOF added / spectral library generation overhaul :date:`2024-01-31` ------------------------------------------------------------------------------------ diff --git a/docs/predictions.rst b/docs/predictions.rst index c61d762a..ee6b05a8 100644 --- a/docs/predictions.rst +++ b/docs/predictions.rst @@ -39,6 +39,10 @@ This is the list of currently supported and tested models for Oktoberfest provid +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `Prosit_2023_intensity_timsTOF `_ | Developed for timsTOF, tryptic and non-tryptic peptides. Latest version we commend to use for timsTOF. | +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | `AlphaPept_ms2_generic `_ | Developed for generic data support, including TMT, timsTOF and various instrument types. | + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | `ms2pip_2021_HCD `_ | Developed for HCD tryptic and non-tryptic peptides. | + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. table:: :class: fixed-table @@ -50,6 +54,8 @@ This is the list of currently supported and tested models for Oktoberfest provid +-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ | `Prosit_2020_irt_TMT `_ | Developed for TMT labeled peptides. | +-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ + | `AlphaPept_rt_generic `_ | Developed for for generic data support, including TMT, timsTOF and various instrument types. | + +-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ Once support for additional models is implemented in Oktoberfest, they will be added here. diff --git a/oktoberfest/utils/example_configs.py b/oktoberfest/utils/example_configs.py index 55298ac3..33cf1832 100644 --- a/oktoberfest/utils/example_configs.py +++ b/oktoberfest/utils/example_configs.py @@ -1,7 +1,13 @@ RESCORING = { "type": "Rescoring", "tag": "", - "inputs": {"search_results": "msms.txt", "search_results_type": "Maxquant", "spectra": "./", "spectra_type": "raw"}, + "inputs": { + "search_results": "msms.txt", + "search_results_type": "Maxquant", + "spectra": "./", + "spectra_type": "raw", + "instrument_type": "QE", + }, "output": "./out", "models": {"intensity": "Prosit_2020_intensity_HCD", "irt": "Prosit_2019_irt"}, "prediction_server": "koina.wilhelmlab.org:443", @@ -22,7 +28,13 @@ CECALIB = { "type": "CollisionEnergyCalibration", "tag": "", - "inputs": {"search_results": "msms.txt", "search_results_type": "Maxquant", "spectra": "./", "spectra_type": "raw"}, + "inputs": { + "search_results": "msms.txt", + "search_results_type": "Maxquant", + "spectra": "./", + "spectra_type": "raw", + "instrument_type": "QE", + }, "output": "./out", "models": {"intensity": "Prosit_2020_intensity_HCD", "irt": "Prosit_2019_irt"}, "prediction_server": "koina.wilhelmlab.org:443", @@ -45,6 +57,7 @@ "search_results_type": "Maxquant", "library_input": "uniprot.fasta", "library_input_type": "fasta", + "instrument_type": "QE", }, "output": "./out", "models": {"intensity": "Prosit_2020_intensity_HCD", "irt": "Prosit_2019_irt"}, From 0b0f7f8de3b5a6c5b2af02c5582079de6e0973d3 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 29 May 2024 14:28:15 +0200 Subject: [PATCH 092/112] Bump version from 0.6.2 to 0.7.0 --- .cookietemple.yml | 2 +- .github/release-drafter.yml | 4 ++-- cookietemple.cfg | 2 +- docs/conf.py | 4 ++-- oktoberfest/__init__.py | 2 +- pyproject.toml | 8 ++++---- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.cookietemple.yml b/.cookietemple.yml index 849b723b..fa7909b2 100644 --- a/.cookietemple.yml +++ b/.cookietemple.yml @@ -15,5 +15,5 @@ full_name: Victor Giurcoiu email: victor.giurcoiu@tum.de project_name: oktoberfest project_short_description: Public repo oktoberfest -version: 0.6.2 +version: 0.7.0 license: MIT diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 4a68881c..b3f04453 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,5 +1,5 @@ -name-template: "0.6.2 🌈" # <> -tag-template: 0.6.2 # <> +name-template: "0.7.0 🌈" # <> +tag-template: 0.7.0 # <> exclude-labels: - "skip-changelog" diff --git a/cookietemple.cfg b/cookietemple.cfg index c2141611..ab6d74a0 100644 --- a/cookietemple.cfg +++ b/cookietemple.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.6.2 +current_version = 0.7.0 [bumpversion_files_whitelisted] init_file = oktoberfest/__init__.py diff --git a/docs/conf.py b/docs/conf.py index ae07d72d..1099711e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -54,9 +54,9 @@ # the built documents. # # The short X.Y version. -version = "0.6.2" +version = "0.7.0" # The full version, including alpha/beta/rc tags. -release = "0.6.2" +release = "0.7.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/oktoberfest/__init__.py b/oktoberfest/__init__.py index 1e51777e..7321e69d 100644 --- a/oktoberfest/__init__.py +++ b/oktoberfest/__init__.py @@ -5,7 +5,7 @@ __author__ = """The Oktoberfest development team (Wilhelmlab at Technical University of Munich)""" __copyright__ = f"Copyright {datetime.now():%Y}, Wilhelmlab at Technical University of Munich" __license__ = "MIT" -__version__ = "0.6.2" +__version__ = "0.7.0" import logging.handlers import sys diff --git a/pyproject.toml b/pyproject.toml index ca070a24..6a825c5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "oktoberfest" -version = "0.6.2" # <> +version = "0.7.0" # <> description = "Public repo oktoberfest" authors = ["Wilhelmlab at Technical University of Munich"] license = "MIT" @@ -26,8 +26,8 @@ PyYAML = ">=5.4.1" matplotlib = "^3.6.3" seaborn = ">=0.12.2,<0.14.0" -spectrum-fundamentals = ">=0.5.0,<0.6.0" -spectrum-io = ">=0.4.3,<0.5.0" +spectrum-fundamentals = ">=0.5.4,<0.6.0" +spectrum-io = ">=0.4.4,<0.5.0" mokapot = ">=0.9.1,<0.11.0" tritonclient = {extras = ["grpc"], version = ">=2.34.0,<2.45"} numpy = ">=1.20,<1.25" @@ -66,7 +66,7 @@ openpyxl = ">=3.0.10" oktoberfest = "oktoberfest.__main__:main" [tool.poetry.group.dev.dependencies] -sphinx-autodoc-typehints = "^1.24.0" +sphinx-autodoc-typehints = ">=1.24,<3.0" [tool.black] line-length = 120 From 29fd33a88198d51e53884e80182d78882c1065cf Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 29 May 2024 14:28:45 +0200 Subject: [PATCH 093/112] updated dependencies --- poetry.lock | 20 ++++++++++---------- requirements.txt | 10 ---------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/poetry.lock b/poetry.lock index 28bda9ab..6cb4eb04 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3067,13 +3067,13 @@ files = [ [[package]] name = "spectrum-fundamentals" -version = "0.5.3" +version = "0.5.4" description = "Fundamental functions, annotation pipeline and constants for oktoberfest" optional = false python-versions = "<3.11.0,>=3.8.0" files = [ - {file = "spectrum_fundamentals-0.5.3-py3-none-any.whl", hash = "sha256:0f8b038f3984d74fa80bedd16b9097c8074306461fe9238732d60abeb169ee44"}, - {file = "spectrum_fundamentals-0.5.3.tar.gz", hash = "sha256:aa481d8bd3fca28807bdd006b9ac2d8af9900a0cd868512bfff99f93eeab5c29"}, + {file = "spectrum_fundamentals-0.5.4-py3-none-any.whl", hash = "sha256:11ff8cc4b9568dc3a3d16aa125bccf2941bb94e49fdbc4470d6903f342d64009"}, + {file = "spectrum_fundamentals-0.5.4.tar.gz", hash = "sha256:9c148e5e6623bc67135de9e29ea10a7eb32ab19bcfe2ecd9c4e2a890bb6c3dfb"}, ] [package.dependencies] @@ -3081,27 +3081,27 @@ click = ">=8.0.0" joblib = ">=1.0.1,<2.0.0" moepy = ">=1.1.4,<2.0.0" numpy = ">=1.24.1,<1.25" -pandas = ">=1.3.0,<2.0.0" +pandas = ">=1.3,<3.0" PyYAML = ">=5.4.1" rich = ">=10.3.0" scikit-learn = ">=1.0,<2.0" [[package]] name = "spectrum-io" -version = "0.4.3" +version = "0.4.4" description = "IO related functionalities for oktoberfest." optional = false python-versions = "<3.11.0,>=3.8.0" files = [ - {file = "spectrum_io-0.4.3-py3-none-any.whl", hash = "sha256:762d87f93591b69b24236793cfbe6a4b62e92be52136e628d5b0aaa3ecdda3b8"}, - {file = "spectrum_io-0.4.3.tar.gz", hash = "sha256:f1c2ef1e9fd2d3c00247c2dcb2314112ecd3aa0e78af43fc48c39e06969774ae"}, + {file = "spectrum_io-0.4.4-py3-none-any.whl", hash = "sha256:af36c4d28120edde90015476dcad0c59bbdaa223d293bb0a3e2084f468dcc9d4"}, + {file = "spectrum_io-0.4.4.tar.gz", hash = "sha256:ebbb5f39d35db616622bc68deca99335687e7beb46c4a0d41c76e4be5801e8ad"}, ] [package.dependencies] alphatims = ">=1.0.8,<2.0.0" click = ">=8.0.0" h5py = ">=3.1.0,<4.0.0" -lxml = ">=4.5.2,<5.0.0" +lxml = ">=4.5.2,<6.0.0" numpy = ">=1.18.1,<2.0.0" pandas = ">=1.3.0,<2.0.0" pymzml = ">=2.5.0,<3.0.0" @@ -3109,7 +3109,7 @@ pyteomics = ">=4.3.3,<5.0.0" PyYAML = ">=5.4.1" rich = ">=10.3.0" sortedcontainers = ">=2.4.0,<3.0.0" -spectrum-fundamentals = ">=0.5.2,<0.6.0" +spectrum-fundamentals = ">=0.5.4,<0.6.0" [[package]] name = "sphinx" @@ -3810,4 +3810,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.11.0" -content-hash = "eb37036d7a7eee12172fa64b5f7373b5b4462b822e6b77b6bd39492f60608185" +content-hash = "c07a76a7dcd26b77fb97f7229c9bb8912206cbbc8a702c0d758e69124d96492c" diff --git a/requirements.txt b/requirements.txt index eb3c7d93..7c9594ac 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ alabaster==0.7.16 ; python_version >= "3.9" and python_full_version < "3.11.0" -alphatims==1.0.8 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" anndata==0.10.7 ; python_version >= "3.9" and python_full_version < "3.11.0" annotated-types==0.6.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" anyio==4.3.0 ; python_version >= "3.9" and python_full_version < "3.11.0" @@ -53,7 +52,6 @@ marshmallow==3.21.2 ; python_full_version >= "3.9.0" and python_full_version < " matplotlib==3.9.0 ; python_version >= "3.9" and python_full_version < "3.11.0" mccabe==0.7.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" mdurl==0.1.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -moepy==1.1.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" mokapot==0.10.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" mypy-extensions==1.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" mypy==1.10.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" @@ -73,7 +71,6 @@ pluggy==1.5.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0 pre-commit-hooks==4.6.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pre-commit==3.7.1 ; python_version >= "3.9" and python_full_version < "3.11.0" protobuf==4.25.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -psutil==5.9.8 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pycodestyle==2.11.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pycparser==2.22 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" and platform_python_implementation != "PyPy" pydantic-core==2.18.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" @@ -81,17 +78,13 @@ pydantic==2.7.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11 pydocstyle==6.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pyflakes==3.2.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pygments==2.18.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -pymzml==2.5.10 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pyparsing==3.1.2 ; python_version >= "3.9" and python_full_version < "3.11.0" -pyteomics==4.7.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pytest==8.2.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" python-dateutil==2.9.0.post0 ; python_version >= "3.9" and python_full_version < "3.11.0" python-rapidjson==1.16 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pytz==2024.1 ; python_version >= "3.9" and python_full_version < "3.11.0" pyupgrade==3.15.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pyyaml==6.0.1 ; python_version >= "3.9" and python_full_version < "3.11.0" -pyzstd==0.15.10 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -regex==2024.5.15 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" requests==2.31.0 ; python_version >= "3.9" and python_full_version < "3.11.0" restructuredtext-lint==1.4.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" rich==13.7.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" @@ -107,9 +100,6 @@ shellingham==1.5.4 ; python_full_version >= "3.9.0" and python_full_version < "3 six==1.16.0 ; python_version >= "3.9" and python_full_version < "3.11.0" sniffio==1.3.1 ; python_version >= "3.9" and python_full_version < "3.11.0" snowballstemmer==2.2.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -sortedcontainers==2.4.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -spectrum-fundamentals==0.5.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -spectrum-io==0.4.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" sphinx-autobuild==2024.4.16 ; python_version >= "3.9" and python_full_version < "3.11.0" sphinx-autodoc-typehints==1.25.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" sphinx-click==6.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" From 1d5093ef848fbda02ef90cb2d2529d9c99556731 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 04:45:28 +0000 Subject: [PATCH 094/112] [DEPENDABOT]: Bump xdoctest from 1.1.3 to 1.1.5 Bumps [xdoctest](https://github.com/Erotemic/xdoctest) from 1.1.3 to 1.1.5. - [Release notes](https://github.com/Erotemic/xdoctest/releases) - [Changelog](https://github.com/Erotemic/xdoctest/blob/main/CHANGELOG.md) - [Commits](https://github.com/Erotemic/xdoctest/compare/v1.1.3...v1.1.5) --- updated-dependencies: - dependency-name: xdoctest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6cb4eb04..b0820cae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3767,13 +3767,13 @@ files = [ [[package]] name = "xdoctest" -version = "1.1.3" +version = "1.1.5" description = "A rewrite of the builtin doctest module" optional = false python-versions = ">=3.6" files = [ - {file = "xdoctest-1.1.3-py3-none-any.whl", hash = "sha256:9360535bd1a971ffc216d9613898cedceb81d0fd024587cc3c03c74d14c00a31"}, - {file = "xdoctest-1.1.3.tar.gz", hash = "sha256:84e76a42a11a5926ff66d9d84c616bc101821099672550481ad96549cbdd02ae"}, + {file = "xdoctest-1.1.5-py3-none-any.whl", hash = "sha256:f36fe64d7c0ad0553dbff39ff05c43a0aab69d313466f24a38d00e757182ade0"}, + {file = "xdoctest-1.1.5.tar.gz", hash = "sha256:89b0c3ad7fe03a068e22a457ab18c38fc70c62329c2963f43954b83c29374e66"}, ] [package.dependencies] From e11c76f5b5fd1e881a838ad251e08f9e456fe150 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 04:07:16 +0000 Subject: [PATCH 095/112] [DEPENDABOT]: Bump codecov/codecov-action from 4.4.1 to 4.5.0 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.4.1 to 4.5.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.4.1...v4.5.0) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 11d6a6ed..f1ae4eaa 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -165,4 +165,4 @@ jobs: run: nox --force-color --session=coverage -- xml -i - name: Upload coverage report - uses: codecov/codecov-action@v4.4.1 + uses: codecov/codecov-action@v4.5.0 From 57c641956a4335d5b4a12ef41e82de0bfe30e40b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 04:07:18 +0000 Subject: [PATCH 096/112] [DEPENDABOT]: Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.14 to 1.9.0. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.14...v1.9.0) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/publish_package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_package.yml b/.github/workflows/publish_package.yml index a7899c68..549ce18d 100644 --- a/.github/workflows/publish_package.yml +++ b/.github/workflows/publish_package.yml @@ -29,7 +29,7 @@ jobs: poetry build --ansi - name: Publish package on PyPI - uses: pypa/gh-action-pypi-publish@v1.8.14 + uses: pypa/gh-action-pypi-publish@v1.9.0 with: user: __token__ password: ${{ secrets.PYPI_TOKEN }} From 5b746b7e4f3e25ddeae3669595e41e9581fc54c3 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 26 Jun 2024 16:08:14 +0200 Subject: [PATCH 097/112] added version option --- oktoberfest/__main__.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/oktoberfest/__main__.py b/oktoberfest/__main__.py index 1a3cbb4f..5dbbab38 100644 --- a/oktoberfest/__main__.py +++ b/oktoberfest/__main__.py @@ -2,7 +2,7 @@ from rich import traceback -from oktoberfest import runner +from oktoberfest import __version__, runner """triqler.__main__: executed when bootstrap directory is called as script.""" @@ -12,14 +12,22 @@ def _parse_args(): """Parse search_dir and config_path arguments.""" - apars = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + apars = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) # , add_help=False) + # option_group = apars.add_argument_group("optional arguments") + # option_group.add_argument("-h", "--help", action="help", help="show this help message and exit") + + apars.add_argument("-v", "--version", action="version", version=f"{__version__}") apars.add_argument( + "-c", "--config_path", default=None, - metavar="C", - help="""Path to config file in json format. \\ - If this argument is not specified, we try to find and use a file called config.json in .""", + metavar="CONFIG", + required=True, + help=( + "Path to config file in json format." + "If this argument is not specified, we try to find and use a file called config.json in ." + ), ) args = apars.parse_args() From f78be1f32ccee424598d3720b7099f97aaa7556f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 04:17:17 +0000 Subject: [PATCH 098/112] [DEPENDABOT]: Bump tritonclient from 2.44.0 to 2.47.0 Bumps [tritonclient](https://github.com/triton-inference-server/client) from 2.44.0 to 2.47.0. - [Commits](https://github.com/triton-inference-server/client/commits) --- updated-dependencies: - dependency-name: tritonclient dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 18 +++++++++--------- pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6cb4eb04..e66fbe96 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3435,29 +3435,29 @@ threadpoolctl = ">=3.1.0,<4.0.0" [[package]] name = "tritonclient" -version = "2.44.0" +version = "2.47.0" description = "Python client library and utilities for communicating with Triton Inference Server" optional = false python-versions = "*" files = [ - {file = "tritonclient-2.44.0-py3-none-any.whl", hash = "sha256:2d0e7f3b414b4fc39dd406b6e1c004954c722516dc5707bd83049de76d06af2c"}, - {file = "tritonclient-2.44.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:ed8a64ecbb7594ea196dfdc9678d6356b24fdf484995f53400004a195ef33749"}, - {file = "tritonclient-2.44.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:64f6a48db0a2f2b57f9c03c338669ee9203eeda30aa7d007a10daabd1acd3689"}, + {file = "tritonclient-2.47.0-py3-none-any.whl", hash = "sha256:a731aebceb69e9d0508fef1dd4e703730b70b4dd5ab283d9d836823897a0561b"}, + {file = "tritonclient-2.47.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:754ab373a45306be0c45afbcde06838179d04561694f6d15e138530153aee581"}, + {file = "tritonclient-2.47.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5500ef5637ac3ed7ceeac3740ca28fc6acb94473cc49b261a86dc4cb55267179"}, ] [package.dependencies] grpcio = {version = ">=1.41.0", optional = true, markers = "extra == \"grpc\""} -numpy = ">=1.19.1" +numpy = ">=1.19.1,<2" packaging = {version = ">=14.1", optional = true, markers = "extra == \"grpc\""} protobuf = {version = ">=3.5.0,<5", optional = true, markers = "extra == \"grpc\""} python-rapidjson = ">=0.9.1" urllib3 = ">=2.0.7" [package.extras] -all = ["aiohttp (>=3.8.1,<4.0.0)", "cuda-python", "geventhttpclient (>=1.4.4,<=2.0.2)", "grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] +all = ["aiohttp (>=3.8.1,<4.0.0)", "cuda-python", "geventhttpclient (>=1.4.4,<=2.0.2)", "grpcio (>=1.41.0)", "numpy (>=1.19.1,<2)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] cuda = ["cuda-python"] -grpc = ["grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] -http = ["aiohttp (>=3.8.1,<4.0.0)", "geventhttpclient (>=1.4.4,<=2.0.2)", "numpy (>=1.19.1)", "python-rapidjson (>=0.9.1)"] +grpc = ["grpcio (>=1.41.0)", "numpy (>=1.19.1,<2)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] +http = ["aiohttp (>=3.8.1,<4.0.0)", "geventhttpclient (>=1.4.4,<=2.0.2)", "numpy (>=1.19.1,<2)", "python-rapidjson (>=0.9.1)"] [[package]] name = "typeguard" @@ -3810,4 +3810,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.11.0" -content-hash = "c07a76a7dcd26b77fb97f7229c9bb8912206cbbc8a702c0d758e69124d96492c" +content-hash = "5a127928fd01b4d784442a44b337e1fd7397526e7fa50076c214e40a7ba390da" diff --git a/pyproject.toml b/pyproject.toml index 6a825c5f..de02d9c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ seaborn = ">=0.12.2,<0.14.0" spectrum-fundamentals = ">=0.5.4,<0.6.0" spectrum-io = ">=0.4.4,<0.5.0" mokapot = ">=0.9.1,<0.11.0" -tritonclient = {extras = ["grpc"], version = ">=2.34.0,<2.45"} +tritonclient = {extras = ["grpc"], version = ">=2.47.0,<2.48"} numpy = ">=1.20,<1.25" anndata = "^0.10.5.post1" From 68295c7068001c70f3663e25558b32fe024c9584 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Mon, 8 Jul 2024 16:52:27 +0200 Subject: [PATCH 099/112] fix documentation: rm search_results from libgen --- docs/jobs.rst | 2 -- oktoberfest/utils/example_configs.py | 2 -- 2 files changed, 4 deletions(-) diff --git a/docs/jobs.rst b/docs/jobs.rst index 0b416cc0..6d698644 100644 --- a/docs/jobs.rst +++ b/docs/jobs.rst @@ -112,8 +112,6 @@ Example config file: "tag": "", "output": "./out", "inputs": { - "search_results": "./msms.txt", - "search_results_type": "Maxquant", "library_input": "uniprot.fasta", "library_input_type": "fasta" }, diff --git a/oktoberfest/utils/example_configs.py b/oktoberfest/utils/example_configs.py index 55298ac3..8d2c7216 100644 --- a/oktoberfest/utils/example_configs.py +++ b/oktoberfest/utils/example_configs.py @@ -41,8 +41,6 @@ "type": "SpectralLibraryGeneration", "tag": "", "inputs": { - "search_results": "msms.txt", - "search_results_type": "Maxquant", "library_input": "uniprot.fasta", "library_input_type": "fasta", }, From 79a333a7c221fd82147214f5fbdb208a0ae68895 Mon Sep 17 00:00:00 2001 From: victorgiurcoiu Date: Tue, 9 Jul 2024 08:26:55 +0000 Subject: [PATCH 100/112] Added documentation and example configs for nrOx parameter --- docs/config.rst | 2 ++ docs/jobs.rst | 3 ++- oktoberfest/utils/config.py | 2 +- oktoberfest/utils/example_configs.py | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/config.rst b/docs/config.rst index 0474ba36..70a78191 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -118,6 +118,8 @@ Additional parameters required for in-silico digestion +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | db | Defines whether the digestion should contain only targets, only decoys or both (concatenated); can be "target", "decoy" or "concat"; default = "concat" | +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | nrOx | The maximum number of oxidations allowed on Methionine residues (M) in peptides during spectral library generation; default = 1 | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Additional parameters required for rescoring -------------------------------------------- diff --git a/docs/jobs.rst b/docs/jobs.rst index 0b416cc0..caf67031 100644 --- a/docs/jobs.rst +++ b/docs/jobs.rst @@ -136,7 +136,8 @@ Example config file: "maxLength": 60, "enzyme": "trypsin", "specialAas": "KR", - "db": "concat" + "db": "concat", + "nrOx": 1 }, "prediction_server": "koina.wilhelmlab.org:443", "numThreads": 1, diff --git a/oktoberfest/utils/config.py b/oktoberfest/utils/config.py index d0ca38de..a4d36aee 100644 --- a/oktoberfest/utils/config.py +++ b/oktoberfest/utils/config.py @@ -228,7 +228,7 @@ def db(self) -> str: @property def nr_ox(self) -> int: - """Get the maximum number of oxidations allowed.""" + """Get the maximum number of oxidations allowed on M residues in peptides during spectral library generation.""" return self.fasta_digest_options.get("nrOx", 1) ################################## diff --git a/oktoberfest/utils/example_configs.py b/oktoberfest/utils/example_configs.py index 55298ac3..74b94d2f 100644 --- a/oktoberfest/utils/example_configs.py +++ b/oktoberfest/utils/example_configs.py @@ -67,5 +67,6 @@ "enzyme": "trypsin", "specialAas": "KR", "db": "concat", + "nrOx": 1, }, } From ef60de81aa9591e55b6b05305d32bfba7c92163f Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 10 Jul 2024 09:15:27 +0200 Subject: [PATCH 101/112] fix safety and and requirements.txt --- noxfile.py | 3 +- poetry.lock | 2040 ++++++++++++++++++++++++---------------------- requirements.txt | 104 +-- 3 files changed, 1104 insertions(+), 1043 deletions(-) diff --git a/noxfile.py b/noxfile.py index f9e97979..d459c1c8 100644 --- a/noxfile.py +++ b/noxfile.py @@ -124,9 +124,10 @@ def precommit(session: Session) -> None: @session(python=python_versions) def safety(session: Session) -> None: """Scan dependencies for insecure packages.""" + to_ignore = "--ignore=70612" requirements = session.poetry.export_requirements() session.install("safety") - session.run("safety", "check", "--full-report", f"--file={requirements}") + session.run("safety", "check", "--full-report", f"--file={requirements}", to_ignore) @session(python=python_versions) diff --git a/poetry.lock b/poetry.lock index 6cb4eb04..001eafad 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,13 +42,13 @@ stable = ["click (==8.1.3)", "h5py (==3.8.0)", "numba (==0.56.4)", "pandas (==1. [[package]] name = "anndata" -version = "0.10.7" +version = "0.10.8" description = "Annotated data." optional = false python-versions = ">=3.9" files = [ - {file = "anndata-0.10.7-py3-none-any.whl", hash = "sha256:8b50af790f9a73414d0b94fd7b8e005f5cc6c53c33eb09206d2bd6720115bffc"}, - {file = "anndata-0.10.7.tar.gz", hash = "sha256:9b186bea18956fefdc35e7464d822a17e9faa456ca2d20c7a0966a4837b822a2"}, + {file = "anndata-0.10.8-py3-none-any.whl", hash = "sha256:1b24934dc2674eaf3072cb7010e187aa2b2f4f0e4cf0a32ffeab5ffebe3b1415"}, + {file = "anndata-0.10.8.tar.gz", hash = "sha256:b728a33225eeaaefddf6bed546d935c0f06881c9166621b24de3b492b2f406bb"}, ] [package.dependencies] @@ -65,28 +65,28 @@ scipy = ">1.8" dev = ["pytest-xdist", "setuptools-scm"] doc = ["awkward (>=2.0.7)", "ipython", "myst-parser", "nbsphinx", "readthedocs-sphinx-search", "scanpydoc[theme,typehints] (>=0.13.4)", "sphinx (>=4.4)", "sphinx-autodoc-typehints (>=1.11.0)", "sphinx-book-theme (>=1.1.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-issues", "sphinxext-opengraph", "zarr"] gpu = ["cupy"] -test = ["awkward (>=2.3)", "boltons", "dask[array,distributed] (>=2022.09.2)", "httpx", "joblib", "loompy (>=3.0.5)", "matplotlib", "openpyxl", "pyarrow", "pytest (>=7.3)", "pytest-cov (>=2.10)", "pytest-memray", "pytest-mock", "scanpy", "scikit-learn", "zarr"] +test = ["awkward (>=2.3)", "boltons", "dask[array,distributed] (>=2022.09.2)", "httpx", "joblib", "loompy (>=3.0.5)", "matplotlib", "openpyxl", "pyarrow", "pytest (>=8.2)", "pytest-cov (>=2.10)", "pytest-memray", "pytest-mock", "scanpy", "scikit-learn", "zarr (<3.0.0a0)"] [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "anyio" -version = "4.3.0" +version = "4.4.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, ] [package.dependencies] @@ -102,13 +102,13 @@ trio = ["trio (>=0.23)"] [[package]] name = "array-api-compat" -version = "1.6" +version = "1.7.1" description = "A wrapper around NumPy and other array libraries to make them compatible with the Array API standard" optional = false python-versions = "*" files = [ - {file = "array_api_compat-1.6-py3-none-any.whl", hash = "sha256:0f132e698952bcebccfa941b4fc02cbc754802474b13a564208cf6cdbffb51e1"}, - {file = "array_api_compat-1.6.tar.gz", hash = "sha256:74a1e355cdabb9cf6c48922a5d07976d9230025d65731bef17174151b64876af"}, + {file = "array_api_compat-1.7.1-py3-none-any.whl", hash = "sha256:6974f51775972f39edbca39e08f1c2e43c51401c093a0fea5ac7159875095d8a"}, + {file = "array_api_compat-1.7.1.tar.gz", hash = "sha256:b6b37294cd1da2f9d9040c543d2d4c3d7a81615953d59811431ee4bf15647c3b"}, ] [package.extras] @@ -117,6 +117,7 @@ dask = ["dask"] jax = ["jax"] numpy = ["numpy"] pytorch = ["pytorch"] +sparse = ["sparse (>=0.15.1)"] [[package]] name = "attrs" @@ -139,13 +140,13 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "authlib" -version = "1.3.0" +version = "1.3.1" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." optional = false python-versions = ">=3.8" files = [ - {file = "Authlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:9637e4de1fb498310a56900b3e2043a206b03cb11c05422014b0302cbc814be3"}, - {file = "Authlib-1.3.0.tar.gz", hash = "sha256:959ea62a5b7b5123c5059758296122b57cd2585ae2ed1c0622c21b371ffdae06"}, + {file = "Authlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:d35800b973099bbadc49b42b256ecb80041ad56b7fe1216a362c7943c088f377"}, + {file = "authlib-1.3.1.tar.gz", hash = "sha256:7ae843f03c06c5c0debd63c9db91f9fda64fa62a42a77419fa15fbb7e7a58917"}, ] [package.dependencies] @@ -167,13 +168,13 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "bandit" -version = "1.7.8" +version = "1.7.9" description = "Security oriented static analyser for python code." optional = false python-versions = ">=3.8" files = [ - {file = "bandit-1.7.8-py3-none-any.whl", hash = "sha256:509f7af645bc0cd8fd4587abc1a038fc795636671ee8204d502b933aee44f381"}, - {file = "bandit-1.7.8.tar.gz", hash = "sha256:36de50f720856ab24a24dbaa5fee2c66050ed97c1477e0a1159deab1775eab6b"}, + {file = "bandit-1.7.9-py3-none-any.whl", hash = "sha256:52077cb339000f337fb25f7e045995c4ad01511e716e5daac37014b9752de8ec"}, + {file = "bandit-1.7.9.tar.gz", hash = "sha256:7c395a436743018f7be0a4cbb0a4ea9b902b6d87264ddecf8cfdc73b4f78ff61"}, ] [package.dependencies] @@ -237,13 +238,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] @@ -510,63 +511,63 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.5.1" +version = "7.5.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"}, - {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"}, - {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"}, - {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"}, - {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"}, - {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"}, - {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"}, - {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"}, - {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"}, - {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"}, - {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"}, - {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"}, - {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"}, - {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"}, - {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"}, - {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"}, - {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"}, - {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"}, - {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"}, - {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"}, - {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"}, - {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"}, + {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"}, + {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"}, + {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"}, + {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"}, + {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"}, + {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"}, + {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"}, + {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"}, + {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"}, + {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"}, + {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"}, + {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"}, ] [package.dependencies] @@ -577,43 +578,43 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.7" +version = "42.0.8" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477"}, - {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7"}, - {file = "cryptography-42.0.7-cp37-abi3-win32.whl", hash = "sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b"}, - {file = "cryptography-42.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678"}, - {file = "cryptography-42.0.7-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886"}, - {file = "cryptography-42.0.7-cp39-abi3-win32.whl", hash = "sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda"}, - {file = "cryptography-42.0.7-cp39-abi3-win_amd64.whl", hash = "sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68"}, - {file = "cryptography-42.0.7.tar.gz", hash = "sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, + {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, + {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, + {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, + {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, + {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, + {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, ] [package.dependencies] @@ -725,34 +726,34 @@ test = ["pytest (>=6)"] [[package]] name = "filelock" -version = "3.14.0" +version = "3.12.4" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, - {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, + {file = "filelock-3.12.4-py3-none-any.whl", hash = "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4"}, + {file = "filelock-3.12.4.tar.gz", hash = "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] -typing = ["typing-extensions (>=4.8)"] +docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] +typing = ["typing-extensions (>=4.7.1)"] [[package]] name = "flake8" -version = "7.0.0" +version = "7.1.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, - {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, + {file = "flake8-7.1.0-py2.py3-none-any.whl", hash = "sha256:2e416edcc62471a64cea09353f4e7bdba32aeb079b6e360554c659a122b1bc6a"}, + {file = "flake8-7.1.0.tar.gz", hash = "sha256:48a07b626b55236e0fb4784ee69a465fbf59d79eec1f5b4785c3d3bc57d17aa5"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.11.0,<2.12.0" +pycodestyle = ">=2.12.0,<2.13.0" pyflakes = ">=3.2.0,<3.3.0" [[package]] @@ -824,53 +825,53 @@ develop = ["build", "twine"] [[package]] name = "fonttools" -version = "4.51.0" +version = "4.53.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74"}, - {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308"}, - {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037"}, - {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716"}, - {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438"}, - {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039"}, - {file = "fonttools-4.51.0-cp310-cp310-win32.whl", hash = "sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77"}, - {file = "fonttools-4.51.0-cp310-cp310-win_amd64.whl", hash = "sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b"}, - {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74"}, - {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2"}, - {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f"}, - {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097"}, - {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0"}, - {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1"}, - {file = "fonttools-4.51.0-cp311-cp311-win32.whl", hash = "sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034"}, - {file = "fonttools-4.51.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1"}, - {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba"}, - {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc"}, - {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a"}, - {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2"}, - {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671"}, - {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5"}, - {file = "fonttools-4.51.0-cp312-cp312-win32.whl", hash = "sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15"}, - {file = "fonttools-4.51.0-cp312-cp312-win_amd64.whl", hash = "sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e"}, - {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e"}, - {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5"}, - {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e"}, - {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1"}, - {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14"}, - {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed"}, - {file = "fonttools-4.51.0-cp38-cp38-win32.whl", hash = "sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f"}, - {file = "fonttools-4.51.0-cp38-cp38-win_amd64.whl", hash = "sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836"}, - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b"}, - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7"}, - {file = "fonttools-4.51.0-cp39-cp39-win32.whl", hash = "sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636"}, - {file = "fonttools-4.51.0-cp39-cp39-win_amd64.whl", hash = "sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a"}, - {file = "fonttools-4.51.0-py3-none-any.whl", hash = "sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f"}, - {file = "fonttools-4.51.0.tar.gz", hash = "sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68"}, + {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, + {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, + {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, + {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, + {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, + {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, + {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, + {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, + {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, + {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, + {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, + {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, + {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, + {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, + {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, + {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, + {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, + {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, + {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, + {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, + {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, + {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, + {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, + {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, + {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, + {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, + {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, + {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, + {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, + {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, + {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, + {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, + {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, + {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, + {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, + {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, + {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, + {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, + {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, + {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, + {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, + {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, ] [package.extras] @@ -889,61 +890,61 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "grpcio" -version = "1.63.0" +version = "1.64.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.63.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2e93aca840c29d4ab5db93f94ed0a0ca899e241f2e8aec6334ab3575dc46125c"}, - {file = "grpcio-1.63.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:91b73d3f1340fefa1e1716c8c1ec9930c676d6b10a3513ab6c26004cb02d8b3f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:b3afbd9d6827fa6f475a4f91db55e441113f6d3eb9b7ebb8fb806e5bb6d6bd0d"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f3f6883ce54a7a5f47db43289a0a4c776487912de1a0e2cc83fdaec9685cc9f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf8dae9cc0412cb86c8de5a8f3be395c5119a370f3ce2e69c8b7d46bb9872c8d"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:08e1559fd3b3b4468486b26b0af64a3904a8dbc78d8d936af9c1cf9636eb3e8b"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5c039ef01516039fa39da8a8a43a95b64e288f79f42a17e6c2904a02a319b357"}, - {file = "grpcio-1.63.0-cp310-cp310-win32.whl", hash = "sha256:ad2ac8903b2eae071055a927ef74121ed52d69468e91d9bcbd028bd0e554be6d"}, - {file = "grpcio-1.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:b2e44f59316716532a993ca2966636df6fbe7be4ab6f099de6815570ebe4383a"}, - {file = "grpcio-1.63.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:f28f8b2db7b86c77916829d64ab21ff49a9d8289ea1564a2b2a3a8ed9ffcccd3"}, - {file = "grpcio-1.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:65bf975639a1f93bee63ca60d2e4951f1b543f498d581869922910a476ead2f5"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b5194775fec7dc3dbd6a935102bb156cd2c35efe1685b0a46c67b927c74f0cfb"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4cbb2100ee46d024c45920d16e888ee5d3cf47c66e316210bc236d5bebc42b3"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff737cf29b5b801619f10e59b581869e32f400159e8b12d7a97e7e3bdeee6a2"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cd1e68776262dd44dedd7381b1a0ad09d9930ffb405f737d64f505eb7f77d6c7"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f45f27f516548e23e4ec3fbab21b060416007dbe768a111fc4611464cc773f"}, - {file = "grpcio-1.63.0-cp311-cp311-win32.whl", hash = "sha256:878b1d88d0137df60e6b09b74cdb73db123f9579232c8456f53e9abc4f62eb3c"}, - {file = "grpcio-1.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:756fed02dacd24e8f488f295a913f250b56b98fb793f41d5b2de6c44fb762434"}, - {file = "grpcio-1.63.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:93a46794cc96c3a674cdfb59ef9ce84d46185fe9421baf2268ccb556f8f81f57"}, - {file = "grpcio-1.63.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a7b19dfc74d0be7032ca1eda0ed545e582ee46cd65c162f9e9fc6b26ef827dc6"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8064d986d3a64ba21e498b9a376cbc5d6ab2e8ab0e288d39f266f0fca169b90d"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:219bb1848cd2c90348c79ed0a6b0ea51866bc7e72fa6e205e459fedab5770172"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d60cd1d58817bc5985fae6168d8b5655c4981d448d0f5b6194bbcc038090d2"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e350cb096e5c67832e9b6e018cf8a0d2a53b2a958f6251615173165269a91b0"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:56cdf96ff82e3cc90dbe8bac260352993f23e8e256e063c327b6cf9c88daf7a9"}, - {file = "grpcio-1.63.0-cp312-cp312-win32.whl", hash = "sha256:3a6d1f9ea965e750db7b4ee6f9fdef5fdf135abe8a249e75d84b0a3e0c668a1b"}, - {file = "grpcio-1.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:d2497769895bb03efe3187fb1888fc20e98a5f18b3d14b606167dacda5789434"}, - {file = "grpcio-1.63.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:fdf348ae69c6ff484402cfdb14e18c1b0054ac2420079d575c53a60b9b2853ae"}, - {file = "grpcio-1.63.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a3abfe0b0f6798dedd2e9e92e881d9acd0fdb62ae27dcbbfa7654a57e24060c0"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6ef0ad92873672a2a3767cb827b64741c363ebaa27e7f21659e4e31f4d750280"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b416252ac5588d9dfb8a30a191451adbf534e9ce5f56bb02cd193f12d8845b7f"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b77eaefc74d7eb861d3ffbdf91b50a1bb1639514ebe764c47773b833fa2d91"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b005292369d9c1f80bf70c1db1c17c6c342da7576f1c689e8eee4fb0c256af85"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cdcda1156dcc41e042d1e899ba1f5c2e9f3cd7625b3d6ebfa619806a4c1aadda"}, - {file = "grpcio-1.63.0-cp38-cp38-win32.whl", hash = "sha256:01799e8649f9e94ba7db1aeb3452188048b0019dc37696b0f5ce212c87c560c3"}, - {file = "grpcio-1.63.0-cp38-cp38-win_amd64.whl", hash = "sha256:6a1a3642d76f887aa4009d92f71eb37809abceb3b7b5a1eec9c554a246f20e3a"}, - {file = "grpcio-1.63.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:75f701ff645858a2b16bc8c9fc68af215a8bb2d5a9b647448129de6e85d52bce"}, - {file = "grpcio-1.63.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cacdef0348a08e475a721967f48206a2254a1b26ee7637638d9e081761a5ba86"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:0697563d1d84d6985e40ec5ec596ff41b52abb3fd91ec240e8cb44a63b895094"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6426e1fb92d006e47476d42b8f240c1d916a6d4423c5258ccc5b105e43438f61"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48cee31bc5f5a31fb2f3b573764bd563aaa5472342860edcc7039525b53e46a"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:50344663068041b34a992c19c600236e7abb42d6ec32567916b87b4c8b8833b3"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:259e11932230d70ef24a21b9fb5bb947eb4703f57865a404054400ee92f42f5d"}, - {file = "grpcio-1.63.0-cp39-cp39-win32.whl", hash = "sha256:a44624aad77bf8ca198c55af811fd28f2b3eaf0a50ec5b57b06c034416ef2d0a"}, - {file = "grpcio-1.63.0-cp39-cp39-win_amd64.whl", hash = "sha256:166e5c460e5d7d4656ff9e63b13e1f6029b122104c1633d5f37eaea348d7356d"}, - {file = "grpcio-1.63.0.tar.gz", hash = "sha256:f3023e14805c61bc439fb40ca545ac3d5740ce66120a678a3c6c2c55b70343d1"}, -] - -[package.extras] -protobuf = ["grpcio-tools (>=1.63.0)"] + {file = "grpcio-1.64.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:55697ecec192bc3f2f3cc13a295ab670f51de29884ca9ae6cd6247df55df2502"}, + {file = "grpcio-1.64.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3b64ae304c175671efdaa7ec9ae2cc36996b681eb63ca39c464958396697daff"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:bac71b4b28bc9af61efcdc7630b166440bbfbaa80940c9a697271b5e1dabbc61"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c024ffc22d6dc59000faf8ad781696d81e8e38f4078cb0f2630b4a3cf231a90"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7cd5c1325f6808b8ae31657d281aadb2a51ac11ab081ae335f4f7fc44c1721d"}, + {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0a2813093ddb27418a4c99f9b1c223fab0b053157176a64cc9db0f4557b69bd9"}, + {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2981c7365a9353f9b5c864595c510c983251b1ab403e05b1ccc70a3d9541a73b"}, + {file = "grpcio-1.64.1-cp310-cp310-win32.whl", hash = "sha256:1262402af5a511c245c3ae918167eca57342c72320dffae5d9b51840c4b2f86d"}, + {file = "grpcio-1.64.1-cp310-cp310-win_amd64.whl", hash = "sha256:19264fc964576ddb065368cae953f8d0514ecc6cb3da8903766d9fb9d4554c33"}, + {file = "grpcio-1.64.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:58b1041e7c870bb30ee41d3090cbd6f0851f30ae4eb68228955d973d3efa2e61"}, + {file = "grpcio-1.64.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bbc5b1d78a7822b0a84c6f8917faa986c1a744e65d762ef6d8be9d75677af2ca"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5841dd1f284bd1b3d8a6eca3a7f062b06f1eec09b184397e1d1d43447e89a7ae"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8caee47e970b92b3dd948371230fcceb80d3f2277b3bf7fbd7c0564e7d39068e"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73819689c169417a4f978e562d24f2def2be75739c4bed1992435d007819da1b"}, + {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6503b64c8b2dfad299749cad1b595c650c91e5b2c8a1b775380fcf8d2cbba1e9"}, + {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1de403fc1305fd96cfa75e83be3dee8538f2413a6b1685b8452301c7ba33c294"}, + {file = "grpcio-1.64.1-cp311-cp311-win32.whl", hash = "sha256:d4d29cc612e1332237877dfa7fe687157973aab1d63bd0f84cf06692f04c0367"}, + {file = "grpcio-1.64.1-cp311-cp311-win_amd64.whl", hash = "sha256:5e56462b05a6f860b72f0fa50dca06d5b26543a4e88d0396259a07dc30f4e5aa"}, + {file = "grpcio-1.64.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:4657d24c8063e6095f850b68f2d1ba3b39f2b287a38242dcabc166453e950c59"}, + {file = "grpcio-1.64.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:62b4e6eb7bf901719fce0ca83e3ed474ae5022bb3827b0a501e056458c51c0a1"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:ee73a2f5ca4ba44fa33b4d7d2c71e2c8a9e9f78d53f6507ad68e7d2ad5f64a22"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:198908f9b22e2672a998870355e226a725aeab327ac4e6ff3a1399792ece4762"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39b9d0acaa8d835a6566c640f48b50054f422d03e77e49716d4c4e8e279665a1"}, + {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5e42634a989c3aa6049f132266faf6b949ec2a6f7d302dbb5c15395b77d757eb"}, + {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1a82e0b9b3022799c336e1fc0f6210adc019ae84efb7321d668129d28ee1efb"}, + {file = "grpcio-1.64.1-cp312-cp312-win32.whl", hash = "sha256:55260032b95c49bee69a423c2f5365baa9369d2f7d233e933564d8a47b893027"}, + {file = "grpcio-1.64.1-cp312-cp312-win_amd64.whl", hash = "sha256:c1a786ac592b47573a5bb7e35665c08064a5d77ab88a076eec11f8ae86b3e3f6"}, + {file = "grpcio-1.64.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:a011ac6c03cfe162ff2b727bcb530567826cec85eb8d4ad2bfb4bd023287a52d"}, + {file = "grpcio-1.64.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4d6dab6124225496010bd22690f2d9bd35c7cbb267b3f14e7a3eb05c911325d4"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:a5e771d0252e871ce194d0fdcafd13971f1aae0ddacc5f25615030d5df55c3a2"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c3c1b90ab93fed424e454e93c0ed0b9d552bdf1b0929712b094f5ecfe7a23ad"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20405cb8b13fd779135df23fabadc53b86522d0f1cba8cca0e87968587f50650"}, + {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0cc79c982ccb2feec8aad0e8fb0d168bcbca85bc77b080d0d3c5f2f15c24ea8f"}, + {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a3a035c37ce7565b8f4f35ff683a4db34d24e53dc487e47438e434eb3f701b2a"}, + {file = "grpcio-1.64.1-cp38-cp38-win32.whl", hash = "sha256:1257b76748612aca0f89beec7fa0615727fd6f2a1ad580a9638816a4b2eb18fd"}, + {file = "grpcio-1.64.1-cp38-cp38-win_amd64.whl", hash = "sha256:0a12ddb1678ebc6a84ec6b0487feac020ee2b1659cbe69b80f06dbffdb249122"}, + {file = "grpcio-1.64.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:75dbbf415026d2862192fe1b28d71f209e2fd87079d98470db90bebe57b33179"}, + {file = "grpcio-1.64.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e3d9f8d1221baa0ced7ec7322a981e28deb23749c76eeeb3d33e18b72935ab62"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5f8b75f64d5d324c565b263c67dbe4f0af595635bbdd93bb1a88189fc62ed2e5"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c84ad903d0d94311a2b7eea608da163dace97c5fe9412ea311e72c3684925602"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:940e3ec884520155f68a3b712d045e077d61c520a195d1a5932c531f11883489"}, + {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f10193c69fc9d3d726e83bbf0f3d316f1847c3071c8c93d8090cf5f326b14309"}, + {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac15b6c2c80a4d1338b04d42a02d376a53395ddf0ec9ab157cbaf44191f3ffdd"}, + {file = "grpcio-1.64.1-cp39-cp39-win32.whl", hash = "sha256:03b43d0ccf99c557ec671c7dede64f023c7da9bb632ac65dbc57f166e4970040"}, + {file = "grpcio-1.64.1-cp39-cp39-win_amd64.whl", hash = "sha256:ed6091fa0adcc7e4ff944090cf203a52da35c37a130efa564ded02b7aff63bcd"}, + {file = "grpcio-1.64.1.tar.gz", hash = "sha256:8d51dd1c59d5fa0f34266b80a3805ec29a1f26425c2a54736133f6d87fc4968a"}, +] + +[package.extras] +protobuf = ["grpcio-tools (>=1.64.1)"] [[package]] name = "h11" @@ -991,13 +992,13 @@ numpy = ">=1.17.3" [[package]] name = "identify" -version = "2.5.36" +version = "2.6.0" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, - {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, + {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, + {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, ] [package.extras] @@ -1027,22 +1028,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.1.0" +version = "8.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, + {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, + {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "importlib-resources" @@ -1230,141 +1231,191 @@ files = [ [[package]] name = "llvmlite" -version = "0.42.0" +version = "0.43.0" description = "lightweight wrapper around basic LLVM functionality" optional = false python-versions = ">=3.9" files = [ - {file = "llvmlite-0.42.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3366938e1bf63d26c34fbfb4c8e8d2ded57d11e0567d5bb243d89aab1eb56098"}, - {file = "llvmlite-0.42.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c35da49666a21185d21b551fc3caf46a935d54d66969d32d72af109b5e7d2b6f"}, - {file = "llvmlite-0.42.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70f44ccc3c6220bd23e0ba698a63ec2a7d3205da0d848804807f37fc243e3f77"}, - {file = "llvmlite-0.42.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f8d8717a9073b9e0246998de89929071d15b47f254c10eef2310b9aac033d"}, - {file = "llvmlite-0.42.0-cp310-cp310-win_amd64.whl", hash = "sha256:8d90edf400b4ceb3a0e776b6c6e4656d05c7187c439587e06f86afceb66d2be5"}, - {file = "llvmlite-0.42.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ae511caed28beaf1252dbaf5f40e663f533b79ceb408c874c01754cafabb9cbf"}, - {file = "llvmlite-0.42.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81e674c2fe85576e6c4474e8c7e7aba7901ac0196e864fe7985492b737dbab65"}, - {file = "llvmlite-0.42.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb3975787f13eb97629052edb5017f6c170eebc1c14a0433e8089e5db43bcce6"}, - {file = "llvmlite-0.42.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5bece0cdf77f22379f19b1959ccd7aee518afa4afbd3656c6365865f84903f9"}, - {file = "llvmlite-0.42.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e0c4c11c8c2aa9b0701f91b799cb9134a6a6de51444eff5a9087fc7c1384275"}, - {file = "llvmlite-0.42.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:08fa9ab02b0d0179c688a4216b8939138266519aaa0aa94f1195a8542faedb56"}, - {file = "llvmlite-0.42.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b2fce7d355068494d1e42202c7aff25d50c462584233013eb4470c33b995e3ee"}, - {file = "llvmlite-0.42.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebe66a86dc44634b59a3bc860c7b20d26d9aaffcd30364ebe8ba79161a9121f4"}, - {file = "llvmlite-0.42.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d47494552559e00d81bfb836cf1c4d5a5062e54102cc5767d5aa1e77ccd2505c"}, - {file = "llvmlite-0.42.0-cp312-cp312-win_amd64.whl", hash = "sha256:05cb7e9b6ce69165ce4d1b994fbdedca0c62492e537b0cc86141b6e2c78d5888"}, - {file = "llvmlite-0.42.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bdd3888544538a94d7ec99e7c62a0cdd8833609c85f0c23fcb6c5c591aec60ad"}, - {file = "llvmlite-0.42.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0936c2067a67fb8816c908d5457d63eba3e2b17e515c5fe00e5ee2bace06040"}, - {file = "llvmlite-0.42.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a78ab89f1924fc11482209f6799a7a3fc74ddc80425a7a3e0e8174af0e9e2301"}, - {file = "llvmlite-0.42.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7599b65c7af7abbc978dbf345712c60fd596aa5670496561cc10e8a71cebfb2"}, - {file = "llvmlite-0.42.0-cp39-cp39-win_amd64.whl", hash = "sha256:43d65cc4e206c2e902c1004dd5418417c4efa6c1d04df05c6c5675a27e8ca90e"}, - {file = "llvmlite-0.42.0.tar.gz", hash = "sha256:f92b09243c0cc3f457da8b983f67bd8e1295d0f5b3746c7a1861d7a99403854a"}, + {file = "llvmlite-0.43.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a289af9a1687c6cf463478f0fa8e8aa3b6fb813317b0d70bf1ed0759eab6f761"}, + {file = "llvmlite-0.43.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d4fd101f571a31acb1559ae1af30f30b1dc4b3186669f92ad780e17c81e91bc"}, + {file = "llvmlite-0.43.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d434ec7e2ce3cc8f452d1cd9a28591745de022f931d67be688a737320dfcead"}, + {file = "llvmlite-0.43.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6912a87782acdff6eb8bf01675ed01d60ca1f2551f8176a300a886f09e836a6a"}, + {file = "llvmlite-0.43.0-cp310-cp310-win_amd64.whl", hash = "sha256:14f0e4bf2fd2d9a75a3534111e8ebeb08eda2f33e9bdd6dfa13282afacdde0ed"}, + {file = "llvmlite-0.43.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8d0618cb9bfe40ac38a9633f2493d4d4e9fcc2f438d39a4e854f39cc0f5f98"}, + {file = "llvmlite-0.43.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0a9a1a39d4bf3517f2af9d23d479b4175ead205c592ceeb8b89af48a327ea57"}, + {file = "llvmlite-0.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1da416ab53e4f7f3bc8d4eeba36d801cc1894b9fbfbf2022b29b6bad34a7df2"}, + {file = "llvmlite-0.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977525a1e5f4059316b183fb4fd34fa858c9eade31f165427a3977c95e3ee749"}, + {file = "llvmlite-0.43.0-cp311-cp311-win_amd64.whl", hash = "sha256:d5bd550001d26450bd90777736c69d68c487d17bf371438f975229b2b8241a91"}, + {file = "llvmlite-0.43.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f99b600aa7f65235a5a05d0b9a9f31150c390f31261f2a0ba678e26823ec38f7"}, + {file = "llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:35d80d61d0cda2d767f72de99450766250560399edc309da16937b93d3b676e7"}, + {file = "llvmlite-0.43.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eccce86bba940bae0d8d48ed925f21dbb813519169246e2ab292b5092aba121f"}, + {file = "llvmlite-0.43.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df6509e1507ca0760787a199d19439cc887bfd82226f5af746d6977bd9f66844"}, + {file = "llvmlite-0.43.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a2872ee80dcf6b5dbdc838763d26554c2a18aa833d31a2635bff16aafefb9c9"}, + {file = "llvmlite-0.43.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cd2a7376f7b3367019b664c21f0c61766219faa3b03731113ead75107f3b66c"}, + {file = "llvmlite-0.43.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18e9953c748b105668487b7c81a3e97b046d8abf95c4ddc0cd3c94f4e4651ae8"}, + {file = "llvmlite-0.43.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74937acd22dc11b33946b67dca7680e6d103d6e90eeaaaf932603bec6fe7b03a"}, + {file = "llvmlite-0.43.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9efc739cc6ed760f795806f67889923f7274276f0eb45092a1473e40d9b867"}, + {file = "llvmlite-0.43.0-cp39-cp39-win_amd64.whl", hash = "sha256:47e147cdda9037f94b399bf03bfd8a6b6b1f2f90be94a454e3386f006455a9b4"}, + {file = "llvmlite-0.43.0.tar.gz", hash = "sha256:ae2b5b5c3ef67354824fb75517c8db5fbe93bc02cd9671f3c62271626bc041d5"}, ] [[package]] name = "lxml" -version = "4.9.4" +version = "5.2.2" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -files = [ - {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722"}, - {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1"}, - {file = "lxml-4.9.4-cp27-cp27m-win32.whl", hash = "sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013"}, - {file = "lxml-4.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69"}, - {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2"}, - {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48"}, - {file = "lxml-4.9.4-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91"}, - {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868"}, - {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7"}, - {file = "lxml-4.9.4-cp310-cp310-win32.whl", hash = "sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be"}, - {file = "lxml-4.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5"}, - {file = "lxml-4.9.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979"}, - {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac"}, - {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622"}, - {file = "lxml-4.9.4-cp311-cp311-win32.whl", hash = "sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3"}, - {file = "lxml-4.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8"}, - {file = "lxml-4.9.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8"}, - {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229"}, - {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d"}, - {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20"}, - {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10"}, - {file = "lxml-4.9.4-cp312-cp312-win32.whl", hash = "sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b"}, - {file = "lxml-4.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56"}, - {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20"}, - {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66"}, - {file = "lxml-4.9.4-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85"}, - {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23"}, - {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745"}, - {file = "lxml-4.9.4-cp36-cp36m-win32.whl", hash = "sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be"}, - {file = "lxml-4.9.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9"}, - {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d"}, - {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02"}, - {file = "lxml-4.9.4-cp37-cp37m-win32.whl", hash = "sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e"}, - {file = "lxml-4.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192"}, - {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37"}, - {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9"}, - {file = "lxml-4.9.4-cp38-cp38-win32.whl", hash = "sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c"}, - {file = "lxml-4.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46"}, - {file = "lxml-4.9.4-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573"}, - {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847"}, - {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab"}, - {file = "lxml-4.9.4-cp39-cp39-win32.whl", hash = "sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec"}, - {file = "lxml-4.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-macosx_11_0_x86_64.whl", hash = "sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137"}, - {file = "lxml-4.9.4.tar.gz", hash = "sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e"}, +python-versions = ">=3.6" +files = [ + {file = "lxml-5.2.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:364d03207f3e603922d0d3932ef363d55bbf48e3647395765f9bfcbdf6d23632"}, + {file = "lxml-5.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50127c186f191b8917ea2fb8b206fbebe87fd414a6084d15568c27d0a21d60db"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74e4f025ef3db1c6da4460dd27c118d8cd136d0391da4e387a15e48e5c975147"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981a06a3076997adf7c743dcd0d7a0415582661e2517c7d961493572e909aa1d"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aef5474d913d3b05e613906ba4090433c515e13ea49c837aca18bde190853dff"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e275ea572389e41e8b039ac076a46cb87ee6b8542df3fff26f5baab43713bca"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5b65529bb2f21ac7861a0e94fdbf5dc0daab41497d18223b46ee8515e5ad297"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bcc98f911f10278d1daf14b87d65325851a1d29153caaf146877ec37031d5f36"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:b47633251727c8fe279f34025844b3b3a3e40cd1b198356d003aa146258d13a2"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:fbc9d316552f9ef7bba39f4edfad4a734d3d6f93341232a9dddadec4f15d425f"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:13e69be35391ce72712184f69000cda04fc89689429179bc4c0ae5f0b7a8c21b"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3b6a30a9ab040b3f545b697cb3adbf3696c05a3a68aad172e3fd7ca73ab3c835"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a233bb68625a85126ac9f1fc66d24337d6e8a0f9207b688eec2e7c880f012ec0"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:dfa7c241073d8f2b8e8dbc7803c434f57dbb83ae2a3d7892dd068d99e96efe2c"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a7aca7964ac4bb07680d5c9d63b9d7028cace3e2d43175cb50bba8c5ad33316"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae4073a60ab98529ab8a72ebf429f2a8cc612619a8c04e08bed27450d52103c0"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ffb2be176fed4457e445fe540617f0252a72a8bc56208fd65a690fdb1f57660b"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e290d79a4107d7d794634ce3e985b9ae4f920380a813717adf61804904dc4393"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:96e85aa09274955bb6bd483eaf5b12abadade01010478154b0ec70284c1b1526"}, + {file = "lxml-5.2.2-cp310-cp310-win32.whl", hash = "sha256:f956196ef61369f1685d14dad80611488d8dc1ef00be57c0c5a03064005b0f30"}, + {file = "lxml-5.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:875a3f90d7eb5c5d77e529080d95140eacb3c6d13ad5b616ee8095447b1d22e7"}, + {file = "lxml-5.2.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:45f9494613160d0405682f9eee781c7e6d1bf45f819654eb249f8f46a2c22545"}, + {file = "lxml-5.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0b3f2df149efb242cee2ffdeb6674b7f30d23c9a7af26595099afaf46ef4e88"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d28cb356f119a437cc58a13f8135ab8a4c8ece18159eb9194b0d269ec4e28083"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657a972f46bbefdbba2d4f14413c0d079f9ae243bd68193cb5061b9732fa54c1"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b9ea10063efb77a965a8d5f4182806fbf59ed068b3c3fd6f30d2ac7bee734"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07542787f86112d46d07d4f3c4e7c760282011b354d012dc4141cc12a68cef5f"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:303f540ad2dddd35b92415b74b900c749ec2010e703ab3bfd6660979d01fd4ed"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2eb2227ce1ff998faf0cd7fe85bbf086aa41dfc5af3b1d80867ecfe75fb68df3"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:1d8a701774dfc42a2f0b8ccdfe7dbc140500d1049e0632a611985d943fcf12df"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:56793b7a1a091a7c286b5f4aa1fe4ae5d1446fe742d00cdf2ffb1077865db10d"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eb00b549b13bd6d884c863554566095bf6fa9c3cecb2e7b399c4bc7904cb33b5"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a2569a1f15ae6c8c64108a2cd2b4a858fc1e13d25846be0666fc144715e32ab"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:8cf85a6e40ff1f37fe0f25719aadf443686b1ac7652593dc53c7ef9b8492b115"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:d237ba6664b8e60fd90b8549a149a74fcc675272e0e95539a00522e4ca688b04"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b3f5016e00ae7630a4b83d0868fca1e3d494c78a75b1c7252606a3a1c5fc2ad"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23441e2b5339bc54dc949e9e675fa35efe858108404ef9aa92f0456929ef6fe8"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2fb0ba3e8566548d6c8e7dd82a8229ff47bd8fb8c2da237607ac8e5a1b8312e5"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:79d1fb9252e7e2cfe4de6e9a6610c7cbb99b9708e2c3e29057f487de5a9eaefa"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6dcc3d17eac1df7859ae01202e9bb11ffa8c98949dcbeb1069c8b9a75917e01b"}, + {file = "lxml-5.2.2-cp311-cp311-win32.whl", hash = "sha256:4c30a2f83677876465f44c018830f608fa3c6a8a466eb223535035fbc16f3438"}, + {file = "lxml-5.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:49095a38eb333aaf44c06052fd2ec3b8f23e19747ca7ec6f6c954ffea6dbf7be"}, + {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7429e7faa1a60cad26ae4227f4dd0459efde239e494c7312624ce228e04f6391"}, + {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:50ccb5d355961c0f12f6cf24b7187dbabd5433f29e15147a67995474f27d1776"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc911208b18842a3a57266d8e51fc3cfaccee90a5351b92079beed912a7914c2"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33ce9e786753743159799fdf8e92a5da351158c4bfb6f2db0bf31e7892a1feb5"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec87c44f619380878bd49ca109669c9f221d9ae6883a5bcb3616785fa8f94c97"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08ea0f606808354eb8f2dfaac095963cb25d9d28e27edcc375d7b30ab01abbf6"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75a9632f1d4f698b2e6e2e1ada40e71f369b15d69baddb8968dcc8e683839b18"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74da9f97daec6928567b48c90ea2c82a106b2d500f397eeb8941e47d30b1ca85"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:0969e92af09c5687d769731e3f39ed62427cc72176cebb54b7a9d52cc4fa3b73"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:9164361769b6ca7769079f4d426a41df6164879f7f3568be9086e15baca61466"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d26a618ae1766279f2660aca0081b2220aca6bd1aa06b2cf73f07383faf48927"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab67ed772c584b7ef2379797bf14b82df9aa5f7438c5b9a09624dd834c1c1aaf"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:3d1e35572a56941b32c239774d7e9ad724074d37f90c7a7d499ab98761bd80cf"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:8268cbcd48c5375f46e000adb1390572c98879eb4f77910c6053d25cc3ac2c67"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e282aedd63c639c07c3857097fc0e236f984ceb4089a8b284da1c526491e3f3d"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfdc2bfe69e9adf0df4915949c22a25b39d175d599bf98e7ddf620a13678585"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4aefd911793b5d2d7a921233a54c90329bf3d4a6817dc465f12ffdfe4fc7b8fe"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:8b8df03a9e995b6211dafa63b32f9d405881518ff1ddd775db4e7b98fb545e1c"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f11ae142f3a322d44513de1018b50f474f8f736bc3cd91d969f464b5bfef8836"}, + {file = "lxml-5.2.2-cp312-cp312-win32.whl", hash = "sha256:16a8326e51fcdffc886294c1e70b11ddccec836516a343f9ed0f82aac043c24a"}, + {file = "lxml-5.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:bbc4b80af581e18568ff07f6395c02114d05f4865c2812a1f02f2eaecf0bfd48"}, + {file = "lxml-5.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e3d9d13603410b72787579769469af730c38f2f25505573a5888a94b62b920f8"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38b67afb0a06b8575948641c1d6d68e41b83a3abeae2ca9eed2ac59892b36706"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c689d0d5381f56de7bd6966a4541bff6e08bf8d3871bbd89a0c6ab18aa699573"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:cf2a978c795b54c539f47964ec05e35c05bd045db5ca1e8366988c7f2fe6b3ce"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:739e36ef7412b2bd940f75b278749106e6d025e40027c0b94a17ef7968d55d56"}, + {file = "lxml-5.2.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d8bbcd21769594dbba9c37d3c819e2d5847656ca99c747ddb31ac1701d0c0ed9"}, + {file = "lxml-5.2.2-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:2304d3c93f2258ccf2cf7a6ba8c761d76ef84948d87bf9664e14d203da2cd264"}, + {file = "lxml-5.2.2-cp36-cp36m-win32.whl", hash = "sha256:02437fb7308386867c8b7b0e5bc4cd4b04548b1c5d089ffb8e7b31009b961dc3"}, + {file = "lxml-5.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:edcfa83e03370032a489430215c1e7783128808fd3e2e0a3225deee278585196"}, + {file = "lxml-5.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28bf95177400066596cdbcfc933312493799382879da504633d16cf60bba735b"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a745cc98d504d5bd2c19b10c79c61c7c3df9222629f1b6210c0368177589fb8"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b590b39ef90c6b22ec0be925b211298e810b4856909c8ca60d27ffbca6c12e6"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b336b0416828022bfd5a2e3083e7f5ba54b96242159f83c7e3eebaec752f1716"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:c2faf60c583af0d135e853c86ac2735ce178f0e338a3c7f9ae8f622fd2eb788c"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:4bc6cb140a7a0ad1f7bc37e018d0ed690b7b6520ade518285dc3171f7a117905"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7ff762670cada8e05b32bf1e4dc50b140790909caa8303cfddc4d702b71ea184"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:57f0a0bbc9868e10ebe874e9f129d2917750adf008fe7b9c1598c0fbbfdde6a6"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:a6d2092797b388342c1bc932077ad232f914351932353e2e8706851c870bca1f"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:60499fe961b21264e17a471ec296dcbf4365fbea611bf9e303ab69db7159ce61"}, + {file = "lxml-5.2.2-cp37-cp37m-win32.whl", hash = "sha256:d9b342c76003c6b9336a80efcc766748a333573abf9350f4094ee46b006ec18f"}, + {file = "lxml-5.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b16db2770517b8799c79aa80f4053cd6f8b716f21f8aca962725a9565ce3ee40"}, + {file = "lxml-5.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7ed07b3062b055d7a7f9d6557a251cc655eed0b3152b76de619516621c56f5d3"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f60fdd125d85bf9c279ffb8e94c78c51b3b6a37711464e1f5f31078b45002421"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a7e24cb69ee5f32e003f50e016d5fde438010c1022c96738b04fc2423e61706"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23cfafd56887eaed93d07bc4547abd5e09d837a002b791e9767765492a75883f"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:19b4e485cd07b7d83e3fe3b72132e7df70bfac22b14fe4bf7a23822c3a35bff5"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7ce7ad8abebe737ad6143d9d3bf94b88b93365ea30a5b81f6877ec9c0dee0a48"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e49b052b768bb74f58c7dda4e0bdf7b79d43a9204ca584ffe1fb48a6f3c84c66"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d14a0d029a4e176795cef99c056d58067c06195e0c7e2dbb293bf95c08f772a3"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:be49ad33819d7dcc28a309b86d4ed98e1a65f3075c6acd3cd4fe32103235222b"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a6d17e0370d2516d5bb9062c7b4cb731cff921fc875644c3d751ad857ba9c5b1"}, + {file = "lxml-5.2.2-cp38-cp38-win32.whl", hash = "sha256:5b8c041b6265e08eac8a724b74b655404070b636a8dd6d7a13c3adc07882ef30"}, + {file = "lxml-5.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:f61efaf4bed1cc0860e567d2ecb2363974d414f7f1f124b1df368bbf183453a6"}, + {file = "lxml-5.2.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fb91819461b1b56d06fa4bcf86617fac795f6a99d12239fb0c68dbeba41a0a30"}, + {file = "lxml-5.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d4ed0c7cbecde7194cd3228c044e86bf73e30a23505af852857c09c24e77ec5d"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54401c77a63cc7d6dc4b4e173bb484f28a5607f3df71484709fe037c92d4f0ed"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:625e3ef310e7fa3a761d48ca7ea1f9d8718a32b1542e727d584d82f4453d5eeb"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:519895c99c815a1a24a926d5b60627ce5ea48e9f639a5cd328bda0515ea0f10c"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7079d5eb1c1315a858bbf180000757db8ad904a89476653232db835c3114001"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:343ab62e9ca78094f2306aefed67dcfad61c4683f87eee48ff2fd74902447726"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:cd9e78285da6c9ba2d5c769628f43ef66d96ac3085e59b10ad4f3707980710d3"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:546cf886f6242dff9ec206331209db9c8e1643ae642dea5fdbecae2453cb50fd"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:02f6a8eb6512fdc2fd4ca10a49c341c4e109aa6e9448cc4859af5b949622715a"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:339ee4a4704bc724757cd5dd9dc8cf4d00980f5d3e6e06d5847c1b594ace68ab"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0a028b61a2e357ace98b1615fc03f76eb517cc028993964fe08ad514b1e8892d"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f90e552ecbad426eab352e7b2933091f2be77115bb16f09f78404861c8322981"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d83e2d94b69bf31ead2fa45f0acdef0757fa0458a129734f59f67f3d2eb7ef32"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a02d3c48f9bb1e10c7788d92c0c7db6f2002d024ab6e74d6f45ae33e3d0288a3"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6d68ce8e7b2075390e8ac1e1d3a99e8b6372c694bbe612632606d1d546794207"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:453d037e09a5176d92ec0fd282e934ed26d806331a8b70ab431a81e2fbabf56d"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:3b019d4ee84b683342af793b56bb35034bd749e4cbdd3d33f7d1107790f8c472"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb3942960f0beb9f46e2a71a3aca220d1ca32feb5a398656be934320804c0df9"}, + {file = "lxml-5.2.2-cp39-cp39-win32.whl", hash = "sha256:ac6540c9fff6e3813d29d0403ee7a81897f1d8ecc09a8ff84d2eea70ede1cdbf"}, + {file = "lxml-5.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:610b5c77428a50269f38a534057444c249976433f40f53e3b47e68349cca1425"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b537bd04d7ccd7c6350cdaaaad911f6312cbd61e6e6045542f781c7f8b2e99d2"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4820c02195d6dfb7b8508ff276752f6b2ff8b64ae5d13ebe02e7667e035000b9"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a09f6184f17a80897172863a655467da2b11151ec98ba8d7af89f17bf63dae"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:76acba4c66c47d27c8365e7c10b3d8016a7da83d3191d053a58382311a8bf4e1"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b128092c927eaf485928cec0c28f6b8bead277e28acf56800e972aa2c2abd7a2"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ae791f6bd43305aade8c0e22f816b34f3b72b6c820477aab4d18473a37e8090b"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a2f6a1bc2460e643785a2cde17293bd7a8f990884b822f7bca47bee0a82fc66b"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e8d351ff44c1638cb6e980623d517abd9f580d2e53bfcd18d8941c052a5a009"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bec4bd9133420c5c52d562469c754f27c5c9e36ee06abc169612c959bd7dbb07"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:55ce6b6d803890bd3cc89975fca9de1dff39729b43b73cb15ddd933b8bc20484"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ab6a358d1286498d80fe67bd3d69fcbc7d1359b45b41e74c4a26964ca99c3f8"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:06668e39e1f3c065349c51ac27ae430719d7806c026fec462e5693b08b95696b"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9cd5323344d8ebb9fb5e96da5de5ad4ebab993bbf51674259dbe9d7a18049525"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89feb82ca055af0fe797a2323ec9043b26bc371365847dbe83c7fd2e2f181c34"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e481bba1e11ba585fb06db666bfc23dbe181dbafc7b25776156120bf12e0d5a6"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9d6c6ea6a11ca0ff9cd0390b885984ed31157c168565702959c25e2191674a14"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3d98de734abee23e61f6b8c2e08a88453ada7d6486dc7cdc82922a03968928db"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:69ab77a1373f1e7563e0fb5a29a8440367dec051da6c7405333699d07444f511"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:34e17913c431f5ae01d8658dbf792fdc457073dcdfbb31dc0cc6ab256e664a8d"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f8757b03208c3f50097761be2dea0aba02e94f0dc7023ed73a7bb14ff11eb0"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a520b4f9974b0a0a6ed73c2154de57cdfd0c8800f4f15ab2b73238ffed0b36e"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5e097646944b66207023bc3c634827de858aebc226d5d4d6d16f0b77566ea182"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b5e4ef22ff25bfd4ede5f8fb30f7b24446345f3e79d9b7455aef2836437bc38a"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff69a9a0b4b17d78170c73abe2ab12084bdf1691550c5629ad1fe7849433f324"}, + {file = "lxml-5.2.2.tar.gz", hash = "sha256:bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (==0.29.37)"] +source = ["Cython (>=3.0.10)"] [[package]] name = "markdown-it-py" @@ -1461,13 +1512,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.21.2" +version = "3.21.3" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.21.2-py3-none-any.whl", hash = "sha256:70b54a6282f4704d12c0a41599682c5c5450e843b9ec406308653b47c59648a1"}, - {file = "marshmallow-3.21.2.tar.gz", hash = "sha256:82408deadd8b33d56338d2182d455db632c6313aa2af61916672146bb32edc56"}, + {file = "marshmallow-3.21.3-py3-none-any.whl", hash = "sha256:86ce7fb914aa865001a4b2092c4c2872d13bc347f3d42673272cabfdbad386f1"}, + {file = "marshmallow-3.21.3.tar.gz", hash = "sha256:4f57c5e050a54d66361e826f94fba213eb10b67b2fdb02c3e0343ce207ba1662"}, ] [package.dependencies] @@ -1480,40 +1531,40 @@ tests = ["pytest", "pytz", "simplejson"] [[package]] name = "matplotlib" -version = "3.9.0" +version = "3.9.1" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2bcee1dffaf60fe7656183ac2190bd630842ff87b3153afb3e384d966b57fe56"}, - {file = "matplotlib-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f988bafb0fa39d1074ddd5bacd958c853e11def40800c5824556eb630f94d3b"}, - {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241"}, - {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d"}, - {file = "matplotlib-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e7f03e5cbbfacdd48c8ea394d365d91ee8f3cae7e6ec611409927b5ed997ee4"}, - {file = "matplotlib-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:13beb4840317d45ffd4183a778685e215939be7b08616f431c7795276e067463"}, - {file = "matplotlib-3.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38"}, - {file = "matplotlib-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a2fa6d899e17ddca6d6526cf6e7ba677738bf2a6a9590d702c277204a7c6152"}, - {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550cdda3adbd596078cca7d13ed50b77879104e2e46392dcd7c75259d8f00e85"}, - {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cce0f31b351e3551d1f3779420cf8f6ec0d4a8cf9c0237a3b549fd28eb4abb"}, - {file = "matplotlib-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c53aeb514ccbbcbab55a27f912d79ea30ab21ee0531ee2c09f13800efb272674"}, - {file = "matplotlib-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5be985db2596d761cdf0c2eaf52396f26e6a64ab46bd8cd810c48972349d1be"}, - {file = "matplotlib-3.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c79f3a585f1368da6049318bdf1f85568d8d04b2e89fc24b7e02cc9b62017382"}, - {file = "matplotlib-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bdd1ecbe268eb3e7653e04f451635f0fb0f77f07fd070242b44c076c9106da84"}, - {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e85a1a6d732f645f1403ce5e6727fd9418cd4574521d5803d3d94911038e5"}, - {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db"}, - {file = "matplotlib-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8146ce83cbc5dc71c223a74a1996d446cd35cfb6a04b683e1446b7e6c73603b7"}, - {file = "matplotlib-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:d91a4ffc587bacf5c4ce4ecfe4bcd23a4b675e76315f2866e588686cc97fccdf"}, - {file = "matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:616fabf4981a3b3c5a15cd95eba359c8489c4e20e03717aea42866d8d0465956"}, - {file = "matplotlib-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd53c79fd02f1c1808d2cfc87dd3cf4dbc63c5244a58ee7944497107469c8d8a"}, - {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321"}, - {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c40af649d19c85f8073e25e5806926986806fa6d54be506fbf02aef47d5a89"}, - {file = "matplotlib-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52146fc3bd7813cc784562cb93a15788be0b2875c4655e2cc6ea646bfa30344b"}, - {file = "matplotlib-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:0fc51eaa5262553868461c083d9adadb11a6017315f3a757fc45ec6ec5f02888"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bd4f2831168afac55b881db82a7730992aa41c4f007f1913465fb182d6fb20c0"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:290d304e59be2b33ef5c2d768d0237f5bd132986bdcc66f80bc9bcc300066a03"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2e239c26be4f24bfa45860c20ffccd118d270c5b5d081fa4ea409b5469fcd"}, - {file = "matplotlib-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af4001b7cae70f7eaacfb063db605280058246de590fa7874f00f62259f2df7e"}, - {file = "matplotlib-3.9.0.tar.gz", hash = "sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a"}, + {file = "matplotlib-3.9.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7ccd6270066feb9a9d8e0705aa027f1ff39f354c72a87efe8fa07632f30fc6bb"}, + {file = "matplotlib-3.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:591d3a88903a30a6d23b040c1e44d1afdd0d778758d07110eb7596f811f31842"}, + {file = "matplotlib-3.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd2a59ff4b83d33bca3b5ec58203cc65985367812cb8c257f3e101632be86d92"}, + {file = "matplotlib-3.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fc001516ffcf1a221beb51198b194d9230199d6842c540108e4ce109ac05cc0"}, + {file = "matplotlib-3.9.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:83c6a792f1465d174c86d06f3ae85a8fe36e6f5964633ae8106312ec0921fdf5"}, + {file = "matplotlib-3.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:421851f4f57350bcf0811edd754a708d2275533e84f52f6760b740766c6747a7"}, + {file = "matplotlib-3.9.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b3fce58971b465e01b5c538f9d44915640c20ec5ff31346e963c9e1cd66fa812"}, + {file = "matplotlib-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a973c53ad0668c53e0ed76b27d2eeeae8799836fd0d0caaa4ecc66bf4e6676c0"}, + {file = "matplotlib-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82cd5acf8f3ef43f7532c2f230249720f5dc5dd40ecafaf1c60ac8200d46d7eb"}, + {file = "matplotlib-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab38a4f3772523179b2f772103d8030215b318fef6360cb40558f585bf3d017f"}, + {file = "matplotlib-3.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2315837485ca6188a4b632c5199900e28d33b481eb083663f6a44cfc8987ded3"}, + {file = "matplotlib-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a0c977c5c382f6696caf0bd277ef4f936da7e2aa202ff66cad5f0ac1428ee15b"}, + {file = "matplotlib-3.9.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:565d572efea2b94f264dd86ef27919515aa6d629252a169b42ce5f570db7f37b"}, + {file = "matplotlib-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d397fd8ccc64af2ec0af1f0efc3bacd745ebfb9d507f3f552e8adb689ed730a"}, + {file = "matplotlib-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26040c8f5121cd1ad712abffcd4b5222a8aec3a0fe40bc8542c94331deb8780d"}, + {file = "matplotlib-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12cb1837cffaac087ad6b44399d5e22b78c729de3cdae4629e252067b705e2b"}, + {file = "matplotlib-3.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0e835c6988edc3d2d08794f73c323cc62483e13df0194719ecb0723b564e0b5c"}, + {file = "matplotlib-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:44a21d922f78ce40435cb35b43dd7d573cf2a30138d5c4b709d19f00e3907fd7"}, + {file = "matplotlib-3.9.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0c584210c755ae921283d21d01f03a49ef46d1afa184134dd0f95b0202ee6f03"}, + {file = "matplotlib-3.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11fed08f34fa682c2b792942f8902e7aefeed400da71f9e5816bea40a7ce28fe"}, + {file = "matplotlib-3.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0000354e32efcfd86bda75729716b92f5c2edd5b947200be9881f0a671565c33"}, + {file = "matplotlib-3.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4db17fea0ae3aceb8e9ac69c7e3051bae0b3d083bfec932240f9bf5d0197a049"}, + {file = "matplotlib-3.9.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:208cbce658b72bf6a8e675058fbbf59f67814057ae78165d8a2f87c45b48d0ff"}, + {file = "matplotlib-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:dc23f48ab630474264276be156d0d7710ac6c5a09648ccdf49fef9200d8cbe80"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3fda72d4d472e2ccd1be0e9ccb6bf0d2eaf635e7f8f51d737ed7e465ac020cb3"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:84b3ba8429935a444f1fdc80ed930babbe06725bcf09fbeb5c8757a2cd74af04"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b918770bf3e07845408716e5bbda17eadfc3fcbd9307dc67f37d6cf834bb3d98"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f1f2e5d29e9435c97ad4c36fb6668e89aee13d48c75893e25cef064675038ac9"}, + {file = "matplotlib-3.9.1.tar.gz", hash = "sha256:de06b19b8db95dd33d0dc17c926c7c9ebed9f572074b6fac4f65068a6814d010"}, ] [package.dependencies] @@ -1604,38 +1655,38 @@ docs = ["ipykernel (>=5.3.0)", "nbsphinx (>=0.7.1)", "numpydoc (>=1.0.0)", "reco [[package]] name = "mypy" -version = "1.10.0" +version = "1.10.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, - {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, - {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, - {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, - {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, - {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, - {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, - {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, - {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, - {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, - {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, - {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, - {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, - {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, - {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, - {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, - {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, - {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, - {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, + {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, + {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, + {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, + {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, + {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, + {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, + {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, + {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, + {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, + {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, + {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, + {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, + {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, + {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, + {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, + {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, + {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, ] [package.dependencies] @@ -1677,51 +1728,48 @@ icu = ["PyICU (>=1.0.0)"] [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.1" description = "Node.js virtual environment builder" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "numba" -version = "0.59.1" +version = "0.60.0" description = "compiling Python code using LLVM" optional = false python-versions = ">=3.9" files = [ - {file = "numba-0.59.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97385a7f12212c4f4bc28f648720a92514bee79d7063e40ef66c2d30600fd18e"}, - {file = "numba-0.59.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0b77aecf52040de2a1eb1d7e314497b9e56fba17466c80b457b971a25bb1576d"}, - {file = "numba-0.59.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3476a4f641bfd58f35ead42f4dcaf5f132569c4647c6f1360ccf18ee4cda3990"}, - {file = "numba-0.59.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:525ef3f820931bdae95ee5379c670d5c97289c6520726bc6937a4a7d4230ba24"}, - {file = "numba-0.59.1-cp310-cp310-win_amd64.whl", hash = "sha256:990e395e44d192a12105eca3083b61307db7da10e093972ca285c85bef0963d6"}, - {file = "numba-0.59.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43727e7ad20b3ec23ee4fc642f5b61845c71f75dd2825b3c234390c6d8d64051"}, - {file = "numba-0.59.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:411df625372c77959570050e861981e9d196cc1da9aa62c3d6a836b5cc338966"}, - {file = "numba-0.59.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2801003caa263d1e8497fb84829a7ecfb61738a95f62bc05693fcf1733e978e4"}, - {file = "numba-0.59.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dd2842fac03be4e5324ebbbd4d2d0c8c0fc6e0df75c09477dd45b288a0777389"}, - {file = "numba-0.59.1-cp311-cp311-win_amd64.whl", hash = "sha256:0594b3dfb369fada1f8bb2e3045cd6c61a564c62e50cf1f86b4666bc721b3450"}, - {file = "numba-0.59.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1cce206a3b92836cdf26ef39d3a3242fec25e07f020cc4feec4c4a865e340569"}, - {file = "numba-0.59.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c8b4477763cb1fbd86a3be7050500229417bf60867c93e131fd2626edb02238"}, - {file = "numba-0.59.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d80bce4ef7e65bf895c29e3889ca75a29ee01da80266a01d34815918e365835"}, - {file = "numba-0.59.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f7ad1d217773e89a9845886401eaaab0a156a90aa2f179fdc125261fd1105096"}, - {file = "numba-0.59.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bf68f4d69dd3a9f26a9b23548fa23e3bcb9042e2935257b471d2a8d3c424b7f"}, - {file = "numba-0.59.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4e0318ae729de6e5dbe64c75ead1a95eb01fabfe0e2ebed81ebf0344d32db0ae"}, - {file = "numba-0.59.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f68589740a8c38bb7dc1b938b55d1145244c8353078eea23895d4f82c8b9ec1"}, - {file = "numba-0.59.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:649913a3758891c77c32e2d2a3bcbedf4a69f5fea276d11f9119677c45a422e8"}, - {file = "numba-0.59.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9712808e4545270291d76b9a264839ac878c5eb7d8b6e02c970dc0ac29bc8187"}, - {file = "numba-0.59.1-cp39-cp39-win_amd64.whl", hash = "sha256:8d51ccd7008a83105ad6a0082b6a2b70f1142dc7cfd76deb8c5a862367eb8c86"}, - {file = "numba-0.59.1.tar.gz", hash = "sha256:76f69132b96028d2774ed20415e8c528a34e3299a40581bae178f0994a2f370b"}, -] - -[package.dependencies] -llvmlite = "==0.42.*" -numpy = ">=1.22,<1.27" + {file = "numba-0.60.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d761de835cd38fb400d2c26bb103a2726f548dc30368853121d66201672e651"}, + {file = "numba-0.60.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:159e618ef213fba758837f9837fb402bbe65326e60ba0633dbe6c7f274d42c1b"}, + {file = "numba-0.60.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1527dc578b95c7c4ff248792ec33d097ba6bef9eda466c948b68dfc995c25781"}, + {file = "numba-0.60.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe0b28abb8d70f8160798f4de9d486143200f34458d34c4a214114e445d7124e"}, + {file = "numba-0.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:19407ced081d7e2e4b8d8c36aa57b7452e0283871c296e12d798852bc7d7f198"}, + {file = "numba-0.60.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a17b70fc9e380ee29c42717e8cc0bfaa5556c416d94f9aa96ba13acb41bdece8"}, + {file = "numba-0.60.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fb02b344a2a80efa6f677aa5c40cd5dd452e1b35f8d1c2af0dfd9ada9978e4b"}, + {file = "numba-0.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f4fde652ea604ea3c86508a3fb31556a6157b2c76c8b51b1d45eb40c8598703"}, + {file = "numba-0.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4142d7ac0210cc86432b818338a2bc368dc773a2f5cf1e32ff7c5b378bd63ee8"}, + {file = "numba-0.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:cac02c041e9b5bc8cf8f2034ff6f0dbafccd1ae9590dc146b3a02a45e53af4e2"}, + {file = "numba-0.60.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7da4098db31182fc5ffe4bc42c6f24cd7d1cb8a14b59fd755bfee32e34b8404"}, + {file = "numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38d6ea4c1f56417076ecf8fc327c831ae793282e0ff51080c5094cb726507b1c"}, + {file = "numba-0.60.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:62908d29fb6a3229c242e981ca27e32a6e606cc253fc9e8faeb0e48760de241e"}, + {file = "numba-0.60.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0ebaa91538e996f708f1ab30ef4d3ddc344b64b5227b67a57aa74f401bb68b9d"}, + {file = "numba-0.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:f75262e8fe7fa96db1dca93d53a194a38c46da28b112b8a4aca168f0df860347"}, + {file = "numba-0.60.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:01ef4cd7d83abe087d644eaa3d95831b777aa21d441a23703d649e06b8e06b74"}, + {file = "numba-0.60.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:819a3dfd4630d95fd574036f99e47212a1af41cbcb019bf8afac63ff56834449"}, + {file = "numba-0.60.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b983bd6ad82fe868493012487f34eae8bf7dd94654951404114f23c3466d34b"}, + {file = "numba-0.60.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c151748cd269ddeab66334bd754817ffc0cabd9433acb0f551697e5151917d25"}, + {file = "numba-0.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:3031547a015710140e8c87226b4cfe927cac199835e5bf7d4fe5cb64e814e3ab"}, + {file = "numba-0.60.0.tar.gz", hash = "sha256:5df6158e5584eece5fc83294b949fd30b9f1125df7708862205217e068aabf16"}, +] + +[package.dependencies] +llvmlite = "==0.43.*" +numpy = ">=1.22,<2.1" [[package]] name = "numpy" @@ -1762,13 +1810,13 @@ files = [ [[package]] name = "openpyxl" -version = "3.1.2" +version = "3.1.5" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"}, - {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"}, + {file = "openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2"}, + {file = "openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050"}, ] [package.dependencies] @@ -1776,13 +1824,13 @@ et-xmlfile = "*" [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -1856,13 +1904,13 @@ files = [ [[package]] name = "pep8-naming" -version = "0.14.0" +version = "0.14.1" description = "Check PEP-8 naming conventions, plugin for flake8" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pep8-naming-0.14.0.tar.gz", hash = "sha256:c2dcf35de7731b4fe1adcea4ca97e0abf52c811b137054edd25816a34016c9cd"}, - {file = "pep8_naming-0.14.0-py3-none-any.whl", hash = "sha256:5a74972c7a0f882aa643120c8de16b5d8b8b1636a17ac04dbeaff5ce393aa8b4"}, + {file = "pep8-naming-0.14.1.tar.gz", hash = "sha256:1ef228ae80875557eb6c1549deafed4dabbf3261cfcafa12f773fe0db9be8a36"}, + {file = "pep8_naming-0.14.1-py3-none-any.whl", hash = "sha256:63f514fc777d715f935faf185dedd679ab99526a7f2f503abb61587877f7b1c5"}, ] [package.dependencies] @@ -1870,84 +1918,95 @@ flake8 = ">=5.0.0" [[package]] name = "pillow" -version = "10.3.0" +version = "10.4.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, - {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, - {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, - {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, - {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, - {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, - {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, - {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, - {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, - {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, - {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, - {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, - {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, - {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, - {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, - {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, - {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, -] - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -2040,27 +2099,28 @@ files = [ [[package]] name = "psutil" -version = "5.9.8" +version = "6.0.0" description = "Cross-platform lib for process and system monitoring in Python." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, - {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, - {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, - {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, - {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, - {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, - {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, - {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, - {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, - {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, - {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, - {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, - {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, - {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, - {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, - {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, + {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, + {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, + {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, + {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, + {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, + {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, + {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, + {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, + {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, + {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, ] [package.extras] @@ -2068,13 +2128,13 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] name = "pycodestyle" -version = "2.11.1" +version = "2.12.0" description = "Python style guide checker" optional = false python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, - {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, + {file = "pycodestyle-2.12.0-py2.py3-none-any.whl", hash = "sha256:949a39f6b86c3e1515ba1787c2022131d165a8ad271b11370a8819aa070269e4"}, + {file = "pycodestyle-2.12.0.tar.gz", hash = "sha256:442f950141b4f43df752dd303511ffded3a04c2b6fb7f65980574f0c31e6e79c"}, ] [[package]] @@ -2090,109 +2150,119 @@ files = [ [[package]] name = "pydantic" -version = "2.7.1" +version = "2.8.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.7.1-py3-none-any.whl", hash = "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5"}, - {file = "pydantic-2.7.1.tar.gz", hash = "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"}, + {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, + {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.18.2" -typing-extensions = ">=4.6.1" +pydantic-core = "2.20.1" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.18.2" +version = "2.20.1" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.18.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81"}, - {file = "pydantic_core-2.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857"}, - {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563"}, - {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38"}, - {file = "pydantic_core-2.18.2-cp310-none-win32.whl", hash = "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027"}, - {file = "pydantic_core-2.18.2-cp310-none-win_amd64.whl", hash = "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543"}, - {file = "pydantic_core-2.18.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3"}, - {file = "pydantic_core-2.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c"}, - {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0"}, - {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664"}, - {file = "pydantic_core-2.18.2-cp311-none-win32.whl", hash = "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e"}, - {file = "pydantic_core-2.18.2-cp311-none-win_amd64.whl", hash = "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3"}, - {file = "pydantic_core-2.18.2-cp311-none-win_arm64.whl", hash = "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d"}, - {file = "pydantic_core-2.18.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242"}, - {file = "pydantic_core-2.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c"}, - {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241"}, - {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3"}, - {file = "pydantic_core-2.18.2-cp312-none-win32.whl", hash = "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038"}, - {file = "pydantic_core-2.18.2-cp312-none-win_amd64.whl", hash = "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438"}, - {file = "pydantic_core-2.18.2-cp312-none-win_arm64.whl", hash = "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec"}, - {file = "pydantic_core-2.18.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439"}, - {file = "pydantic_core-2.18.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b"}, - {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761"}, - {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788"}, - {file = "pydantic_core-2.18.2-cp38-none-win32.whl", hash = "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350"}, - {file = "pydantic_core-2.18.2-cp38-none-win_amd64.whl", hash = "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e"}, - {file = "pydantic_core-2.18.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8"}, - {file = "pydantic_core-2.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4"}, - {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399"}, - {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b"}, - {file = "pydantic_core-2.18.2-cp39-none-win32.whl", hash = "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e"}, - {file = "pydantic_core-2.18.2-cp39-none-win_amd64.whl", hash = "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374"}, - {file = "pydantic_core-2.18.2.tar.gz", hash = "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, + {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, + {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, + {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, + {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, + {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, + {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, + {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, + {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, + {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, + {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, + {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, + {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, + {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, ] [package.dependencies] @@ -2299,13 +2369,13 @@ xml = ["lxml", "numpy"] [[package]] name = "pytest" -version = "8.2.0" +version = "8.2.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, - {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [package.dependencies] @@ -2335,72 +2405,84 @@ six = ">=1.5" [[package]] name = "python-rapidjson" -version = "1.16" +version = "1.18" description = "Python wrapper around rapidjson" optional = false python-versions = ">=3.6" files = [ - {file = "python-rapidjson-1.16.tar.gz", hash = "sha256:3c9330e9cfd9223cb473384754df9692c18d4ec446ec94ce9ba7dff01a610d05"}, - {file = "python_rapidjson-1.16-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50f283e3ce8f925da6faf4ed3a3ac3242a1345e49b829c07113849642ac6b356"}, - {file = "python_rapidjson-1.16-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:23239689fa79208639342f3f100af4f59bb969f8f1f6e06a9014eb94f45f9150"}, - {file = "python_rapidjson-1.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41443fad179227377b00c39d7cafb49219d0b870110f14776afb8354f56d54f3"}, - {file = "python_rapidjson-1.16-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:092b7276c2fc87d3b9689d4b04cfc0090f6de6588f365ae8154b89083fe315e6"}, - {file = "python_rapidjson-1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41b3a525ec599ac400489b8e1a9f714992e21178e96ebd1ceb74d0578d0e8a00"}, - {file = "python_rapidjson-1.16-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e366bac8463a0593ac2d52d38c951c60124b5a089bcfedb989a008ff4741b257"}, - {file = "python_rapidjson-1.16-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a24f7c646baa8661d919b63ac469e49731e89d6f8fab2991be20c7d1b5f6945"}, - {file = "python_rapidjson-1.16-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc3d4496c4392744f7bf9a80cf668ce21f44f097eb0089bc5aad9ab5cfaeb00c"}, - {file = "python_rapidjson-1.16-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:cb5ca753143916822d4c8864b81ee633f2671d95c4c3ff8fb8feecc7770cca94"}, - {file = "python_rapidjson-1.16-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ad196c86150bd1fe0738252731af3dbc7cface85d7136a42066622a59abe00d3"}, - {file = "python_rapidjson-1.16-cp310-cp310-win32.whl", hash = "sha256:c12e7d2e37d5c2feb9e39cbe77e703affd76d508f8bead4046cc71026ca061a2"}, - {file = "python_rapidjson-1.16-cp310-cp310-win_amd64.whl", hash = "sha256:ed4d8cd3ae01b321e5c86897e5eaad9e83c6cf3afce4d1fca0bb16676a947afb"}, - {file = "python_rapidjson-1.16-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:37d51c5defc9bc196c5e5c91270158305402b9174096c0e9e55c1fd919863433"}, - {file = "python_rapidjson-1.16-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0982f3040e539e0629328f51469e45b680167e5340296360c85f5fc2c25162e3"}, - {file = "python_rapidjson-1.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76938e10ce57e603f5330a95c4ab63e4a0f9ea0c7fda9c28da00dcd6e61986ed"}, - {file = "python_rapidjson-1.16-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7596b8f6a2a22542ddabe5012bef743d21f81af40bf2113af05e2ed98ebfd36d"}, - {file = "python_rapidjson-1.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:184ae8afe84002afae957657424bf05a46da62ace567a7a1b80113f9848a7873"}, - {file = "python_rapidjson-1.16-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04b2cab59533e6cd58294eb9c237e7bf6b2d6136826a299b611ef33adeb3da89"}, - {file = "python_rapidjson-1.16-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:40eac66499740cb6f176132e05cf6fa4f6d116056f081bcfb496bdc5a1c2562a"}, - {file = "python_rapidjson-1.16-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f1f30ad25381ee426d559f83cd3e4267664973b88265f3d440b63bdeee4a2155"}, - {file = "python_rapidjson-1.16-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:743889afdae0b8e8432a72323f643a867299b3d1a96927f71dccb198662034d6"}, - {file = "python_rapidjson-1.16-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:97f757ae43a20068d4dfecf50462f5bc3490667ce22b5c16bbad7930bc6b1fe8"}, - {file = "python_rapidjson-1.16-cp311-cp311-win32.whl", hash = "sha256:f5b0830e3b0e556636b5d56452b25e926b273aeb828a77f8ab3118bba6daddba"}, - {file = "python_rapidjson-1.16-cp311-cp311-win_amd64.whl", hash = "sha256:dcc73c7784bccee3ad79697d20c20067c154561552aaa0e90159d3cd7488e77d"}, - {file = "python_rapidjson-1.16-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3a06cef553e1b2e8f7b1a8bb5ceeb7f5d5a8f7f406c65a3ff84b3f97c297e19f"}, - {file = "python_rapidjson-1.16-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d861628bd257a595ef87256c15f16d58ffc9be4f555df582f3e0ed429f8bcb3"}, - {file = "python_rapidjson-1.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:483de28d2f9d1c42f79df1673d5fe23d3bd349aaec1f90bbcbe8a39511d03e20"}, - {file = "python_rapidjson-1.16-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8ebc242ec652ea503201bf7c3429e03e7268f43ddaa1b6ee96b479a4f6f64eb"}, - {file = "python_rapidjson-1.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9652d4dfc55efb3df14c0034671edd8756c8f865e05e9176d5bb9ba040fe7b"}, - {file = "python_rapidjson-1.16-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6144c0765f946afec74b2bfde53c0a412813c346cdfea6b9ebb63ed4511dac2e"}, - {file = "python_rapidjson-1.16-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23333fbd3f56623e8c99747aea2130981c6476e017563af7bc8ece8dcc23fbfc"}, - {file = "python_rapidjson-1.16-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ac96a6e3fe7b34a544e85b9d258569be2e9bee4a5dfb5c047718f7e76fa92016"}, - {file = "python_rapidjson-1.16-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:909fde38da88cbd32a6e451fdbe83be12137bc5f8e46129214426fc3e859acf2"}, - {file = "python_rapidjson-1.16-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4a9d05185f157ea33718ee799d0fad7afbd8d49153d61ed17d065a2f8683ca0"}, - {file = "python_rapidjson-1.16-cp312-cp312-win32.whl", hash = "sha256:f86e405cbb7e778c2992dbddc3ed4ea562b9a4109feef7831ff06ce838378ffa"}, - {file = "python_rapidjson-1.16-cp312-cp312-win_amd64.whl", hash = "sha256:902f3ee2db0ccc028b0e44b82aa8da59a8c88811a6223a06e97b73ed8adaa6f3"}, - {file = "python_rapidjson-1.16-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e8939f66d64f2abefa288dab0ffd99a948191f255fb5e64197e0ef7b840bf774"}, - {file = "python_rapidjson-1.16-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4351720b2424fb58ab5eaab16910bb3649f78265b12cb15c09880ca501b7513"}, - {file = "python_rapidjson-1.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb2e9bca595b53489f16a130bfc70c0600eb9a76d5b0eb18990a65d1f6bd7583"}, - {file = "python_rapidjson-1.16-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8e0cf57ab8acb7ca60130c79c18cfcd6f1ce219a14fdff2b0840a847d879d1f5"}, - {file = "python_rapidjson-1.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece8b2df2bc8a614f6e0d6107fddb5d1bdc88e19505c83286548e27090ec248d"}, - {file = "python_rapidjson-1.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67f56857c4b60d67941cc0816e1159290055b390f5df0d07fa227981412ac89d"}, - {file = "python_rapidjson-1.16-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:210b6b6a74415111b3d54ca290eb3c25d9733a0fa5a3d795506520633db2f23c"}, - {file = "python_rapidjson-1.16-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:aba4087bad2aaf14bf3b60b31dbdab311fe82ddb01fe55bff30b366df05a7d86"}, - {file = "python_rapidjson-1.16-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ef5ca9fa2d4437bf0165a20ef5d2dd3582aaef038f43ed663e629f3fa27e6800"}, - {file = "python_rapidjson-1.16-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5b7c34cf1fb7be3a2662c499f1da4bedf35d6dad44dd537b5833555c8c118af9"}, - {file = "python_rapidjson-1.16-cp38-cp38-win32.whl", hash = "sha256:e75316f4c80cd3a08cb241c10a704701628c9675b271782867e58fcfab47a6fe"}, - {file = "python_rapidjson-1.16-cp38-cp38-win_amd64.whl", hash = "sha256:9c642bc6e78b7eec357f32292b5091d59ab36976af669455d3eb5345510ea6eb"}, - {file = "python_rapidjson-1.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9aa62070a0a3d1a6b1e72c522823d0e99498ec5357610a7d7a6df5735ec37e6c"}, - {file = "python_rapidjson-1.16-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc45c7ce9a2f692181f0c5a50dd9167ce9f58e04265ba5db4e47e0c9019957b0"}, - {file = "python_rapidjson-1.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e982bbde9a573097d0440e7d8c256dc03a68bb923bc75fa104c84dbba2dc03a5"}, - {file = "python_rapidjson-1.16-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd98c03b2a798956f9c6c81dfe579285f54b685c89b90fd0a26814b84c6a530b"}, - {file = "python_rapidjson-1.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48d9a7b4ad83b6a9be4a577d5b31283e6b132d5d320ea52733ff24ede78a4e15"}, - {file = "python_rapidjson-1.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc3d6e22113d69f734677dcccb33652d318f5e0b88e9cf5dc252c72e68921a7b"}, - {file = "python_rapidjson-1.16-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:71b2cc48217b9e5f3b5e1a1d4b109709c8f3a47e76ae73103739ef63c6d9da27"}, - {file = "python_rapidjson-1.16-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b0c138a9efc2ee4f0267d19ed4cabeeb018bb256ba6ff30368d5d13098a42da6"}, - {file = "python_rapidjson-1.16-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:05c86c585b3084564ec4b0e490f06de928eaedd26b408b713a226a6d96916c94"}, - {file = "python_rapidjson-1.16-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:476cb179949feba4abc76f94c80bc82232690ca19a911868422fde7f6ebc8588"}, - {file = "python_rapidjson-1.16-cp39-cp39-win32.whl", hash = "sha256:fc5647a1c6a91998e758349fefe31b81d462acfbddfa7d74cf8320411978a178"}, - {file = "python_rapidjson-1.16-cp39-cp39-win_amd64.whl", hash = "sha256:b00f0c822532842834315a6d5e5e2567282dd64586139e99b63eedb5d14a15ae"}, + {file = "python-rapidjson-1.18.tar.gz", hash = "sha256:09a5c362e2fec2a41b53e79e88bd8f0704447cb67c1c89a59e3092ccb4a30355"}, + {file = "python_rapidjson-1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f38c7ca5fee31423bb34f464c789f57954886dd00e1a8c8483fd13e0c0d2583"}, + {file = "python_rapidjson-1.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1912224817f734ee9138e91d170b62818fd01caa731aa8668e8c9bce9017fe7e"}, + {file = "python_rapidjson-1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2af6ca181e812f2306d4806beb974334ddd0774a8f62194ad1721277236f4ad1"}, + {file = "python_rapidjson-1.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08f859f64470ecb307cdcd7a532bef9c9ab3c94d2005c5693a7e18b3a11d4b28"}, + {file = "python_rapidjson-1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:507595740300e95dded254536558cd56733cc3207e3c2457f19231ad00e78d85"}, + {file = "python_rapidjson-1.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5815af2f69a11c114e5004a77b8b036b5abcd06202c8bc1525856f9d836254a3"}, + {file = "python_rapidjson-1.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d680b8c8f4dbceb465544bbdd28463aa7e0b651343aa73c2476533bf300e0266"}, + {file = "python_rapidjson-1.18-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ff22c4160227be38322a88856f011c95d199103c30993bf3ee64f4bce9221807"}, + {file = "python_rapidjson-1.18-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:9deb8a8a2df2982b446f2a19264a5da2780ddb415caf9e11d48e74701053f02e"}, + {file = "python_rapidjson-1.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6ecd86abf689538fdab5a55483c38bf10bdd9a8ed204ae10fa5a1bac7222d88"}, + {file = "python_rapidjson-1.18-cp310-cp310-win32.whl", hash = "sha256:a9d4cd0be643b8310c1c92987961c06b68429527154e9bea75118802cd179178"}, + {file = "python_rapidjson-1.18-cp310-cp310-win_amd64.whl", hash = "sha256:52f1d509ec20ab5d26f6dbc5d56821e0b2b1a5a878439eb0b3a33137b59029f5"}, + {file = "python_rapidjson-1.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83912aae7c508204c263818befa24cf3223ecf0175e70d0412169e1302f1b4f2"}, + {file = "python_rapidjson-1.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f45a02e4593879772099cf88d18dbde3376334684a809feb9228b8745c0c08c"}, + {file = "python_rapidjson-1.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f201e0c1e41c0e491cf2eca121d51f30c666f35ce33a6d14ba8fc5b76e4a2fa7"}, + {file = "python_rapidjson-1.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:697d06a66a1ba267f5abbb04971e461df1d4528ba341af6848a1ef01ae224e90"}, + {file = "python_rapidjson-1.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7e22b841fda1ec8c9e0a49069fbc6579363ba79fa5398fc7d37666357068cf"}, + {file = "python_rapidjson-1.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:356b2f81e6cdb4c1bb9122b635c8bd827f845da7c0de8618874c933fb88de573"}, + {file = "python_rapidjson-1.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:acd2430dd7a8f66618247635c51a9413679e9a5279aaea708f854ef03cc933e1"}, + {file = "python_rapidjson-1.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a587b3ec2b76480dfb57409654a9344ab47910e1b9d09e1c8eefe2db6c8c7364"}, + {file = "python_rapidjson-1.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2cf502e6c01d0933dc65888ab62b86d67967903c9a66158c2e458b312e671345"}, + {file = "python_rapidjson-1.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:43e622aa170f0b1e04f5b5ac8c7bf94b99f79efceb3608d8f1456f617cd79cdb"}, + {file = "python_rapidjson-1.18-cp311-cp311-win32.whl", hash = "sha256:f9c9faa7c1df63e2b238fcbdb915d52eba9ba42ee6e2a502f81e8aac07938783"}, + {file = "python_rapidjson-1.18-cp311-cp311-win_amd64.whl", hash = "sha256:e7b1cadf5c8852ae6e0a19fcf5b734eef4f92170292686cfdcced1302ea0aa20"}, + {file = "python_rapidjson-1.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52912323a2ac460ea605ab55f437196f662ec9db82669367dab4cda8f4c05b13"}, + {file = "python_rapidjson-1.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebbd471d63bfa3c09180fd44eefec7b0f46ca41ee4552559c3a027799c67d781"}, + {file = "python_rapidjson-1.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb89a794242a692ef5d15ec9ad14c21fd17abc4671af62eadc8e6a1861a0319"}, + {file = "python_rapidjson-1.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcae2fdd5a2520dc85f98224ba1fc96badd0b68d3a8ee41485b3e37be67b7bef"}, + {file = "python_rapidjson-1.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f46face2b3e6891dd646dc1062c1133323ce4dc26409a084535f2af9e2bb4e3"}, + {file = "python_rapidjson-1.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67a3f71225200344ffaab3d28add533398b92f65d9166e649222a50677370fd2"}, + {file = "python_rapidjson-1.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7851252083aba29668cf1f02dc1c1e5e5a9113bf4f1dedc2f509c00e43f0c884"}, + {file = "python_rapidjson-1.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:32c32256edb35a234b16dfa6452bdf066cc272675cf9b3eb980e853505202766"}, + {file = "python_rapidjson-1.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5f9d27c090782f83de06dd51b9a7143b04c32314e53ed531a2d8f170f9f255e9"}, + {file = "python_rapidjson-1.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d3e0b8863cc0e78e36d41aae856101291c0bea9215690decafa6bae5f413e1f3"}, + {file = "python_rapidjson-1.18-cp312-cp312-win32.whl", hash = "sha256:123e7bf9726c09055d97ba0c4fc8cdb9deda80c2a9d5409bfd49935a0f38d0b2"}, + {file = "python_rapidjson-1.18-cp312-cp312-win_amd64.whl", hash = "sha256:03d14892a1cdc24e5b200ca619fda397e0f36a3d1420edcb7212ae47d4d9fd3e"}, + {file = "python_rapidjson-1.18-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1d4861adede630a5eee77c46f9c901da2ac15bc3c0296ad851d69036db3a0374"}, + {file = "python_rapidjson-1.18-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:35d0e9c8dd61670b5833546b3ded057b68e696ab530d3c14603e718a4bc3db00"}, + {file = "python_rapidjson-1.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d229114f738ee0d9ff1b727aaf7bfe6a90d6f77e0449b33f87ad7814c493c921"}, + {file = "python_rapidjson-1.18-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb0a8361b668e920d7fa78f725f59d224adedb3620f526509cef4416778e3393"}, + {file = "python_rapidjson-1.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20256271a00f758a96ccfdd61434c11a1fc6b5e3fd4e7324dd832e576c9f720b"}, + {file = "python_rapidjson-1.18-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad82fa706d7437ceb0d8e36870715e8318359bc604016fc505c14ccc109322e9"}, + {file = "python_rapidjson-1.18-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f13a8be00c0fd31c75304f03df1240d16268720b9d12eca3d055f702dd607427"}, + {file = "python_rapidjson-1.18-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e9712964a864c7604319bebbdd4ab5de9a42698d3c9a6c15c964a06d586a2c66"}, + {file = "python_rapidjson-1.18-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f0f36f9c194d8c893463128a57bd7cde3bb28151eaf5bb5db5f552de0eb0eb93"}, + {file = "python_rapidjson-1.18-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4704f9f987a62c4b7e419843bb3c5daea81271dba95cae47e92b2475978ae66b"}, + {file = "python_rapidjson-1.18-cp313-cp313-win32.whl", hash = "sha256:2d197c686a4eacc2defe9bd31bf73b23877ad4974857b72b65e126cef7a50fa5"}, + {file = "python_rapidjson-1.18-cp313-cp313-win_amd64.whl", hash = "sha256:30f4a317af410d3977cf405737a2d6e81c6695d24df33113523023f665bb5e75"}, + {file = "python_rapidjson-1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:300b8d84d5bebea7988312950fc949c1701055086b2790afaaad68e8f1cf389d"}, + {file = "python_rapidjson-1.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:981dd50522999a4fe519ca14135e20b3acc4928df4d4421d96792913d2fb359d"}, + {file = "python_rapidjson-1.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d03390ac612090c58553e1d8454faff6099a2b2ee0c44ebd19546d5a73b30689"}, + {file = "python_rapidjson-1.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0550caca5227e3f929b63b758c19c584f39c10d4e1c4ad9b7e322f19030db3b8"}, + {file = "python_rapidjson-1.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37295c26b6270515666243d499c060006471b0517dbdf7690b5f855b9531f9b8"}, + {file = "python_rapidjson-1.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d058b9c740c55fe3ffab826742773f995620992eda6a31d794727526d0ea1610"}, + {file = "python_rapidjson-1.18-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0c4697e3fa587c7f3938d2394ff6563085bbf346e4cab29fb425595d267a59d1"}, + {file = "python_rapidjson-1.18-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aa8fbc9c31d9320e80a290d3cf847756d37290628ccaad3719de6fa51ab43597"}, + {file = "python_rapidjson-1.18-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:191e051b7b384474b6558902b8c33f82474492e3d19cc188224cd1a5584ca4bf"}, + {file = "python_rapidjson-1.18-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dd0bc1b3d4d72bd3eb9f60f84473fcefb316912422267bf06d8c2290ef33e02"}, + {file = "python_rapidjson-1.18-cp38-cp38-win32.whl", hash = "sha256:1925a3ed72504812ab1d8edd59ad83bd4b96b5a3e149ee927f3cdb98b803ac22"}, + {file = "python_rapidjson-1.18-cp38-cp38-win_amd64.whl", hash = "sha256:4e21cbd8585598ce091990196fe6fe354c607e13e2b17794f3711a8f2b2b8b11"}, + {file = "python_rapidjson-1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:68230f34a076a54298d5c860ae8aa08e3de5ab5a289b23b96a0a6039861f911b"}, + {file = "python_rapidjson-1.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1ec8b167484523bc0d753998594cb2614061755191946b73c7e88e124287595"}, + {file = "python_rapidjson-1.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bad5d1a46b2d07f1d9b4ad1c316a36e024da451ff876d1572cb345c6bb50a42"}, + {file = "python_rapidjson-1.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daf270f1d2feddf7680ddc2faf2778e814caf569095cc60c2079e856af3d2bc3"}, + {file = "python_rapidjson-1.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72948a56b9d4964d72f2f3862d5d168b247457f9d1e70cee750a0cd660f67555"}, + {file = "python_rapidjson-1.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0624eebe2ceba44dd84a3d3409fab1e7e1a021c3701b5ad5bd8a0fba47898d20"}, + {file = "python_rapidjson-1.18-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b975fcecbf5f3845ce72040be4630ece4c5b467c24c749be2a81827918a2e530"}, + {file = "python_rapidjson-1.18-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f725f560f4865fb5b684a26935f78690e44aa475c8b41a793d096a122115c9b3"}, + {file = "python_rapidjson-1.18-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:0a31ea1a7a11a6e60fed42364e6726d29346f6ba1a9212ea1b6753731f600909"}, + {file = "python_rapidjson-1.18-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:477aff79a2d87daee45c49e917097426fe5495f99fb935a5adb20716cb52c86a"}, + {file = "python_rapidjson-1.18-cp39-cp39-win32.whl", hash = "sha256:d13a0e3f647726f653cd3d6bfc770d595f51d75212b38df82d2a465bc0df5dd8"}, + {file = "python_rapidjson-1.18-cp39-cp39-win_amd64.whl", hash = "sha256:412c716cbf41ecfb99879443fc11288513053e63302232df0ed99d629fd220da"}, ] [[package]] @@ -2416,13 +2498,13 @@ files = [ [[package]] name = "pyupgrade" -version = "3.15.2" +version = "3.16.0" description = "A tool to automatically upgrade syntax for newer versions." optional = false python-versions = ">=3.8.1" files = [ - {file = "pyupgrade-3.15.2-py2.py3-none-any.whl", hash = "sha256:ce309e0ff8ecb73f56a45f12570be84bbbde9540d13697cacb261a7f595fb1f5"}, - {file = "pyupgrade-3.15.2.tar.gz", hash = "sha256:c488d6896c546d25845712ef6402657123008d56c1063174e27aabe15bd6b4e5"}, + {file = "pyupgrade-3.16.0-py2.py3-none-any.whl", hash = "sha256:7a54ee28f3024d027048d49d101e5c702e88c85edc3a1d08b636c50ebef2a97d"}, + {file = "pyupgrade-3.16.0.tar.gz", hash = "sha256:237893a05d5b117259b31b423f23cbae4bce0b7eae57ba9a52c06098c2ddd76f"}, ] [package.dependencies] @@ -2490,135 +2572,100 @@ files = [ [[package]] name = "pyzstd" -version = "0.15.10" +version = "0.16.0" description = "Python bindings to Zstandard (zstd) compression library." optional = false python-versions = ">=3.5" files = [ - {file = "pyzstd-0.15.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4ff57d2a67aaff47eb60c37c5476af2a5056319aa2a5cab4b276f78b764be785"}, - {file = "pyzstd-0.15.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8195b3fe2ed91db03f969c3c5cf6a9bcb3a961749caec94479e9e7a96d7af14f"}, - {file = "pyzstd-0.15.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ea6a794b8a4e0590bea1599e724d4877d34640058caf5c0b3f916ded06fc3a1"}, - {file = "pyzstd-0.15.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:deb41298fb0c916875413373e5eba162e39309d8730be736b3a206d9b73afebf"}, - {file = "pyzstd-0.15.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0f1f590a66769caea6cf47c3c5d06d004f01659449595d4bc737a42d4670bf0"}, - {file = "pyzstd-0.15.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dfd0d97ac231c08551543d61d123cf44bdd2fc20ba5ebce1fb0c466036be15a"}, - {file = "pyzstd-0.15.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c20a4ee0706db5c9f403e4c459fc81145f48cb20fccc1a64acfb6143f1a7b1fb"}, - {file = "pyzstd-0.15.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e7c4530ec6bf3a27c3cba229026fa3669e6e1832fdc37cf74c73b113f884cb2d"}, - {file = "pyzstd-0.15.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cccfb03f829ecde3ee126befb4fe827e2228a50e8d9eaa0275c4dd21a0e59765"}, - {file = "pyzstd-0.15.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e045dc688bb618cf2a2e33cb487c0d8af5e31a4eaec18c9399b34e2aed58777"}, - {file = "pyzstd-0.15.10-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a22c4b26fb6134ece45e875515961bc9c1777df775f3488800bea55a381df91e"}, - {file = "pyzstd-0.15.10-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0779ccd652113d75cd461fa6581149550b0da55e72b1a6e28e6f49e9978c2d41"}, - {file = "pyzstd-0.15.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:150a7c7004b9df00f7cbb6dad0bdbab5d77c8c54b0857b8b3e50beae2810a041"}, - {file = "pyzstd-0.15.10-cp310-cp310-win32.whl", hash = "sha256:50186fa41c72929d21727dcc6cb87bef0adf09df9e982325a0ae5bfd20a9456b"}, - {file = "pyzstd-0.15.10-cp310-cp310-win_amd64.whl", hash = "sha256:8e3dff90b6abc56331a886b5067c3b6bc3fad1b6df5766247197b699afd013b7"}, - {file = "pyzstd-0.15.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:51c644157319e2ca87521bd9694df7f651aac3273e015f35cdfb47cb8597ce37"}, - {file = "pyzstd-0.15.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85582502d3df1db8077475d88d0bf5f35b8ddb8abf9badd8625781024da5f346"}, - {file = "pyzstd-0.15.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adb895a0081a932132aa3a233cfeba682a07ac0dc36b062152f240406eecfba1"}, - {file = "pyzstd-0.15.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0822c9f4852f9f6b1458f8fbf011bb887cefba792b0c7c10659e2c9c997d1c9"}, - {file = "pyzstd-0.15.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6fd189c85f2efe94d3945dfbb85cdbc4e213757be75aa9a45e186625498ddf"}, - {file = "pyzstd-0.15.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d6f7fcfef9166670df4b6710d1105b891efba68ec523f56c64cc8c7aa6c8e88"}, - {file = "pyzstd-0.15.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:527bfd3e01b8dafa1c24cba1a0455a85bbcdb41a3eefe59e2849634f9206d4f0"}, - {file = "pyzstd-0.15.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:330d54a0e5886fa5ca21e3960b9352a7b21f8dd85f98d4b7c4e8a7d48ade6998"}, - {file = "pyzstd-0.15.10-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a900a3dcda64b289cf35acfb6c90246b5ae9f2dd4bc05da8dcb8fbd04c91e37b"}, - {file = "pyzstd-0.15.10-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e21208605759dc2eeebf607a002e1ddc09548c12f25886d2a2dd8efdf35535a3"}, - {file = "pyzstd-0.15.10-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:015a6794196fcb75ddaaae8186f0dbdcbda4e84451361a808b3e96c8c8a63296"}, - {file = "pyzstd-0.15.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b856928e99a1d3080929b0f194c7922c7a7979b0eb21ad9d057f000dcf1a6ac7"}, - {file = "pyzstd-0.15.10-cp311-cp311-win32.whl", hash = "sha256:39a912430c73aa585ede2dc7c9f09c5334862953f26a9a86ac048c3805ed6bb1"}, - {file = "pyzstd-0.15.10-cp311-cp311-win_amd64.whl", hash = "sha256:4cd0bd21e0c7721e9f4ea54d533d9196771ab1d6ae0a83a96564dc46147a26eb"}, - {file = "pyzstd-0.15.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:13515a6abca6751482396b656e5b72279bd405fd6c71b5bc899fcb526d40e564"}, - {file = "pyzstd-0.15.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62a1614558478f7d1014eec94a9ae3bf21c95766ecbe0a4a1ab16d2f1e4a6b67"}, - {file = "pyzstd-0.15.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d62a54dd438b51dd9f94bd88dd2f7c9d4093aadc44892143182d51f8488ab5f6"}, - {file = "pyzstd-0.15.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa20eb8f710a9d36801451d1cbcfc83d1dd9e400527ad9aba7e7cc635c2729b"}, - {file = "pyzstd-0.15.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3443df2dcdfe6e57c2600617e8f377772703b7f907fe065b49948c05ace80fd7"}, - {file = "pyzstd-0.15.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db3d4e991ee727f6c0a54fe975ebe169be3a463ce810cfd8e6edbe8a90ddeb8f"}, - {file = "pyzstd-0.15.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53172f0781b3db9321a1286bb274121668c3fe560d3bddfa82f585475f7145fa"}, - {file = "pyzstd-0.15.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6217f30c4341619c6066a044ca118f53a3121b5813a56257b1f9818e24450584"}, - {file = "pyzstd-0.15.10-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cfa03e12c0c1bd357a0e1f20adae9c32bc166dcc6ed3be65885134830899b6ba"}, - {file = "pyzstd-0.15.10-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:455d2258f247968d18a9eaeb11e214e048acc976a61f72a0282d4c40051458b8"}, - {file = "pyzstd-0.15.10-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:e0262bba03bb4d38b697c2039a8e48a9e889fb9ae9b727903e8d9c49d32883a4"}, - {file = "pyzstd-0.15.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7f7a398bcb0f4cfbaf0ddb3e831c43857701c63c66f48eb30011326ed03b0fa"}, - {file = "pyzstd-0.15.10-cp312-cp312-win32.whl", hash = "sha256:ce8e8a4aa8246c615693b9d0504e1df98157ae48907a044baa80f80abecc44ad"}, - {file = "pyzstd-0.15.10-cp312-cp312-win_amd64.whl", hash = "sha256:0561710b88d4895a7bb202335e802125da6a71c556b1292fd620224b2652f496"}, - {file = "pyzstd-0.15.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:62b8c3801d739a9592c0503dd294fab7f8cd2b1d637429babe13671bedf7d6f7"}, - {file = "pyzstd-0.15.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2cc02e94ff4df6a4a871bbd69149ba5fbc5150108a208c6cdd9bc728000995b"}, - {file = "pyzstd-0.15.10-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f174c47c370641c5dba74d4fd99374ca0eadd47e43e7f76ee8b76dacdfa2406"}, - {file = "pyzstd-0.15.10-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1752344c77dbb137244e6ab5af5a7576b8e8b8e5d440c58d935e69f83606e0d"}, - {file = "pyzstd-0.15.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94973e29acf813a572adf3ed2342a0998a41331781d7be82a0a1b02646181e34"}, - {file = "pyzstd-0.15.10-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e71bb03c754934d7792aa0559b16f9effe1d4196f5834715c115363809f00c37"}, - {file = "pyzstd-0.15.10-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b19cdecdc19ad863673709d27ddb0adc104b9ad341f2785ab23c51c9ab39cf3f"}, - {file = "pyzstd-0.15.10-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:6aed97ef51e20ea4fd7e12c4b9e3199cd8e4664054f5d84c3d83e6f4d3144055"}, - {file = "pyzstd-0.15.10-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4094ea7b80081bb024eb887c80eeb6bd8ae24dc2862cc61ae9eadb5bca11dcd6"}, - {file = "pyzstd-0.15.10-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:65e99e57f5fb42ed391fc2f7ffa4b8cce5a32dfd74f52e03bd36bb2ac3b56536"}, - {file = "pyzstd-0.15.10-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:957751dd7bba26e651c689fc5f41bb269712efcbf19a97ad4f912f0f792e6e95"}, - {file = "pyzstd-0.15.10-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ba0f1c0201845b769c92b2b3e7666010abe14d6e9dbf4214d04cdf23cbdcd1ae"}, - {file = "pyzstd-0.15.10-cp36-cp36m-win32.whl", hash = "sha256:ad30429f499c30e8e19ed389b8e25116d43c63cafdb97d4f5617e94e671209c5"}, - {file = "pyzstd-0.15.10-cp36-cp36m-win_amd64.whl", hash = "sha256:49c99120f9ea0c512019948e55ba17e60dadb1d3578890d53b2a09858da4e1dd"}, - {file = "pyzstd-0.15.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:eb4d96fe5d6d8bf5c8c64d8a37edff55e6d9abbf84d9b8fd0fe8e0db1a557625"}, - {file = "pyzstd-0.15.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ca483ee2084d36dc570004b6793f99c58d2df201c630f60518bca3518faa5d"}, - {file = "pyzstd-0.15.10-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bb791f16c810c98865c373202a44b7b313d01a2a7a6186c9dcc0ac1a0d156dc"}, - {file = "pyzstd-0.15.10-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94d970caaaf3f59d6c7aa0aaf38e755641351f99452c400fc06b7e365ab1620c"}, - {file = "pyzstd-0.15.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a15a3ef14cb929b07e0a98639f2ebcd69a0038d6e31367157018ec841a54d8fa"}, - {file = "pyzstd-0.15.10-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e69d3d5257607a3b29f12192ad7bc9fdbdc8aa5f7e11c6f536cb61ee02dcd698"}, - {file = "pyzstd-0.15.10-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca80bb0b8400888e16e8eaa01b506de7d1bbdc8cc78c9ff75272526fd36fcb8a"}, - {file = "pyzstd-0.15.10-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99902df14861e4f40ed1eb403a17356188428d12bb10d53de10d1ea24996b838"}, - {file = "pyzstd-0.15.10-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:be591f405d82f40acbe2a081f1dee5478a3cf1b694013cc5712e84159311e36a"}, - {file = "pyzstd-0.15.10-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c867d446b22a7288229a812da6f211d86934beb47edf8098e2e0dbe9e2529f86"}, - {file = "pyzstd-0.15.10-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c6f67ac9d3ff65ca466821d573b3cb2fb01f0cd9eb082e92f49dfd88fa828a77"}, - {file = "pyzstd-0.15.10-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5ae5f8ab4accc980fa8e6696a402176e20a717ab2b296cd8d62b6a86cafc5f9c"}, - {file = "pyzstd-0.15.10-cp37-cp37m-win32.whl", hash = "sha256:013b206c22b85512d59dd05f6684c02bf9db45e93f637facb5ce165c2447fbc4"}, - {file = "pyzstd-0.15.10-cp37-cp37m-win_amd64.whl", hash = "sha256:357e6545203754e83a0431663aa86cae873abe160923bdf3db07e88f03100b05"}, - {file = "pyzstd-0.15.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9593a76f516312ec59dbeb73a9f1915d1f67610c054a7b488912b972cbfbcb7e"}, - {file = "pyzstd-0.15.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d55d9e1e22ebfa9cde606a7967eb21fbc65d0d3be600e550c38a1c05094c8015"}, - {file = "pyzstd-0.15.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f356263a898b2c9961a2661ebb975f2fd20868d2c4fc4a165226fa7d36e1c76"}, - {file = "pyzstd-0.15.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5494515f3d0df1eb54c9f4ce7b9ea0b285bc1ba87eba295604da5f8de711bdea"}, - {file = "pyzstd-0.15.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dca0cde0f02e08e11431fff0e5408ac46420912165d828bc148a3c8cedc8852"}, - {file = "pyzstd-0.15.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91e8a0852784c758b8de4179c61e80abae997155aa2b324cbee28dcaf9084b6f"}, - {file = "pyzstd-0.15.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d62f357845f90d5327bdd3286ebd79c40b23b8e7c36772fc2949ef54a92bc6de"}, - {file = "pyzstd-0.15.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b2ac847e8d2ca55be038d29d20d6bfe86c03e66ac2d9741701e4f9eef2abda9"}, - {file = "pyzstd-0.15.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c2d2a7324fbd118dc951b63b1fc553aec0fc0c430474a6ab7b33608b9606658a"}, - {file = "pyzstd-0.15.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:609cc4bed06942e51ebdfa9cc74629e1d19de2339161b65d555d01b9820aec46"}, - {file = "pyzstd-0.15.10-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b62c408ddac3ae113b9dc4867fd2bb32a2ef669c68f256eb5486c02b31603afa"}, - {file = "pyzstd-0.15.10-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:18167c8a16709631eaa2f4fd27e2a7570b4c37ec460b65ff098e948af2d37f33"}, - {file = "pyzstd-0.15.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:801ab496766a858cc54b37a66f9d0169d590628e69bde2166f76c35dfc20f64f"}, - {file = "pyzstd-0.15.10-cp38-cp38-win32.whl", hash = "sha256:846050f1d7520350d26076df12b8a78b540780d7d3478845be79d57e2e6d3612"}, - {file = "pyzstd-0.15.10-cp38-cp38-win_amd64.whl", hash = "sha256:d077f76179de41cdd5ae39b0a6f16f033b077f27fa54a9e038d03e3f5ddeff23"}, - {file = "pyzstd-0.15.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e2dbb36017e5c7d7499dfc05f8d6ed781fce9fbfa45cc7bd888ec5f871aba3d3"}, - {file = "pyzstd-0.15.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:41e0da402bf0d68067be2f16f65b9d1d7d7e6d726f27762226cba7a8badd618a"}, - {file = "pyzstd-0.15.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a62e98375385ade756d1ea4975f79ec103c515b412884d146c98295c5300fb4a"}, - {file = "pyzstd-0.15.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8575d340ffcd89e4558448eec23c252da584f0de4528a73ed45a01f12d6700fd"}, - {file = "pyzstd-0.15.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6bfb81f36fd56664dbbd64a0af241797424c76861faa2682aca89de110fce5d4"}, - {file = "pyzstd-0.15.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965e04aeb83f594577ea4e8c975765d0953a75c8d6e3cd193ae25ef574bd83ee"}, - {file = "pyzstd-0.15.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:793077870191d54889cc472eda3bfd84c8cae5ed61c9fa9fb2ce29c31e23f812"}, - {file = "pyzstd-0.15.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:468f12eb61cbef394ff412c86d8bc85b90f24dff19f675c864df88a1a398a3a3"}, - {file = "pyzstd-0.15.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:92abe38cdd7ea3f98a0f1a4521e9e7e70aa001713bff62a5b97fae41b0a39d0d"}, - {file = "pyzstd-0.15.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6fa6495ec52ff29b097e6d1b619588ab61e998b198882ec622d947856d4a85b4"}, - {file = "pyzstd-0.15.10-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:1c3d0e784ea9b66b06c7b76895aa4c1a90975980b1ae136fa8bbd8fb2b93e9b3"}, - {file = "pyzstd-0.15.10-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:bafef40c8b521ef9df81a118e278d5759c0127395883dcc10bf80ee32a46da39"}, - {file = "pyzstd-0.15.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:81154db47a9aa901d09a8cebcd1f6559dbbd02a93a16bc203dc3f94c06bea25a"}, - {file = "pyzstd-0.15.10-cp39-cp39-win32.whl", hash = "sha256:6ed32af20eeeb7f8307b091fdd0ee8f5f8733dde7e8f560a3115c98a6ac33a61"}, - {file = "pyzstd-0.15.10-cp39-cp39-win_amd64.whl", hash = "sha256:8e4123de14a8dd7bccb1faed374c1f6c87111766279bbba5d6c4c52e39c383d9"}, - {file = "pyzstd-0.15.10-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0691e54fb29a4d1f4f2a0064afaf5d1525824bf139d83f403e5ba5ee630ac4f5"}, - {file = "pyzstd-0.15.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:656107ef6ff0966df2a58828f165a17b0b40977358512ade259c52c18bff0a13"}, - {file = "pyzstd-0.15.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea1fe83079c67c3f1549a735f11060350c87453bd86a8442bccb1f9b14c26aef"}, - {file = "pyzstd-0.15.10-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:502ec85cb2c0a35350a196e25d5e1350d400102706eba05d7926eadb64ffa976"}, - {file = "pyzstd-0.15.10-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a07742d42409c3ce98c58f2b155e2d8acdcd8ff49955062f5155dae94b24060a"}, - {file = "pyzstd-0.15.10-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6023de5cc800c073cbf6a10a7aad0cbae0c1849c759bb5263a78d9ac774b167b"}, - {file = "pyzstd-0.15.10-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63a90494aeea75d3298941b0b8ddd505cbb54d6b915e579368db21d93454e41d"}, - {file = "pyzstd-0.15.10-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91da52897e5219dc440d3b9d290fdee66fb70c65ae594555c8d2c887df77f2de"}, - {file = "pyzstd-0.15.10-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc917e488a9bdc681cb4a9b0ed3d0c8b81816bc1a6b1f85ec4050c827ffa9e76"}, - {file = "pyzstd-0.15.10-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3b9105a4977247ea8664b113345e66bf4b3ffd321a07797efc6b020ff363b39e"}, - {file = "pyzstd-0.15.10-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:50079bcfd087c8a8822c9fe940c887244cf2276ca0a4f0b55bec006b564b9541"}, - {file = "pyzstd-0.15.10-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3aa0ad903da666cf88d8a993e5fe9b1bfa0e5792a53212335af0a89baa268911"}, - {file = "pyzstd-0.15.10-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5942e8b7ad869ea5f44d928053d3eda16e877b5fed5326786388f6a377545ab3"}, - {file = "pyzstd-0.15.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d44c5cfe2516a652131ddd91c3a48924e34f4a7b85640cda44694afbeee6cb"}, - {file = "pyzstd-0.15.10-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca3df18c269f9c11b40dde85336d3fc4a879867b05c74efdd4d5f8e64ac7e179"}, - {file = "pyzstd-0.15.10-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a5b54ebec1e606821192c86a3b85c05c3f789d33bf44f383fd245f148f8f93b"}, - {file = "pyzstd-0.15.10-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6e742a691f4fa73cadbe7f866b33e33161ede5bc777eee443a62504adcadd65f"}, - {file = "pyzstd-0.15.10-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:88e8cbd8fdd2af2f94615c32ab113c5cff4dbd188454394c4cac9941d2f72204"}, - {file = "pyzstd-0.15.10-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c309d50ee6a41053ad4c284295e5c5eedfd084ff94a5ee1148cf0dc64e3223fb"}, - {file = "pyzstd-0.15.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec319cdbba5ed3dfb2a8798364a8899751e732127c6ae74bc41276899e0311a"}, - {file = "pyzstd-0.15.10-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24d061047634971801649ff9aced68bb8403c6220b07c82aa2c0e90d8a61acd0"}, - {file = "pyzstd-0.15.10-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:330062103d25e0d67681fcf5ef8692c71cd979dc17ed98f6cee3b3ba8bd86622"}, - {file = "pyzstd-0.15.10.tar.gz", hash = "sha256:83603a97fdbcf2139f475c940789f09e32703f931f29f4a8ddf3551e6700108b"}, + {file = "pyzstd-0.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78f5e65eb15d93f687715be9241c8b55d838fba9b7045d83530f8831544f1413"}, + {file = "pyzstd-0.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:35962bc10480aebd5b32fa344430bddd19ef384286501c1c8092b6a9a1ee6a99"}, + {file = "pyzstd-0.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48037009be790fca505a62705a7997eef0cd384c3ef6c10a769734660245ee73"}, + {file = "pyzstd-0.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a57f2a0531ad2cd33bb78d8555e85a250877e555a68c0add6308ceeca8d84f1"}, + {file = "pyzstd-0.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa219d5d6124f1623b39f296a1fcc4cac1d8c82f137516bd362a38c16adcd92b"}, + {file = "pyzstd-0.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f560d24557bbc54eb1aa01ee6e587d4d199b785593462567ddf752de3c1c4974"}, + {file = "pyzstd-0.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d14862ce066da0494e0f9466afc3b8fcd6c03f7250323cf8ef62c67158c77e57"}, + {file = "pyzstd-0.16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5d0db66651ed5a866a1452e7a450e41a5ec743abbeea1f1bc85ef7c64f5f6b8f"}, + {file = "pyzstd-0.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f47aada7fdc6bcad8ec4ee4ff00a8d2d9a0e05b5516df3f304afbf527b026221"}, + {file = "pyzstd-0.16.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5c43e2222bbbe660dea8fe335f5c633b3c9ed10628a4b53a160ddd54d15cffc2"}, + {file = "pyzstd-0.16.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:d897ec18822e348f8ef9a17e421716ed224a3726fde806aae04469fec8f0ac9d"}, + {file = "pyzstd-0.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4d5c98986d774e9321fb1d4fe0362658560e14c1d7afbe2d298b89a24c2f7b4f"}, + {file = "pyzstd-0.16.0-cp310-cp310-win32.whl", hash = "sha256:84135917c99476c6abeee420ffd005a856d8fde0e5f585b0c484d5923392035b"}, + {file = "pyzstd-0.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:06b9dfd615fb5635c05153431e520954a0e81683c5a6e3ed1134f60cc45b80f1"}, + {file = "pyzstd-0.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c9c1ede5c4e35b059e8734dfa8d23a59b8fcfe3e0ece4f7d226bc5e1816512c9"}, + {file = "pyzstd-0.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75f4363157777cbcbbd14ff823388fddfca597d44c77c27473c4c4000d7a5c99"}, + {file = "pyzstd-0.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48ff680078aec3b9515f149010981c7feeef6c2706987ac7bdc7cc1ea05f8f7d"}, + {file = "pyzstd-0.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbeaa0af865427405a1c0e8c65841a23de66af8ca5d796522f7b105386cd8522"}, + {file = "pyzstd-0.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f27e083a63b9463fd2640065af1b924f05831839f23d936a97c4f510a54f6b"}, + {file = "pyzstd-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dd4592c2fca923041c57aa2bfe428de14cc45f3a00ab825b353160994bc15e7"}, + {file = "pyzstd-0.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9f22fb00bfcca4b2e0b36afd4f3a3194c1bc93b2a76e51932ccfd3b6aa62501"}, + {file = "pyzstd-0.16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:586538aa2a992a55c10d88c58166e6023968a9825719bce5a09397b73eea658f"}, + {file = "pyzstd-0.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8e51d69446d96f5767e0f1b0676341d5d576c151dfe3dd14aff7a163db1b4d7c"}, + {file = "pyzstd-0.16.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c8c675edd26cd2531163e51dcb3c7c73145e2fa3b77a1ff59ce9ed963ff56017"}, + {file = "pyzstd-0.16.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4a765c5fc05fe1c843863cc3723e39e8207c28d9a7152ee6d621fa3908ef4880"}, + {file = "pyzstd-0.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:79f4c9f1d7906eb890dafae4820f69bd24658297e9ebcdd74867330e8e7bf9b0"}, + {file = "pyzstd-0.16.0-cp311-cp311-win32.whl", hash = "sha256:6aa796663db6d1d01ebdcd80022de840005ae173e01a7b03b3934811b7ae39bc"}, + {file = "pyzstd-0.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:7a82cd4e772e5d1400502d68da7ecd71a6f1ff37243017f284bee3d2106a2496"}, + {file = "pyzstd-0.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e0f5a1865a00798a74d50fcc9956a3d7fa7413cbc1c6d6d04833d89f36e35226"}, + {file = "pyzstd-0.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00954290d6d46ab13535becbbc1327c56f0a9c5d7b7cf967e6587c1395cade42"}, + {file = "pyzstd-0.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:796a29cbb6414b6cb84d8e7448262ba286847b946de9a149dec97469a4789552"}, + {file = "pyzstd-0.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c68761529a43358151ac507aeb9c6b7c1a990235ce7b7d41f8ea62c62d4679e"}, + {file = "pyzstd-0.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8436ce4fa7e7ddaa8d29717fd73e0699883ef6e78ef4d785c244779a7ad1942b"}, + {file = "pyzstd-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:349d643aeb8d7d9e0a407cef29d6210afbe646cc19b4e237456e585591eda223"}, + {file = "pyzstd-0.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4cf0fed2d5c9de3da211dceff3ed9a09b8f998f7df57da847145863a786454b"}, + {file = "pyzstd-0.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:691cadd48f225097a2588e7db492ac88c669c061208749bc0200ee39e4425e32"}, + {file = "pyzstd-0.16.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:33efaf2cc4efd2b100699d953cd70b5a54c3ca912297211fda01875f4636f655"}, + {file = "pyzstd-0.16.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b3cc09eecd318310cfd6e7f245248cf16ca014ea5903580d72231d93330952de"}, + {file = "pyzstd-0.16.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:89187af1ca5a9b65c477817e0fe7e411f4edd99e5575aaaef6a9e5ff62028854"}, + {file = "pyzstd-0.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d7d5888e206190d36fbffed6d7e9cacd79e64fd34e9a07359e16862973d90b33"}, + {file = "pyzstd-0.16.0-cp312-cp312-win32.whl", hash = "sha256:3c5f28a145677431347772b43a9604b67691b16e233ec7a92fc77fc5fb670608"}, + {file = "pyzstd-0.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:8a2d5a8b74db3df772bb4f230319241e73629b04cb777b22f9dcd2084d92977a"}, + {file = "pyzstd-0.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:94fe8c5f1f11397b5db8b1850168e5bed13b3f3e1bc36e4292819d85be51a63c"}, + {file = "pyzstd-0.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d1e6ae36c717abd32b55a275d7fbf9041b6de3a103639739ec3e8c8283773fb3"}, + {file = "pyzstd-0.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33bc6f6048f7f7fc506e6ad03fb822a78c2b8209e73b2eddc69d3d6767d0385c"}, + {file = "pyzstd-0.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c4cdb0e407bec2f3ece10275449822575f6634727ee1a18e87c5e5a7b565bb1"}, + {file = "pyzstd-0.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e4cf6d11427d43734e8cb246ecfb7af169983ef796b415379602ea0605f5116"}, + {file = "pyzstd-0.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c0bbdb3ae1c300941c1f89219a8d09d142ddb7bfc78e61da80c8bdc03c05be8"}, + {file = "pyzstd-0.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c34c06a6496b4aacdab03133671dd5638417bda09a1f186ba1a39c1dbd1add24"}, + {file = "pyzstd-0.16.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:29ca6db3fb72d17bcec091b9ba485c715f63ca00bfcd993f92cb20037ae98b25"}, + {file = "pyzstd-0.16.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:26e42ccb76a53c1b943021eeb0eb4d78f46093c16e4e658a7204c838d5b36df0"}, + {file = "pyzstd-0.16.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:76697baa4d9fd621bd5b99719d3b55fadeb665af9a49523debfc9ae5fbefef13"}, + {file = "pyzstd-0.16.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:708c442f8f6540ffad24a894bdea3c019250e02dcdbd0fbd27fc977b1a88b4f2"}, + {file = "pyzstd-0.16.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:994a21a75d7b2602a78c2f88f809427ce1051e43af7aad6cda524ccdc859354e"}, + {file = "pyzstd-0.16.0-cp38-cp38-win32.whl", hash = "sha256:80962ff81a3389b5579d1206bea1bb48da38991407442d2a9287f6da1ccb2c80"}, + {file = "pyzstd-0.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:363c11a4d60fa0e2e7437f7494291c24eaf2752c8d8e3adf8f92cb0168073464"}, + {file = "pyzstd-0.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:094cec5425097ae1f9a40bb02de917d2274bfa872665fe2e5b4101ee94d8b31d"}, + {file = "pyzstd-0.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ca9f1f6bd487c9b990e509c17e0a701f554db9e77bd5121c27f1db4594ac4c0a"}, + {file = "pyzstd-0.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff99a11dd76aec5a5234c1158d6b8dacb61b208f3f30a2bf7ae3b23243190581"}, + {file = "pyzstd-0.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2820b607be0346b3e24b097d759393bd4bcccc0620e8e825591061a2c3a0add5"}, + {file = "pyzstd-0.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef883837c16c076f11da37323f589779806073eeacaef3912f2da0359cb8c2cf"}, + {file = "pyzstd-0.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c3181a462cdb55df5ddeffe3cf5223cda36c81feceeb231688af08d30f11022"}, + {file = "pyzstd-0.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80741b9f18149264acb639287347cfc6eecff109b5c6d95dbf7222756b107b57"}, + {file = "pyzstd-0.16.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fb70083bf00426194a85d69939c52b1759462873bf6e4d62f481e2bc3e642ea1"}, + {file = "pyzstd-0.16.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:44f818ea8c191285365a0add6fc03f88225f1fdcff570dc78e9f548444042441"}, + {file = "pyzstd-0.16.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:983ea93ed937d329c88ef15d5e3b09e32372590c1a80586b2013f17aed436cb8"}, + {file = "pyzstd-0.16.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:0eadba403ec861fa4c600ad43dbd8ac17b7c22a796d3bd9d92918f4e8a15a6e8"}, + {file = "pyzstd-0.16.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a4e12b6702481ace7071357c1b81b9faf6f660da55ff9ccd6383fed474348cc6"}, + {file = "pyzstd-0.16.0-cp39-cp39-win32.whl", hash = "sha256:bc5e630db572362aef4d8a78f82a40e2b9756de7622feb07031bd400a696ad78"}, + {file = "pyzstd-0.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:8ef9fa7fe28dd6b7d09b8be89aea4e8f2d18b23a89294f51aa48dbc6c306a039"}, + {file = "pyzstd-0.16.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1b8db95f23d928ba87297afe6d4fff21bbb1af343147ff50c174674312afc29d"}, + {file = "pyzstd-0.16.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3f661848fa1984f3b17da676c88ccd08d8c3fab5501a1d1c8ac5abece48566f2"}, + {file = "pyzstd-0.16.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acfe529ff44d379ee889f03c2d353f94b1f16c83a92852061f9672982a3ef32d"}, + {file = "pyzstd-0.16.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:493edd702bc16dae1f4d76461688714c488af1b33f5b3a77c1a86d5c81240f9e"}, + {file = "pyzstd-0.16.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10143cad228ebeb9eda7793995b2d0b3fef0685258d9b794f6320824302c47d7"}, + {file = "pyzstd-0.16.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:784f7f87ae2e25459ef78282fbe9f0d2fec9ced84e4acb5d28621a0db274a13b"}, + {file = "pyzstd-0.16.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:35ba0ee9d6d502da2bc01d78d22f51a1812ff8d55fb444447f7782f5ce8c1e35"}, + {file = "pyzstd-0.16.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:e8eae552db2aa587c986f460915786bf9058a88d831d562cadba01f3069736a9"}, + {file = "pyzstd-0.16.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e31e0d2023b693ca530d95df7cff8d736f66b755018398bc518160f91e80bd0a"}, + {file = "pyzstd-0.16.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0fa1ef68839d99b0c0d66fe060303f7f2916f021289a7e04a818ef9461bbbe1"}, + {file = "pyzstd-0.16.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65a55aac43a685b7d2b9e7c4f9f3768ad6e0d5f9ad7698b8bf9124fbeb814d43"}, + {file = "pyzstd-0.16.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:20259fa302f1050bd02d78d93db78870bed385c6d3d299990fe806095426869f"}, + {file = "pyzstd-0.16.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bd27ab78269148c65d988a6b26471d621d4cc6eed6b92462b7f8850162e5c4f2"}, + {file = "pyzstd-0.16.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5d8a3263b7e23a3593eb4fcc5cc77e053c7d15c874db16ce6ee8b4d94f8d825"}, + {file = "pyzstd-0.16.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75f5e862e1646f1688e97f4aa69988d6589a1e036f081e98a3f202fa4647e69b"}, + {file = "pyzstd-0.16.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19deddb2975af861320fd7b68196fbb2a4a8500897354919baf693702786e349"}, + {file = "pyzstd-0.16.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c48b4368b832233205a74e9f1dfe2647d9bc49ea8357b09963fd5f15062bdd0a"}, + {file = "pyzstd-0.16.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:74521d819ceea90794aded974cc3024c65c094050e6c4a6f4b7478af3461e3ad"}, + {file = "pyzstd-0.16.0.tar.gz", hash = "sha256:fd43a0ae38ae15223fb1057729001829c3336e90f4acf04cf12ebdec33346658"}, ] [[package]] @@ -2711,13 +2758,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -2840,19 +2887,20 @@ files = [ [[package]] name = "safety" -version = "3.2.0" +version = "3.2.4" description = "Checks installed dependencies for known vulnerabilities and licenses." optional = false python-versions = ">=3.7" files = [ - {file = "safety-3.2.0-py3-none-any.whl", hash = "sha256:a432fc9d17e79a4386c4f093656b617c56f839cde022649cfa796d72c7a544de"}, - {file = "safety-3.2.0.tar.gz", hash = "sha256:8bd5cab5f3d8a61ce0ea6e98f267c1006d056097c45c644fee7afeff7d5949c1"}, + {file = "safety-3.2.4-py3-none-any.whl", hash = "sha256:242ff7ae448d7fb2ea455c90f44e3f2ca45be9c8559b2fe9dfc89617164a0f17"}, + {file = "safety-3.2.4.tar.gz", hash = "sha256:bac0202016d736a2118057964a0e3983fa20ff2563fd103cac3f3ac1ed3fea11"}, ] [package.dependencies] Authlib = ">=1.2.0" Click = ">=8.0.2" dparse = ">=0.6.4b0" +filelock = ">=3.12.2,<3.13.0" jinja2 = ">=3.1.0" marshmallow = ">=3.15.0" packaging = ">=21.0" @@ -2891,78 +2939,81 @@ typing-extensions = ">=4.7.1" [[package]] name = "scikit-learn" -version = "1.4.2" +version = "1.5.1" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.4.2.tar.gz", hash = "sha256:daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8539a41b3d6d1af82eb629f9c57f37428ff1481c1e34dddb3b9d7af8ede67ac5"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:68b8404841f944a4a1459b07198fa2edd41a82f189b44f3e1d55c104dbc2e40c"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81bf5d8bbe87643103334032dd82f7419bc8c8d02a763643a6b9a5c7288c5054"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f0ea5d0f693cb247a073d21a4123bdf4172e470e6d163c12b74cbb1536cf38"}, - {file = "scikit_learn-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:87440e2e188c87db80ea4023440923dccbd56fbc2d557b18ced00fef79da0727"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1d0b25d9c651fd050555aadd57431b53d4cf664e749069da77f3d52c5ad14b3b"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0203c368058ab92efc6168a1507d388d41469c873e96ec220ca8e74079bf62e"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44c62f2b124848a28fd695db5bc4da019287abf390bfce602ddc8aa1ec186aae"}, - {file = "scikit_learn-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cd7b524115499b18b63f0c96f4224eb885564937a0b3477531b2b63ce331904"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90378e1747949f90c8f385898fff35d73193dfcaec3dd75d6b542f90c4e89755"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ff4effe5a1d4e8fed260a83a163f7dbf4f6087b54528d8880bab1d1377bd78be"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:671e2f0c3f2c15409dae4f282a3a619601fa824d2c820e5b608d9d775f91780c"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d36d0bc983336bbc1be22f9b686b50c964f593c8a9a913a792442af9bf4f5e68"}, - {file = "scikit_learn-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:d762070980c17ba3e9a4a1e043ba0518ce4c55152032f1af0ca6f39b376b5928"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9993d5e78a8148b1d0fdf5b15ed92452af5581734129998c26f481c46586d68"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:426d258fddac674fdf33f3cb2d54d26f49406e2599dbf9a32b4d1696091d4256"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5460a1a5b043ae5ae4596b3126a4ec33ccba1b51e7ca2c5d36dac2169f62ab1d"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d64ef6cb8c093d883e5a36c4766548d974898d378e395ba41a806d0e824db8"}, - {file = "scikit_learn-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:c97a50b05c194be9146d61fe87dbf8eac62b203d9e87a3ccc6ae9aed2dfaf361"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:781586c414f8cc58e71da4f3d7af311e0505a683e112f2f62919e3019abd3745"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5b213bc29cc30a89a3130393b0e39c847a15d769d6e59539cd86b75d276b1a7"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff4ba34c2abff5ec59c803ed1d97d61b036f659a17f55be102679e88f926fac"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:161808750c267b77b4a9603cf9c93579c7a74ba8486b1336034c2f1579546d21"}, + {file = "scikit_learn-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:10e49170691514a94bb2e03787aa921b82dbc507a4ea1f20fd95557862c98dc1"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:154297ee43c0b83af12464adeab378dee2d0a700ccd03979e2b821e7dd7cc1c2"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b5e865e9bd59396220de49cb4a57b17016256637c61b4c5cc81aaf16bc123bbe"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:909144d50f367a513cee6090873ae582dba019cb3fca063b38054fa42704c3a4"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b6f74b2c880276e365fe84fe4f1befd6a774f016339c65655eaff12e10cbf"}, + {file = "scikit_learn-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a07f90846313a7639af6a019d849ff72baadfa4c74c778821ae0fad07b7275b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5944ce1faada31c55fb2ba20a5346b88e36811aab504ccafb9f0339e9f780395"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0828673c5b520e879f2af6a9e99eee0eefea69a2188be1ca68a6121b809055c1"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508907e5f81390e16d754e8815f7497e52139162fd69c4fdbd2dfa5d6cc88915"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97625f217c5c0c5d0505fa2af28ae424bd37949bb2f16ace3ff5f2f81fb4498b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:da3f404e9e284d2b0a157e1b56b6566a34eb2798205cba35a211df3296ab7a74"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88e0672c7ac21eb149d409c74cc29f1d611d5158175846e7a9c2427bd12b3956"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7b073a27797a283187a4ef4ee149959defc350b46cbf63a84d8514fe16b69855"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b59e3e62d2be870e5c74af4e793293753565c7383ae82943b83383fdcf5cc5c1"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd8d3a19d4bd6dc5a7d4f358c8c3a60934dc058f363c34c0ac1e9e12a31421d"}, + {file = "scikit_learn-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:5f57428de0c900a98389c4a433d4a3cf89de979b3aa24d1c1d251802aa15e44d"}, + {file = "scikit_learn-1.5.1.tar.gz", hash = "sha256:0ea5d40c0e3951df445721927448755d3fe1d80833b0b7308ebff5d2a45e6414"}, ] [package.dependencies] joblib = ">=1.2.0" numpy = ">=1.19.5" scipy = ">=1.6.0" -threadpoolctl = ">=2.0.0" +threadpoolctl = ">=3.1.0" [package.extras] -benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] +build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] -tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] +install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] +maintenance = ["conda-lock (==2.5.6)"] +tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" -version = "1.13.0" +version = "1.13.1" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"}, - {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"}, - {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"}, - {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"}, - {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"}, - {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"}, - {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"}, - {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"}, - {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"}, - {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"}, - {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"}, - {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"}, - {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"}, - {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"}, - {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"}, - {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"}, - {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"}, - {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"}, - {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, - {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, - {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, - {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, - {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, + {file = "scipy-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca"}, + {file = "scipy-1.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f"}, + {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989"}, + {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f"}, + {file = "scipy-1.13.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94"}, + {file = "scipy-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa"}, + {file = "scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59"}, + {file = "scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b"}, + {file = "scipy-1.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1"}, + {file = "scipy-1.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d"}, + {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627"}, + {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884"}, + {file = "scipy-1.13.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16"}, + {file = "scipy-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949"}, + {file = "scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5"}, + {file = "scipy-1.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24"}, + {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004"}, + {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d"}, + {file = "scipy-1.13.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c"}, + {file = "scipy-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2"}, + {file = "scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c"}, ] [package.dependencies] @@ -2996,19 +3047,18 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "setuptools" -version = "69.5.1" +version = "70.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, + {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, + {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shellingham" @@ -3171,22 +3221,22 @@ test = ["pytest (>=6)"] [[package]] name = "sphinx-autodoc-typehints" -version = "1.25.3" +version = "2.2.2" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinx_autodoc_typehints-1.25.3-py3-none-any.whl", hash = "sha256:d3da7fa9a9761eff6ff09f8b1956ae3090a2d4f4ad54aebcade8e458d6340835"}, - {file = "sphinx_autodoc_typehints-1.25.3.tar.gz", hash = "sha256:70db10b391acf4e772019765991d2de0ff30ec0899b9ba137706dc0b3c4835e0"}, + {file = "sphinx_autodoc_typehints-2.2.2-py3-none-any.whl", hash = "sha256:b98337a8530c95b73ba0c65465847a8ab0a13403bdc81294d5ef396bbd1f783e"}, + {file = "sphinx_autodoc_typehints-2.2.2.tar.gz", hash = "sha256:128e600eeef63b722f3d8dac6403594592c8cade3ba66fd11dcb997465ee259d"}, ] [package.dependencies] -sphinx = ">=7.1.2" +sphinx = ">=7.3.5" [package.extras] -docs = ["furo (>=2023.9.10)"] +docs = ["furo (>=2024.1.29)"] numpy = ["nptyping (>=2.5)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.8)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.4.4)", "defusedxml (>=0.7.1)", "diff-cover (>=9)", "pytest (>=8.1.1)", "pytest-cov (>=5)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.11)"] [[package]] name = "sphinx-click" @@ -3461,21 +3511,21 @@ http = ["aiohttp (>=3.8.1,<4.0.0)", "geventhttpclient (>=1.4.4,<=2.0.2)", "numpy [[package]] name = "typeguard" -version = "4.2.1" +version = "4.3.0" description = "Run-time type checker for Python" optional = false python-versions = ">=3.8" files = [ - {file = "typeguard-4.2.1-py3-none-any.whl", hash = "sha256:7da3bd46e61f03e0852f8d251dcbdc2a336aa495d7daff01e092b55327796eb8"}, - {file = "typeguard-4.2.1.tar.gz", hash = "sha256:c556a1b95948230510070ca53fa0341fb0964611bd05d598d87fb52115d65fee"}, + {file = "typeguard-4.3.0-py3-none-any.whl", hash = "sha256:4d24c5b39a117f8a895b9da7a9b3114f04eb63bade45a4492de49b175b6f7dfa"}, + {file = "typeguard-4.3.0.tar.gz", hash = "sha256:92ee6a0aec9135181eae6067ebd617fd9de8d75d714fb548728a4933b1dea651"}, ] [package.dependencies] importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} -typing-extensions = {version = ">=4.10.0", markers = "python_version < \"3.13\""} +typing-extensions = ">=4.10.0" [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.3.0)"] test = ["coverage[toml] (>=7)", "mypy (>=1.2.0)", "pytest (>=7)"] [[package]] @@ -3518,13 +3568,13 @@ files = [ [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.32.0.20240622" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.32.0.20240622.tar.gz", hash = "sha256:ed5e8a412fcc39159d6319385c009d642845f250c63902718f605cd90faade31"}, + {file = "types_requests-2.32.0.20240622-py3-none-any.whl", hash = "sha256:97bac6b54b5bd4cf91d407e62f0932a74821bc2211f22116d9ee1dd643826caf"}, ] [package.dependencies] @@ -3532,24 +3582,24 @@ urllib3 = ">=2" [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] @@ -3560,13 +3610,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "uvicorn" -version = "0.29.0" +version = "0.30.1" description = "The lightning-fast ASGI server." optional = false python-versions = ">=3.8" files = [ - {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, - {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, + {file = "uvicorn-0.30.1-py3-none-any.whl", hash = "sha256:cd17daa7f3b9d7a24de3617820e634d0933b69eed8e33a516071174427238c81"}, + {file = "uvicorn-0.30.1.tar.gz", hash = "sha256:d46cd8e0fd80240baffbcd9ec1012a712938754afcf81bce56c024c1656aece8"}, ] [package.dependencies] @@ -3579,13 +3629,13 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", [[package]] name = "virtualenv" -version = "20.26.2" +version = "20.26.3" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.26.2-py3-none-any.whl", hash = "sha256:a624db5e94f01ad993d476b9ee5346fdf7b9de43ccaee0e0197012dc838a0e9b"}, - {file = "virtualenv-20.26.2.tar.gz", hash = "sha256:82bf0f4eebbb78d36ddaee0283d43fe5736b53880b8a8cdcd37390a07ac3741c"}, + {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, + {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, ] [package.dependencies] @@ -3599,86 +3649,86 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "watchfiles" -version = "0.21.0" +version = "0.22.0" description = "Simple, modern and high performance file watching and code reload in python." optional = false python-versions = ">=3.8" files = [ - {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"}, - {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"}, - {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"}, - {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"}, - {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"}, - {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"}, - {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"}, - {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"}, - {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"}, - {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"}, - {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"}, - {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"}, - {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"}, - {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"}, - {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"}, - {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"}, - {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"}, - {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"}, - {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"}, - {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"}, - {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"}, - {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"}, - {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"}, - {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"}, - {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"}, - {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"}, - {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"}, - {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"}, - {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"}, - {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"}, - {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"}, - {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"}, - {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"}, + {file = "watchfiles-0.22.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:da1e0a8caebf17976e2ffd00fa15f258e14749db5e014660f53114b676e68538"}, + {file = "watchfiles-0.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61af9efa0733dc4ca462347becb82e8ef4945aba5135b1638bfc20fad64d4f0e"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d9188979a58a096b6f8090e816ccc3f255f137a009dd4bbec628e27696d67c1"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2bdadf6b90c099ca079d468f976fd50062905d61fae183f769637cb0f68ba59a"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:067dea90c43bf837d41e72e546196e674f68c23702d3ef80e4e816937b0a3ffd"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbf8a20266136507abf88b0df2328e6a9a7c7309e8daff124dda3803306a9fdb"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1235c11510ea557fe21be5d0e354bae2c655a8ee6519c94617fe63e05bca4171"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2444dc7cb9d8cc5ab88ebe792a8d75709d96eeef47f4c8fccb6df7c7bc5be71"}, + {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c5af2347d17ab0bd59366db8752d9e037982e259cacb2ba06f2c41c08af02c39"}, + {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9624a68b96c878c10437199d9a8b7d7e542feddda8d5ecff58fdc8e67b460848"}, + {file = "watchfiles-0.22.0-cp310-none-win32.whl", hash = "sha256:4b9f2a128a32a2c273d63eb1fdbf49ad64852fc38d15b34eaa3f7ca2f0d2b797"}, + {file = "watchfiles-0.22.0-cp310-none-win_amd64.whl", hash = "sha256:2627a91e8110b8de2406d8b2474427c86f5a62bf7d9ab3654f541f319ef22bcb"}, + {file = "watchfiles-0.22.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8c39987a1397a877217be1ac0fb1d8b9f662c6077b90ff3de2c05f235e6a8f96"}, + {file = "watchfiles-0.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a927b3034d0672f62fb2ef7ea3c9fc76d063c4b15ea852d1db2dc75fe2c09696"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052d668a167e9fc345c24203b104c313c86654dd6c0feb4b8a6dfc2462239249"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e45fb0d70dda1623a7045bd00c9e036e6f1f6a85e4ef2c8ae602b1dfadf7550"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c49b76a78c156979759d759339fb62eb0549515acfe4fd18bb151cc07366629c"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4a65474fd2b4c63e2c18ac67a0c6c66b82f4e73e2e4d940f837ed3d2fd9d4da"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc0cba54f47c660d9fa3218158b8963c517ed23bd9f45fe463f08262a4adae1"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94ebe84a035993bb7668f58a0ebf998174fb723a39e4ef9fce95baabb42b787f"}, + {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e0f0a874231e2839abbf473256efffe577d6ee2e3bfa5b540479e892e47c172d"}, + {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:213792c2cd3150b903e6e7884d40660e0bcec4465e00563a5fc03f30ea9c166c"}, + {file = "watchfiles-0.22.0-cp311-none-win32.whl", hash = "sha256:b44b70850f0073b5fcc0b31ede8b4e736860d70e2dbf55701e05d3227a154a67"}, + {file = "watchfiles-0.22.0-cp311-none-win_amd64.whl", hash = "sha256:00f39592cdd124b4ec5ed0b1edfae091567c72c7da1487ae645426d1b0ffcad1"}, + {file = "watchfiles-0.22.0-cp311-none-win_arm64.whl", hash = "sha256:3218a6f908f6a276941422b035b511b6d0d8328edd89a53ae8c65be139073f84"}, + {file = "watchfiles-0.22.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c7b978c384e29d6c7372209cbf421d82286a807bbcdeb315427687f8371c340a"}, + {file = "watchfiles-0.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd4c06100bce70a20c4b81e599e5886cf504c9532951df65ad1133e508bf20be"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:425440e55cd735386ec7925f64d5dde392e69979d4c8459f6bb4e920210407f2"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68fe0c4d22332d7ce53ad094622b27e67440dacefbaedd29e0794d26e247280c"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8a31bfd98f846c3c284ba694c6365620b637debdd36e46e1859c897123aa232"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc2e8fe41f3cac0660197d95216c42910c2b7e9c70d48e6d84e22f577d106fc1"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b7cc10261c2786c41d9207193a85c1db1b725cf87936df40972aab466179b6"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28585744c931576e535860eaf3f2c0ec7deb68e3b9c5a85ca566d69d36d8dd27"}, + {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00095dd368f73f8f1c3a7982a9801190cc88a2f3582dd395b289294f8975172b"}, + {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:52fc9b0dbf54d43301a19b236b4a4614e610605f95e8c3f0f65c3a456ffd7d35"}, + {file = "watchfiles-0.22.0-cp312-none-win32.whl", hash = "sha256:581f0a051ba7bafd03e17127735d92f4d286af941dacf94bcf823b101366249e"}, + {file = "watchfiles-0.22.0-cp312-none-win_amd64.whl", hash = "sha256:aec83c3ba24c723eac14225194b862af176d52292d271c98820199110e31141e"}, + {file = "watchfiles-0.22.0-cp312-none-win_arm64.whl", hash = "sha256:c668228833c5619f6618699a2c12be057711b0ea6396aeaece4ded94184304ea"}, + {file = "watchfiles-0.22.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d47e9ef1a94cc7a536039e46738e17cce058ac1593b2eccdede8bf72e45f372a"}, + {file = "watchfiles-0.22.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:28f393c1194b6eaadcdd8f941307fc9bbd7eb567995232c830f6aef38e8a6e88"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd64f3a4db121bc161644c9e10a9acdb836853155a108c2446db2f5ae1778c3d"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2abeb79209630da981f8ebca30a2c84b4c3516a214451bfc5f106723c5f45843"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cc382083afba7918e32d5ef12321421ef43d685b9a67cc452a6e6e18920890e"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d048ad5d25b363ba1d19f92dcf29023988524bee6f9d952130b316c5802069cb"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:103622865599f8082f03af4214eaff90e2426edff5e8522c8f9e93dc17caee13"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3e1f3cf81f1f823e7874ae563457828e940d75573c8fbf0ee66818c8b6a9099"}, + {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8597b6f9dc410bdafc8bb362dac1cbc9b4684a8310e16b1ff5eee8725d13dcd6"}, + {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0b04a2cbc30e110303baa6d3ddce8ca3664bc3403be0f0ad513d1843a41c97d1"}, + {file = "watchfiles-0.22.0-cp38-none-win32.whl", hash = "sha256:b610fb5e27825b570554d01cec427b6620ce9bd21ff8ab775fc3a32f28bba63e"}, + {file = "watchfiles-0.22.0-cp38-none-win_amd64.whl", hash = "sha256:fe82d13461418ca5e5a808a9e40f79c1879351fcaeddbede094028e74d836e86"}, + {file = "watchfiles-0.22.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3973145235a38f73c61474d56ad6199124e7488822f3a4fc97c72009751ae3b0"}, + {file = "watchfiles-0.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:280a4afbc607cdfc9571b9904b03a478fc9f08bbeec382d648181c695648202f"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a0d883351a34c01bd53cfa75cd0292e3f7e268bacf2f9e33af4ecede7e21d1d"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9165bcab15f2b6d90eedc5c20a7f8a03156b3773e5fb06a790b54ccecdb73385"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc1b9b56f051209be458b87edb6856a449ad3f803315d87b2da4c93b43a6fe72"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dc1fc25a1dedf2dd952909c8e5cb210791e5f2d9bc5e0e8ebc28dd42fed7562"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc92d2d2706d2b862ce0568b24987eba51e17e14b79a1abcd2edc39e48e743c8"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97b94e14b88409c58cdf4a8eaf0e67dfd3ece7e9ce7140ea6ff48b0407a593ec"}, + {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96eec15e5ea7c0b6eb5bfffe990fc7c6bd833acf7e26704eb18387fb2f5fd087"}, + {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:28324d6b28bcb8d7c1041648d7b63be07a16db5510bea923fc80b91a2a6cbed6"}, + {file = "watchfiles-0.22.0-cp39-none-win32.whl", hash = "sha256:8c3e3675e6e39dc59b8fe5c914a19d30029e36e9f99468dddffd432d8a7b1c93"}, + {file = "watchfiles-0.22.0-cp39-none-win_amd64.whl", hash = "sha256:25c817ff2a86bc3de3ed2df1703e3d24ce03479b27bb4527c57e722f8554d971"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b810a2c7878cbdecca12feae2c2ae8af59bea016a78bc353c184fa1e09f76b68"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f7e1f9c5d1160d03b93fc4b68a0aeb82fe25563e12fbcdc8507f8434ab6f823c"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:030bc4e68d14bcad2294ff68c1ed87215fbd9a10d9dea74e7cfe8a17869785ab"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace7d060432acde5532e26863e897ee684780337afb775107c0a90ae8dbccfd2"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5834e1f8b71476a26df97d121c0c0ed3549d869124ed2433e02491553cb468c2"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0bc3b2f93a140df6806c8467c7f51ed5e55a931b031b5c2d7ff6132292e803d6"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fdebb655bb1ba0122402352b0a4254812717a017d2dc49372a1d47e24073795"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c8e0aa0e8cc2a43561e0184c0513e291ca891db13a269d8d47cb9841ced7c71"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2f350cbaa4bb812314af5dab0eb8d538481e2e2279472890864547f3fe2281ed"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7a74436c415843af2a769b36bf043b6ccbc0f8d784814ba3d42fc961cdb0a9dc"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00ad0bcd399503a84cc688590cdffbe7a991691314dde5b57b3ed50a41319a31"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72a44e9481afc7a5ee3291b09c419abab93b7e9c306c9ef9108cb76728ca58d2"}, + {file = "watchfiles-0.22.0.tar.gz", hash = "sha256:988e981aaab4f3955209e7e28c7794acdb690be1efa7f16f8ea5aba7ffdadacb"}, ] [package.dependencies] @@ -3767,13 +3817,13 @@ files = [ [[package]] name = "xdoctest" -version = "1.1.3" +version = "1.1.5" description = "A rewrite of the builtin doctest module" optional = false python-versions = ">=3.6" files = [ - {file = "xdoctest-1.1.3-py3-none-any.whl", hash = "sha256:9360535bd1a971ffc216d9613898cedceb81d0fd024587cc3c03c74d14c00a31"}, - {file = "xdoctest-1.1.3.tar.gz", hash = "sha256:84e76a42a11a5926ff66d9d84c616bc101821099672550481ad96549cbdd02ae"}, + {file = "xdoctest-1.1.5-py3-none-any.whl", hash = "sha256:f36fe64d7c0ad0553dbff39ff05c43a0aab69d313466f24a38d00e757182ade0"}, + {file = "xdoctest-1.1.5.tar.gz", hash = "sha256:89b0c3ad7fe03a068e22a457ab18c38fc70c62329c2963f43954b83c29374e66"}, ] [package.dependencies] @@ -3794,18 +3844,18 @@ tests-strict = ["pytest (==4.6.0)", "pytest (==4.6.0)", "pytest (==6.2.5)", "pyt [[package]] name = "zipp" -version = "3.18.2" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.2-py3-none-any.whl", hash = "sha256:dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e"}, - {file = "zipp-3.18.2.tar.gz", hash = "sha256:6278d9ddbcfb1f1089a88fde84481528b07b0e10474e09dcfe53dad4069fa059"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" diff --git a/requirements.txt b/requirements.txt index 7c9594ac..b3377810 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,22 +1,23 @@ alabaster==0.7.16 ; python_version >= "3.9" and python_full_version < "3.11.0" -anndata==0.10.7 ; python_version >= "3.9" and python_full_version < "3.11.0" -annotated-types==0.6.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -anyio==4.3.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -array-api-compat==1.6 ; python_version >= "3.9" and python_full_version < "3.11.0" +alphatims==1.0.8 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +anndata==0.10.8 ; python_version >= "3.9" and python_full_version < "3.11.0" +annotated-types==0.7.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +anyio==4.4.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +array-api-compat==1.7.1 ; python_version >= "3.9" and python_full_version < "3.11.0" attrs==23.2.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -authlib==1.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +authlib==1.3.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" babel==2.15.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -bandit==1.7.8 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +bandit==1.7.9 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" black==24.4.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -certifi==2024.2.2 ; python_version >= "3.9" and python_full_version < "3.11.0" +certifi==2024.7.4 ; python_version >= "3.9" and python_full_version < "3.11.0" cffi==1.16.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" and platform_python_implementation != "PyPy" cfgv==3.4.0 ; python_version >= "3.9" and python_full_version < "3.11.0" charset-normalizer==3.3.2 ; python_version >= "3.9" and python_full_version < "3.11.0" click==8.1.7 ; python_version >= "3.9" and python_full_version < "3.11.0" colorama==0.4.6 ; python_version >= "3.9" and python_full_version < "3.11.0" contourpy==1.2.1 ; python_version >= "3.9" and python_full_version < "3.11.0" -coverage[toml]==7.5.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -cryptography==42.0.7 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +coverage[toml]==7.5.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +cryptography==42.0.8 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" cycler==0.12.1 ; python_version >= "3.9" and python_full_version < "3.11.0" darglint==1.8.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" distlib==0.3.8 ; python_version >= "3.9" and python_full_version < "3.11.0" @@ -24,84 +25,93 @@ docutils==0.20.1 ; python_version >= "3.9" and python_full_version < "3.11.0" dparse==0.6.4b0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" et-xmlfile==1.1.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" exceptiongroup==1.2.1 ; python_version >= "3.9" and python_version < "3.11" -filelock==3.14.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +filelock==3.12.4 ; python_version >= "3.9" and python_full_version < "3.11.0" flake8-bandit==4.1.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" flake8-bugbear==24.4.26 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" flake8-docstrings==1.7.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" flake8-rst-docstrings==0.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -flake8==7.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -fonttools==4.51.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -grpcio==1.63.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +flake8==7.1.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +fonttools==4.53.1 ; python_version >= "3.9" and python_full_version < "3.11.0" +grpcio==1.64.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" h11==0.14.0 ; python_version >= "3.9" and python_full_version < "3.11.0" h5py==3.11.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -identify==2.5.36 ; python_version >= "3.9" and python_full_version < "3.11.0" +identify==2.6.0 ; python_version >= "3.9" and python_full_version < "3.11.0" idna==3.7 ; python_version >= "3.9" and python_full_version < "3.11.0" imagesize==1.4.1 ; python_version >= "3.9" and python_full_version < "3.11.0" -importlib-metadata==7.1.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +importlib-metadata==8.0.0 ; python_version >= "3.9" and python_full_version < "3.11.0" importlib-resources==6.4.0 ; python_version >= "3.9" and python_version < "3.10" iniconfig==2.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" jinja2==3.1.4 ; python_version >= "3.9" and python_full_version < "3.11.0" job-pool==0.2.6 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" joblib==1.4.2 ; python_version >= "3.9" and python_full_version < "3.11.0" kiwisolver==1.4.5 ; python_version >= "3.9" and python_full_version < "3.11.0" -llvmlite==0.42.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -lxml==4.9.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +llvmlite==0.43.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +lxml==5.2.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" markdown-it-py==3.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" markupsafe==2.1.5 ; python_version >= "3.9" and python_full_version < "3.11.0" -marshmallow==3.21.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -matplotlib==3.9.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +marshmallow==3.21.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +matplotlib==3.9.1 ; python_version >= "3.9" and python_full_version < "3.11.0" mccabe==0.7.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" mdurl==0.1.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +moepy==1.1.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" mokapot==0.10.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" mypy-extensions==1.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -mypy==1.10.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +mypy==1.10.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" natsort==8.4.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -nodeenv==1.8.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -numba==0.59.1 ; python_version >= "3.9" and python_full_version < "3.11.0" +nodeenv==1.9.1 ; python_version >= "3.9" and python_full_version < "3.11.0" +numba==0.60.0 ; python_version >= "3.9" and python_full_version < "3.11.0" numpy==1.24.4 ; python_version >= "3.9" and python_full_version < "3.11.0" -openpyxl==3.1.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -packaging==24.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +openpyxl==3.1.5 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +packaging==24.1 ; python_version >= "3.9" and python_full_version < "3.11.0" pandas==1.5.3 ; python_version >= "3.9" and python_full_version < "3.11.0" pathspec==0.12.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pbr==6.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -pep8-naming==0.14.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -pillow==10.3.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +pep8-naming==0.14.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pillow==10.4.0 ; python_version >= "3.9" and python_full_version < "3.11.0" platformdirs==4.2.2 ; python_version >= "3.9" and python_full_version < "3.11.0" pluggy==1.5.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pre-commit-hooks==4.6.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pre-commit==3.7.1 ; python_version >= "3.9" and python_full_version < "3.11.0" protobuf==4.25.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -pycodestyle==2.11.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +psutil==6.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pycodestyle==2.12.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pycparser==2.22 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" and platform_python_implementation != "PyPy" -pydantic-core==2.18.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -pydantic==2.7.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pydantic-core==2.20.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pydantic==2.8.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pydocstyle==6.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pyflakes==3.2.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pygments==2.18.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +pymzml==2.5.10 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pyparsing==3.1.2 ; python_version >= "3.9" and python_full_version < "3.11.0" -pytest==8.2.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pyteomics==4.7.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pytest==8.2.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" python-dateutil==2.9.0.post0 ; python_version >= "3.9" and python_full_version < "3.11.0" -python-rapidjson==1.16 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +python-rapidjson==1.18 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pytz==2024.1 ; python_version >= "3.9" and python_full_version < "3.11.0" -pyupgrade==3.15.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pyupgrade==3.16.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pyyaml==6.0.1 ; python_version >= "3.9" and python_full_version < "3.11.0" -requests==2.31.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +pyzstd==0.16.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +regex==2024.5.15 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +requests==2.32.3 ; python_version >= "3.9" and python_full_version < "3.11.0" restructuredtext-lint==1.4.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" rich==13.7.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" ruamel-yaml-clib==0.2.8 ; platform_python_implementation == "CPython" and python_full_version < "3.11.0" and python_full_version >= "3.9.0" ruamel-yaml==0.18.6 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" safety-schemas==0.0.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -safety==3.2.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -scikit-learn==1.4.2 ; python_version >= "3.9" and python_full_version < "3.11.0" -scipy==1.13.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +safety==3.2.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +scikit-learn==1.5.1 ; python_version >= "3.9" and python_full_version < "3.11.0" +scipy==1.13.1 ; python_version >= "3.9" and python_full_version < "3.11.0" seaborn==0.13.2 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -setuptools==69.5.1 ; python_version >= "3.9" and python_full_version < "3.11.0" +setuptools==70.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" shellingham==1.5.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" six==1.16.0 ; python_version >= "3.9" and python_full_version < "3.11.0" sniffio==1.3.1 ; python_version >= "3.9" and python_full_version < "3.11.0" snowballstemmer==2.2.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +sortedcontainers==2.4.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +spectrum-fundamentals==0.5.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +spectrum-io==0.4.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" sphinx-autobuild==2024.4.16 ; python_version >= "3.9" and python_full_version < "3.11.0" -sphinx-autodoc-typehints==1.25.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +sphinx-autodoc-typehints==2.2.2 ; python_version >= "3.9" and python_full_version < "3.11.0" sphinx-click==6.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" sphinx-rtd-theme==2.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" sphinx==7.3.7 ; python_version >= "3.9" and python_full_version < "3.11.0" @@ -120,16 +130,16 @@ tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11" tqdm==4.66.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" triqler==0.7.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" tritonclient[grpc]==2.44.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -typeguard==4.2.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +typeguard==4.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" typer==0.12.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" types-attrs==19.1.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" types-pkg-resources==0.1.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -types-requests==2.31.0.20240406 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -typing-extensions==4.11.0 ; python_version >= "3.9" and python_version < "3.11" -urllib3==2.2.1 ; python_version >= "3.9" and python_full_version < "3.11.0" -uvicorn==0.29.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -virtualenv==20.26.2 ; python_version >= "3.9" and python_full_version < "3.11.0" -watchfiles==0.21.0 ; python_version >= "3.9" and python_full_version < "3.11.0" +types-requests==2.32.0.20240622 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "3.11" +urllib3==2.2.2 ; python_version >= "3.9" and python_full_version < "3.11.0" +uvicorn==0.30.1 ; python_version >= "3.9" and python_full_version < "3.11.0" +virtualenv==20.26.3 ; python_version >= "3.9" and python_full_version < "3.11.0" +watchfiles==0.22.0 ; python_version >= "3.9" and python_full_version < "3.11.0" websockets==12.0 ; python_version >= "3.9" and python_full_version < "3.11.0" -xdoctest[colors]==1.1.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -zipp==3.18.2 ; python_version >= "3.9" and python_full_version < "3.11.0" +xdoctest[colors]==1.1.5 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +zipp==3.19.2 ; python_version >= "3.9" and python_full_version < "3.11.0" From 29a2ebbe85ce6923d02d4df39ea56d58bfd5c8ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 07:38:10 +0000 Subject: [PATCH 102/112] [DEPENDABOT]: Bump tritonclient from 2.44.0 to 2.47.0 Bumps [tritonclient](https://github.com/triton-inference-server/client) from 2.44.0 to 2.47.0. - [Commits](https://github.com/triton-inference-server/client/commits) --- updated-dependencies: - dependency-name: tritonclient dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 20 ++++++++++---------- pyproject.toml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/poetry.lock b/poetry.lock index 001eafad..db00d008 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" @@ -3485,29 +3485,29 @@ threadpoolctl = ">=3.1.0,<4.0.0" [[package]] name = "tritonclient" -version = "2.44.0" +version = "2.47.0" description = "Python client library and utilities for communicating with Triton Inference Server" optional = false python-versions = "*" files = [ - {file = "tritonclient-2.44.0-py3-none-any.whl", hash = "sha256:2d0e7f3b414b4fc39dd406b6e1c004954c722516dc5707bd83049de76d06af2c"}, - {file = "tritonclient-2.44.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:ed8a64ecbb7594ea196dfdc9678d6356b24fdf484995f53400004a195ef33749"}, - {file = "tritonclient-2.44.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:64f6a48db0a2f2b57f9c03c338669ee9203eeda30aa7d007a10daabd1acd3689"}, + {file = "tritonclient-2.47.0-py3-none-any.whl", hash = "sha256:a731aebceb69e9d0508fef1dd4e703730b70b4dd5ab283d9d836823897a0561b"}, + {file = "tritonclient-2.47.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:754ab373a45306be0c45afbcde06838179d04561694f6d15e138530153aee581"}, + {file = "tritonclient-2.47.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5500ef5637ac3ed7ceeac3740ca28fc6acb94473cc49b261a86dc4cb55267179"}, ] [package.dependencies] grpcio = {version = ">=1.41.0", optional = true, markers = "extra == \"grpc\""} -numpy = ">=1.19.1" +numpy = ">=1.19.1,<2" packaging = {version = ">=14.1", optional = true, markers = "extra == \"grpc\""} protobuf = {version = ">=3.5.0,<5", optional = true, markers = "extra == \"grpc\""} python-rapidjson = ">=0.9.1" urllib3 = ">=2.0.7" [package.extras] -all = ["aiohttp (>=3.8.1,<4.0.0)", "cuda-python", "geventhttpclient (>=1.4.4,<=2.0.2)", "grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] +all = ["aiohttp (>=3.8.1,<4.0.0)", "cuda-python", "geventhttpclient (>=1.4.4,<=2.0.2)", "grpcio (>=1.41.0)", "numpy (>=1.19.1,<2)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] cuda = ["cuda-python"] -grpc = ["grpcio (>=1.41.0)", "numpy (>=1.19.1)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] -http = ["aiohttp (>=3.8.1,<4.0.0)", "geventhttpclient (>=1.4.4,<=2.0.2)", "numpy (>=1.19.1)", "python-rapidjson (>=0.9.1)"] +grpc = ["grpcio (>=1.41.0)", "numpy (>=1.19.1,<2)", "packaging (>=14.1)", "protobuf (>=3.5.0,<5)", "python-rapidjson (>=0.9.1)"] +http = ["aiohttp (>=3.8.1,<4.0.0)", "geventhttpclient (>=1.4.4,<=2.0.2)", "numpy (>=1.19.1,<2)", "python-rapidjson (>=0.9.1)"] [[package]] name = "typeguard" @@ -3860,4 +3860,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.11.0" -content-hash = "c07a76a7dcd26b77fb97f7229c9bb8912206cbbc8a702c0d758e69124d96492c" +content-hash = "5a127928fd01b4d784442a44b337e1fd7397526e7fa50076c214e40a7ba390da" diff --git a/pyproject.toml b/pyproject.toml index 6a825c5f..de02d9c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ seaborn = ">=0.12.2,<0.14.0" spectrum-fundamentals = ">=0.5.4,<0.6.0" spectrum-io = ">=0.4.4,<0.5.0" mokapot = ">=0.9.1,<0.11.0" -tritonclient = {extras = ["grpc"], version = ">=2.34.0,<2.45"} +tritonclient = {extras = ["grpc"], version = ">=2.47.0,<2.48"} numpy = ">=1.20,<1.25" anndata = "^0.10.5.post1" From 84d4f3ae14d13894130cd12d93507b8ee162cdbb Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 10 Jul 2024 09:37:50 +0200 Subject: [PATCH 103/112] updated required fundmaentals and io versions --- pyproject.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6a825c5f..2fed4344 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,6 @@ packages = [ { include = "oktoberfest" }, ] classifiers = [ - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", ] @@ -26,8 +25,8 @@ PyYAML = ">=5.4.1" matplotlib = "^3.6.3" seaborn = ">=0.12.2,<0.14.0" -spectrum-fundamentals = ">=0.5.4,<0.6.0" -spectrum-io = ">=0.4.4,<0.5.0" +spectrum-fundamentals = ">=0.6.0,<0.7.0" +spectrum-io = ">=0.5.0,<0.6.0" mokapot = ">=0.9.1,<0.11.0" tritonclient = {extras = ["grpc"], version = ">=2.34.0,<2.45"} numpy = ">=1.20,<1.25" From 4faa107cc1dce80f4f2545e10405288312a03c12 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 11 Jul 2024 12:59:35 +0200 Subject: [PATCH 104/112] updated to use tritonclient 2.47 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b3377810..a0b269fa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -129,7 +129,7 @@ tokenize-rt==5.2.0 ; python_full_version >= "3.9.0" and python_full_version < "3 tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11" tqdm==4.66.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" triqler==0.7.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -tritonclient[grpc]==2.44.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +tritonclient[grpc]==2.47.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" typeguard==4.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" typer==0.12.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" types-attrs==19.1.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" From 35195260c7b3dbd10a3241a9d9b8cc7ea71c95df Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 11 Jul 2024 13:26:35 +0200 Subject: [PATCH 105/112] moved nr=x to speclib options --- docs/_static/custom_cookietemple.css | 2 +- docs/config.rst | 4 ++-- docs/jobs.rst | 6 ++---- oktoberfest/utils/config.py | 10 +++++----- oktoberfest/utils/example_configs.py | 2 +- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/docs/_static/custom_cookietemple.css b/docs/_static/custom_cookietemple.css index 553419bd..eac9c710 100644 --- a/docs/_static/custom_cookietemple.css +++ b/docs/_static/custom_cookietemple.css @@ -67,7 +67,7 @@ table.align-default { padding-left: 50px; } -.lib-config-table tbody tr:nth-last-child(-n + 6) td:nth-child(1) { +.lib-config-table tbody tr:nth-last-child(-n + 7) td:nth-child(1) { padding-left: 50px; } diff --git a/docs/config.rst b/docs/config.rst index 4caeff33..5033cabf 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -108,6 +108,8 @@ Applicable to spectral library generation +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | minIntensity | The minimal relative intensity threshold for peaks, everything below is not saved, this can help reducing the library size; default = 5e-4 | +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | nrOx | The maximum number of oxidations allowed on Methionine residues (M) in peptides during spectral library generation; default = 1 | + +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | batchSize | Number of peptides for which predictions are retrieved at once before writing, larger batches result in higher memory peaks, needs to be balanced with n_threads, default = 10000| +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | format | Output format of the generated spectral library; can be "spectronaut" or "msp"; default = "msp" | @@ -138,5 +140,3 @@ Applicable to in-silico digestion +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | db | Defines whether the digestion should contain only targets, only decoys or both (concatenated); can be "target", "decoy" or "concat"; default = "concat" | +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | nrOx | The maximum number of oxidations allowed on Methionine residues (M) in peptides during spectral library generation; default = 1 | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/jobs.rst b/docs/jobs.rst index cf5c9907..e6f66a14 100644 --- a/docs/jobs.rst +++ b/docs/jobs.rst @@ -113,8 +113,6 @@ Example config file: "tag": "", "output": "./out", "inputs": { - "search_results": "./msms.txt", - "search_results_type": "Maxquant", "library_input": "uniprot.fasta", "library_input_type": "fasta", "instrument_type": "QE" @@ -128,6 +126,7 @@ Example config file: "collisionEnergy": 30, "precursorCharge": [2,3], "minIntensity": 5e-4, + "nrOx": 1, "batchsize": 10000, "format": "msp" }, @@ -138,8 +137,7 @@ Example config file: "maxLength": 60, "enzyme": "trypsin", "specialAas": "KR", - "db": "concat", - "nrOx": 1 + "db": "concat" }, "prediction_server": "koina.wilhelmlab.org:443", "numThreads": 1, diff --git a/oktoberfest/utils/config.py b/oktoberfest/utils/config.py index ada7f3cc..18bf5513 100644 --- a/oktoberfest/utils/config.py +++ b/oktoberfest/utils/config.py @@ -234,11 +234,6 @@ def db(self) -> str: """Target, decoy or concat (relevant if fasta file provided).""" return self.fasta_digest_options.get("db", "concat").lower() - @property - def nr_ox(self) -> int: - """Get the maximum number of oxidations allowed on M residues in peptides during spectral library generation.""" - return self.fasta_digest_options.get("nrOx", 1) - ################################## # these are ce alignment options # ################################## @@ -298,6 +293,11 @@ def precursor_charge(self) -> List[int]: """Get output format from the config file.""" return self.spec_lib_options.get("precursorCharge", [2, 3]) + @property + def nr_ox(self) -> int: + """Get the maximum number of oxidations allowed on M residues in peptides during spectral library generation.""" + return self.fasta_digest_options.get("nrOx", 1) + ######################## # functions start here # ######################## diff --git a/oktoberfest/utils/example_configs.py b/oktoberfest/utils/example_configs.py index 78249cdd..364c1bd7 100644 --- a/oktoberfest/utils/example_configs.py +++ b/oktoberfest/utils/example_configs.py @@ -68,6 +68,7 @@ "collisionEnergy": 30, "precursorCharge": (2, 3), "minIntensity": 5e-4, + "nrOx": 1, "batchsize": 10000, "format": "msp", }, @@ -80,6 +81,5 @@ "enzyme": "trypsin", "specialAas": "KR", "db": "concat", - "nrOx": 1, }, } From 9867ea3287ced1a730419f40149f1c202276e934 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 17 Jul 2024 16:29:54 +0200 Subject: [PATCH 106/112] offer peptide list and internal format for speclib --- oktoberfest/preprocessing/preprocessing.py | 2 + oktoberfest/runner.py | 49 +++++++++++++++++----- oktoberfest/utils/config.py | 2 +- 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index cf4a333a..c5d4a905 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -98,6 +98,8 @@ def generate_metadata( metadata["proteins"] = list( chain.from_iterable([repeat(";".join(prot_list), n_repeats) for prot_list in proteins]) ) + else: + metadata["proteins"] = "unknown" modified_peptides = [] for _, row in metadata.iterrows(): diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index 8c9f2295..d9abdaa2 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -211,9 +211,11 @@ def _get_best_ce(library: Spectra, spectra_file: Path, config: Config): def _speclib_from_digestion(config: Config) -> Spectra: library_input_type = config.library_input_type + peptide_dict = None + library_file = config.library_input if library_input_type == "fasta": + p2p_file = config.output / "peptide_to_proteins.csv" digest_step = ProcessStep(config.output, "speclib_digested") - library_file = config.output / "prosit_input.csv" if not digest_step.is_done(): peptide_dict = pp.digest( fasta=config.library_input, @@ -225,22 +227,49 @@ def _speclib_from_digestion(config: Config) -> Spectra: min_length=config.min_length, max_length=config.max_length, ) - metadata = pp.generate_metadata( - peptides=list(peptide_dict.keys()), + # Convert dictionary to DataFrame + p2p_df = pd.DataFrame(list(peptide_dict.items()), columns=["peptide", "proteins"]) + p2p_df["proteins"] = p2p_df["proteins"].apply(lambda x: ";".join(x)) + p2p_df.to_csv(p2p_file, index=False) + digest_step.mark_done() + library_input_type = "peptides" + library_file = p2p_file + + if library_input_type == "peptides": + internal_library_file = config.output / "peptides_internal.csv" + created_internal_step = ProcessStep(config.output, "speclib_created_internal") + if not created_internal_step.is_done(): + proteins = None + + if peptide_dict is None: + p2p_df = pd.read_csv(library_file) + if "proteins" in p2p_df.columns: + p2p_df["proteins"].fillna("unknown", inplace=True) + proteins = p2p_df["proteins"].apply(lambda x: x.split(";")).to_list() + peptides = p2p_df["peptide"].to_list() + else: + peptides = list(peptide_dict.keys()) + proteins = list(peptide_dict.values()) + internal_df = pp.generate_metadata( + peptides=peptides, collision_energy=config.collision_energy, precursor_charge=config.precursor_charge, fragmentation=config.fragmentation, nr_ox=config.nr_ox, instrument_type=config.instrument_type, - proteins=list(peptide_dict.values()), + proteins=proteins, ) - library_file = config.output / "prosit_input.csv" - metadata.to_csv(library_file, sep=",", index=None) - digest_step.mark_done() - elif library_input_type == "peptides": - library_file = config.library_input + library_file = config.output / "peptides_internal.csv" + internal_df.to_csv(internal_library_file, sep=",", index=None) + created_internal_step.mark_done() + library_file = internal_library_file + + elif library_input_type == "internal": + pass else: - raise ValueError(f'Library input type {library_input_type} not understood. Can only be "fasta" or "peptides".') + raise ValueError( + f'Library input type {library_input_type} not understood. Can only be "fasta", "peptides", or "internal".' + ) spec_library = pp.gen_lib(library_file) pp_and_filter_step = ProcessStep(config.output, "speclib_filtered") diff --git a/oktoberfest/utils/config.py b/oktoberfest/utils/config.py index 18bf5513..fc22b294 100644 --- a/oktoberfest/utils/config.py +++ b/oktoberfest/utils/config.py @@ -296,7 +296,7 @@ def precursor_charge(self) -> List[int]: @property def nr_ox(self) -> int: """Get the maximum number of oxidations allowed on M residues in peptides during spectral library generation.""" - return self.fasta_digest_options.get("nrOx", 1) + return self.spec_lib_options.get("nrOx", 1) ######################## # functions start here # From a1fbf90d1b9063ac286aa0f950560893aacc45b6 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 17 Jul 2024 16:34:55 +0200 Subject: [PATCH 107/112] updated speclib with new options --- tutorials/Oktoberfest Tutorial.ipynb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tutorials/Oktoberfest Tutorial.ipynb b/tutorials/Oktoberfest Tutorial.ipynb index 5eb0ead1..a559166b 100644 --- a/tutorials/Oktoberfest Tutorial.ipynb +++ b/tutorials/Oktoberfest Tutorial.ipynb @@ -141,7 +141,8 @@ " \"tag\": \"\",\n", " \"inputs\": {\n", " \"library_input\": input_dir + \"/peptides_spectral_library.csv\",\n", - " \"library_input_type\": \"peptides\"\n", + " \"library_input_type\": \"peptides\",\n", + " \"instrument_type\": \"\"\n", " },\n", " \"output\": \"./out\",\n", " \"models\": {\n", @@ -158,7 +159,7 @@ " \"minIntensity\": 5e-4,\n", " \"batchsize\": 10000,\n", " \"format\": \"msp\",\n", - "\n", + " \"nrOx\": 1,\n", " },\n", " \"fastaDigestOptions\": {\n", " \"digestion\": \"full\",\n", From 49eb97cf880ef6c9ee994e76352e2a5964b73804 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 17 Jul 2024 16:35:12 +0200 Subject: [PATCH 108/112] updated docs with new speclib options --- docs/config.rst | 50 ++++++++++++++++++------------------ docs/news.rst | 1 + docs/peptides_format.rst | 55 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 77 insertions(+), 29 deletions(-) diff --git a/docs/config.rst b/docs/config.rst index 5033cabf..bc7d242e 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -89,31 +89,31 @@ Applicable to spectral library generation .. table:: :class: fixed-table lib-config-table - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +============================+==================================================================================================================================================================================+ - | inputs | Contains information about additional inputs required for spectral library generation and the type of the inputs (see following 2 nested parameters) | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | library_input | Path to fasta file for in-silico digestion (also see the required parameters in the following section) or an existing output file from a digestion | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | library_input_type | Library input type description; can be "fasta" if an additional in-silico digestion is required or "`peptides <./peptides_format.html>`_" | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spectralLibraryOptions | Contains information about additional settings required for spectral library generation and what to save to disk (see following 7 nested parameters) | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | fragmentation | Method used for fragmentation; can be "HCD" or "CID"; default = "" | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | collisionEnergy | The collision energy for which the library should be created; default = 30 | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | precursorCharge | The precursor charges for which the library should be created, can be a list or single number; default = [2,3] | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | minIntensity | The minimal relative intensity threshold for peaks, everything below is not saved, this can help reducing the library size; default = 5e-4 | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | nrOx | The maximum number of oxidations allowed on Methionine residues (M) in peptides during spectral library generation; default = 1 | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | batchSize | Number of peptides for which predictions are retrieved at once before writing, larger batches result in higher memory peaks, needs to be balanced with n_threads, default = 10000| - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | format | Output format of the generated spectral library; can be "spectronaut" or "msp"; default = "msp" | - +----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +============================+====================================================================================================================================================================================================================================================================================================================+ + | inputs | Contains information about additional inputs required for spectral library generation and the type of the inputs (see following 2 nested parameters) | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | library_input | Path to fasta file for in-silico digestion (also see the required parameters in the following section) or an existing output file from a digestion | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | library_input_type | Library input type description; can be "fasta" to perform in-silico digestion (see options below), "`peptides / internal <./peptides_format.html>`_" (for automatic generation of internal format using below spectralLibraryOptions or ready to use internal format. | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | spectralLibraryOptions | Contains information about additional settings required for spectral library generation and what to save to disk (see following 7 nested parameters) | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | fragmentation | Method used for fragmentation; can be "HCD" or "CID"; default = "" | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | collisionEnergy | The collision energy for which the library should be created; default = 30 | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | precursorCharge | The precursor charges for which the library should be created, can be a list or single number; default = [2,3] | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | minIntensity | The minimal relative intensity threshold for peaks, everything below is not saved, this can help reducing the library size; default = 5e-4 | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | nrOx | The maximum number of oxidations allowed on Methionine residues (M) in peptides during spectral library generation; default = 1 | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | batchsize | Number of peptides for which predictions are retrieved at once before writing, larger batches result in higher memory peaks, needs to be balanced with n_threads, default = 10000 | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | format | Output format of the generated spectral library; can be "spectronaut","msp", or "dlib"; default = "msp" | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Applicable to in-silico digestion --------------------------------- diff --git a/docs/news.rst b/docs/news.rst index 6482b299..6df277c1 100644 --- a/docs/news.rst +++ b/docs/news.rst @@ -10,6 +10,7 @@ Oktoberfest provides access to AlphaPept and MS2PIP predictions :date:`2024-05-2 | Oktoberfest 0.7.0 is published, providing access to predictions from AlphaPept and MS2PIP. This comes with a large API overhaul that allows easier access to underlying data for manual insights and analysis. | Please note that you can now specify the instrument type in the configuration for AlphaPept predictions. +| Spectral libraries can now be generated using a simple peptide list using a variety of options, such as precursor charge, max. number of oxidations and collision energy, or directly in internal format. Check the new `peptides / internal format specification <./peptides_format.html>`_ and `configuration options <./config.html>`_. | Stay tuned for a documentation update including jupyter notebooks on how to navigate and make use of your data for manual in-depth analysis. | This release drops python 3.8 support! diff --git a/docs/peptides_format.rst b/docs/peptides_format.rst index a9bfcc2b..83425706 100644 --- a/docs/peptides_format.rst +++ b/docs/peptides_format.rst @@ -1,23 +1,70 @@ Custom in-silico digestion ========================== -While Oktoberfest can do in-silico digestion by providing a fasta file, you can provide a list of peptides with the required metadata directly. In this case, you need to have the following parameter in your config file: +While Oktoberfest can do in-silico digestion by providing a fasta file, you can also provide a list of peptides yourself, or follow the below internal format for the highest level of customization. + +Providing a list of peptides and associated proteins +---------------------------------------------------- + +In this case, you need to have the following parameter in your config file: .. code-block:: json "library_input_type": "peptides", +Oktoberfest will then create the table of peptides with associated metadata in internal format (see below) based on the configuration in the spectralLibraryOptions of your configuration file. For a list of these options, check the `configuration options <./config.html>`_. + +Format +~~~~~~ + +Oktoberfest expects a csv formatted file, where each row represent a peptide and optional mappings to proteins. + +.. table:: + + +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Column Header | Explanation | + +===================+==============================================================================================================================================================================================================+ + | peptide | The unmodified peptide sequence. "C" will always be carbamidomethylated (fixed modification), and a TMT modification is always added to the N-term and "K" if a tag is specified in the configuration file. | + +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | proteins | An optional list of protein ids separated by ';'. If this column is left out, or if no protein is provided, the string "unknown" will be used as a proteinID in the spectral library. | | + +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Example +~~~~~~~ + +.. code-block:: + + peptide,proteins + ASPTQPIQL, + KIEKLKVEL, + AAAAAWEEPSSGNGTAR,Q9P258 + KDVDGAYMTK,P04264;CON__P04264 + VIGRGSYAK,P11216;P11217 + TTENIPGGAEEISEVLDSLENLMR,tr|A0A075B6G3|A0A075B6G3_HUMAN;sp|P11532|DMD_HUMAN;tr|A0A5H1ZRP8|A0A5H1ZRP8_HUMAN + TYCDATKCFTVTE + Internal file format specification ---------------------------------- -Oktoberfest expects a csv formatted file where each row represents a peptide fragment with given metadata. The following table provides the file format specification. +If you want to have full control, you can provide the table in internal format directly. In this case, you need to have the following parameter in your config file: + +.. code-block:: json + + "library_input_type": "internal", + +Oktoberfest will then read the table directly. + +Format +~~~~~~ + +Oktoberfest expects a csv formatted file where each row represents a peptide with given metadata. The following table provides the file format specification. .. table:: +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Column Header | Explanation | +===================+=====================================================================================================================================================================================================================================================================================+ - | modified_sequence | The peptide sequence including modifications in unimod format (only M[UNIMOD:35] supported) and excluding the fixed modification C[UNIMOD:4] (Carbamidomethylation) as this modification will be added automatically. If you add C[UNIMOD:4] manually, you will get wrong results. | + | modified_sequence | The peptide sequence including variable modifications in unimod format (only M[UNIMOD:35] is supported). "C" will always be carbamidomethylated (fixed modification), and a TMT modification is always added to the N-term and "K" if a tag is specified in the configuration file. | +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | collision_energy | The collision energy to use in peptide property prediction | +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -34,7 +81,7 @@ Oktoberfest expects a csv formatted file where each row represents a peptide fra Example -------- +~~~~~~~ .. code-block:: From 00e649283391be0f31efd25a7cb6f1cf05d9f6ae Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Wed, 17 Jul 2024 16:35:33 +0200 Subject: [PATCH 109/112] updated requirements --- poetry.lock | 224 +++++++++++++++++++++++++++++------------------ requirements.txt | 15 ++-- 2 files changed, 146 insertions(+), 93 deletions(-) diff --git a/poetry.lock b/poetry.lock index db00d008..0d68f8ae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "alabaster" @@ -511,63 +511,63 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.5.4" +version = "7.6.0" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"}, - {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"}, - {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"}, - {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"}, - {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"}, - {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"}, - {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"}, - {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"}, - {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"}, - {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"}, - {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"}, - {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"}, - {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"}, - {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"}, - {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"}, - {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"}, - {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"}, - {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"}, - {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"}, - {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"}, - {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"}, - {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, + {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, + {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, + {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, + {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, + {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, + {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"}, + {file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"}, + {file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, + {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, + {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, + {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, + {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, ] [package.dependencies] @@ -712,13 +712,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.2.1" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -2126,6 +2126,57 @@ files = [ [package.extras] test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] +[[package]] +name = "pyarrow" +version = "17.0.0" +description = "Python library for Apache Arrow" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyarrow-17.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a5c8b238d47e48812ee577ee20c9a2779e6a5904f1708ae240f53ecbee7c9f07"}, + {file = "pyarrow-17.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db023dc4c6cae1015de9e198d41250688383c3f9af8f565370ab2b4cb5f62655"}, + {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1e060b3876faa11cee287839f9cc7cdc00649f475714b8680a05fd9071d545"}, + {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c06d4624c0ad6674364bb46ef38c3132768139ddec1c56582dbac54f2663e2"}, + {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:fa3c246cc58cb5a4a5cb407a18f193354ea47dd0648194e6265bd24177982fe8"}, + {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f7ae2de664e0b158d1607699a16a488de3d008ba99b3a7aa5de1cbc13574d047"}, + {file = "pyarrow-17.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5984f416552eea15fd9cee03da53542bf4cddaef5afecefb9aa8d1010c335087"}, + {file = "pyarrow-17.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1c8856e2ef09eb87ecf937104aacfa0708f22dfeb039c363ec99735190ffb977"}, + {file = "pyarrow-17.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e19f569567efcbbd42084e87f948778eb371d308e137a0f97afe19bb860ccb3"}, + {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b244dc8e08a23b3e352899a006a26ae7b4d0da7bb636872fa8f5884e70acf15"}, + {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b72e87fe3e1db343995562f7fff8aee354b55ee83d13afba65400c178ab2597"}, + {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:dc5c31c37409dfbc5d014047817cb4ccd8c1ea25d19576acf1a001fe07f5b420"}, + {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e3343cb1e88bc2ea605986d4b94948716edc7a8d14afd4e2c097232f729758b4"}, + {file = "pyarrow-17.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:a27532c38f3de9eb3e90ecab63dfda948a8ca859a66e3a47f5f42d1e403c4d03"}, + {file = "pyarrow-17.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9b8a823cea605221e61f34859dcc03207e52e409ccf6354634143e23af7c8d22"}, + {file = "pyarrow-17.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1e70de6cb5790a50b01d2b686d54aaf73da01266850b05e3af2a1bc89e16053"}, + {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0071ce35788c6f9077ff9ecba4858108eebe2ea5a3f7cf2cf55ebc1dbc6ee24a"}, + {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757074882f844411fcca735e39aae74248a1531367a7c80799b4266390ae51cc"}, + {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ba11c4f16976e89146781a83833df7f82077cdab7dc6232c897789343f7891a"}, + {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b0c6ac301093b42d34410b187bba560b17c0330f64907bfa4f7f7f2444b0cf9b"}, + {file = "pyarrow-17.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:392bc9feabc647338e6c89267635e111d71edad5fcffba204425a7c8d13610d7"}, + {file = "pyarrow-17.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:af5ff82a04b2171415f1410cff7ebb79861afc5dae50be73ce06d6e870615204"}, + {file = "pyarrow-17.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:edca18eaca89cd6382dfbcff3dd2d87633433043650c07375d095cd3517561d8"}, + {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c7916bff914ac5d4a8fe25b7a25e432ff921e72f6f2b7547d1e325c1ad9d155"}, + {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f553ca691b9e94b202ff741bdd40f6ccb70cdd5fbf65c187af132f1317de6145"}, + {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0cdb0e627c86c373205a2f94a510ac4376fdc523f8bb36beab2e7f204416163c"}, + {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:d7d192305d9d8bc9082d10f361fc70a73590a4c65cf31c3e6926cd72b76bc35c"}, + {file = "pyarrow-17.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:02dae06ce212d8b3244dd3e7d12d9c4d3046945a5933d28026598e9dbbda1fca"}, + {file = "pyarrow-17.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:13d7a460b412f31e4c0efa1148e1d29bdf18ad1411eb6757d38f8fbdcc8645fb"}, + {file = "pyarrow-17.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b564a51fbccfab5a04a80453e5ac6c9954a9c5ef2890d1bcf63741909c3f8df"}, + {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32503827abbc5aadedfa235f5ece8c4f8f8b0a3cf01066bc8d29de7539532687"}, + {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a155acc7f154b9ffcc85497509bcd0d43efb80d6f733b0dc3bb14e281f131c8b"}, + {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:dec8d129254d0188a49f8a1fc99e0560dc1b85f60af729f47de4046015f9b0a5"}, + {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a48ddf5c3c6a6c505904545c25a4ae13646ae1f8ba703c4df4a1bfe4f4006bda"}, + {file = "pyarrow-17.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:42bf93249a083aca230ba7e2786c5f673507fa97bbd9725a1e2754715151a204"}, + {file = "pyarrow-17.0.0.tar.gz", hash = "sha256:4beca9521ed2c0921c1023e68d097d0299b62c362639ea315572a58f3f50fd28"}, +] + +[package.dependencies] +numpy = ">=1.16.6" + +[package.extras] +test = ["cffi", "hypothesis", "pandas", "pytest", "pytz"] + [[package]] name = "pycodestyle" version = "2.12.0" @@ -3117,13 +3168,13 @@ files = [ [[package]] name = "spectrum-fundamentals" -version = "0.5.4" +version = "0.6.0" description = "Fundamental functions, annotation pipeline and constants for oktoberfest" optional = false python-versions = "<3.11.0,>=3.8.0" files = [ - {file = "spectrum_fundamentals-0.5.4-py3-none-any.whl", hash = "sha256:11ff8cc4b9568dc3a3d16aa125bccf2941bb94e49fdbc4470d6903f342d64009"}, - {file = "spectrum_fundamentals-0.5.4.tar.gz", hash = "sha256:9c148e5e6623bc67135de9e29ea10a7eb32ab19bcfe2ecd9c4e2a890bb6c3dfb"}, + {file = "spectrum_fundamentals-0.6.0-py3-none-any.whl", hash = "sha256:e131c7daf418869861db90c128150afb2acef9f459ad36b906c21b4739ebf151"}, + {file = "spectrum_fundamentals-0.6.0.tar.gz", hash = "sha256:e11d41c078b3c4f38b0f3249316b68278b81e15e8898f1401dbfa7c2a61966a9"}, ] [package.dependencies] @@ -3138,13 +3189,13 @@ scikit-learn = ">=1.0,<2.0" [[package]] name = "spectrum-io" -version = "0.4.4" +version = "0.5.0" description = "IO related functionalities for oktoberfest." optional = false -python-versions = "<3.11.0,>=3.8.0" +python-versions = "<3.11.0,>=3.9.0" files = [ - {file = "spectrum_io-0.4.4-py3-none-any.whl", hash = "sha256:af36c4d28120edde90015476dcad0c59bbdaa223d293bb0a3e2084f468dcc9d4"}, - {file = "spectrum_io-0.4.4.tar.gz", hash = "sha256:ebbb5f39d35db616622bc68deca99335687e7beb46c4a0d41c76e4be5801e8ad"}, + {file = "spectrum_io-0.5.0-py3-none-any.whl", hash = "sha256:eded57259b95e1bb01b97d9d39822c847de57e2197e9e8607587899a697fc1e1"}, + {file = "spectrum_io-0.5.0.tar.gz", hash = "sha256:af1bdfc26c21722775f177a3d43b2a13150605cb978eeedc8cfbdfa423b6349a"}, ] [package.dependencies] @@ -3154,36 +3205,37 @@ h5py = ">=3.1.0,<4.0.0" lxml = ">=4.5.2,<6.0.0" numpy = ">=1.18.1,<2.0.0" pandas = ">=1.3.0,<2.0.0" +pyarrow = ">=16.0.0" pymzml = ">=2.5.0,<3.0.0" pyteomics = ">=4.3.3,<5.0.0" PyYAML = ">=5.4.1" rich = ">=10.3.0" sortedcontainers = ">=2.4.0,<3.0.0" -spectrum-fundamentals = ">=0.5.4,<0.6.0" +spectrum-fundamentals = ">=0.6.0,<0.7.0" [[package]] name = "sphinx" -version = "7.3.7" +version = "7.4.5" description = "Python documentation generator" optional = false python-versions = ">=3.9" files = [ - {file = "sphinx-7.3.7-py3-none-any.whl", hash = "sha256:413f75440be4cacf328f580b4274ada4565fb2187d696a84970c23f77b64d8c3"}, - {file = "sphinx-7.3.7.tar.gz", hash = "sha256:a4a7db75ed37531c05002d56ed6948d4c42f473a36f46e1382b0bd76ca9627bc"}, + {file = "sphinx-7.4.5-py3-none-any.whl", hash = "sha256:9f135d8c1d277db67be514be579c4c4a26c8c0e962219aaca5a721b04bd6d0d8"}, + {file = "sphinx-7.4.5.tar.gz", hash = "sha256:a4abe5385bf856df094c1e6cadf24a2351b12057be3670b99a12c05a01d209f5"}, ] [package.dependencies] alabaster = ">=0.7.14,<0.8.0" -babel = ">=2.9" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.18.1,<0.22" +babel = ">=2.13" +colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} +docutils = ">=0.20,<0.22" imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} -Jinja2 = ">=3.0" -packaging = ">=21.0" -Pygments = ">=2.14" -requests = ">=2.25.0" -snowballstemmer = ">=2.0" +importlib-metadata = {version = ">=6.0", markers = "python_version < \"3.10\""} +Jinja2 = ">=3.1" +packaging = ">=23.0" +Pygments = ">=2.17" +requests = ">=2.30.0" +snowballstemmer = ">=2.2" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" @@ -3194,8 +3246,8 @@ tomli = {version = ">=2", markers = "python_version < \"3.11\""} [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=3.5.0)", "importlib_metadata", "mypy (==1.9.0)", "pytest (>=6.0)", "ruff (==0.3.7)", "sphinx-lint", "tomli", "types-docutils", "types-requests"] -test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=6.0)", "setuptools (>=67.0)"] +lint = ["flake8 (>=6.0)", "importlib-metadata (>=6.0)", "mypy (==1.10.1)", "pytest (>=6.0)", "ruff (==0.5.2)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-docutils (==0.21.0.20240711)", "types-requests (>=2.30.0)"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] [[package]] name = "sphinx-autobuild" @@ -3221,13 +3273,13 @@ test = ["pytest (>=6)"] [[package]] name = "sphinx-autodoc-typehints" -version = "2.2.2" +version = "2.2.3" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false python-versions = ">=3.9" files = [ - {file = "sphinx_autodoc_typehints-2.2.2-py3-none-any.whl", hash = "sha256:b98337a8530c95b73ba0c65465847a8ab0a13403bdc81294d5ef396bbd1f783e"}, - {file = "sphinx_autodoc_typehints-2.2.2.tar.gz", hash = "sha256:128e600eeef63b722f3d8dac6403594592c8cade3ba66fd11dcb997465ee259d"}, + {file = "sphinx_autodoc_typehints-2.2.3-py3-none-any.whl", hash = "sha256:b7058e8c5831e5598afca1a78fda0695d3291388d954464a6e480c36198680c0"}, + {file = "sphinx_autodoc_typehints-2.2.3.tar.gz", hash = "sha256:fde3d888949bd0a91207cf1e54afda58121dbb4bf1f183d0cc78a0826654c974"}, ] [package.dependencies] @@ -3568,13 +3620,13 @@ files = [ [[package]] name = "types-requests" -version = "2.32.0.20240622" +version = "2.32.0.20240712" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240622.tar.gz", hash = "sha256:ed5e8a412fcc39159d6319385c009d642845f250c63902718f605cd90faade31"}, - {file = "types_requests-2.32.0.20240622-py3-none-any.whl", hash = "sha256:97bac6b54b5bd4cf91d407e62f0932a74821bc2211f22116d9ee1dd643826caf"}, + {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"}, + {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"}, ] [package.dependencies] @@ -3860,4 +3912,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.11.0" -content-hash = "5a127928fd01b4d784442a44b337e1fd7397526e7fa50076c214e40a7ba390da" +content-hash = "a26cfd4e0dec5cb855b16f10d8174c0292a24f133162f6a278ce97410544e4d3" diff --git a/requirements.txt b/requirements.txt index a0b269fa..414d00cb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,7 +16,7 @@ charset-normalizer==3.3.2 ; python_version >= "3.9" and python_full_version < "3 click==8.1.7 ; python_version >= "3.9" and python_full_version < "3.11.0" colorama==0.4.6 ; python_version >= "3.9" and python_full_version < "3.11.0" contourpy==1.2.1 ; python_version >= "3.9" and python_full_version < "3.11.0" -coverage[toml]==7.5.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +coverage[toml]==7.6.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" cryptography==42.0.8 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" cycler==0.12.1 ; python_version >= "3.9" and python_full_version < "3.11.0" darglint==1.8.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" @@ -24,7 +24,7 @@ distlib==0.3.8 ; python_version >= "3.9" and python_full_version < "3.11.0" docutils==0.20.1 ; python_version >= "3.9" and python_full_version < "3.11.0" dparse==0.6.4b0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" et-xmlfile==1.1.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -exceptiongroup==1.2.1 ; python_version >= "3.9" and python_version < "3.11" +exceptiongroup==1.2.2 ; python_version >= "3.9" and python_version < "3.11" filelock==3.12.4 ; python_version >= "3.9" and python_full_version < "3.11.0" flake8-bandit==4.1.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" flake8-bugbear==24.4.26 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" @@ -74,6 +74,7 @@ pre-commit-hooks==4.6.0 ; python_full_version >= "3.9.0" and python_full_version pre-commit==3.7.1 ; python_version >= "3.9" and python_full_version < "3.11.0" protobuf==4.25.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" psutil==6.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +pyarrow==17.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pycodestyle==2.12.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" pycparser==2.22 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" and platform_python_implementation != "PyPy" pydantic-core==2.20.1 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" @@ -108,13 +109,13 @@ six==1.16.0 ; python_version >= "3.9" and python_full_version < "3.11.0" sniffio==1.3.1 ; python_version >= "3.9" and python_full_version < "3.11.0" snowballstemmer==2.2.0 ; python_version >= "3.9" and python_full_version < "3.11.0" sortedcontainers==2.4.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -spectrum-fundamentals==0.5.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -spectrum-io==0.4.4 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +spectrum-fundamentals==0.6.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +spectrum-io==0.5.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" sphinx-autobuild==2024.4.16 ; python_version >= "3.9" and python_full_version < "3.11.0" -sphinx-autodoc-typehints==2.2.2 ; python_version >= "3.9" and python_full_version < "3.11.0" +sphinx-autodoc-typehints==2.2.3 ; python_version >= "3.9" and python_full_version < "3.11.0" sphinx-click==6.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" sphinx-rtd-theme==2.0.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -sphinx==7.3.7 ; python_version >= "3.9" and python_full_version < "3.11.0" +sphinx==7.4.5 ; python_version >= "3.9" and python_full_version < "3.11.0" sphinxcontrib-applehelp==1.0.8 ; python_version >= "3.9" and python_full_version < "3.11.0" sphinxcontrib-devhelp==1.0.6 ; python_version >= "3.9" and python_full_version < "3.11.0" sphinxcontrib-htmlhelp==2.0.5 ; python_version >= "3.9" and python_full_version < "3.11.0" @@ -134,7 +135,7 @@ typeguard==4.3.0 ; python_full_version >= "3.9.0" and python_full_version < "3.1 typer==0.12.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" types-attrs==19.1.0 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" types-pkg-resources==0.1.3 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" -types-requests==2.32.0.20240622 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" +types-requests==2.32.0.20240712 ; python_full_version >= "3.9.0" and python_full_version < "3.11.0" typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "3.11" urllib3==2.2.2 ; python_version >= "3.9" and python_full_version < "3.11.0" uvicorn==0.30.1 ; python_version >= "3.9" and python_full_version < "3.11.0" From 922be6c7a0146ef021506a8dec4889cf00af5ca2 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 18 Jul 2024 11:15:04 +0200 Subject: [PATCH 110/112] updated contributors, fixed table --- docs/_key_contributors.rst | 33 ++++++++++++++++++++++----------- docs/peptides_format.rst | 3 +-- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/docs/_key_contributors.rst b/docs/_key_contributors.rst index 94a0269c..4b589da8 100644 --- a/docs/_key_contributors.rst +++ b/docs/_key_contributors.rst @@ -1,14 +1,25 @@ .. sidebar:: Key Contributors - * `Mario Picciani `_: developer, maintainer - * `Wassim Gabriel `_: developer, maintainer - * `Matthew The `_: developer, maintainer - * `Ludwig Lautenbacher `_: developer, maintainer - * `Victor-George Giurcoiu `_: developer - * `Omar Shouman `_: developer - * Firas Hamood: developer - * Cecilia Jensen: developer - * Julian Mueller: developer - * `Mostafa Kalhor `_: developer - * `Armin Soleymaniniya `_: developer + Current developers + + * `Mario Picciani `_: lead developer since 2022, maintainer + * `Mostafa Kalhor `_: developer, crosslinking + * `Wassim Gabriel `_: developer, PTMs, neutral losses, GUI + * Arne van den Berg: developer, diverse contributions + * `Victor-George Giurcoiu `_: developer, diverse contributions + * `Ludwig Lautenbacher `_: developer, Koina, GUI + * `Armin Soleymaniniya `_: developer, GUI + * Ayla Schröder: developer, pickedGroupFDR + * Zixuan Xiao: developer, GUI + + Previous developers + + * `Matthew The `_: developer, percolator + * `Omar Shouman `_: developer, diverse contributions + * Firas Hamood: developer, diverse contributions + * Cecilia Jensen: developer, diverse contributions + * Julian Mueller: developer, diverse contributions + + Other roles + * `Mathias Wilhelm `_: advisor and PI of wilhelmlab \ No newline at end of file diff --git a/docs/peptides_format.rst b/docs/peptides_format.rst index 83425706..b7e267dc 100644 --- a/docs/peptides_format.rst +++ b/docs/peptides_format.rst @@ -26,7 +26,7 @@ Oktoberfest expects a csv formatted file, where each row represent a peptide and +===================+==============================================================================================================================================================================================================+ | peptide | The unmodified peptide sequence. "C" will always be carbamidomethylated (fixed modification), and a TMT modification is always added to the N-term and "K" if a tag is specified in the configuration file. | +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | proteins | An optional list of protein ids separated by ';'. If this column is left out, or if no protein is provided, the string "unknown" will be used as a proteinID in the spectral library. | | + | proteins | An optional list of protein ids separated by ';'. If this column is left out, or if no protein is provided, the string "unknown" will be used as a proteinID in the spectral library. | +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Example @@ -79,7 +79,6 @@ Oktoberfest expects a csv formatted file where each row represents a peptide wit | proteins | An optional list of protein ids separated by ';' | +-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - Example ~~~~~~~ From 3af36b12dd5bf300212ad1a41c83ff0d3e65cbd9 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 18 Jul 2024 13:06:49 +0200 Subject: [PATCH 111/112] change name of library file to "predicted_library" --- docs/outputs.rst | 4 ++-- oktoberfest/runner.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/outputs.rst b/docs/outputs.rst index 2b6cb6bc..740459bb 100644 --- a/docs/outputs.rst +++ b/docs/outputs.rst @@ -37,9 +37,9 @@ Files in the results directory +=======================================+==============================================================================================================================================================================================+ | _ce.txt | Contains the best collision energy according to the collision energy calibration where is replaced with the name of the spectra file for which the calibration was performed | +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | myPrositLib. | Contains the spectral library in either csv or msp format depending on what format was chosen | + | predicted_library. | Contains the spectral library in either spectronaut, msp, or dlib format depending on what format was chosen in the configuration file | +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | prosit_input.csv | Contains the peptide list including metadata needed for spectral library generation when providing a fasta file for in-silico digestion | + | peptides_internal.csv | Contains the peptide list including metadata needed for spectral library generation when providing a fasta file for in-silico digestion or a peptides list | +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/oktoberfest/runner.py b/oktoberfest/runner.py index d9abdaa2..7b12c649 100644 --- a/oktoberfest/runner.py +++ b/oktoberfest/runner.py @@ -289,12 +289,13 @@ def _speclib_from_digestion(config: Config) -> Spectra: def _get_writer_and_output(results_path: Path, output_format: str) -> Tuple[Type[SpectralLibrary], Path]: + libfile_prefix = "predicted_library" if output_format == "msp": - return MSP, results_path / "myPrositLib.msp" + return MSP, results_path / f"{libfile_prefix}.msp" elif output_format == "spectronaut": - return Spectronaut, results_path / "myPrositLib.csv" + return Spectronaut, results_path / f"{libfile_prefix}.csv" elif output_format == "dlib": - return DLib, results_path / "myPrositLib.dlib" + return DLib, results_path / f"{libfile_prefix}.dlib" else: raise ValueError(f"{output_format} is not supported as spectral library type") From 8d63cd01b38f2b5ee730b38de3ad3904e233b206 Mon Sep 17 00:00:00 2001 From: Mario Picciani Date: Thu, 18 Jul 2024 13:23:31 +0200 Subject: [PATCH 112/112] corrected singular/plural error in column names --- docs/peptides_format.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/peptides_format.rst b/docs/peptides_format.rst index b7e267dc..12b3ba69 100644 --- a/docs/peptides_format.rst +++ b/docs/peptides_format.rst @@ -84,7 +84,7 @@ Example .. code-block:: - modified_sequence,collision_energy,precursor_charge,fragmentation,peptide_lengths,instrument_type,proteins + modified_sequence,collision_energy,precursor_charge,fragmentation,peptide_length,instrument_types,proteins ASPTQPIQL,31,1,HCD,,, KIEKLKVEL,31,2,HCD,9,QE, AAAAAWEEPSSGNGTAR,30,3,HCD,,,Q9P258