diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..0fa43a9 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,31 @@ +# GitHub action to run linting + +name: run-linting + +on: + push: + branches: [main] + pull_request: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + enable-cache: true + + - name: Set up Python + run: uv python install 3.9 + + - name: Install dependencies + run: make install + + - name: Lint + id: lint + run: | + make lint-check + diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 5b853e8..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,45 +0,0 @@ -default_stages: [commit, push] - -repos: - - repo: https://github.com/codespell-project/codespell - rev: v2.2.6 - hooks: - - id: codespell - args: [ - "-w", # Write changes to files - "--skip", - "*.csv,*.bib,tests/books.py,*.ipynb,CHANGELOG.md", - # don't code output from notebooks - "-L", - "vise", # Ignore the Danish word 'vise' - ] - - - repo: https://github.com/asottile/pyupgrade - rev: v3.15.0 - hooks: - - id: pyupgrade - - - repo: https://github.com/bwhmather/ssort - rev: 0.12.4 - hooks: - - id: ssort - - - repo: https://github.com/asottile/add-trailing-comma - rev: v3.1.0 - hooks: - - id: add-trailing-comma - - - repo: https://github.com/psf/black - rev: 24.2.0 - hooks: - - id: black - - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.1 - hooks: - - id: ruff - - - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.8.0 - hooks: - - id: mypy diff --git a/docs/conf.py b/docs/conf.py index 749ea10..787a643 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -10,6 +10,7 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # +from __future__ import annotations from textdescriptives.about import __version__ diff --git a/docs/tutorials/filter_corpus_using_quality.ipynb b/docs/tutorials/filter_corpus_using_quality.ipynb index 3a07b48..577d0ec 100644 --- a/docs/tutorials/filter_corpus_using_quality.ipynb +++ b/docs/tutorials/filter_corpus_using_quality.ipynb @@ -73,7 +73,9 @@ "from datasets import load_dataset\n", "\n", "# stream in the dataset\n", - "dataset = load_dataset(\"mc4\", \"en\", streaming=True, split=\"train\", trust_remote_code=True)\n", + "dataset = load_dataset(\n", + " \"mc4\", \"en\", streaming=True, split=\"train\", trust_remote_code=True\n", + ")\n", "\n", "# download the first 1 000\n", "dataset = dataset.take(1000)\n", diff --git a/docs/tutorials/sklearn_integration.ipynb b/docs/tutorials/sklearn_integration.ipynb index f160642..be5f4ba 100644 --- a/docs/tutorials/sklearn_integration.ipynb +++ b/docs/tutorials/sklearn_integration.ipynb @@ -128,6 +128,7 @@ ], "source": [ "from textdescriptives.utils import load_sms_data\n", + "\n", "df = load_sms_data()\n", "df.head()" ] @@ -152,7 +153,7 @@ "# to textdescriptives.extract_metrics\n", "descriptive_stats_extractor = TextDescriptivesFeaturizer(\n", " lang=\"en\", metrics=[\"descriptive_stats\"]\n", - " )" + ")" ] }, { @@ -184,7 +185,7 @@ "from sklearn.pipeline import Pipeline\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.compose import ColumnTransformer\n", - "from sklearn.model_selection import train_test_split \n", + "from sklearn.model_selection import train_test_split\n", "from sklearn.impute import SimpleImputer\n", "from sklearn import set_config\n", "\n", @@ -197,10 +198,9 @@ " (\n", " \"featurizer\",\n", " ColumnTransformer(\n", - " [(\"text_processing\", descriptive_stats_extractor, \"message\")]\n", - " ,\n", - " # removes the `text_processing__` prefix from feature names\n", - " verbose_feature_names_out=False, \n", + " [(\"text_processing\", descriptive_stats_extractor, \"message\")],\n", + " # removes the `text_processing__` prefix from feature names\n", + " verbose_feature_names_out=False,\n", " ),\n", " ),\n", " (\"imputer\", SimpleImputer(strategy=\"median\")),\n", @@ -366,6 +366,7 @@ ], "source": [ "import pandas as pd\n", + "\n", "# extract feature importances\n", "feature_importance_mapping = list(\n", " zip(\n", diff --git a/makefile b/makefile index 8efa26f..0956624 100644 --- a/makefile +++ b/makefile @@ -1,21 +1,23 @@ install: @echo "--- ๐Ÿš€ Installing project ---" - uv sync --extra docs --extra tests --extra style --extra style + uv sync --extra docs --extra tests --extra style + uv pip install pip + uv pip install -r tests/requirements.txt lint: @echo "--- ๐Ÿงน Running linters ---" - ruff format . # running ruff formatting - ruff check **/*.py --fix # running ruff linting + uv run ruff format . # running ruff formatting + uv run ruff check **/*.py --fix # running ruff linting lint-check: @echo "--- ๐Ÿงน Check is project is linted ---" - ruff format . --check # running ruff formatting - ruff check **/*.py # running ruff linting + uv run ruff format . --check # running ruff formatting + uv run ruff check **/*.py # running ruff linting test: @echo "--- ๐Ÿงช Running tests ---" make install - pytest tests/ + pytest tests/ -n auto build-docs: @echo "--- ๐Ÿ“š Building docs ---" diff --git a/pyproject.toml b/pyproject.toml index 7057b25..4eae6f9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,6 +18,10 @@ classifiers = [ "Operating System :: Microsoft :: Windows", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] keywords = [ @@ -49,8 +53,8 @@ repository = "https://github.com/HLasse/textdescriptives" documentation = "https://hlasse.github.io/TextDescriptives/" [project.optional-dependencies] -style = ["black==24.1.1", "pre-commit==3.6.0", "ruff==0.1.15", "mypy==1.8.0"] -tests = ["pytest>=7.1.3", "pytest-cov>=3.0.0"] +style = ["ruff==0.8.3"] +tests = ["pytest>=7.1.3", "pytest-cov>=3.0.0", "pytest-xdist"] docs = [ "pydantic==2.1", "sphinx>=5.3.0", @@ -115,3 +119,12 @@ build_command = "python -m pip install build; python -m build" [tool.ruff] exclude = [".venv", ".env", ".git", "__pycache__"] + +[tool.ruff.lint] +select = ["UP", "I"] + +[tool.ruff.lint.isort] +required-imports = ["from __future__ import annotations"] + +[tool.ruff.lint.pydocstyle] +convention = "google" diff --git a/src/textdescriptives/about.py b/src/textdescriptives/about.py index 3faf367..dab82a1 100644 --- a/src/textdescriptives/about.py +++ b/src/textdescriptives/about.py @@ -1,4 +1,4 @@ -""" About textdescriptives, version number is specified in the setup.cfg +"""About textdescriptives, version number is specified in the setup.cfg file.""" # if python >= 3.8, use importlib.metadata otherwise use pkg_resources diff --git a/src/textdescriptives/components/dependency_distance.py b/src/textdescriptives/components/dependency_distance.py index 0437f54..8e7f9ea 100644 --- a/src/textdescriptives/components/dependency_distance.py +++ b/src/textdescriptives/components/dependency_distance.py @@ -1,4 +1,4 @@ -""" Calculation of statistics related to dependency distance.""" +"""Calculation of statistics related to dependency distance.""" from typing import Callable diff --git a/src/textdescriptives/components/descriptive_stats.py b/src/textdescriptives/components/descriptive_stats.py index 9dbbfe0..d48a6ff 100644 --- a/src/textdescriptives/components/descriptive_stats.py +++ b/src/textdescriptives/components/descriptive_stats.py @@ -1,4 +1,4 @@ -""" Calculation of descriptive statistics.""" +"""Calculation of descriptive statistics.""" from typing import Callable, Dict, Union diff --git a/src/textdescriptives/components/information_theory.py b/src/textdescriptives/components/information_theory.py index 83156ed..fbf3d26 100644 --- a/src/textdescriptives/components/information_theory.py +++ b/src/textdescriptives/components/information_theory.py @@ -1,4 +1,4 @@ -""" Calculate the entropy and perplexity of a corpus.""" +"""Calculate the entropy and perplexity of a corpus.""" from typing import Callable, Dict, Union @@ -64,7 +64,10 @@ def per_word_perplexity_getter(doc: Union[Doc, Span]) -> float: else: perplexity = perplexity_getter(doc) - return perplexity / len(doc) + len_doc = len(doc) + if len_doc: + return perplexity / len(doc) + return np.nan def set_docspan_extension( diff --git a/src/textdescriptives/components/pos_proportions.py b/src/textdescriptives/components/pos_proportions.py index 4bb2cc8..8bffb46 100644 --- a/src/textdescriptives/components/pos_proportions.py +++ b/src/textdescriptives/components/pos_proportions.py @@ -1,4 +1,4 @@ -""" Calculation of statistics that require a pos-tagger in the pipeline.""" +"""Calculation of statistics that require a pos-tagger in the pipeline.""" from typing import Callable, Counter, List, Union diff --git a/src/textdescriptives/components/quality.py b/src/textdescriptives/components/quality.py index ffc064a..93b4e13 100644 --- a/src/textdescriptives/components/quality.py +++ b/src/textdescriptives/components/quality.py @@ -1,4 +1,4 @@ -""" Component for calculating quality metrics.""" +"""Component for calculating quality metrics.""" from collections import Counter, defaultdict from typing import Callable, Dict, List, Mapping, Optional, Tuple, Union diff --git a/src/textdescriptives/components/quality_data_classes.py b/src/textdescriptives/components/quality_data_classes.py index e7424ac..ea8fbb1 100644 --- a/src/textdescriptives/components/quality_data_classes.py +++ b/src/textdescriptives/components/quality_data_classes.py @@ -1,4 +1,4 @@ -""" Data classes used for the quality component.""" +"""Data classes used for the quality component.""" from typing import Any, Dict, Optional, Tuple, Union diff --git a/src/textdescriptives/components/readability.py b/src/textdescriptives/components/readability.py index 48724ca..7097643 100644 --- a/src/textdescriptives/components/readability.py +++ b/src/textdescriptives/components/readability.py @@ -1,4 +1,4 @@ -""" Calculation of various readability metrics.""" +"""Calculation of various readability metrics.""" from typing import Callable, Dict diff --git a/src/textdescriptives/components/utils.py b/src/textdescriptives/components/utils.py index 1995a79..c9ce245 100644 --- a/src/textdescriptives/components/utils.py +++ b/src/textdescriptives/components/utils.py @@ -1,4 +1,4 @@ -""" Utility functions for calculating various text descriptives.""" +"""Utility functions for calculating various text descriptives.""" from typing import Union diff --git a/src/textdescriptives/extractors.py b/src/textdescriptives/extractors.py index 8ff4f70..24e3135 100644 --- a/src/textdescriptives/extractors.py +++ b/src/textdescriptives/extractors.py @@ -1,4 +1,4 @@ -""" Extract metrics as Pandas DataFrame.""" +"""Extract metrics as Pandas DataFrame.""" from typing import Any, Dict, Iterable, List, Optional, Union diff --git a/src/textdescriptives/load_components.py b/src/textdescriptives/load_components.py index 4e9c462..a0a40d2 100644 --- a/src/textdescriptives/load_components.py +++ b/src/textdescriptives/load_components.py @@ -1,4 +1,4 @@ -""" Adds all components to a spaCy pipeline.""" +"""Adds all components to a spaCy pipeline.""" from spacy.language import Language from spacy.tokens import Doc diff --git a/tests/books.py b/tests/books.py index a6c6a01..91a640b 100644 --- a/tests/books.py +++ b/tests/books.py @@ -1,6 +1,8 @@ -""" These books and several tests are borrowed from +"""These books and several tests are borrowed from https://github.com/mholtzscher/spacy_readability.""" +from __future__ import annotations + oliver_twist = """Among other public buildings in a certain town, which for many reasons it will be prudent to refrain from mentioning, and to which I will assign no fictitious name, there is one anciently common to most towns, diff --git a/tests/test_coherence.py b/tests/test_coherence.py index 01ae405..4066635 100644 --- a/tests/test_coherence.py +++ b/tests/test_coherence.py @@ -1,16 +1,19 @@ +from __future__ import annotations + +import warnings + import numpy as np import pytest import spacy import textdescriptives as td # noqa: F401 -import warnings @pytest.fixture(scope="function") def nlp(): - nlp = spacy.load("en_core_web_sm") - nlp.add_pipe("textdescriptives/coherence") - return nlp + nlp_en = spacy.load("en_core_web_sm") + nlp_en.add_pipe("textdescriptives/coherence") + return nlp_en def test_coherence_integration(nlp): diff --git a/tests/test_dependency_distance.py b/tests/test_dependency_distance.py index 18600a3..09bb0e3 100644 --- a/tests/test_dependency_distance.py +++ b/tests/test_dependency_distance.py @@ -1,9 +1,11 @@ +from __future__ import annotations + import ftfy import numpy as np import pytest import spacy -import textdescriptives as td # noqa: F401 +import textdescriptives as td # noqa: F401 from .books import flatland, oliver_twist, secret_garden diff --git a/tests/test_descriptive_stats.py b/tests/test_descriptive_stats.py index 2d342b5..e6c3c46 100644 --- a/tests/test_descriptive_stats.py +++ b/tests/test_descriptive_stats.py @@ -1,3 +1,7 @@ +from __future__ import annotations + +import warnings + import ftfy import pytest from spacy.lang.en import English @@ -6,8 +10,6 @@ from .books import flatland, oliver_twist, secret_garden -import warnings - @pytest.fixture(scope="function") def nlp(): diff --git a/tests/test_extractors.py b/tests/test_extractors.py index 769ccf8..16862a2 100644 --- a/tests/test_extractors.py +++ b/tests/test_extractors.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest import spacy diff --git a/tests/test_information.py b/tests/test_information.py index 79abe24..e58ee0b 100644 --- a/tests/test_information.py +++ b/tests/test_information.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import numpy as np import pytest import spacy diff --git a/tests/test_load_components.py b/tests/test_load_components.py index 991b443..eff5110 100644 --- a/tests/test_load_components.py +++ b/tests/test_load_components.py @@ -1,5 +1,8 @@ +from __future__ import annotations + import pytest import spacy + import textdescriptives as td # noqa: F401 diff --git a/tests/test_pos_proportions.py b/tests/test_pos_proportions.py index be6252f..067431e 100644 --- a/tests/test_pos_proportions.py +++ b/tests/test_pos_proportions.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest import spacy from spacy.tokens import Doc diff --git a/tests/test_quality.py b/tests/test_quality.py index 3fb9160..35a4ace 100644 --- a/tests/test_quality.py +++ b/tests/test_quality.py @@ -1,9 +1,10 @@ -""" Tests for the quality module.""" +"""Tests for the quality module.""" -from typing import List, Tuple +from __future__ import annotations import pytest import spacy + import textdescriptives as td from textdescriptives.components.quality import ( alpha_ratio, @@ -138,8 +139,8 @@ def test_symbol_to_word_ratio(text: str, symbol_to_word: float, nlp: spacy.Langu ) def test_duplicate_ngram_chr_fraction( text: str, - duplicate_ngram: List[float], - ngram_range: Tuple[int, int], + duplicate_ngram: list[float], + ngram_range: tuple[int, int], nlp: spacy.Language, ): """Test the duplicate_ngram_fraction function.""" @@ -166,8 +167,8 @@ def test_duplicate_ngram_chr_fraction( ) def test_top_ngram_chr_fraction( text: str, - top_ngram_chr_frac: List[float], - ngram_range: Tuple[int, int], + top_ngram_chr_frac: list[float], + ngram_range: tuple[int, int], nlp: spacy.Language, ): """Test the top_ngram_chr_fraction function.""" diff --git a/tests/test_readability.py b/tests/test_readability.py index 2c07aab..5f2f07a 100644 --- a/tests/test_readability.py +++ b/tests/test_readability.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import warnings import ftfy diff --git a/tests/test_utils.py b/tests/test_utils.py index 20499a9..f064164 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import textdescriptives as td diff --git a/uv.lock b/uv.lock index 171d205..77c4574 100644 --- a/uv.lock +++ b/uv.lock @@ -282,40 +282,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed", size = 147925 }, ] -[[package]] -name = "black" -version = "24.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/77/ec/a429d15d2e7f996203bff98e2b2e84ad4cb3de318de147b0038dc93fbc71/black-24.1.1.tar.gz", hash = "sha256:48b5760dcbfe5cf97fd4fba23946681f3a81514c6ab8a45b50da67ac8fbc6c7b", size = 623755 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/9e/70f6f3e8e3137c282f7729241d6fede8a1e0dc7a14653c8ac54530b0ea0d/black-24.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2588021038bd5ada078de606f2a804cadd0a3cc6a79cb3e9bb3a8bf581325a4c", size = 1554494 }, - { url = "https://files.pythonhosted.org/packages/a8/3e/9e02aa484f3c0f23ccbb69152b0d20d239b78aed87c15e8583bd92dcc8c4/black-24.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a95915c98d6e32ca43809d46d932e2abc5f1f7d582ffbe65a5b4d1588af7445", size = 1402333 }, - { url = "https://files.pythonhosted.org/packages/ee/93/8abf6f3722460eb53f37a55356cd33462502748867d767ec2adc4d43cecd/black-24.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fa6a0e965779c8f2afb286f9ef798df770ba2b6cee063c650b96adec22c056a", size = 1710463 }, - { url = "https://files.pythonhosted.org/packages/d5/9f/939787bd274d55c235d3f6692c7b40f92c9538b6875c4a838e5baf4dcf09/black-24.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5242ecd9e990aeb995b6d03dc3b2d112d4a78f2083e5a8e86d566340ae80fec4", size = 1331084 }, - { url = "https://files.pythonhosted.org/packages/ef/cc/b205025212eaa90a73985873d5b88210d7c337c02afc4d9fa6ce438a080f/black-24.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fc1ec9aa6f4d98d022101e015261c056ddebe3da6a8ccfc2c792cbe0349d48b7", size = 1538440 }, - { url = "https://files.pythonhosted.org/packages/c0/92/cc543b133cd1337cbfce3e7d2c9d45b5e913224ed1fc791875d062d7be46/black-24.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0269dfdea12442022e88043d2910429bed717b2d04523867a85dacce535916b8", size = 1386681 }, - { url = "https://files.pythonhosted.org/packages/e8/e3/8519496759b4f15d73323b00f70bde3eb097efd177382a4bed3899162a9e/black-24.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3d64db762eae4a5ce04b6e3dd745dcca0fb9560eb931a5be97472e38652a161", size = 1690441 }, - { url = "https://files.pythonhosted.org/packages/1d/25/85c545f605f005a1724ccc654f4981461ea0234835ba7689f6c5a97d3e5d/black-24.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:5d7b06ea8816cbd4becfe5f70accae953c53c0e53aa98730ceccb0395520ee5d", size = 1340846 }, - { url = "https://files.pythonhosted.org/packages/17/9e/104321dd49d30f7e9475afef76db7ad14b43f56933a315a657504d8fbdd7/black-24.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e2c8dfa14677f90d976f68e0c923947ae68fa3961d61ee30976c388adc0b02c8", size = 1567927 }, - { url = "https://files.pythonhosted.org/packages/be/ff/9380fb957347ab897543b53228cfd85112e421bdaf243e3865fa2d5e80ce/black-24.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a21725862d0e855ae05da1dd25e3825ed712eaaccef6b03017fe0853a01aa45e", size = 1397655 }, - { url = "https://files.pythonhosted.org/packages/55/14/07a41fb78fe81aa4852f16af4211fab5a130fcd3150b44a336042a3252d5/black-24.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07204d078e25327aad9ed2c64790d681238686bce254c910de640c7cc4fc3aa6", size = 1718031 }, - { url = "https://files.pythonhosted.org/packages/e5/fa/eaa2c165840a2496654366fcdc17f63459b89e3296b9269a18ba6d71f596/black-24.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:a83fe522d9698d8f9a101b860b1ee154c1d25f8a82ceb807d319f085b2627c5b", size = 1350588 }, - { url = "https://files.pythonhosted.org/packages/b8/ee/baf094c4cc0bf2345af8690edb7f32cadf29ba81d6a9eef21ddea42de728/black-24.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:34afe9da5056aa123b8bfda1664bfe6fb4e9c6f311d8e4a6eb089da9a9173bf9", size = 1554037 }, - { url = "https://files.pythonhosted.org/packages/de/bb/27d8b72ae150a5b11eeeb332a23ab53e2965d6c575a069ced0d8a42630e8/black-24.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:854c06fb86fd854140f37fb24dbf10621f5dab9e3b0c29a690ba595e3d543024", size = 1401926 }, - { url = "https://files.pythonhosted.org/packages/51/9c/66639d55f96ca0dff924db2b72f03fccac90c1b8fe0f7f33452669d1bdb9/black-24.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3897ae5a21ca132efa219c029cce5e6bfc9c3d34ed7e892113d199c0b1b444a2", size = 1709158 }, - { url = "https://files.pythonhosted.org/packages/4a/7d/044d6e90a28b4bb4bfd281b478867457ee9395caf876318ac5cfc05af2f8/black-24.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:ecba2a15dfb2d97105be74bbfe5128bc5e9fa8477d8c46766505c1dda5883aac", size = 1330894 }, - { url = "https://files.pythonhosted.org/packages/95/f3/c3d59ae490c627950efc97a27c3f73776577e2ec32d35737e72aee3d6738/black-24.1.1-py3-none-any.whl", hash = "sha256:5cdc2e2195212208fbcae579b931407c1fa9997584f0a415421748aeafff1168", size = 195702 }, -] - [[package]] name = "bleach" version = "6.2.0" @@ -446,15 +412,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290 }, ] -[[package]] -name = "cfgv" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, -] - [[package]] name = "charset-normalizer" version = "3.4.0" @@ -869,15 +826,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7", size = 116252 }, ] -[[package]] -name = "distlib" -version = "0.3.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, -] - [[package]] name = "docutils" version = "0.19" @@ -896,6 +844,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, ] +[[package]] +name = "execnet" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612 }, +] + [[package]] name = "executing" version = "2.1.0" @@ -1222,15 +1179,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/5a/dc6af87c61f89b23439eb95521e4e99862636cfd538ae12fd36be5483e5f/huggingface_hub-0.26.5-py3-none-any.whl", hash = "sha256:fb7386090bbe892072e64b85f7c4479fd2d65eea5f2543327c970d5169e83924", size = 447766 }, ] -[[package]] -name = "identify" -version = "2.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1a/5f/05f0d167be94585d502b4adf8c7af31f1dc0b1c7e14f9938a88fdbbcf4a7/identify-2.6.3.tar.gz", hash = "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02", size = 99179 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/f5/09644a3ad803fae9eca8efa17e1f2aef380c7f0b02f7ec4e8d446e51d64a/identify-2.6.3-py2.py3-none-any.whl", hash = "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd", size = 99049 }, -] - [[package]] name = "idna" version = "3.10" @@ -2181,49 +2129,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ae/5e/9569f9aa40cd841f27fe414ac838b7548c19113e223775aebf6327311880/murmurhash-1.0.11-cp39-cp39-win_amd64.whl", hash = "sha256:6ae5fc4f59be8eebcb8d24ffee49f32ee4eccdc004060848834eb2540ee3a056", size = 25317 }, ] -[[package]] -name = "mypy" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/16/22/25fac51008f0a4b2186da0dba3039128bd75d3fab8c07acd3ea5894f95cc/mypy-1.8.0.tar.gz", hash = "sha256:6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07", size = 2990299 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/6c/c33a5d50776a769be7ed7ca6709003c99aecd43913b9d82914bc72f154d8/mypy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485a8942f671120f76afffff70f259e1cd0f0cfe08f81c05d8816d958d4577d3", size = 10913063 }, - { url = "https://files.pythonhosted.org/packages/08/d1/a9c12c6890c789fd965ade8b37bef1989f649e87c62fde3df658dff394fc/mypy-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:df9824ac11deaf007443e7ed2a4a26bebff98d2bc43c6da21b2b64185da011c4", size = 9956736 }, - { url = "https://files.pythonhosted.org/packages/f1/48/e78aa47176bf7c24beb321031043d7c9c99035d816a6eca32d13cc59736f/mypy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afecd6354bbfb6e0160f4e4ad9ba6e4e003b767dd80d85516e71f2e955ab50d", size = 12516409 }, - { url = "https://files.pythonhosted.org/packages/76/5c/663409829016ca450b68b163cc36c67e0690c546e44923764043b85c175d/mypy-1.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8963b83d53ee733a6e4196954502b33567ad07dfd74851f32be18eb932fb1cb9", size = 12582018 }, - { url = "https://files.pythonhosted.org/packages/35/9a/3179c5efd023b2ecb88a80307581aeb005bdffe24ff53a33b261075f15d5/mypy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e46f44b54ebddbeedbd3d5b289a893219065ef805d95094d16a0af6630f5d410", size = 9214316 }, - { url = "https://files.pythonhosted.org/packages/d6/c4/2ce11ff9ba6c9c9e89df5049ab2325c85e60274194d6816e352926de5684/mypy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:855fe27b80375e5c5878492f0729540db47b186509c98dae341254c8f45f42ae", size = 10795101 }, - { url = "https://files.pythonhosted.org/packages/bb/b7/882110d1345847ce660c51fc83b3b590b9512ec2ea44e6cfd629a7d66146/mypy-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c886c6cce2d070bd7df4ec4a05a13ee20c0aa60cb587e8d1265b6c03cf91da3", size = 9849744 }, - { url = "https://files.pythonhosted.org/packages/19/c6/256f253cb3fc6b30b93a9836cf3c816a3ec09f934f7b567f693e5666d14f/mypy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d19c413b3c07cbecf1f991e2221746b0d2a9410b59cb3f4fb9557f0365a1a817", size = 12391778 }, - { url = "https://files.pythonhosted.org/packages/66/19/e0c9373258f3e84e1e24af357e5663e6b0058bb5c307287e9d1a473a9687/mypy-1.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9261ed810972061388918c83c3f5cd46079d875026ba97380f3e3978a72f503d", size = 12461242 }, - { url = "https://files.pythonhosted.org/packages/a9/d7/a7ee8ca5a963b5bf55a6b4bc579df77c887e7fbc0910047b7d0f7750b048/mypy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:51720c776d148bad2372ca21ca29256ed483aa9a4cdefefcef49006dff2a6835", size = 9205536 }, - { url = "https://files.pythonhosted.org/packages/08/24/83d9e62ab2031593e94438fdbfd2c32996f4d818be26d2dc33be6870a3a0/mypy-1.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52825b01f5c4c1c4eb0db253ec09c7aa17e1a7304d247c48b6f3599ef40db8bd", size = 10849520 }, - { url = "https://files.pythonhosted.org/packages/74/e8/30c42199bb5aefb37e02a9bece41f6a62a60a1c427cab8643bc0e7886df1/mypy-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5ac9a4eeb1ec0f1ccdc6f326bcdb464de5f80eb07fb38b5ddd7b0de6bc61e55", size = 9812231 }, - { url = "https://files.pythonhosted.org/packages/a6/70/49e9dc3d4ef98c22e09f1d7b0195833ad7eeda19a24fcc42bf1b62c89110/mypy-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afe3fe972c645b4632c563d3f3eff1cdca2fa058f730df2b93a35e3b0c538218", size = 12422003 }, - { url = "https://files.pythonhosted.org/packages/33/14/902484951fa662ee6e044087a50dab4b16b534920dda2eea9380ce2e7b2d/mypy-1.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:42c6680d256ab35637ef88891c6bd02514ccb7e1122133ac96055ff458f93fc3", size = 12497387 }, - { url = "https://files.pythonhosted.org/packages/aa/88/c6f214f1beeac9daffa1c3d0a5cbf96ee05617ca3e822c436c83f141ad8f/mypy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:720a5ca70e136b675af3af63db533c1c8c9181314d207568bbe79051f122669e", size = 9302230 }, - { url = "https://files.pythonhosted.org/packages/77/66/c79c051c1cc01c275e5d71acadf831aeef3099272e78c7d8b0685be0a567/mypy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c1538c38584029352878a0466f03a8ee7547d7bd9f641f57a0f3017a7c905b8", size = 10909314 }, - { url = "https://files.pythonhosted.org/packages/6a/86/e37ae331e2ec831619db70db4e32e9635dc669db940318c297cf248832d8/mypy-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ef4be7baf08a203170f29e89d79064463b7fc7a0908b9d0d5114e8009c3a259", size = 9951763 }, - { url = "https://files.pythonhosted.org/packages/86/5c/cbf921a0048926c4386410539ff4c3f08448684a92d9c8e73e692f1db154/mypy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178def594014aa6c35a8ff411cf37d682f428b3b5617ca79029d8ae72f5402b", size = 12512011 }, - { url = "https://files.pythonhosted.org/packages/41/6b/25e22dfc730bf698be85600339edefd5d07efe7436cce765631c170a9c31/mypy-1.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab3c84fa13c04aeeeabb2a7f67a25ef5d77ac9d6486ff33ded762ef353aa5592", size = 12579006 }, - { url = "https://files.pythonhosted.org/packages/21/f5/b2dcd2e10dcc6f4f0670a7a45195071a52a925fefe99268e5e51ce77e5b2/mypy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:99b00bc72855812a60d253420d8a2eae839b0afa4938f09f4d2aa9bb4654263a", size = 9210149 }, - { url = "https://files.pythonhosted.org/packages/3a/e3/b582bff8e2fc7056a8a00ec06d2ac3509fc9595af9954099ed70e0418ac3/mypy-1.8.0-py3-none-any.whl", hash = "sha256:538fd81bb5e430cc1381a443971c0475582ff9f434c16cd46d2c66763ce85d9d", size = 2553257 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, -] - [[package]] name = "myst-nb" version = "1.1.2" @@ -2328,15 +2233,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, ] -[[package]] -name = "nodeenv" -version = "1.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, -] - [[package]] name = "notebook" version = "7.3.1" @@ -2499,15 +2395,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, ] -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, -] - [[package]] name = "pexpect" version = "4.9.0" @@ -2620,22 +2507,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, ] -[[package]] -name = "pre-commit" -version = "3.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cfgv" }, - { name = "identify" }, - { name = "nodeenv" }, - { name = "pyyaml" }, - { name = "virtualenv" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/88/e8/4330d06f2b00ad3a9c66e07a68fe23f70233a4e7e1aaba5a738a93d2cb5d/pre_commit-3.6.0.tar.gz", hash = "sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d", size = 177069 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/e3/54cd906d377e1766299df14710ded125e195d5c685c8f1bafecec073e9c6/pre_commit-3.6.0-py2.py3-none-any.whl", hash = "sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376", size = 204021 }, -] - [[package]] name = "preshed" version = "3.0.9" @@ -3026,6 +2897,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 }, ] +[[package]] +name = "pytest-xdist" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "execnet" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c4/3c310a19bc1f1e9ef50075582652673ef2bfc8cd62afef9585683821902f/pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d", size = 84060 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/82/1d96bf03ee4c0fdc3c0cbe61470070e659ca78dc0086fb88b66c185e2449/pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7", size = 46108 }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -3420,26 +3304,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.1.15" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/42/33/7165f88a156be1c2fd13a18b3af6e75bbf82da5b6978cd2128d666accc18/ruff-0.1.15.tar.gz", hash = "sha256:f6dfa8c1b21c913c326919056c390966648b680966febcb796cc9d1aaab8564e", size = 1971643 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/2c/fac0658910ea3ea87a23583e58277533154261b73f9460388eb2e6e02e8f/ruff-0.1.15-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5fe8d54df166ecc24106db7dd6a68d44852d14eb0729ea4672bb4d96c320b7df", size = 14357437 }, - { url = "https://files.pythonhosted.org/packages/5b/c1/2116927385c761ffb786dfb77654a634ecd7803dee4de3b47b59536374f1/ruff-0.1.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6f0bfbb53c4b4de117ac4d6ddfd33aa5fc31beeaa21d23c45c6dd249faf9126f", size = 7329669 }, - { url = "https://files.pythonhosted.org/packages/18/d7/2199ecb42cef4d70de0e72ce4ca8878d060e25fe4434cb66f51e26158a2a/ruff-0.1.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d432aec35bfc0d800d4f70eba26e23a352386be3a6cf157083d18f6f5881c8", size = 7137343 }, - { url = "https://files.pythonhosted.org/packages/bb/e0/8a6f9db2c5b8c7108c7e7347cd6beca805d1b2ae618569c72f2515d11e52/ruff-0.1.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9405fa9ac0e97f35aaddf185a1be194a589424b8713e3b97b762336ec79ff807", size = 6563223 }, - { url = "https://files.pythonhosted.org/packages/98/fa/2a627747a5a5f7e1d3447704f795fd35d486460838485762cd569ef8eb0e/ruff-0.1.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66ec24fe36841636e814b8f90f572a8c0cb0e54d8b5c2d0e300d28a0d7bffec", size = 7534853 }, - { url = "https://files.pythonhosted.org/packages/55/09/c09d0f9b41d1f5e3de117579f2fcdb7063fd76cd92d6614eae1b77ccbccb/ruff-0.1.15-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6f8ad828f01e8dd32cc58bc28375150171d198491fc901f6f98d2a39ba8e3ff5", size = 8168826 }, - { url = "https://files.pythonhosted.org/packages/72/48/c9dfc2c87dc6b92446d8092c2be25b42ca4fb201cecb2499996ccf483c34/ruff-0.1.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86811954eec63e9ea162af0ffa9f8d09088bab51b7438e8b6488b9401863c25e", size = 7942963 }, - { url = "https://files.pythonhosted.org/packages/0c/57/dbc885f94450335fcff82301c4b25cf614894e79d9afbd249714e709ab42/ruff-0.1.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4025ac5e87d9b80e1f300207eb2fd099ff8200fa2320d7dc066a3f4622dc6b", size = 8524998 }, - { url = "https://files.pythonhosted.org/packages/39/75/8dea2fc156ae525971fdada8723f78e605dcf89428f5686728438b12f9ef/ruff-0.1.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b17b93c02cdb6aeb696effecea1095ac93f3884a49a554a9afa76bb125c114c1", size = 7534144 }, - { url = "https://files.pythonhosted.org/packages/47/41/96b770475c46590bfd051ca0c5f797b2d45f2638c45f3a9daf1ae55b96d6/ruff-0.1.15-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ddb87643be40f034e97e97f5bc2ef7ce39de20e34608f3f829db727a93fb82c5", size = 7055002 }, - { url = "https://files.pythonhosted.org/packages/e8/ca/4066dbcc3631a4efe1fe695f42f20aca50474d760b3bd8e57d7565d75aa5/ruff-0.1.15-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:abf4822129ed3a5ce54383d5f0e964e7fef74a41e48eb1dfad404151efc130a2", size = 6552130 }, - { url = "https://files.pythonhosted.org/packages/b8/85/da93f0fc8f2424cf776fcce6daef9291162345179d16faf1401ff2890068/ruff-0.1.15-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6c629cf64bacfd136c07c78ac10a54578ec9d1bd2a9d395efbee0935868bf852", size = 7214386 }, - { url = "https://files.pythonhosted.org/packages/e5/bf/de34ad339e0d1f6faa858cbcf793f3abc168b7aa516dd9227d843b992be8/ruff-0.1.15-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1bab866aafb53da39c2cadfb8e1c4550ac5340bb40300083eb8967ba25481447", size = 7602787 }, - { url = "https://files.pythonhosted.org/packages/8d/61/ffdccecb0b39521d7060d6a6bc33c53d7f20d48d3511d6333cb01f26e979/ruff-0.1.15-py3-none-win32.whl", hash = "sha256:2417e1cb6e2068389b07e6fa74c306b2810fe3ee3476d5b8a96616633f40d14f", size = 6670488 }, - { url = "https://files.pythonhosted.org/packages/2b/5f/3ba51cc770ed2b2df88efc32bba26759e6ac5c6149319a60913a85230936/ruff-0.1.15-py3-none-win_amd64.whl", hash = "sha256:3837ac73d869efc4182d9036b1405ef4c73d9b1f88da2413875e34e0d6919587", size = 7319395 }, - { url = "https://files.pythonhosted.org/packages/c9/bd/c196493563d6bf8fe960f10b83926a3fae3a43a96eac6b263aecb96c61d7/ruff-0.1.15-py3-none-win_arm64.whl", hash = "sha256:9a933dfb1c14ec7a33cceb1e49ec4a16b51ce3c20fd42663198746efc0427360", size = 6998592 }, +version = "0.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/5e/683c7ef7a696923223e7d95ca06755d6e2acbc5fd8382b2912a28008137c/ruff-0.8.3.tar.gz", hash = "sha256:5e7558304353b84279042fc584a4f4cb8a07ae79b2bf3da1a7551d960b5626d3", size = 3378522 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/c4/bfdbb8b9c419ff3b52479af8581026eeaac3764946fdb463dec043441b7d/ruff-0.8.3-py3-none-linux_armv6l.whl", hash = "sha256:8d5d273ffffff0acd3db5bf626d4b131aa5a5ada1276126231c4174543ce20d6", size = 10535860 }, + { url = "https://files.pythonhosted.org/packages/ef/c5/0aabdc9314b4b6f051168ac45227e2aa8e1c6d82718a547455e40c9c9faa/ruff-0.8.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e4d66a21de39f15c9757d00c50c8cdd20ac84f55684ca56def7891a025d7e939", size = 10346327 }, + { url = "https://files.pythonhosted.org/packages/1a/78/4843a59e7e7b398d6019cf91ab06502fd95397b99b2b858798fbab9151f5/ruff-0.8.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c356e770811858bd20832af696ff6c7e884701115094f427b64b25093d6d932d", size = 9942585 }, + { url = "https://files.pythonhosted.org/packages/91/5a/642ed8f1ba23ffc2dd347697e01eef3c42fad6ac76603be4a8c3a9d6311e/ruff-0.8.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c0a60a825e3e177116c84009d5ebaa90cf40dfab56e1358d1df4e29a9a14b13", size = 10797597 }, + { url = "https://files.pythonhosted.org/packages/30/25/2e654bc7226da09a49730a1a2ea6e89f843b362db80b4b2a7a4f948ac986/ruff-0.8.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:75fb782f4db39501210ac093c79c3de581d306624575eddd7e4e13747e61ba18", size = 10307244 }, + { url = "https://files.pythonhosted.org/packages/c0/2d/a224d56bcd4383583db53c2b8f410ebf1200866984aa6eb9b5a70f04e71f/ruff-0.8.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f26bc76a133ecb09a38b7868737eded6941b70a6d34ef53a4027e83913b6502", size = 11362439 }, + { url = "https://files.pythonhosted.org/packages/82/01/03e2857f9c371b8767d3e909f06a33bbdac880df17f17f93d6f6951c3381/ruff-0.8.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:01b14b2f72a37390c1b13477c1c02d53184f728be2f3ffc3ace5b44e9e87b90d", size = 12078538 }, + { url = "https://files.pythonhosted.org/packages/af/ae/ff7f97b355da16d748ceec50e1604a8215d3659b36b38025a922e0612e9b/ruff-0.8.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53babd6e63e31f4e96ec95ea0d962298f9f0d9cc5990a1bbb023a6baf2503a82", size = 11616172 }, + { url = "https://files.pythonhosted.org/packages/6a/d0/6156d4d1e53ebd17747049afe801c5d7e3014d9b2f398b9236fe36ba4320/ruff-0.8.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ae441ce4cf925b7f363d33cd6570c51435972d697e3e58928973994e56e1452", size = 12919886 }, + { url = "https://files.pythonhosted.org/packages/4e/84/affcb30bacb94f6036a128ad5de0e29f543d3f67ee42b490b17d68e44b8a/ruff-0.8.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7c65bc0cadce32255e93c57d57ecc2cca23149edd52714c0c5d6fa11ec328cd", size = 11212599 }, + { url = "https://files.pythonhosted.org/packages/60/b9/5694716bdefd8f73df7c0104334156c38fb0f77673d2966a5a1345bab94d/ruff-0.8.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5be450bb18f23f0edc5a4e5585c17a56ba88920d598f04a06bd9fd76d324cb20", size = 10784637 }, + { url = "https://files.pythonhosted.org/packages/24/7e/0e8f835103ac7da81c3663eedf79dec8359e9ae9a3b0d704bae50be59176/ruff-0.8.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8faeae3827eaa77f5721f09b9472a18c749139c891dbc17f45e72d8f2ca1f8fc", size = 10390591 }, + { url = "https://files.pythonhosted.org/packages/27/da/180ec771fc01c004045962ce017ca419a0281f4bfaf867ed0020f555b56e/ruff-0.8.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:db503486e1cf074b9808403991663e4277f5c664d3fe237ee0d994d1305bb060", size = 10894298 }, + { url = "https://files.pythonhosted.org/packages/6d/f8/29f241742ed3954eb2222314b02db29f531a15cab3238d1295e8657c5f18/ruff-0.8.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6567be9fb62fbd7a099209257fef4ad2c3153b60579818b31a23c886ed4147ea", size = 11275965 }, + { url = "https://files.pythonhosted.org/packages/79/e9/5b81dc9afc8a80884405b230b9429efeef76d04caead904bd213f453b973/ruff-0.8.3-py3-none-win32.whl", hash = "sha256:19048f2f878f3ee4583fc6cb23fb636e48c2635e30fb2022b3a1cd293402f964", size = 8807651 }, + { url = "https://files.pythonhosted.org/packages/ea/67/7291461066007617b59a707887b90e319b6a043c79b4d19979f86b7a20e7/ruff-0.8.3-py3-none-win_amd64.whl", hash = "sha256:f7df94f57d7418fa7c3ffb650757e0c2b96cf2501a0b192c18e4fb5571dfada9", size = 9625289 }, + { url = "https://files.pythonhosted.org/packages/03/8f/e4fa95288b81233356d9a9dcaed057e5b0adc6399aa8fd0f6d784041c9c3/ruff-0.8.3-py3-none-win_arm64.whl", hash = "sha256:fe2756edf68ea79707c8d68b78ca9a58ed9af22e430430491ee03e718b5e4936", size = 9078754 }, ] [[package]] @@ -3976,9 +3861,13 @@ docs = [ sklearn = [ { name = "scikit-learn" }, ] +style = [ + { name = "ruff" }, +] tests = [ { name = "pytest" }, { name = "pytest-cov" }, + { name = "pytest-xdist" }, ] tutorials = [ { name = "datasets" }, @@ -3990,14 +3879,6 @@ tutorials = [ { name = "seaborn" }, ] -[package.dev-dependencies] -style = [ - { name = "black" }, - { name = "mypy" }, - { name = "pre-commit" }, - { name = "ruff" }, -] - [package.metadata] requires-dist = [ { name = "autodoc-pydantic", marker = "extra == 'docs'", specifier = "==2.1.0" }, @@ -4015,6 +3896,8 @@ requires-dist = [ { name = "pyphen", specifier = ">=0.11.0" }, { name = "pytest", marker = "extra == 'tests'", specifier = ">=7.1.3" }, { name = "pytest-cov", marker = "extra == 'tests'", specifier = ">=3.0.0" }, + { name = "pytest-xdist", marker = "extra == 'tests'" }, + { name = "ruff", marker = "extra == 'style'", specifier = "==0.8.3" }, { name = "scikit-learn", marker = "extra == 'sklearn'", specifier = ">=1.1.1" }, { name = "scikit-learn", marker = "extra == 'tutorials'", specifier = ">=1.1.1" }, { name = "scipy", marker = "extra == 'tutorials'", specifier = ">=1.13.1" }, @@ -4026,14 +3909,6 @@ requires-dist = [ { name = "sphinxext-opengraph", marker = "extra == 'docs'", specifier = ">=0.7.3" }, ] -[package.metadata.requires-dev] -style = [ - { name = "black", specifier = "==24.1.1" }, - { name = "mypy", specifier = "==1.8.0" }, - { name = "pre-commit", specifier = "==3.6.0" }, - { name = "ruff", specifier = "==0.1.15" }, -] - [[package]] name = "thinc" version = "8.2.5" @@ -4235,20 +4110,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, ] -[[package]] -name = "virtualenv" -version = "20.28.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "distlib" }, - { name = "filelock" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/75/53316a5a8050069228a2f6d11f32046cfa94fbb6cc3f08703f59b873de2e/virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa", size = 7650368 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/10/f9/0919cf6f1432a8c4baa62511f8f8da8225432d22e83e3476f5be1a1edc6e/virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0", size = 4276702 }, -] - [[package]] name = "wasabi" version = "1.1.3"