From e1ca767b0bc63de518d5ae23bcc2873f6d01901d Mon Sep 17 00:00:00 2001 From: Amrit Krishnan Date: Fri, 16 Feb 2024 15:21:45 -0500 Subject: [PATCH 1/5] Add example deployment scripts (#553) --- .pre-commit-config.yaml | 2 +- deploy/README.md | 53 + deploy/bentofile.yaml | 12 + deploy/deployment.yaml | 5 + .../densenet121_res224_all/config.pbtxt | 41 + .../heart_failure_prediction/config.pbtxt | 24 + .../resnet50_res512_all/config.pbtxt | 38 + deploy/service.py | 115 ++ poetry.lock | 1392 ++++++++++++++++- pyproject.toml | 10 + 10 files changed, 1686 insertions(+), 6 deletions(-) create mode 100644 deploy/README.md create mode 100644 deploy/bentofile.yaml create mode 100644 deploy/deployment.yaml create mode 100644 deploy/model_repo/densenet121_res224_all/config.pbtxt create mode 100644 deploy/model_repo/heart_failure_prediction/config.pbtxt create mode 100644 deploy/model_repo/resnet50_res512_all/config.pbtxt create mode 100644 deploy/service.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0dae4d3d7..e7fd5625c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -28,7 +28,7 @@ repos: types_or: [python, jupyter] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.7.1 + rev: v1.8.0 hooks: - id: mypy entry: python3 -m mypy --config-file pyproject.toml diff --git a/deploy/README.md b/deploy/README.md new file mode 100644 index 000000000..0ad68d208 --- /dev/null +++ b/deploy/README.md @@ -0,0 +1,53 @@ +# Model Deployment with BentoML and Triton Inference Server + +1. Install the required dependencies with poetry. +```bash +poetry install --with deploy +``` +2. Serialize trained model and move it to the `model_repo` directory. Then create + a `config.pbtxt` file for the model. + + **Example - torchxrayvision model** + ```python + import torch + import torchxrayvision as xrv + + + model = xrv.models.ResNet(weights="resnet50-res512-all").eval().cuda() + + dummy_input = (-1024 - 1024) * torch.rand(1, 1, 512, 512) + 1024 + dummy_input = dummy_input.cuda() + + torch.jit.trace(model, dummy_input).save("model_repo/resnet50_res512_all/1/model.pt") + ``` + See `model_repo/resnet50_res512_all/config.pbtxt` for an example of a pytorch model configuration file. + + **Example - sklearn model** + ```python + from skl2onnx import to_onnx + + + onnx_model = to_onnx( + , + , + options={"zipmap": False}, + ) + with open("model_repo//1/model.onnx", "wb") as f: + f.write(onnx_model.SerializeToString()) + ``` + See `model_repo/heart_failure_prediction/config.pbtxt` for an example of an ONNX model configuration file. +3. Create a service with BentoML with a triton runner. See `service.py` for an example. +4. Define a bentofile to specify which files to include in the bento. See `bentofile.yaml` for an example. +5. Build a bento. +```bash +bentoml build --do-not-track +``` +6. Containerize the bento. +```bash +bentoml containerize -t model-service:alpha --enable-features=triton --do-not-track model-service:latest +``` + +7. Run the container with docker. +```bash +docker run -d --gpus=1 --rm -p 3000:3000 model-service:alpha +``` diff --git a/deploy/bentofile.yaml b/deploy/bentofile.yaml new file mode 100644 index 000000000..9db1701c8 --- /dev/null +++ b/deploy/bentofile.yaml @@ -0,0 +1,12 @@ +service: service:svc +include: + - /model_repo + - /*.py +exclude: + - /__pycache__ +python: + packages: + - bentoml[triton] + - torchxrayvision==1.2.1 +docker: + base_image: nvcr.io/nvidia/tritonserver:24.01-py3 diff --git a/deploy/deployment.yaml b/deploy/deployment.yaml new file mode 100644 index 000000000..4c913ca36 --- /dev/null +++ b/deploy/deployment.yaml @@ -0,0 +1,5 @@ +monitoring: + enabled: true + type: default + options: + output_dir: ./monitoring diff --git a/deploy/model_repo/densenet121_res224_all/config.pbtxt b/deploy/model_repo/densenet121_res224_all/config.pbtxt new file mode 100644 index 000000000..6a4d6e50d --- /dev/null +++ b/deploy/model_repo/densenet121_res224_all/config.pbtxt @@ -0,0 +1,41 @@ +backend: "pytorch" +name: "densenet121_res224_all" +max_batch_size: 64 +dynamic_batching { + max_queue_delay_microseconds: 100 +} +input { + name: "INPUT__0" + data_type: TYPE_FP32 + dims: 1 + dims: 224 + dims: 224 +} +output { + name: "OUTPUT__0" + data_type: TYPE_FP32 + dims: -1 + dims: 18 +} +instance_group [ + { + count: 1 + kind: KIND_GPU + gpus: [0] + } +] +model_warmup [ + { + name : "random sample" + count: 1 + batch_size: 1 + inputs { + key: "INPUT__0" + value: { + data_type: TYPE_FP32 + dims: [1, 224, 224] + random_data: true + } + } + } +] diff --git a/deploy/model_repo/heart_failure_prediction/config.pbtxt b/deploy/model_repo/heart_failure_prediction/config.pbtxt new file mode 100644 index 000000000..65ed38561 --- /dev/null +++ b/deploy/model_repo/heart_failure_prediction/config.pbtxt @@ -0,0 +1,24 @@ +backend: "onnxruntime" +name: "heart_failure_prediction" +max_batch_size: 0 +input { + name: "X" + data_type: TYPE_FP32 + dims: [-1, 21] +} +output { + name: "label" + data_type: TYPE_INT64 + dims: -1 +} +instance_group [ + { + count: 1 + kind: KIND_CPU + } +] +optimization { execution_accelerators { + cpu_execution_accelerator : [ { + name : "openvino" + }] +}} diff --git a/deploy/model_repo/resnet50_res512_all/config.pbtxt b/deploy/model_repo/resnet50_res512_all/config.pbtxt new file mode 100644 index 000000000..a118bb544 --- /dev/null +++ b/deploy/model_repo/resnet50_res512_all/config.pbtxt @@ -0,0 +1,38 @@ +backend: "pytorch" +name: "resnet50_res512_all" +max_batch_size: 32 +dynamic_batching { + max_queue_delay_microseconds: 100 +} +input { + name: "INPUT__0" + data_type: TYPE_FP32 + dims: 1 + dims: 512 + dims: 512 +} +output { + name: "OUTPUT__0" + data_type: TYPE_FP32 + dims: -1 + dims: 18 +} +instance_group [ + { + count: 1 + kind: KIND_GPU + gpus: [0] + } +] +model_warmup [{ + name : "random sample" + batch_size: 1 + inputs { + key: "INPUT__0" + value: { + data_type: TYPE_FP32 + dims: [1, 512, 512] + random_data: true + } + } +}] diff --git a/deploy/service.py b/deploy/service.py new file mode 100644 index 000000000..d74b014d5 --- /dev/null +++ b/deploy/service.py @@ -0,0 +1,115 @@ +"""Model serving service with Triton Inference Server as backend.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Literal + +import bentoml +import numpy as np +import torchxrayvision as xrv +from torchvision import transforms + + +if TYPE_CHECKING: + from PIL.Image import Image + + +def get_transform(image_size: int) -> transforms.Compose: + """Get image transformation for model inference.""" + return transforms.Compose( + [ + xrv.datasets.XRayCenterCrop(), + xrv.datasets.XRayResizer(image_size), + ], + ) + + +triton_runner = bentoml.triton.Runner( + "triton_runner", + "src/model_repo", + tritonserver_type="http", + cli_args=[ + "--exit-on-error=true", # exits if any error occurs during initialization + "--http-restricted-api=model-repository:access-key=admin", # restrict access to load/unload APIs + "--model-control-mode=explicit", # enable explicit model loading/unloading + "--load-model=resnet50_res512_all", + ], +) +svc = bentoml.Service("model-service", runners=[triton_runner]) + + +@svc.api( # type: ignore + input=bentoml.io.Multipart(im=bentoml.io.Image(), model_name=bentoml.io.Text()), + output=bentoml.io.JSON(), +) +async def classify_xray(im: Image, model_name: str) -> dict[str, float]: + """Classify X-ray image using specified model.""" + img = np.asarray(im) + img = xrv.datasets.normalize( + img, + img.max(), + reshape=True, # normalize image to [-1024, 1024] + ) + + model_repo_index = await triton_runner.get_model_repository_index() + available_models = [model["name"] for model in model_repo_index] + if model_name not in available_models: + raise bentoml.exceptions.InvalidArgument( + f"Expected model name to be one of {available_models}, but got {model_name}", + ) + + img_size = 224 + if "resnet" in model_name: + img_size = 512 + + img = get_transform(img_size)(img) + + if len(img.shape) == 3: + img = img[None] # add batch dimension + + InferResult = await getattr(triton_runner, model_name).async_run(img) # noqa: N806 + return dict( + zip(xrv.datasets.default_pathologies, InferResult.as_numpy("OUTPUT__0")[0]), + ) + + +@svc.api( # type: ignore + input=bentoml.io.NumpyNdarray(dtype="float32", shape=(-1, 21)), + output=bentoml.io.NumpyNdarray(dtype="int64", shape=(-1,)), +) +async def predict_heart_failure(X: np.ndarray) -> np.ndarray: # type: ignore + """Run inference on heart failure prediction model.""" + InferResult = await triton_runner.heart_failure_prediction.async_run( # noqa: N806 + X, + ) + return InferResult.as_numpy("label") # type: ignore[no-any-return] + + +# Triton Model management API +@svc.api(input=bentoml.io.JSON(), output=bentoml.io.JSON()) # type: ignore +async def model_config(input_model: dict[Literal["model_name"], str]) -> dict[str, Any]: + """Retrieve model configuration from Triton Inference Server.""" + return await triton_runner.get_model_config(input_model["model_name"]) # type: ignore + + +@svc.api(input=bentoml.io.Text(), output=bentoml.io.JSON()) # type: ignore +async def unload_model(input_model: str, ctx: bentoml.Context) -> dict[str, str]: + """Unload a model from memory.""" + await triton_runner.unload_model( + input_model, + headers=ctx.request.headers, + ) # noqa: E501 + return {"unloaded": input_model} + + +@svc.api(input=bentoml.io.Text(), output=bentoml.io.JSON()) # type: ignore +async def load_model(input_model: str, ctx: bentoml.Context) -> dict[str, str]: + """Load a model into memory.""" + await triton_runner.load_model(input_model, headers=ctx.request.headers) + return {"loaded": input_model} + + +@svc.api(input=bentoml.io.Text(), output=bentoml.io.JSON()) # type: ignore +async def list_models(_: str, ctx: bentoml.Context) -> list[str]: + """Return a list of models available in the model repository.""" + return await triton_runner.get_model_repository_index(headers=ctx.request.headers) # type: ignore diff --git a/poetry.lock b/poetry.lock index c4d5c82bd..b43c1ee66 100644 --- a/poetry.lock +++ b/poetry.lock @@ -280,6 +280,17 @@ doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphin test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] trio = ["trio (>=0.23)"] +[[package]] +name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = "*" +files = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] + [[package]] name = "appnope" version = "0.1.3" @@ -382,6 +393,23 @@ types-python-dateutil = ">=2.8.10" doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] +[[package]] +name = "asgiref" +version = "3.7.2" +description = "ASGI specs, helper code, and adapters" +optional = false +python-versions = ">=3.7" +files = [ + {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, + {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} + +[package.extras] +tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] + [[package]] name = "astroid" version = "3.0.2" @@ -508,6 +536,79 @@ soupsieve = ">1.2" html5lib = ["html5lib"] lxml = ["lxml"] +[[package]] +name = "bentoml" +version = "1.2.2" +description = "BentoML: Build Production-Grade AI Applications" +optional = false +python-versions = ">=3.8" +files = [ + {file = "bentoml-1.2.2-py3-none-any.whl", hash = "sha256:83e051902613a01e0c5b0621130e14fd28c6a134a25f218cb8f048426e378664"}, + {file = "bentoml-1.2.2.tar.gz", hash = "sha256:5fc96db3268d63880a01d0b555fda0c8dd7e57274d2c6c2c6385450d3ea7f4fc"}, +] + +[package.dependencies] +aiohttp = "*" +attrs = ">=22.2.0" +cattrs = ">=22.1.0,<23.2.0" +circus = ">=0.17.0,<0.17.2 || >0.17.2" +click = ">=7.0" +click-option-group = "*" +cloudpickle = ">=2.0.0" +deepmerge = "*" +fs = "*" +httpx = "*" +inflection = "*" +jinja2 = ">=3.0.1" +numpy = "*" +nvidia-ml-py = "<12" +opentelemetry-api = "1.20.0" +opentelemetry-instrumentation = "0.41b0" +opentelemetry-instrumentation-aiohttp-client = "0.41b0" +opentelemetry-instrumentation-asgi = "0.41b0" +opentelemetry-sdk = "1.20.0" +opentelemetry-semantic-conventions = "0.41b0" +opentelemetry-util-http = "0.41b0" +packaging = ">=22.0" +pathspec = "*" +pip-requirements-parser = ">=31.2.0" +pip-tools = ">=6.6.2" +prometheus-client = ">=0.10.0" +psutil = "*" +pydantic = "<3" +python-dateutil = "*" +python-json-logger = "*" +python-multipart = "*" +pyyaml = ">=5.0" +requests = "*" +rich = ">=11.2.0" +schema = "*" +simple-di = ">=0.1.4" +starlette = ">=0.24.0" +tritonclient = [ + {version = ">=2.29.0", optional = true, markers = "extra == \"triton\""}, + {version = "*", extras = ["all"], optional = true, markers = "sys_platform != \"darwin\" and extra == \"triton\""}, +] +uvicorn = "*" +watchfiles = ">=0.15.0" + +[package.extras] +all = ["bentoml[aws,grpc,grpc-channelz,grpc-reflection,io,monitor-otlp,tracing]"] +aws = ["fs-s3fs"] +grpc = ["grpcio", "grpcio-health-checking", "opentelemetry-instrumentation-grpc (==0.41b0)", "protobuf"] +grpc-channelz = ["bentoml[grpc]", "grpcio-channelz"] +grpc-reflection = ["bentoml[grpc]", "grpcio-reflection"] +io = ["bentoml[io-file,io-image,io-pandas]"] +io-file = ["filetype"] +io-image = ["bentoml[io-file]", "pillow"] +io-pandas = ["pandas (>=1)", "pyarrow"] +monitor-otlp = ["opentelemetry-exporter-otlp-proto-http (==1.20.0)"] +tracing = ["bentoml[tracing-jaeger,tracing-otlp,tracing-zipkin]"] +tracing-jaeger = ["opentelemetry-exporter-jaeger (==1.20.0)"] +tracing-otlp = ["opentelemetry-exporter-otlp (==1.20.0)"] +tracing-zipkin = ["opentelemetry-exporter-zipkin (==1.20.0)"] +triton = ["tritonclient (>=2.29.0)", "tritonclient[all]"] + [[package]] name = "black" version = "22.12.0" @@ -632,6 +733,122 @@ files = [ {file = "boolean.py-4.0.tar.gz", hash = "sha256:17b9a181630e43dde1851d42bef546d616d5d9b4480357514597e78b203d06e4"}, ] +[[package]] +name = "brotli" +version = "1.1.0" +description = "Python bindings for the Brotli compression library" +optional = false +python-versions = "*" +files = [ + {file = "Brotli-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1140c64812cb9b06c922e77f1c26a75ec5e3f0fb2bf92cc8c58720dec276752"}, + {file = "Brotli-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8fd5270e906eef71d4a8d19b7c6a43760c6abcfcc10c9101d14eb2357418de9"}, + {file = "Brotli-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae56aca0402a0f9a3431cddda62ad71666ca9d4dc3a10a142b9dce2e3c0cda3"}, + {file = "Brotli-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43ce1b9935bfa1ede40028054d7f48b5469cd02733a365eec8a329ffd342915d"}, + {file = "Brotli-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7c4855522edb2e6ae7fdb58e07c3ba9111e7621a8956f481c68d5d979c93032e"}, + {file = "Brotli-1.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:38025d9f30cf4634f8309c6874ef871b841eb3c347e90b0851f63d1ded5212da"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e6a904cb26bfefc2f0a6f240bdf5233be78cd2488900a2f846f3c3ac8489ab80"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e"}, + {file = "Brotli-1.1.0-cp310-cp310-win32.whl", hash = "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2"}, + {file = "Brotli-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128"}, + {file = "Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc"}, + {file = "Brotli-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8146669223164fc87a7e3de9f81e9423c67a79d6b3447994dfb9c95da16e2d6"}, + {file = "Brotli-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30924eb4c57903d5a7526b08ef4a584acc22ab1ffa085faceb521521d2de32dd"}, + {file = "Brotli-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ceb64bbc6eac5a140ca649003756940f8d6a7c444a68af170b3187623b43bebf"}, + {file = "Brotli-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a469274ad18dc0e4d316eefa616d1d0c2ff9da369af19fa6f3daa4f09671fd61"}, + {file = "Brotli-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524f35912131cc2cabb00edfd8d573b07f2d9f21fa824bd3fb19725a9cf06327"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b3cc074004d968722f51e550b41a27be656ec48f8afaeeb45ebf65b561481dd"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8"}, + {file = "Brotli-1.1.0-cp311-cp311-win32.whl", hash = "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50"}, + {file = "Brotli-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1"}, + {file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409"}, + {file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2"}, + {file = "Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451"}, + {file = "Brotli-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f4bf76817c14aa98cc6697ac02f3972cb8c3da93e9ef16b9c66573a68014f91"}, + {file = "Brotli-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0c5516f0aed654134a2fc936325cc2e642f8a0e096d075209672eb321cff408"}, + {file = "Brotli-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c3020404e0b5eefd7c9485ccf8393cfb75ec38ce75586e046573c9dc29967a0"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ed11165dd45ce798d99a136808a794a748d5dc38511303239d4e2363c0695dc"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966"}, + {file = "Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0"}, + {file = "Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951"}, + {file = "Brotli-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a090ca607cbb6a34b0391776f0cb48062081f5f60ddcce5d11838e67a01928d1"}, + {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de9d02f5bda03d27ede52e8cfe7b865b066fa49258cbab568720aa5be80a47d"}, + {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2333e30a5e00fe0fe55903c8832e08ee9c3b1382aacf4db26664a16528d51b4b"}, + {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4d4a848d1837973bf0f4b5e54e3bec977d99be36a7895c61abb659301b02c112"}, + {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fdc3ff3bfccdc6b9cc7c342c03aa2400683f0cb891d46e94b64a197910dc4064"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:5eeb539606f18a0b232d4ba45adccde4125592f3f636a6182b4a8a436548b914"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:fd5f17ff8f14003595ab414e45fce13d073e0762394f957182e69035c9f3d7c2"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:069a121ac97412d1fe506da790b3e69f52254b9df4eb665cd42460c837193354"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e93dfc1a1165e385cc8239fab7c036fb2cd8093728cbd85097b284d7b99249a2"}, + {file = "Brotli-1.1.0-cp36-cp36m-win32.whl", hash = "sha256:a599669fd7c47233438a56936988a2478685e74854088ef5293802123b5b2460"}, + {file = "Brotli-1.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d143fd47fad1db3d7c27a1b1d66162e855b5d50a89666af46e1679c496e8e579"}, + {file = "Brotli-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:11d00ed0a83fa22d29bc6b64ef636c4552ebafcef57154b4ddd132f5638fbd1c"}, + {file = "Brotli-1.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f733d788519c7e3e71f0855c96618720f5d3d60c3cb829d8bbb722dddce37985"}, + {file = "Brotli-1.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:929811df5462e182b13920da56c6e0284af407d1de637d8e536c5cd00a7daf60"}, + {file = "Brotli-1.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b63b949ff929fbc2d6d3ce0e924c9b93c9785d877a21a1b678877ffbbc4423a"}, + {file = "Brotli-1.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d192f0f30804e55db0d0e0a35d83a9fead0e9a359a9ed0285dbacea60cc10a84"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f296c40e23065d0d6650c4aefe7470d2a25fffda489bcc3eb66083f3ac9f6643"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:919e32f147ae93a09fe064d77d5ebf4e35502a8df75c29fb05788528e330fe74"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:23032ae55523cc7bccb4f6a0bf368cd25ad9bcdcc1990b64a647e7bbcce9cb5b"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:224e57f6eac61cc449f498cc5f0e1725ba2071a3d4f48d5d9dffba42db196438"}, + {file = "Brotli-1.1.0-cp37-cp37m-win32.whl", hash = "sha256:587ca6d3cef6e4e868102672d3bd9dc9698c309ba56d41c2b9c85bbb903cdb95"}, + {file = "Brotli-1.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2954c1c23f81c2eaf0b0717d9380bd348578a94161a65b3a2afc62c86467dd68"}, + {file = "Brotli-1.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:efa8b278894b14d6da122a72fefcebc28445f2d3f880ac59d46c90f4c13be9a3"}, + {file = "Brotli-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:03d20af184290887bdea3f0f78c4f737d126c74dc2f3ccadf07e54ceca3bf208"}, + {file = "Brotli-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6172447e1b368dcbc458925e5ddaf9113477b0ed542df258d84fa28fc45ceea7"}, + {file = "Brotli-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a743e5a28af5f70f9c080380a5f908d4d21d40e8f0e0c8901604d15cfa9ba751"}, + {file = "Brotli-1.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0541e747cce78e24ea12d69176f6a7ddb690e62c425e01d31cc065e69ce55b48"}, + {file = "Brotli-1.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cdbc1fc1bc0bff1cef838eafe581b55bfbffaed4ed0318b724d0b71d4d377619"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:890b5a14ce214389b2cc36ce82f3093f96f4cc730c1cffdbefff77a7c71f2a97"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ab4fbee0b2d9098c74f3057b2bc055a8bd92ccf02f65944a241b4349229185a"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:141bd4d93984070e097521ed07e2575b46f817d08f9fa42b16b9b5f27b5ac088"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fce1473f3ccc4187f75b4690cfc922628aed4d3dd013d047f95a9b3919a86596"}, + {file = "Brotli-1.1.0-cp38-cp38-win32.whl", hash = "sha256:db85ecf4e609a48f4b29055f1e144231b90edc90af7481aa731ba2d059226b1b"}, + {file = "Brotli-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3d7954194c36e304e1523f55d7042c59dc53ec20dd4e9ea9d151f1b62b4415c0"}, + {file = "Brotli-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb2ce4b8045c78ebbc7b8f3c15062e435d47e7393cc57c25115cfd49883747a"}, + {file = "Brotli-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7905193081db9bfa73b1219140b3d315831cbff0d8941f22da695832f0dd188f"}, + {file = "Brotli-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a77def80806c421b4b0af06f45d65a136e7ac0bdca3c09d9e2ea4e515367c7e9"}, + {file = "Brotli-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dadd1314583ec0bf2d1379f7008ad627cd6336625d6679cf2f8e67081b83acf"}, + {file = "Brotli-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:901032ff242d479a0efa956d853d16875d42157f98951c0230f69e69f9c09bac"}, + {file = "Brotli-1.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:22fc2a8549ffe699bfba2256ab2ed0421a7b8fadff114a3d201794e45a9ff578"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ae15b066e5ad21366600ebec29a7ccbc86812ed267e4b28e860b8ca16a2bc474"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:949f3b7c29912693cee0afcf09acd6ebc04c57af949d9bf77d6101ebb61e388c"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:89f4988c7203739d48c6f806f1e87a1d96e0806d44f0fba61dba81392c9e474d"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:de6551e370ef19f8de1807d0a9aa2cdfdce2e85ce88b122fe9f6b2b076837e59"}, + {file = "Brotli-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f0d8a7a6b5983c2496e364b969f0e526647a06b075d034f3297dc66f3b360c64"}, + {file = "Brotli-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cdad5b9014d83ca68c25d2e9444e28e967ef16e80f6b436918c700c117a85467"}, + {file = "Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724"}, +] + +[[package]] +name = "build" +version = "1.0.3" +description = "A simple, correct Python build frontend" +optional = false +python-versions = ">= 3.7" +files = [ + {file = "build-1.0.3-py3-none-any.whl", hash = "sha256:589bf99a67df7c9cf07ec0ac0e5e2ea5d4b37ac63301c4986d1acb126aa83f8f"}, + {file = "build-1.0.3.tar.gz", hash = "sha256:538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "os_name == \"nt\""} +importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} +packaging = ">=19.0" +pyproject_hooks = "*" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} + +[package.extras] +docs = ["furo (>=2023.08.17)", "sphinx (>=7.0,<8.0)", "sphinx-argparse-cli (>=1.5)", "sphinx-autodoc-typehints (>=1.10)", "sphinx-issues (>=3.0.0)"] +test = ["filelock (>=3)", "pytest (>=6.2.4)", "pytest-cov (>=2.12)", "pytest-mock (>=2)", "pytest-rerunfailures (>=9.1)", "pytest-xdist (>=1.34)", "setuptools (>=42.0.0)", "setuptools (>=56.0.0)", "setuptools (>=56.0.0)", "setuptools (>=67.8.0)", "wheel (>=0.36.0)"] +typing = ["importlib-metadata (>=5.1)", "mypy (>=1.5.0,<1.6.0)", "tomli", "typing-extensions (>=3.7.4.3)"] +virtualenv = ["virtualenv (>=20.0.35)"] + [[package]] name = "catalogue" version = "2.0.10" @@ -643,6 +860,31 @@ files = [ {file = "catalogue-2.0.10.tar.gz", hash = "sha256:4f56daa940913d3f09d589c191c74e5a6d51762b3a9e37dd53b7437afd6cda15"}, ] +[[package]] +name = "cattrs" +version = "23.1.2" +description = "Composable complex class support for attrs and dataclasses." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cattrs-23.1.2-py3-none-any.whl", hash = "sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4"}, + {file = "cattrs-23.1.2.tar.gz", hash = "sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657"}, +] + +[package.dependencies] +attrs = ">=20" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + +[package.extras] +bson = ["pymongo (>=4.2.0,<5.0.0)"] +cbor2 = ["cbor2 (>=5.4.6,<6.0.0)"] +msgpack = ["msgpack (>=1.0.2,<2.0.0)"] +orjson = ["orjson (>=3.5.2,<4.0.0)"] +pyyaml = ["PyYAML (>=6.0,<7.0)"] +tomlkit = ["tomlkit (>=0.11.4,<0.12.0)"] +ujson = ["ujson (>=5.4.0,<6.0.0)"] + [[package]] name = "certifi" version = "2023.11.17" @@ -828,6 +1070,25 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "circus" +version = "0.18.0" +description = "Circus is a program that will let you run and watch multiple processes and sockets." +optional = false +python-versions = ">=3.7" +files = [ + {file = "circus-0.18.0-py3-none-any.whl", hash = "sha256:f3ee4167bea16d34b42bab61440284f3936d2548f5546e70cf79f66daec867b0"}, + {file = "circus-0.18.0.tar.gz", hash = "sha256:193ce8224e068ced66724cf483106fb6674b51a57583ac1a0e7ed7a7ee8c71ab"}, +] + +[package.dependencies] +psutil = "*" +pyzmq = ">=17.0" +tornado = ">=5.0.2" + +[package.extras] +test = ["coverage", "flake8 (==2.1.0)", "gevent", "mock", "nose2", "pyyaml", "tox"] + [[package]] name = "click" version = "8.1.7" @@ -842,6 +1103,25 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "click-option-group" +version = "0.5.6" +description = "Option groups missing in Click" +optional = false +python-versions = ">=3.6,<4" +files = [ + {file = "click-option-group-0.5.6.tar.gz", hash = "sha256:97d06703873518cc5038509443742b25069a3c7562d1ea72ff08bfadde1ce777"}, + {file = "click_option_group-0.5.6-py3-none-any.whl", hash = "sha256:38a26d963ee3ad93332ddf782f9259c5bdfe405e73408d943ef5e7d0c3767ec7"}, +] + +[package.dependencies] +Click = ">=7.0,<9" + +[package.extras] +docs = ["Pallets-Sphinx-Themes", "m2r2", "sphinx"] +tests = ["pytest"] +tests-cov = ["coverage", "coveralls", "pytest", "pytest-cov"] + [[package]] name = "cloudpathlib" version = "0.16.0" @@ -866,7 +1146,7 @@ s3 = ["boto3"] name = "cloudpickle" version = "3.0.0" description = "Pickler class to extend the standard pickle.Pickler functionality" -optional = true +optional = false python-versions = ">=3.8" files = [ {file = "cloudpickle-3.0.0-py3-none-any.whl", hash = "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7"}, @@ -931,6 +1211,17 @@ files = [ pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<3.0.0" srsly = ">=2.4.0,<3.0.0" +[[package]] +name = "contextlib2" +version = "21.6.0" +description = "Backports and enhancements for the contextlib module" +optional = false +python-versions = ">=3.6" +files = [ + {file = "contextlib2-21.6.0-py2.py3-none-any.whl", hash = "sha256:3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f"}, + {file = "contextlib2-21.6.0.tar.gz", hash = "sha256:ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869"}, +] + [[package]] name = "contourpy" version = "1.2.0" @@ -1061,6 +1352,31 @@ tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.1 [package.extras] toml = ["tomli"] +[[package]] +name = "cuda-python" +version = "12.3.0" +description = "Python bindings for CUDA" +optional = false +python-versions = "*" +files = [ + {file = "cuda_python-12.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45285ec0f0dc4fe604b3568e77ba3363d3ce531ac9f9a5510d2276ad46ef143f"}, + {file = "cuda_python-12.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6f666d01e573454cbd38495911fe25686849e5996f140d9b756f02f93e19e43"}, + {file = "cuda_python-12.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7560ea424044420a2762559832e392e48317889db62c5da7e8957b1907996d32"}, + {file = "cuda_python-12.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:02f392dbb320731cf89a02a2540db84e4beb27f900d4128e407c33d20adc7c8e"}, + {file = "cuda_python-12.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f4784d5f9cbf7239d00e8abcad56bf9130c0274ac20976a0e5c71d02324a42b"}, + {file = "cuda_python-12.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c02922b14f12aeae9388aef4d0f633bde5225a818a0bfc9cade61bcf7a65e69c"}, + {file = "cuda_python-12.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a27dd9cb84000e3812d797de631fefcff5470ddfc30f4110aba1eccf8c32f68"}, + {file = "cuda_python-12.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:01579e5cf7959e7759e2f23232e2e53167c1cf2461b0ba73a3c2cb03602d54af"}, + {file = "cuda_python-12.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1ef4fae871533942e35ebff86be9f7b74e5f75c602c93200e419668191899c3"}, + {file = "cuda_python-12.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5f79e9a37e7cc8b70e511bfbf3ca6f72479928ac9fdc3c398eaba7a53a8da15"}, + {file = "cuda_python-12.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9740518a875715b77c52215e74d09fdc2dc02c8080db8052e6b1bc16d96557f9"}, + {file = "cuda_python-12.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:3113e83d0b596d393a32fe4fcd2461f905ce3dc4e6bc9e6d2fd451834b2fc167"}, + {file = "cuda_python-12.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a55005abb6597b4f24cf6d20e7e0debb8d29023d6456337e0129717ecf669864"}, + {file = "cuda_python-12.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59f67d9f6d461c78a5552044b9660759b84d949b506afc7c797b18c12d49f967"}, + {file = "cuda_python-12.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:386b9c823fb41fc305dcb5074336c9e74863813fa84d9c7394f4fc068a2b1e2f"}, + {file = "cuda_python-12.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:4409591a627ae400a1ef5e1635d5a57b45488599d1ef16248cdbc960cb6b9f3f"}, +] + [[package]] name = "cupy" version = "12.3.0" @@ -1235,6 +1551,17 @@ files = [ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] +[[package]] +name = "deepmerge" +version = "1.1.1" +description = "a toolset to deeply merge python dictionaries." +optional = false +python-versions = "*" +files = [ + {file = "deepmerge-1.1.1-py3-none-any.whl", hash = "sha256:7219dad9763f15be9dcd4bcb53e00f48e4eed6f5ed8f15824223eb934bb35977"}, + {file = "deepmerge-1.1.1.tar.gz", hash = "sha256:53a489dc9449636e480a784359ae2aab3191748c920649551c8e378622f0eca4"}, +] + [[package]] name = "defusedxml" version = "0.7.1" @@ -1246,6 +1573,23 @@ files = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] +[[package]] +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + [[package]] name = "dill" version = "0.3.7" @@ -1602,6 +1946,25 @@ files = [ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] +[[package]] +name = "fs" +version = "2.4.16" +description = "Python's filesystem abstraction layer" +optional = false +python-versions = "*" +files = [ + {file = "fs-2.4.16-py2.py3-none-any.whl", hash = "sha256:660064febbccda264ae0b6bace80a8d1be9e089e0a5eb2427b7d517f9a91545c"}, + {file = "fs-2.4.16.tar.gz", hash = "sha256:ae97c7d51213f4b70b6a958292530289090de3a7e15841e108fbe144f069d313"}, +] + +[package.dependencies] +appdirs = ">=1.4.3,<1.5.0" +setuptools = "*" +six = ">=1.10,<2.0" + +[package.extras] +scandir = ["scandir (>=1.5,<2.0)"] + [[package]] name = "fsspec" version = "2023.10.0" @@ -1641,6 +2004,162 @@ smb = ["smbprotocol"] ssh = ["paramiko"] tqdm = ["tqdm"] +[[package]] +name = "gevent" +version = "24.2.1" +description = "Coroutine-based network library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "gevent-24.2.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:6f947a9abc1a129858391b3d9334c45041c08a0f23d14333d5b844b6e5c17a07"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde283313daf0b34a8d1bab30325f5cb0f4e11b5869dbe5bc61f8fe09a8f66f3"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a1df555431f5cd5cc189a6ee3544d24f8c52f2529134685f1e878c4972ab026"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14532a67f7cb29fb055a0e9b39f16b88ed22c66b96641df8c04bdc38c26b9ea5"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd23df885318391856415e20acfd51a985cba6919f0be78ed89f5db9ff3a31cb"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ca80b121bbec76d7794fcb45e65a7eca660a76cc1a104ed439cdbd7df5f0b060"}, + {file = "gevent-24.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9913c45d1be52d7a5db0c63977eebb51f68a2d5e6fd922d1d9b5e5fd758cc98"}, + {file = "gevent-24.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:918cdf8751b24986f915d743225ad6b702f83e1106e08a63b736e3a4c6ead789"}, + {file = "gevent-24.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d5325ccfadfd3dcf72ff88a92fb8fc0b56cacc7225f0f4b6dcf186c1a6eeabc"}, + {file = "gevent-24.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:03aa5879acd6b7076f6a2a307410fb1e0d288b84b03cdfd8c74db8b4bc882fc5"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8bb35ce57a63c9a6896c71a285818a3922d8ca05d150fd1fe49a7f57287b836"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7f87c2c02e03d99b95cfa6f7a776409083a9e4d468912e18c7680437b29222c"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968581d1717bbcf170758580f5f97a2925854943c45a19be4d47299507db2eb7"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7899a38d0ae7e817e99adb217f586d0a4620e315e4de577444ebeeed2c5729be"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f5e8e8d60e18d5f7fd49983f0c4696deeddaf6e608fbab33397671e2fcc6cc91"}, + {file = "gevent-24.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fbfdce91239fe306772faab57597186710d5699213f4df099d1612da7320d682"}, + {file = "gevent-24.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cdf66977a976d6a3cfb006afdf825d1482f84f7b81179db33941f2fc9673bb1d"}, + {file = "gevent-24.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:1dffb395e500613e0452b9503153f8f7ba587c67dd4a85fc7cd7aa7430cb02cc"}, + {file = "gevent-24.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:6c47ae7d1174617b3509f5d884935e788f325eb8f1a7efc95d295c68d83cce40"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7cac622e11b4253ac4536a654fe221249065d9a69feb6cdcd4d9af3503602e0"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf5b9c72b884c6f0c4ed26ef204ee1f768b9437330422492c319470954bc4cc7"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5de3c676e57177b38857f6e3cdfbe8f38d1cd754b63200c0615eaa31f514b4f"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4faf846ed132fd7ebfbbf4fde588a62d21faa0faa06e6f468b7faa6f436b661"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:368a277bd9278ddb0fde308e6a43f544222d76ed0c4166e0d9f6b036586819d9"}, + {file = "gevent-24.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f8a04cf0c5b7139bc6368b461257d4a757ea2fe89b3773e494d235b7dd51119f"}, + {file = "gevent-24.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9d8d0642c63d453179058abc4143e30718b19a85cbf58c2744c9a63f06a1d388"}, + {file = "gevent-24.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:94138682e68ec197db42ad7442d3cf9b328069c3ad8e4e5022e6b5cd3e7ffae5"}, + {file = "gevent-24.2.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:8f4b8e777d39013595a7740b4463e61b1cfe5f462f1b609b28fbc1e4c4ff01e5"}, + {file = "gevent-24.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141a2b24ad14f7b9576965c0c84927fc85f824a9bb19f6ec1e61e845d87c9cd8"}, + {file = "gevent-24.2.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:9202f22ef811053077d01f43cc02b4aaf4472792f9fd0f5081b0b05c926cca19"}, + {file = "gevent-24.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2955eea9c44c842c626feebf4459c42ce168685aa99594e049d03bedf53c2800"}, + {file = "gevent-24.2.1-cp38-cp38-win32.whl", hash = "sha256:44098038d5e2749b0784aabb27f1fcbb3f43edebedf64d0af0d26955611be8d6"}, + {file = "gevent-24.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:117e5837bc74a1673605fb53f8bfe22feb6e5afa411f524c835b2ddf768db0de"}, + {file = "gevent-24.2.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2ae3a25ecce0a5b0cd0808ab716bfca180230112bb4bc89b46ae0061d62d4afe"}, + {file = "gevent-24.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ceb59986456ce851160867ce4929edaffbd2f069ae25717150199f8e1548b8"}, + {file = "gevent-24.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2e9ac06f225b696cdedbb22f9e805e2dd87bf82e8fa5e17756f94e88a9d37cf7"}, + {file = "gevent-24.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:90cbac1ec05b305a1b90ede61ef73126afdeb5a804ae04480d6da12c56378df1"}, + {file = "gevent-24.2.1-cp39-cp39-win32.whl", hash = "sha256:782a771424fe74bc7e75c228a1da671578c2ba4ddb2ca09b8f959abdf787331e"}, + {file = "gevent-24.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:3adfb96637f44010be8abd1b5e73b5070f851b817a0b182e601202f20fa06533"}, + {file = "gevent-24.2.1-pp310-pypy310_pp73-macosx_11_0_universal2.whl", hash = "sha256:7b00f8c9065de3ad226f7979154a7b27f3b9151c8055c162332369262fc025d8"}, + {file = "gevent-24.2.1.tar.gz", hash = "sha256:432fc76f680acf7cf188c2ee0f5d3ab73b63c1f03114c7cd8a34cebbe5aa2056"}, +] + +[package.dependencies] +cffi = {version = ">=1.12.2", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""} +greenlet = {version = ">=2.0.0", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} +"zope.event" = "*" +"zope.interface" = "*" + +[package.extras] +dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"] +docs = ["furo", "repoze.sphinx.autointerface", "sphinx", "sphinxcontrib-programoutput", "zope.schema"] +monitor = ["psutil (>=5.7.0)"] +recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "psutil (>=5.7.0)"] +test = ["cffi (>=1.12.2)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idna", "objgraph", "psutil (>=5.7.0)", "requests"] + +[[package]] +name = "geventhttpclient" +version = "2.0.2" +description = "http client library for gevent" +optional = false +python-versions = "*" +files = [ + {file = "geventhttpclient-2.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd76acdc7e7ee5c54c7b279f806b28957a6b092f79c40db34adcfd972749343c"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:320a2c756d8a4f296de370476a1515485c186d9e22c3fc29e04f8f743a7d47bb"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:36d3345c6585b09738195a7c45d279a87ccbab0350f1cce3679d3f0dce8577a1"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:407d54499556c2741b93691b86da93232590b013f4a0b773327d766fe3e5c0a9"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcf325131b0e4600b793643108cd85dddd66bbf532fd2eb498be5727ef532a1e"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5841dd02e6f792a4ef15dbd04fefe620c831ba0b78105808160bb779a31af4"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2ba69422d4e8670dd99803b1313ba574a4d41f52e92b512af51068c9c577bdc1"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e3af579c6b46b9caa515a8baf6a2cadeafcd1d41ad22ca5712851f074a40b47"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6ff7fc19f9a4fdd54a2b1c106a705ea2c679fa049685ed763051d417725bdab1"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-win32.whl", hash = "sha256:eec7c52e8eb817674a193e0124486b507215d9e86d34f2638bf9a9292d16f815"}, + {file = "geventhttpclient-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:0e9f7283c01d970e643d89da81127869a8d94bb7a0081020dcad5b590bc007c4"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5ceb492d43a659b895794999dc40d0e7c23b1d41dd34040bbacd0dc264b57d5b"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:95959c201d3151fa8f57e0f1ce184476d1173996bdde41dc7d600006023dc5be"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:31c7febba298ecf44838561074a3fb7a01523adca286469b5a82dcc90e8d6a07"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:996c5f453d810b3c592160193d6832a065cca0112e92adc74e62df0e4c564df6"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f817e226c02b5a71d86de3772d6accdf250288d1e6825e426c713759830162d"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c55b7ac0ba0e1e1afbf297b7608f0b3a0bbc34fb4b0c19b7869f32a77ddc6209"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6775bc81e25c48fa58b034444aecfa508b0c3d1bc1e4ae546cc17661be1f51aa"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a0156882c73537bbbbc7c693ae44c9808119963174078692613ffa4feea21fcf"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3ebb582a291c4c5daaac2ea115b413f4be86874baa60def44d333301cee17bd7"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-win32.whl", hash = "sha256:716f1f72f50b841daf9c9511a01fc31a030866510a11863f27741e26e4f556a7"}, + {file = "geventhttpclient-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:777fcdb72077dfbf70516ecb9e9022246dd337b83a4c1e96f17f3ab9e15f4547"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:379d90d8b1fcdda94e74d693806e0b0116c0610504e7f62d5576bac738dc66a5"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00b7b2b836294c091c53789a469c5671202d79420b5191931df4e3a767d607fa"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d075355862d7726eb3436f0136fce7650c884f2d04eaae7a39fed3aad9798bc"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa7b1a27f950d209fe223a97906fe41312dc12c92372424639b8a9b96f1adf91"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fe4e06313aad353b103950780b050d3958000464cc732d621ff8ea3cacbd2bc4"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:84d7be660b6bc53dd53e3f46b3bc5d275972a8116bd183a77139bb4d9d6d9fb1"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:81f839d6becd664d0972b488422f5dc821f8ad2f2196d53aa5e4d799a3a35a66"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:e707f62271a093e6e3af6f1bbd8cc398b414b8c508fe6b15505dd8e76c4409ac"}, + {file = "geventhttpclient-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:28d7655d1d50bc75ece683a0ae8faf978821d4aeae358d77b59371548db07f1e"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58877b4440a580063571a23fbc616aed7c735c6bf9ef525c5129783df8b6966"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57c993c4b2bea551c4a71b75ae1e172e9f3e4352f704ff1b619a0f16aa762f76"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f67e789e31c7b1ce440cd1465dcdefeca29ba6108735eac0b1a593d3a55b7f"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f3326e115ec7e7ce95a5d0d47698e8f3584944c4c434a7404937d56b17136b8"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ef328ee3e7dca5055b833fdf3c181647a335abf0249947b27f5df2d95390198c"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:27049ea40e3b559eee380310272aaa9b7c19e73c1d9e51e2ec137362be2caa70"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b88a10538341e33fed1682c0dd4579c655d49db5863e7456583085a1cd6bd9d4"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:d52aba2c38420b3fc518188449f1c2a46b1a99adf1c0266c68e72ee0422cd0fa"}, + {file = "geventhttpclient-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:3648626ca58ea4b340e695d78e5d533e6b8be78d375edbd42ff188bc3447e095"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fcf96e212b55b93490f3a5fcdfe7a2ef4995a0d13b7d9df398b11e319b7a86b1"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e9f2ff09706e3a64a99886d5f2595f3bf364821bc609f2865dbc3e499e21a36"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:721c3075897bfc81e918066f16ae3d1a88c7bb14eeeb831a4f89ea636474643e"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91615fed7931acd49cfe5fc30984acd5411dc1f2643b1544c879d1a537233c6d"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7adaa29e5699dea54e0224d1d2d9d8869668d8ad79f5b89433ff9c46f9424a6c"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9be5000ba57336a90b438782117c1e43205f51f49aa9b1499a82e210e8431b11"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:12d271cc53486efb3716e99855dc5cb84f2cd3fc9f3243721747bb39ec0fff8a"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b9c0c6b75b3905000d2490dc64b4c98a8bac155efbc0ff8917ac082ae0bad261"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e956a457d8831dc81d6f046ab09ebeec680f9a1e9c07e25a1906e77b287918ee"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-win32.whl", hash = "sha256:bc46d5479673dfb293ea428c057d2e23e48ebef5c5d44587cdbaada7f87553e4"}, + {file = "geventhttpclient-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:f44153e4b3ef9b901edcd14be54145a0058bf5fa371b3e583153865fac866245"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ebf98db9435824cf0b80b5247be6c88b20bfafd6249f7ebaabb85297da37e380"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c8b7298eb1ebd015257bf4503e34f5fbbe64bd83324140f76b511046aba5a0d5"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:60b81a6d4e65db7c1a5350c9fb72ebf800b478849a7e8020d1ab93af237a3747"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad6c2fcbc3733785bd3b8c2bb43d1f605f9085b0a8b70ce354d198f37143f884"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94edb022fa50d576cf63f6dd0c437c1acd24a719872a5935991aaf08f8e88cb2"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca459cedb3827d960362e05ea3a4ae600a6d0d93de77eac2ac0f79828e5e18c"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7551b6db860b56411de1f96618e91b54f65e1a7be8d10255bd1adfb738bb6ee5"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bcb7e061c243308d9a44b02de5298001e917f1636a9f270c10da86601fcc8dfa"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:96922d170ef8933f4c20036e8d70d4fbe861f54c543e32e7459ebdbaafa65a2e"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ebb3c993903d40fd4bb1f3e55b84c62c8fc1d14433ae6d4d477dd9a325354c94"}, + {file = "geventhttpclient-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:dbccf1ba155dea3ea99ba0e67a835c05b4303f05298e85f5bb2a46700ccdf092"}, + {file = "geventhttpclient-2.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8770b8ab9e8c31d2aaf8a6fbc63fbb7239c58db10bb49cee191ca5c141c61542"}, + {file = "geventhttpclient-2.0.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daff1e977fccf98f27266d3891afdc101f1d705a48331754909e960bcae83f8a"}, + {file = "geventhttpclient-2.0.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2435e0f2a60e00d977822ec4c12e7851deb7aa49a23d32d648e72c641aae3b05"}, + {file = "geventhttpclient-2.0.2-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09acd03d0a8c1bb7d5a1cb6fcb77aaa19a907c1b4915ab58da5d283675edb0a5"}, + {file = "geventhttpclient-2.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:5d0813d97050446dab2fb243312e6c446e4ef5e9591befd597ef8f2887f8e2a8"}, + {file = "geventhttpclient-2.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:852da9bb0fc792cdca5ffc9327490094783e42415494b3569e5d532615027439"}, + {file = "geventhttpclient-2.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79304a63a9d0512f2757c5862487b332b18a9c85feebecf6ebc3526c6dd1ba2"}, + {file = "geventhttpclient-2.0.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c1c783fce45f16db448d7e34864f1e9c22fe60a7780d2c1c14edbb1fb7262e"}, + {file = "geventhttpclient-2.0.2-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77c407c2b4bea817c6f752502db4ab0e9f9465b4fb85b459d1332b5f93a3096c"}, + {file = "geventhttpclient-2.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f0d70a83ef4ab93102c6601477c13e9cdbc87205e5237fbf5797e30dc9d3ee8"}, + {file = "geventhttpclient-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b03f298ec19b8a4717cce8112fe30322c9e5bfada84dde61a1a44d1eeffc1d3c"}, + {file = "geventhttpclient-2.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2dc94b9a23eb6744a8c729aec2b1cdc4e39acf1d8f16ea85a62810aa6b2cae5"}, + {file = "geventhttpclient-2.0.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:805554594bb29231fd990cc2cbbe493d223d76a6085fec891dd76bb4e0928933"}, + {file = "geventhttpclient-2.0.2-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb23527d98f626ca7a4e8961ed9bdc6aed3388de306614c69a133b34262460f4"}, + {file = "geventhttpclient-2.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a594ab319872a38fb7f16be4cfb107d3c63c43a081f2abe241834e9877f27401"}, + {file = "geventhttpclient-2.0.2.tar.gz", hash = "sha256:8135a85200b170def7293d01dd1557931fcd1bec1ac78c52ad7cedd22368b9ba"}, +] + +[package.dependencies] +brotli = "*" +certifi = "*" +gevent = ">=0.13" +six = "*" + [[package]] name = "greenlet" version = "3.0.2" @@ -1712,6 +2231,128 @@ files = [ docs = ["Sphinx"] test = ["objgraph", "psutil"] +[[package]] +name = "grpcio" +version = "1.60.1" +description = "HTTP/2-based RPC framework" +optional = false +python-versions = ">=3.7" +files = [ + {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, + {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, + {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, + {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, + {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, + {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, + {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, + {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, + {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, + {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, + {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, + {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, + {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, + {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, + {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, + {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, + {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, + {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, + {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, + {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, + {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, + {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, + {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, + {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, +] + +[package.extras] +protobuf = ["grpcio-tools (>=1.60.1)"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.3" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, + {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.24.0)"] + +[[package]] +name = "httpx" +version = "0.26.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + [[package]] name = "huggingface-hub" version = "0.19.4" @@ -1855,13 +2496,13 @@ tests = ["black (>=23.3.0)", "flake8 (>=3.8.2)", "keras (>=2.4.3)", "mypy (>=1.3 [[package]] name = "importlib-metadata" -version = "7.0.0" +version = "6.11.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.0-py3-none-any.whl", hash = "sha256:d97503976bb81f40a193d41ee6570868479c69d5068651eb039c40d850c59d67"}, - {file = "importlib_metadata-7.0.0.tar.gz", hash = "sha256:7fc841f8b8332803464e5dc1c63a2e59121f46ca186c0e2e182e80bf8c1319f7"}, + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, ] [package.dependencies] @@ -1890,6 +2531,17 @@ zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] +[[package]] +name = "inflection" +version = "0.5.1" +description = "A port of Ruby on Rails inflector to Python" +optional = false +python-versions = ">=3.5" +files = [ + {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, + {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, +] + [[package]] name = "iniconfig" version = "2.0.0" @@ -4063,6 +4715,17 @@ files = [ setuptools = "*" wheel = "*" +[[package]] +name = "nvidia-ml-py" +version = "11.525.150" +description = "Python Bindings for the NVIDIA Management Library" +optional = false +python-versions = "*" +files = [ + {file = "nvidia-ml-py-11.525.150.tar.gz", hash = "sha256:50af55b99ea167781102345a7de29bac94a57c8f38de6757ef9f945dd137c90a"}, + {file = "nvidia_ml_py-11.525.150-py3-none-any.whl", hash = "sha256:a7c410f4a63a78119d8e9d969dbd22d3b86d8d39aa9316be56c2e6ba9271a5c3"}, +] + [[package]] name = "omegaconf" version = "2.3.0" @@ -4078,6 +4741,64 @@ files = [ antlr4-python3-runtime = "==4.9.*" PyYAML = ">=5.1.0" +[[package]] +name = "onnx" +version = "1.15.0" +description = "Open Neural Network Exchange" +optional = false +python-versions = ">=3.8" +files = [ + {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:51cacb6aafba308aaf462252ced562111f6991cdc7bc57a6c554c3519453a8ff"}, + {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:0aee26b6f7f7da7e840de75ad9195a77a147d0662c94eaa6483be13ba468ffc1"}, + {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baf6ef6c93b3b843edb97a8d5b3d229a1301984f3f8dee859c29634d2083e6f9"}, + {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ed899fe6000edc05bb2828863d3841cfddd5a7cf04c1a771f112e94de75d9f"}, + {file = "onnx-1.15.0-cp310-cp310-win32.whl", hash = "sha256:f1ad3d77fc2f4b4296f0ac2c8cadd8c1dcf765fc586b737462d3a0fe8f7c696a"}, + {file = "onnx-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:ca4ebc4f47109bfb12c8c9e83dd99ec5c9f07d2e5f05976356c6ccdce3552010"}, + {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:233ffdb5ca8cc2d960b10965a763910c0830b64b450376da59207f454701f343"}, + {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:51fa79c9ea9af033638ec51f9177b8e76c55fad65bb83ea96ee88fafade18ee7"}, + {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f277d4861729f5253a51fa41ce91bfec1c4574ee41b5637056b43500917295ce"}, + {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8a7c94d2ebead8f739fdb70d1ce5a71726f4e17b3e5b8ad64455ea1b2801a85"}, + {file = "onnx-1.15.0-cp311-cp311-win32.whl", hash = "sha256:17dcfb86a8c6bdc3971443c29b023dd9c90ff1d15d8baecee0747a6b7f74e650"}, + {file = "onnx-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:60a3e28747e305cd2e766e6a53a0a6d952cf9e72005ec6023ce5e07666676a4e"}, + {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6b5c798d9e0907eaf319e3d3e7c89a2ed9a854bcb83da5fefb6d4c12d5e90721"}, + {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:a4f774ff50092fe19bd8f46b2c9b27b1d30fbd700c22abde48a478142d464322"}, + {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2b0e7f3938f2d994c34616bfb8b4b1cebbc4a0398483344fe5e9f2fe95175e6"}, + {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49cebebd0020a4b12c1dd0909d426631212ef28606d7e4d49463d36abe7639ad"}, + {file = "onnx-1.15.0-cp38-cp38-win32.whl", hash = "sha256:1fdf8a3ff75abc2b32c83bf27fb7c18d6b976c9c537263fadd82b9560fe186fa"}, + {file = "onnx-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:763e55c26e8de3a2dce008d55ae81b27fa8fb4acbb01a29b9f3c01f200c4d676"}, + {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b2d5e802837629fc9c86f19448d19dd04d206578328bce202aeb3d4bedab43c4"}, + {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:9a9cfbb5e5d5d88f89d0dfc9df5fb858899db874e1d5ed21e76c481f3cafc90d"}, + {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f472bbe5cb670a0a4a4db08f41fde69b187a009d0cb628f964840d3f83524e9"}, + {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf2de9bef64792e5b8080c678023ac7d2b9e05d79a3e17e92cf6a4a624831d2"}, + {file = "onnx-1.15.0-cp39-cp39-win32.whl", hash = "sha256:ef4d9eb44b111e69e4534f3233fc2c13d1e26920d24ae4359d513bd54694bc6d"}, + {file = "onnx-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d7a3e2d79d371e272e39ae3f7547e0b116d0c7f774a4004e97febe6c93507f"}, + {file = "onnx-1.15.0.tar.gz", hash = "sha256:b18461a7d38f286618ca2a6e78062a2a9c634ce498e631e708a8041b00094825"}, +] + +[package.dependencies] +numpy = "*" +protobuf = ">=3.20.2" + +[package.extras] +reference = ["Pillow", "google-re2"] + +[[package]] +name = "onnxconverter-common" +version = "1.14.0" +description = "ONNX Converter and Optimization Tools" +optional = false +python-versions = ">=3.8" +files = [ + {file = "onnxconverter-common-1.14.0.tar.gz", hash = "sha256:6e431429bd15325c5b2c3eab61bed0d5634c23ed58f8823961be448d629d014a"}, + {file = "onnxconverter_common-1.14.0-py2.py3-none-any.whl", hash = "sha256:9723e4a9b47f283e298605dce9f357d5ebd5e5e70172fca26e282a1b490916c4"}, +] + +[package.dependencies] +numpy = "*" +onnx = "*" +packaging = "*" +protobuf = "3.20.2" + [[package]] name = "opencv-python" version = "4.8.1.78" @@ -4104,6 +4825,119 @@ numpy = [ {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, ] +[[package]] +name = "opentelemetry-api" +version = "1.20.0" +description = "OpenTelemetry Python API" +optional = false +python-versions = ">=3.7" +files = [ + {file = "opentelemetry_api-1.20.0-py3-none-any.whl", hash = "sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5"}, + {file = "opentelemetry_api-1.20.0.tar.gz", hash = "sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983"}, +] + +[package.dependencies] +deprecated = ">=1.2.6" +importlib-metadata = ">=6.0,<7.0" + +[[package]] +name = "opentelemetry-instrumentation" +version = "0.41b0" +description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "opentelemetry_instrumentation-0.41b0-py3-none-any.whl", hash = "sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386"}, + {file = "opentelemetry_instrumentation-0.41b0.tar.gz", hash = "sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.4,<2.0" +setuptools = ">=16.0" +wrapt = ">=1.0.0,<2.0.0" + +[[package]] +name = "opentelemetry-instrumentation-aiohttp-client" +version = "0.41b0" +description = "OpenTelemetry aiohttp client instrumentation" +optional = false +python-versions = ">=3.7" +files = [ + {file = "opentelemetry_instrumentation_aiohttp_client-0.41b0-py3-none-any.whl", hash = "sha256:a1d0d18dee5e57cf9187d1a561f9d4ce56d16433231208405458358ff6399a6f"}, + {file = "opentelemetry_instrumentation_aiohttp_client-0.41b0.tar.gz", hash = "sha256:56fd35e90c2534b2647e7cdd85f34383eddaa300ee51e989c3763dcdb205ca91"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.12,<2.0" +opentelemetry-instrumentation = "0.41b0" +opentelemetry-semantic-conventions = "0.41b0" +opentelemetry-util-http = "0.41b0" +wrapt = ">=1.0.0,<2.0.0" + +[package.extras] +instruments = ["aiohttp (>=3.0,<4.0)"] +test = ["http-server-mock", "opentelemetry-instrumentation-aiohttp-client[instruments]"] + +[[package]] +name = "opentelemetry-instrumentation-asgi" +version = "0.41b0" +description = "ASGI instrumentation for OpenTelemetry" +optional = false +python-versions = ">=3.7" +files = [ + {file = "opentelemetry_instrumentation_asgi-0.41b0-py3-none-any.whl", hash = "sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422"}, + {file = "opentelemetry_instrumentation_asgi-0.41b0.tar.gz", hash = "sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72"}, +] + +[package.dependencies] +asgiref = ">=3.0,<4.0" +opentelemetry-api = ">=1.12,<2.0" +opentelemetry-instrumentation = "0.41b0" +opentelemetry-semantic-conventions = "0.41b0" +opentelemetry-util-http = "0.41b0" + +[package.extras] +instruments = ["asgiref (>=3.0,<4.0)"] +test = ["opentelemetry-instrumentation-asgi[instruments]", "opentelemetry-test-utils (==0.41b0)"] + +[[package]] +name = "opentelemetry-sdk" +version = "1.20.0" +description = "OpenTelemetry Python SDK" +optional = false +python-versions = ">=3.7" +files = [ + {file = "opentelemetry_sdk-1.20.0-py3-none-any.whl", hash = "sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804"}, + {file = "opentelemetry_sdk-1.20.0.tar.gz", hash = "sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8"}, +] + +[package.dependencies] +opentelemetry-api = "1.20.0" +opentelemetry-semantic-conventions = "0.41b0" +typing-extensions = ">=3.7.4" + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.41b0" +description = "OpenTelemetry Semantic Conventions" +optional = false +python-versions = ">=3.7" +files = [ + {file = "opentelemetry_semantic_conventions-0.41b0-py3-none-any.whl", hash = "sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2"}, + {file = "opentelemetry_semantic_conventions-0.41b0.tar.gz", hash = "sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7"}, +] + +[[package]] +name = "opentelemetry-util-http" +version = "0.41b0" +description = "Web util for OpenTelemetry" +optional = false +python-versions = ">=3.7" +files = [ + {file = "opentelemetry_util_http-0.41b0-py3-none-any.whl", hash = "sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5"}, + {file = "opentelemetry_util_http-0.41b0.tar.gz", hash = "sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3"}, +] + [[package]] name = "overrides" version = "7.4.0" @@ -4337,6 +5171,60 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa typing = ["typing-extensions"] xmp = ["defusedxml"] +[[package]] +name = "pip" +version = "24.0" +description = "The PyPA recommended tool for installing Python packages." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pip-24.0-py3-none-any.whl", hash = "sha256:ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc"}, + {file = "pip-24.0.tar.gz", hash = "sha256:ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2"}, +] + +[[package]] +name = "pip-requirements-parser" +version = "32.0.1" +description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3"}, + {file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526"}, +] + +[package.dependencies] +packaging = "*" +pyparsing = "*" + +[package.extras] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] +testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] + +[[package]] +name = "pip-tools" +version = "7.4.0" +description = "pip-tools keeps your pinned dependencies fresh." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pip-tools-7.4.0.tar.gz", hash = "sha256:a92a6ddfa86ff389fe6ace381d463bc436e2c705bd71d52117c25af5ce867bb7"}, + {file = "pip_tools-7.4.0-py3-none-any.whl", hash = "sha256:b67432fd0759ed834c5367f9e0ce8c95441acecfec9c8e24b41aca166757adf0"}, +] + +[package.dependencies] +build = ">=1.0.0" +click = ">=8" +pip = ">=22.2" +pyproject_hooks = "*" +setuptools = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} +wheel = "*" + +[package.extras] +coverage = ["covdefaults", "pytest-cov"] +testing = ["flit_core (>=2,<4)", "poetry_core (>=1.0.0)", "pytest (>=7.2.0)", "pytest-rerunfailures", "pytest-xdist", "tomli-w"] + [[package]] name = "platformdirs" version = "4.1.0" @@ -4485,6 +5373,37 @@ files = [ [package.dependencies] wcwidth = "*" +[[package]] +name = "protobuf" +version = "3.20.2" +description = "Protocol Buffers" +optional = false +python-versions = ">=3.7" +files = [ + {file = "protobuf-3.20.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09e25909c4297d71d97612f04f41cea8fa8510096864f2835ad2f3b3df5a5559"}, + {file = "protobuf-3.20.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e8fbc522303e09036c752a0afcc5c0603e917222d8bedc02813fd73b4b4ed804"}, + {file = "protobuf-3.20.2-cp310-cp310-win32.whl", hash = "sha256:84a1544252a933ef07bb0b5ef13afe7c36232a774affa673fc3636f7cee1db6c"}, + {file = "protobuf-3.20.2-cp310-cp310-win_amd64.whl", hash = "sha256:2c0b040d0b5d5d207936ca2d02f00f765906622c07d3fa19c23a16a8ca71873f"}, + {file = "protobuf-3.20.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3cb608e5a0eb61b8e00fe641d9f0282cd0eedb603be372f91f163cbfbca0ded0"}, + {file = "protobuf-3.20.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:84fe5953b18a383fd4495d375fe16e1e55e0a3afe7b4f7b4d01a3a0649fcda9d"}, + {file = "protobuf-3.20.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:384164994727f274cc34b8abd41a9e7e0562801361ee77437099ff6dfedd024b"}, + {file = "protobuf-3.20.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e39cf61bb8582bda88cdfebc0db163b774e7e03364bbf9ce1ead13863e81e359"}, + {file = "protobuf-3.20.2-cp37-cp37m-win32.whl", hash = "sha256:18e34a10ae10d458b027d7638a599c964b030c1739ebd035a1dfc0e22baa3bfe"}, + {file = "protobuf-3.20.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8228e56a865c27163d5d1d1771d94b98194aa6917bcfb6ce139cbfa8e3c27334"}, + {file = "protobuf-3.20.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:03d76b7bd42ac4a6e109742a4edf81ffe26ffd87c5993126d894fe48a120396a"}, + {file = "protobuf-3.20.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:f52dabc96ca99ebd2169dadbe018824ebda08a795c7684a0b7d203a290f3adb0"}, + {file = "protobuf-3.20.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f34464ab1207114e73bba0794d1257c150a2b89b7a9faf504e00af7c9fd58978"}, + {file = "protobuf-3.20.2-cp38-cp38-win32.whl", hash = "sha256:5d9402bf27d11e37801d1743eada54372f986a372ec9679673bfcc5c60441151"}, + {file = "protobuf-3.20.2-cp38-cp38-win_amd64.whl", hash = "sha256:9c673c8bfdf52f903081816b9e0e612186684f4eb4c17eeb729133022d6032e3"}, + {file = "protobuf-3.20.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:291fb4307094bf5ccc29f424b42268640e00d5240bf0d9b86bf3079f7576474d"}, + {file = "protobuf-3.20.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b4fdb29c5a7406e3f7ef176b2a7079baa68b5b854f364c21abe327bbeec01cdb"}, + {file = "protobuf-3.20.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7a5037af4e76c975b88c3becdf53922b5ffa3f2cddf657574a4920a3b33b80f3"}, + {file = "protobuf-3.20.2-cp39-cp39-win32.whl", hash = "sha256:a9e5ae5a8e8985c67e8944c23035a0dff2c26b0f5070b2f55b217a1c33bbe8b1"}, + {file = "protobuf-3.20.2-cp39-cp39-win_amd64.whl", hash = "sha256:c184485e0dfba4dfd451c3bd348c2e685d6523543a0f91b9fd4ae90eb09e8422"}, + {file = "protobuf-3.20.2-py2.py3-none-any.whl", hash = "sha256:c9cdf251c582c16fd6a9f5e95836c90828d51b0069ad22f463761d27c6c19019"}, + {file = "protobuf-3.20.2.tar.gz", hash = "sha256:712dca319eee507a1e7df3591e639a2b112a2f4a62d40fe7832a16fd19151750"}, +] + [[package]] name = "psutil" version = "5.9.7" @@ -4805,6 +5724,20 @@ files = [ [package.extras] diagrams = ["jinja2", "railroad-diagrams"] +[[package]] +name = "pyproject-hooks" +version = "1.0.0" +description = "Wrappers to call pyproject.toml-based build backend hooks." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyproject_hooks-1.0.0-py3-none-any.whl", hash = "sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8"}, + {file = "pyproject_hooks-1.0.0.tar.gz", hash = "sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5"}, +] + +[package.dependencies] +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} + [[package]] name = "pytest" version = "7.4.3" @@ -4870,6 +5803,90 @@ files = [ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, ] +[[package]] +name = "python-multipart" +version = "0.0.9" +description = "A streaming multipart parser for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, + {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, +] + +[package.extras] +dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"] + +[[package]] +name = "python-rapidjson" +version = "1.14" +description = "Python wrapper around rapidjson" +optional = false +python-versions = ">=3.6" +files = [ + {file = "python-rapidjson-1.14.tar.gz", hash = "sha256:26806f0a658c34b48d2951d8d3f846ca9deb93a34e664ef436db632a188b6779"}, + {file = "python_rapidjson-1.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d93de3501eab05e546135c42154e99f3b580e1c74ac26b5a7e92877756cc4b21"}, + {file = "python_rapidjson-1.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:40ea40077c88645c9f149c77285568dc3e0c9e91bc6a90f283109e5c89011c73"}, + {file = "python_rapidjson-1.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a5231bf3a539125dcd19951f1db4568a2423cb21978f8bec95eda60fcc45f23"}, + {file = "python_rapidjson-1.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d34b28f47a96aae6f697eb09febf9cac81a9e7cef2f55b02bcee2b1650d994"}, + {file = "python_rapidjson-1.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0ce716f9d8c2eb5ccd2807dbfd969e84f7ca86b09b9b56be27c1dee57dfaa9c"}, + {file = "python_rapidjson-1.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4fba1cba0ad8cbb2292bba74d8440348f4bb9f260dd7654af485bfd38f2cecce"}, + {file = "python_rapidjson-1.14-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b4511becaccd7fce656173e30fae8eb93a2f456461318aba9c6653f426e4a574"}, + {file = "python_rapidjson-1.14-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8dfea0dbe9e307795befbce08d59c93b7f41ce7aa70c58aeb1496054ea18fd62"}, + {file = "python_rapidjson-1.14-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b2aef38881acdd5b7bc191e95ae6c5bc18d97339fb42e38163a2ebd4dfd5e13d"}, + {file = "python_rapidjson-1.14-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:449180f5f3cdee5dd7190ac06b147e3f4ca876abdf001a586ddde2c8c9ce6184"}, + {file = "python_rapidjson-1.14-cp310-cp310-win32.whl", hash = "sha256:79541cab64fe531b5ad8050004393fcd1ed4d73632abac57293e7230a7a6c349"}, + {file = "python_rapidjson-1.14-cp310-cp310-win_amd64.whl", hash = "sha256:c9b7857ebc3717035bf12e05ab05d3ba18255408776ab55a9b0658337a803d16"}, + {file = "python_rapidjson-1.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dacc5074f4a65588fbbcc309b0e3112c1b204dda647d5340e68c91a9bc15718"}, + {file = "python_rapidjson-1.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f6e7b870857d9879076a5de11eb28eec978fd6aa2578af6178c56532c8bd4dd"}, + {file = "python_rapidjson-1.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7ce2132531643fa9c2935146e28875c60a79fa0de1afc86951a2b09ef04b40a"}, + {file = "python_rapidjson-1.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ef02eb912f9972772e1f8d3c87e90276c562d6641b87afe06728457fe63b3e9"}, + {file = "python_rapidjson-1.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d2dfbbaa3be9f4cff96b89a2f2dc25589d50db00ff44799fc575775628342e8"}, + {file = "python_rapidjson-1.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f923a0e6f204145589dd451f99724ebbe10cc74750eecc4fef38f330d954c11"}, + {file = "python_rapidjson-1.14-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e80b3f618b34f9772e8691ed3fcb64eae703182267e217c18cbac5c8417ee6cd"}, + {file = "python_rapidjson-1.14-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2afd65129f71e850286c52386d4a0d9020aca536f7dfb5e382a02e68922ec887"}, + {file = "python_rapidjson-1.14-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:030c921779b225c9b4765dcfafecc7b18d2d9ded15529718bf8320d3f23ef428"}, + {file = "python_rapidjson-1.14-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d9c22ec1d1d7d1a4fb7f80815f2d75c6f6880f6c98a243c5bd04a77c2cef2a1b"}, + {file = "python_rapidjson-1.14-cp311-cp311-win32.whl", hash = "sha256:a03b4a7e5d2ef45a5e10eb6f75dbe504a3fc946e225cc1684fe3b6977210e234"}, + {file = "python_rapidjson-1.14-cp311-cp311-win_amd64.whl", hash = "sha256:a26c97b44586d718239f709151e98a1f8de96f0b932f508ad4b81673eda87c8e"}, + {file = "python_rapidjson-1.14-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bdf4841848597259a1d8ca6ebbd4b2843a116f84bc722d1675800105902c6e74"}, + {file = "python_rapidjson-1.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c1f11c2283f97817fe6dbf677569f297e9295c7856683e1e11fbac27b745fee"}, + {file = "python_rapidjson-1.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b25c0db4a5cd2d3ac46643a70000d9499293b178f4677021ca87a8c87d4e52a"}, + {file = "python_rapidjson-1.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36d7269b23b79cf35315026fcc257ac6d2ac10a1d67f86e9d69484bef79b96fa"}, + {file = "python_rapidjson-1.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c05049fbc970be416522e4f68a3a55252a375065ddef78b2a821c64e9bfe8c3e"}, + {file = "python_rapidjson-1.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:012bdf6380ef6f807fd39b36c315548ad1de2f75346487d33a3326e4b2d7427b"}, + {file = "python_rapidjson-1.14-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:43b53d5136de86e58591f645352544f4ca7471f675f51dd971bb04df847e9b39"}, + {file = "python_rapidjson-1.14-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:150c464f5a7273cdf3caf21050724dc3746a5e6632c3a38206a4e49827e4d0ab"}, + {file = "python_rapidjson-1.14-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:0721d58740a00504711773fbb4380d7b4abf575a05f6dd348e259e3d4eab9c1e"}, + {file = "python_rapidjson-1.14-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5b3d72fd0997505c9ee16a1f92b589de029551bc0fbaa30f1cac63fdba6f7ad4"}, + {file = "python_rapidjson-1.14-cp312-cp312-win32.whl", hash = "sha256:2c36878511b9be19194a8c655113eafbab2f08c4e60856a84acbf81088520bb9"}, + {file = "python_rapidjson-1.14-cp312-cp312-win_amd64.whl", hash = "sha256:3d668824d110277547c186e8cea7de435ea592af33598579e5a9ff6f5c642847"}, + {file = "python_rapidjson-1.14-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9a92ee79be231f94bfa7e62095dfffcb9ea032fc79526a8f072c9ab8d5ab8c14"}, + {file = "python_rapidjson-1.14-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfe254cf72a58dee14b00eb423b6450b7290d509acabbde701cbde793bf8e177"}, + {file = "python_rapidjson-1.14-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2abcce7f4bb0cf4ecd3df7755f03798a7250cb5f584f263d4e045478f7b4b8a4"}, + {file = "python_rapidjson-1.14-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2f83e62cebafe42efd6e219479be35dff88f6ea0a98b8651129cc721c2736124"}, + {file = "python_rapidjson-1.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef26c5af200148365fc41fd5594ac393065952baec26a9c37900925ea3575588"}, + {file = "python_rapidjson-1.14-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79bef625d8debbd5170f01554e7986087625066bc24b37ca1ed1deea48f371bc"}, + {file = "python_rapidjson-1.14-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:df8729273cd1bc8e8514b8c9b28cb2861d1f055a16103e962f99f376fb9447cb"}, + {file = "python_rapidjson-1.14-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a8d08eee8fe2fdd633238e4513ea37ff1dd45b34baa5d4204226043d885e7f99"}, + {file = "python_rapidjson-1.14-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6dcac7681c17ef91beb346d1dd6f517dc7b1f20359194ebe4691fc0a496712d9"}, + {file = "python_rapidjson-1.14-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:43a4746f4e7d94b8516add40bffd28feb394578505ffb1df30837482222b229f"}, + {file = "python_rapidjson-1.14-cp38-cp38-win32.whl", hash = "sha256:7e0008dbca662bd4ed043f570ce0f80e6f89d0ea789cd12cbb3ffc2101e7889e"}, + {file = "python_rapidjson-1.14-cp38-cp38-win_amd64.whl", hash = "sha256:bce51e5570881215dd5d8ffe7150578cbe0882cf9eebc8d2bbd6c7f20bfb17dc"}, + {file = "python_rapidjson-1.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2f798972be1696b8070d4f6e0fb69d0785f6666a278bbba5073ce1af901cbac5"}, + {file = "python_rapidjson-1.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ad80879a0f2a65ab7ddac64f08b5c686dcbdb31168beca70a58fc07ddbe5bad2"}, + {file = "python_rapidjson-1.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a820209ad42b62c16c96aca5653edc31bf3d93fdb8d822ea2f15b5aedd80974"}, + {file = "python_rapidjson-1.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77a9a31dd71737f3ab6508d4182be54241949b959d92260ffd29e5199973f1b4"}, + {file = "python_rapidjson-1.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c993c0d60a50ae8233e184ce48840626ea017c3154aa72995910587860c1bcb"}, + {file = "python_rapidjson-1.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d70de908184593261ea20084419d5e2419134e3b37bb7df2bfd22996ad2d51ad"}, + {file = "python_rapidjson-1.14-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:afd9d5dea1e9237af093b7477c097f1073b402d6d3797378068f6c560c90f0c6"}, + {file = "python_rapidjson-1.14-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:968f747bf4374c14e4f3c7e6a60fe2b15c7e738a705183c71707d6390964e646"}, + {file = "python_rapidjson-1.14-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:37055e7c0ca0823965189c544193db9f0402aed2632779797a67660e4bf7e53c"}, + {file = "python_rapidjson-1.14-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a40ed1dea1259480efbabdafd4741b790dbef79cbb5e9344b22757e224148088"}, + {file = "python_rapidjson-1.14-cp39-cp39-win32.whl", hash = "sha256:bf432624e462a9942e384d3c954d3085530765cedb72c877fd110f6eca5528e5"}, + {file = "python_rapidjson-1.14-cp39-cp39-win_amd64.whl", hash = "sha256:f827fc652ab51e3777b375d17867132351eb9b4e53578a139c24fb5c559fdb45"}, +] + [[package]] name = "python-slugify" version = "8.0.1" @@ -5403,6 +6420,24 @@ files = [ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, ] +[[package]] +name = "rich" +version = "13.7.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + [[package]] name = "rpds-py" version = "0.15.2" @@ -5656,6 +6691,20 @@ tensorflow = ["safetensors[numpy]", "tensorflow (>=2.11.0)"] testing = ["h5py (>=3.7.0)", "huggingface_hub (>=0.12.1)", "hypothesis (>=6.70.2)", "pytest (>=7.2.0)", "pytest-benchmark (>=4.0.0)", "safetensors[numpy]", "setuptools_rust (>=1.5.2)"] torch = ["safetensors[numpy]", "torch (>=1.10)"] +[[package]] +name = "schema" +version = "0.7.5" +description = "Simple data validation library" +optional = false +python-versions = "*" +files = [ + {file = "schema-0.7.5-py2.py3-none-any.whl", hash = "sha256:f3ffdeeada09ec34bf40d7d79996d9f7175db93b7a5065de0faa7f41083c1e6c"}, + {file = "schema-0.7.5.tar.gz", hash = "sha256:f06717112c61895cabc4707752b88716e8420a8819d71404501e114f91043197"}, +] + +[package.dependencies] +contextlib2 = ">=0.5.5" + [[package]] name = "scikit-image" version = "0.21.0" @@ -5924,6 +6973,20 @@ plots = ["ipython", "matplotlib"] test = ["catboost", "lightgbm", "opencv-python", "protobuf (==3.20.3)", "pyod", "pyspark", "pytest", "pytest-cov", "pytest-mpl", "sentencepiece", "tensorflow", "torch", "torchvision", "transformers", "xgboost"] test-core = ["pytest", "pytest-cov", "pytest-mpl"] +[[package]] +name = "simple-di" +version = "0.1.5" +description = "simple dependency injection library" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "simple_di-0.1.5-py3-none-any.whl", hash = "sha256:e3fb6242f18f389a3c2d571dd51ade47c74cdbc4550590894664ad59bfb2a345"}, + {file = "simple_di-0.1.5.tar.gz", hash = "sha256:192b999dee4cd4fb11a5d861165caad02d8f0617c0f806fc5b09f905f1a03ca0"}, +] + +[package.extras] +test = ["mypy", "pytest"] + [[package]] name = "six" version = "1.16.0" @@ -5935,6 +6998,22 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "skl2onnx" +version = "1.16.0" +description = "Convert scikit-learn models to ONNX" +optional = false +python-versions = "*" +files = [ + {file = "skl2onnx-1.16.0-py2.py3-none-any.whl", hash = "sha256:7de548580c625bfa5893fe79c9dd3213c3720b12e1ff8e3fd28967da0698242d"}, + {file = "skl2onnx-1.16.0.tar.gz", hash = "sha256:3370b3d4065ce2dc5933878c3273f4aea41f945cc6514543b13ad2d57f369ce5"}, +] + +[package.dependencies] +onnx = ">=1.2.1" +onnxconverter-common = ">=1.7.0" +scikit-learn = ">=0.19" + [[package]] name = "slicer" version = "0.0.7" @@ -6510,6 +7589,24 @@ pure-eval = "*" [package.extras] tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] +[[package]] +name = "starlette" +version = "0.37.1" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.37.1-py3-none-any.whl", hash = "sha256:92a816002d4e8c552477b089520e3085bb632e854eb32cef99acb6f6f7830b69"}, + {file = "starlette-0.37.1.tar.gz", hash = "sha256:345cfd562236b557e76a045715ac66fdc355a1e7e617b087834a76a87dcc6533"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + [[package]] name = "tabulate" version = "0.9.0" @@ -7109,6 +8206,35 @@ torchhub = ["filelock", "huggingface-hub (>=0.19.3,<1.0)", "importlib-metadata", video = ["av (==9.2.0)", "decord (==0.6.0)"] vision = ["Pillow (>=10.0.1,<=15.0)"] +[[package]] +name = "tritonclient" +version = "2.42.0" +description = "Python client library and utilities for communicating with Triton Inference Server" +optional = false +python-versions = "*" +files = [ + {file = "tritonclient-2.42.0-py3-none-any.whl", hash = "sha256:995ca38423de6fa495d92de4b6b739b2716aae2fcb30dddf31628ff771109ebd"}, + {file = "tritonclient-2.42.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:9408c96b8eb35bb5daf081cb462ff35412174a6c4216c52d8c61195c9d551772"}, + {file = "tritonclient-2.42.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:f59f8c2a098ec1574bcf853888a008d896e029d295e4d32ffcfa8726783fd42f"}, +] + +[package.dependencies] +aiohttp = {version = ">=3.8.1,<4.0.0", optional = true, markers = "extra == \"all\""} +cuda-python = {version = "*", optional = true, markers = "extra == \"all\""} +geventhttpclient = {version = ">=1.4.4,<=2.0.2", optional = true, markers = "extra == \"all\""} +grpcio = {version = ">=1.41.0", optional = true, markers = "extra == \"all\""} +numpy = ">=1.19.1" +packaging = {version = ">=14.1", optional = true, markers = "extra == \"all\""} +protobuf = {version = ">=3.5.0,<5", optional = true, markers = "extra == \"all\""} +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)"] +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]] name = "typer" version = "0.9.0" @@ -7204,6 +8330,25 @@ brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "uvicorn" +version = "0.27.1" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.27.1-py3-none-any.whl", hash = "sha256:5c89da2f3895767472a35556e539fd59f7edbe9b1e9c0e1c99eebeadc61838e4"}, + {file = "uvicorn-0.27.1.tar.gz", hash = "sha256:3d9a267296243532db80c83a959a3400502165ade2c1338dea4e67915fd4745a"}, +] + +[package.dependencies] +click = ">=7.0" +h11 = ">=0.8" +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + [[package]] name = "virtualenv" version = "20.25.0" @@ -7238,6 +8383,93 @@ files = [ [package.dependencies] colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\" and python_version >= \"3.7\""} +[[package]] +name = "watchfiles" +version = "0.21.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"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + [[package]] name = "wcwidth" version = "0.2.12" @@ -7338,6 +8570,85 @@ files = [ {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"}, ] +[[package]] +name = "wrapt" +version = "1.16.0" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] + [[package]] name = "xgboost" version = "1.7.6" @@ -7713,6 +9024,77 @@ files = [ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +[[package]] +name = "zope-event" +version = "5.0" +description = "Very basic event publishing system" +optional = false +python-versions = ">=3.7" +files = [ + {file = "zope.event-5.0-py3-none-any.whl", hash = "sha256:2832e95014f4db26c47a13fdaef84cef2f4df37e66b59d8f1f4a8f319a632c26"}, + {file = "zope.event-5.0.tar.gz", hash = "sha256:bac440d8d9891b4068e2b5a2c5e2c9765a9df762944bda6955f96bb9b91e67cd"}, +] + +[package.dependencies] +setuptools = "*" + +[package.extras] +docs = ["Sphinx"] +test = ["zope.testrunner"] + +[[package]] +name = "zope-interface" +version = "6.2" +description = "Interfaces for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "zope.interface-6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:506f5410b36e5ba494136d9fa04c548eaf1a0d9c442b0b0e7a0944db7620e0ab"}, + {file = "zope.interface-6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b386b8b9d2b6a5e1e4eadd4e62335571244cb9193b7328c2b6e38b64cfda4f0e"}, + {file = "zope.interface-6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb0b3f2cb606981c7432f690db23506b1db5899620ad274e29dbbbdd740e797"}, + {file = "zope.interface-6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7916380abaef4bb4891740879b1afcba2045aee51799dfd6d6ca9bdc71f35f"}, + {file = "zope.interface-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b240883fb43160574f8f738e6d09ddbdbf8fa3e8cea051603d9edfd947d9328"}, + {file = "zope.interface-6.2-cp310-cp310-win_amd64.whl", hash = "sha256:8af82afc5998e1f307d5e72712526dba07403c73a9e287d906a8aa2b1f2e33dd"}, + {file = "zope.interface-6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d45d2ba8195850e3e829f1f0016066a122bfa362cc9dc212527fc3d51369037"}, + {file = "zope.interface-6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76e0531d86523be7a46e15d379b0e975a9db84316617c0efe4af8338dc45b80c"}, + {file = "zope.interface-6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59f7374769b326a217d0b2366f1c176a45a4ff21e8f7cebb3b4a3537077eff85"}, + {file = "zope.interface-6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25e0af9663eeac6b61b231b43c52293c2cb7f0c232d914bdcbfd3e3bd5c182ad"}, + {file = "zope.interface-6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14e02a6fc1772b458ebb6be1c276528b362041217b9ca37e52ecea2cbdce9fac"}, + {file = "zope.interface-6.2-cp311-cp311-win_amd64.whl", hash = "sha256:02adbab560683c4eca3789cc0ac487dcc5f5a81cc48695ec247f00803cafe2fe"}, + {file = "zope.interface-6.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8f5d2c39f3283e461de3655e03faf10e4742bb87387113f787a7724f32db1e48"}, + {file = "zope.interface-6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:75d2ec3d9b401df759b87bc9e19d1b24db73083147089b43ae748aefa63067ef"}, + {file = "zope.interface-6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa994e8937e8ccc7e87395b7b35092818905cf27c651e3ff3e7f29729f5ce3ce"}, + {file = "zope.interface-6.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ede888382882f07b9e4cd942255921ffd9f2901684198b88e247c7eabd27a000"}, + {file = "zope.interface-6.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2606955a06c6852a6cff4abeca38346ed01e83f11e960caa9a821b3626a4467b"}, + {file = "zope.interface-6.2-cp312-cp312-win_amd64.whl", hash = "sha256:ac7c2046d907e3b4e2605a130d162b1b783c170292a11216479bb1deb7cadebe"}, + {file = "zope.interface-6.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:febceb04ee7dd2aef08c2ff3d6f8a07de3052fc90137c507b0ede3ea80c21440"}, + {file = "zope.interface-6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fc711acc4a1c702ca931fdbf7bf7c86f2a27d564c85c4964772dadf0e3c52f5"}, + {file = "zope.interface-6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:396f5c94654301819a7f3a702c5830f0ea7468d7b154d124ceac823e2419d000"}, + {file = "zope.interface-6.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd374927c00764fcd6fe1046bea243ebdf403fba97a937493ae4be2c8912c2b"}, + {file = "zope.interface-6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a3046e8ab29b590d723821d0785598e0b2e32b636a0272a38409be43e3ae0550"}, + {file = "zope.interface-6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:de125151a53ecdb39df3cb3deb9951ed834dd6a110a9e795d985b10bb6db4532"}, + {file = "zope.interface-6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f444de0565db46d26c9fa931ca14f497900a295bd5eba480fc3fad25af8c763e"}, + {file = "zope.interface-6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2fefad268ff5c5b314794e27e359e48aeb9c8bb2cbb5748a071757a56f6bb8f"}, + {file = "zope.interface-6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97785604824981ec8c81850dd25c8071d5ce04717a34296eeac771231fbdd5cd"}, + {file = "zope.interface-6.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7b2bed4eea047a949296e618552d3fed00632dc1b795ee430289bdd0e3717f3"}, + {file = "zope.interface-6.2-cp38-cp38-win_amd64.whl", hash = "sha256:d54f66c511ea01b9ef1d1a57420a93fbb9d48a08ec239f7d9c581092033156d0"}, + {file = "zope.interface-6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5ee9789a20b0081dc469f65ff6c5007e67a940d5541419ca03ef20c6213dd099"}, + {file = "zope.interface-6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af27b3fe5b6bf9cd01b8e1c5ddea0a0d0a1b8c37dc1c7452f1e90bf817539c6d"}, + {file = "zope.interface-6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bce517b85f5debe07b186fc7102b332676760f2e0c92b7185dd49c138734b70"}, + {file = "zope.interface-6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ae9793f114cee5c464cc0b821ae4d36e1eba961542c6086f391a61aee167b6f"}, + {file = "zope.interface-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e87698e2fea5ca2f0a99dff0a64ce8110ea857b640de536c76d92aaa2a91ff3a"}, + {file = "zope.interface-6.2-cp39-cp39-win_amd64.whl", hash = "sha256:b66335bbdbb4c004c25ae01cc4a54fd199afbc1fd164233813c6d3c2293bb7e1"}, + {file = "zope.interface-6.2.tar.gz", hash = "sha256:3b6c62813c63c543a06394a636978b22dffa8c5410affc9331ce6cdb5bfa8565"}, +] + +[package.dependencies] +setuptools = "*" + +[package.extras] +docs = ["Sphinx", "repoze.sphinx.autointerface", "sphinx_rtd_theme"] +test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] +testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] + [extras] alibi = ["alibi", "llvmlite"] alibi-detect = ["alibi-detect", "llvmlite", "torch"] @@ -7726,4 +9108,4 @@ xgboost = ["xgboost"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "09fc3928ae2b2da1494924a9417bc7b281376ec817b2b8d934177ce2d135eaf0" +content-hash = "7c84fb05d57be10c95cdb18feba23a38440370406ac100793c5585d4730e277f" diff --git a/pyproject.toml b/pyproject.toml index 1b2d1a4e9..788f4576e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -138,6 +138,16 @@ mpi4py = {git = "https://github.com/mpi4py/mpi4py"} lightning = "^2.1.0" imbalanced-learn = "^0.11.0" +[tool.poetry.group.deploy] +optional = true + +[tool.poetry.group.deploy.dependencies] +bentoml = { version = "^1.2.0", extras = ["triton"] } +torchxrayvision = "^1.2.1" +kaggle = "^1.5.13" +onnx = "^1.15.0" +skl2onnx = "^1.16.0" + [tool.poetry.extras] torch = ["torch"] torchvision = ["torchvision"] From d1b5bcb97af68ac132079320ebd8d8cd5f6f16ba Mon Sep 17 00:00:00 2001 From: Freddy <9694402+hoxell@users.noreply.github.com> Date: Sun, 18 Feb 2024 18:43:37 +0100 Subject: [PATCH 2/5] Prefer generator over list (#555) --- cyclops/data/df/vectorized.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cyclops/data/df/vectorized.py b/cyclops/data/df/vectorized.py index f759b37f3..380f273a7 100644 --- a/cyclops/data/df/vectorized.py +++ b/cyclops/data/df/vectorized.py @@ -143,9 +143,10 @@ def split_vectorized( seed=seed, ) - splits = [ - vec.split_by_indices(axes_list[i], index_splits) for i, vec in enumerate(vecs) # type: ignore - ] + splits = ( + vec.split_by_indices(axes_list[i], index_splits) # type: ignore + for i, vec in enumerate(vecs) + ) return tuple(splits) From 2c7077241b3c2d2940e15444038151967a72265e Mon Sep 17 00:00:00 2001 From: Amrit Krishnan Date: Sun, 18 Feb 2024 12:44:44 -0500 Subject: [PATCH 3/5] Apply ruff formatter and ditch black (#554) * Apply ruff formatter and ditch black * Ignore a few mypy errors --------- Signed-off-by: Amrit Krishnan --- .pre-commit-config.yaml | 12 ++-- cyclops/data/df/handle_types.py | 3 +- cyclops/data/slicer.py | 15 +++-- cyclops/evaluate/evaluator.py | 3 +- cyclops/evaluate/fairness/evaluator.py | 3 +- cyclops/evaluate/metrics/accuracy.py | 18 +++--- cyclops/evaluate/metrics/auroc.py | 28 ++++++--- .../evaluate/metrics/experimental/accuracy.py | 9 +-- .../evaluate/metrics/experimental/auroc.py | 21 ++++--- .../metrics/experimental/average_precision.py | 23 ++++--- .../metrics/experimental/confusion_matrix.py | 20 ++++-- .../evaluate/metrics/experimental/f_score.py | 18 +++--- .../experimental/functional/accuracy.py | 14 +++-- .../metrics/experimental/functional/auroc.py | 15 +++-- .../functional/average_precision.py | 59 +++++++++++++----- .../functional/confusion_matrix.py | 8 ++- .../experimental/functional/f_score.py | 42 ++++++++----- .../metrics/experimental/functional/mae.py | 4 +- .../metrics/experimental/functional/mape.py | 6 +- .../metrics/experimental/functional/mse.py | 8 +-- .../functional/negative_predictive_value.py | 20 +++--- .../functional/precision_recall.py | 16 +++-- .../functional/precision_recall_curve.py | 49 ++++++++++----- .../metrics/experimental/functional/roc.py | 39 ++++++++---- .../metrics/experimental/functional/smape.py | 4 +- .../experimental/functional/specificity.py | 16 +++-- cyclops/evaluate/metrics/experimental/mae.py | 4 +- cyclops/evaluate/metrics/experimental/mape.py | 4 +- .../evaluate/metrics/experimental/metric.py | 4 +- .../metrics/experimental/metric_dict.py | 8 +-- cyclops/evaluate/metrics/experimental/mse.py | 8 +-- .../experimental/negative_predictive_value.py | 9 +-- .../metrics/experimental/precision_recall.py | 45 ++++++++------ .../experimental/precision_recall_curve.py | 20 +++--- cyclops/evaluate/metrics/experimental/roc.py | 14 +++-- .../evaluate/metrics/experimental/smape.py | 4 +- .../metrics/experimental/specificity.py | 18 +++--- .../evaluate/metrics/experimental/wmape.py | 6 +- cyclops/evaluate/metrics/f_beta.py | 22 +++---- cyclops/evaluate/metrics/functional/auroc.py | 25 +++++--- .../metrics/functional/precision_recall.py | 26 +++++--- .../functional/precision_recall_curve.py | 32 +++++----- cyclops/evaluate/metrics/functional/roc.py | 26 ++++---- .../metrics/functional/sensitivity.py | 25 +++++--- .../metrics/functional/specificity.py | 37 ++++++++--- cyclops/evaluate/metrics/precision_recall.py | 61 +++++-------------- .../metrics/precision_recall_curve.py | 25 +++----- cyclops/evaluate/metrics/roc.py | 17 +++--- cyclops/evaluate/metrics/sensitivity.py | 31 +++------- cyclops/evaluate/metrics/specificity.py | 47 ++++++++++---- cyclops/evaluate/metrics/stat_scores.py | 46 +++++++------- cyclops/models/wrappers/pt_model.py | 8 +-- cyclops/report/report.py | 4 +- cyclops/tasks/utils.py | 8 +-- docs/source/contributing.rst | 4 +- poetry.lock | 2 +- pyproject.toml | 8 ++- .../distributed_backends/test_mpi4py.py | 10 ++- 58 files changed, 634 insertions(+), 447 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e7fd5625c..2d18ba785 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,17 +15,14 @@ repos: - id: check-yaml - id: check-toml - - repo: https://github.com/psf/black - rev: 23.7.0 - hooks: - - id: black - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.2.1' + rev: 'v0.2.2' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] types_or: [python, jupyter] + - id: ruff-format + types_or: [python, jupyter] - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.8.0 @@ -34,7 +31,7 @@ repos: entry: python3 -m mypy --config-file pyproject.toml language: system types: [python] - exclude: "use_cases|tests|cyclops/(models|monitor|report/plot)" + exclude: "tests|cyclops/(models|monitor|report/plot)" - repo: local hooks: @@ -42,7 +39,6 @@ repos: name: nbstripout language: system entry: python3 -m nbstripout - exclude: ^docs/source/tutorials/gemini/.*\.ipynb$ - repo: https://github.com/nbQA-dev/nbQA rev: 1.7.1 diff --git a/cyclops/data/df/handle_types.py b/cyclops/data/df/handle_types.py index cf9796b75..59e74e743 100644 --- a/cyclops/data/df/handle_types.py +++ b/cyclops/data/df/handle_types.py @@ -1013,7 +1013,8 @@ def collect_indicators( # Get categories data[cat] = np.argmax(data[indicators].values, axis=1) indicator_names = [ - indicator[len(cat) + 1 :] for indicator in indicators # noqa: E203 + indicator[len(cat) + 1 :] + for indicator in indicators # noqa: E203 ] map_dict = { i: (name if name != MISSING_CATEGORY else np.nan) diff --git a/cyclops/data/slicer.py b/cyclops/data/slicer.py index 06a417a93..f19d3704a 100644 --- a/cyclops/data/slicer.py +++ b/cyclops/data/slicer.py @@ -96,11 +96,13 @@ class SliceSpec: ... {"feature_1": {"value": ["value_1", "value_2"]}}, ... {"feature_1": {"value": "value_1", "negate": True, "keep_nulls": True}}, ... {"feature_1": {"min_value": "2020-01-01", "max_value": "2020-12-31"}}, - ... {"feature_1": { - ... "min_value": 5, - ... "max_value": 60, - ... "min_inclusive": False, - ... "max_inclusive": False} + ... { + ... "feature_1": { + ... "min_value": 5, + ... "max_value": 60, + ... "min_inclusive": False, + ... "max_inclusive": False, + ... } ... }, ... {"feature_1": {"year": [2020, 2021, 2022]}}, ... {"feature_1": {"month": [6, 7, 8]}}, @@ -110,7 +112,8 @@ class SliceSpec: ... { ... "feature_1": {"value": "value_1"}, ... "feature_2": { - ... "min_value": "2020-01-01", "keep_nulls": False, + ... "min_value": "2020-01-01", + ... "keep_nulls": False, ... }, ... "feature_3": {"year": ["2000", "2010", "2020"]}, ... }, diff --git a/cyclops/evaluate/evaluator.py b/cyclops/evaluate/evaluator.py index 3763cf37e..f5ee6d18b 100644 --- a/cyclops/evaluate/evaluator.py +++ b/cyclops/evaluate/evaluator.py @@ -268,7 +268,8 @@ def _compute_metrics( stacklevel=1, ) metric_output: Dict[str, Array] = { - metric_name: float("NaN") for metric_name in metrics # type: ignore[attr-defined,misc] + metric_name: float("NaN") # type: ignore + for metric_name in metrics # type: ignore } elif ( batch_size is None or batch_size < 0 diff --git a/cyclops/evaluate/fairness/evaluator.py b/cyclops/evaluate/fairness/evaluator.py index cd44a07f1..b53737da2 100644 --- a/cyclops/evaluate/fairness/evaluator.py +++ b/cyclops/evaluate/fairness/evaluator.py @@ -755,7 +755,8 @@ def _compute_metrics( # noqa: C901, PLR0912 if len(dataset) == 0: warnings.warn(empty_dataset_msg, RuntimeWarning, stacklevel=1) results: Dict[str, Any] = { - metric_name: float("NaN") for metric_name in metrics # type: ignore[attr-defined] + metric_name: float("NaN") + for metric_name in metrics # type: ignore[attr-defined] } elif ( batch_size is None or batch_size <= 0 diff --git a/cyclops/evaluate/metrics/accuracy.py b/cyclops/evaluate/metrics/accuracy.py index 0a4fa615a..07fdc0b43 100644 --- a/cyclops/evaluate/metrics/accuracy.py +++ b/cyclops/evaluate/metrics/accuracy.py @@ -108,8 +108,10 @@ class MulticlassAccuracy(MulticlassStatScores, registry_key="multiclass_accuracy array([1. , 0. , 0.66666667]) >>> metric.reset_state() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -184,8 +186,7 @@ class MultilabelAccuracy(MultilabelStatScores, registry_key="multilabel_accuracy array([1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -291,8 +292,10 @@ class Accuracy(Metric, registry_key="accuracy", force_register=True): array([1. , 0. , 0.66666667]) >>> metric.reset_state() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -307,8 +310,7 @@ class Accuracy(Metric, registry_key="accuracy", force_register=True): array([1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/auroc.py b/cyclops/evaluate/metrics/auroc.py index 980dde815..903886cee 100644 --- a/cyclops/evaluate/metrics/auroc.py +++ b/cyclops/evaluate/metrics/auroc.py @@ -108,15 +108,21 @@ class MulticlassAUROC(MulticlassPrecisionRecallCurve, registry_key="multiclass_a -------- >>> from cyclops.evaluate.metrics import MulticlassAUROC >>> target = [0, 1, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.89, 0.06], - ... [0.05, 0.01, 0.94], [0.9, 0.05, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.89, 0.06], + ... [0.05, 0.01, 0.94], + ... [0.9, 0.05, 0.05], + ... ] >>> metric = MulticlassAUROC(num_classes=3) >>> metric(target, preds) array([1., 1., 1.]) >>> metric.reset_state() >>> target = [[0, 1, 0], [1, 0, 1]] - >>> preds = [[[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], - ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]]] + >>> preds = [ + ... [[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -278,15 +284,21 @@ class AUROC(Metric, registry_key="auroc", force_register=True): >>> # (multiclass) >>> from cyclops.evaluate.metrics import MulticlassAUROC >>> target = [0, 1, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.89, 0.06], - ... [0.05, 0.01, 0.94], [0.9, 0.05, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.89, 0.06], + ... [0.05, 0.01, 0.94], + ... [0.9, 0.05, 0.05], + ... ] >>> metric = MulticlassAUROC(num_classes=3) >>> metric(target, preds) array([1., 1., 1.]) >>> metric.reset_state() >>> target = [[0, 1, 0], [1, 0, 1]] - >>> preds = [[[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], - ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]]] + >>> preds = [ + ... [[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/accuracy.py b/cyclops/evaluate/metrics/experimental/accuracy.py index 5569bca7d..728c6b081 100644 --- a/cyclops/evaluate/metrics/experimental/accuracy.py +++ b/cyclops/evaluate/metrics/experimental/accuracy.py @@ -92,8 +92,10 @@ class MulticlassAccuracy( Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -160,8 +162,7 @@ class MultilabelAccuracy( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/auroc.py b/cyclops/evaluate/metrics/experimental/auroc.py index bd139cb77..94732e778 100644 --- a/cyclops/evaluate/metrics/experimental/auroc.py +++ b/cyclops/evaluate/metrics/experimental/auroc.py @@ -79,7 +79,11 @@ def _compute_metric(self) -> Array: # type: ignore[override] if self.thresholds is None else self.confmat # type: ignore[attr-defined] ) - return _binary_auroc_compute(state, thresholds=self.thresholds, max_fpr=self.max_fpr) # type: ignore + return _binary_auroc_compute( + state, + thresholds=self.thresholds, # type: ignore + max_fpr=self.max_fpr, + ) class MulticlassAUROC(MulticlassPrecisionRecallCurve, registry_key="multiclass_auroc"): @@ -117,12 +121,15 @@ class MulticlassAUROC(MulticlassPrecisionRecallCurve, registry_key="multiclass_a >>> from cyclops.evaluate.metrics.experimental import MulticlassAUROC >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> auroc = MulticlassAUROC(num_classes=3, average="macro", thresholds=None) >>> auroc(target, preds) Array(0.33333334, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/average_precision.py b/cyclops/evaluate/metrics/experimental/average_precision.py index f8f8692ac..b1d648264 100644 --- a/cyclops/evaluate/metrics/experimental/average_precision.py +++ b/cyclops/evaluate/metrics/experimental/average_precision.py @@ -125,14 +125,19 @@ class MulticlassAveragePrecision( >>> from cyclops.evaluate.metrics.experimental import MulticlassAveragePrecision >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> metric = MulticlassAveragePrecision( - ... num_classes=3, thresholds=None, average=None, + ... num_classes=3, + ... thresholds=None, + ... average=None, ... ) >>> metric(target, preds) Array([0.33333334, 0.5 , 0.5 ], dtype=float32) @@ -224,7 +229,9 @@ class MultilabelAveragePrecision( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> metric = MultilabelAveragePrecision( - ... num_labels=3, thresholds=None, average=None, + ... num_labels=3, + ... thresholds=None, + ... average=None, ... ) >>> metric(target, preds) Array([1. , 0.5833334, 0.5 ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/confusion_matrix.py b/cyclops/evaluate/metrics/experimental/confusion_matrix.py index 744ea1720..9a14488f4 100644 --- a/cyclops/evaluate/metrics/experimental/confusion_matrix.py +++ b/cyclops/evaluate/metrics/experimental/confusion_matrix.py @@ -119,8 +119,12 @@ class BinaryConfusionMatrix( Array([[2, 1], [1, 2]], dtype=int64) >>> target = anp.asarray([[[0, 1], [1, 0], [0, 1]], [[1, 1], [0, 0], [1, 0]]]) - >>> preds = anp.asarray([[[0.59, 0.91], [0.91, 0.99], [0.63, 0.04]], - ... [[0.38, 0.04], [0.86, 0.780], [0.45, 0.37]]]) + >>> preds = anp.asarray( + ... [ + ... [[0.59, 0.91], [0.91, 0.99], [0.63, 0.04]], + ... [[0.38, 0.04], [0.86, 0.780], [0.45, 0.37]], + ... ] + ... ) """ @@ -205,10 +209,14 @@ class MulticlassConfusionMatrix(Metric, registry_key="multiclass_confusion_matri [0, 1, 0], [0, 0, 1]], dtype=int64) >>> target = anp.asarray([2, 1, 0, 0]) - >>> preds = anp.asarray([[0.16, 0.26, 0.58], - ... [0.22, 0.61, 0.17], - ... [0.71, 0.09, 0.20], - ... [0.05, 0.82, 0.13]]) + >>> preds = anp.asarray( + ... [ + ... [0.16, 0.26, 0.58], + ... [0.22, 0.61, 0.17], + ... [0.71, 0.09, 0.20], + ... [0.05, 0.82, 0.13], + ... ] + ... ) >>> metric = MulticlassConfusionMatrix(num_classes=3) >>> metric(target, preds) Array([[1, 1, 0], diff --git a/cyclops/evaluate/metrics/experimental/f_score.py b/cyclops/evaluate/metrics/experimental/f_score.py index 7e9bc7a20..7312cdc75 100644 --- a/cyclops/evaluate/metrics/experimental/f_score.py +++ b/cyclops/evaluate/metrics/experimental/f_score.py @@ -120,8 +120,10 @@ class MulticlassFBetaScore( Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -219,8 +221,7 @@ class MultilabelFBetaScore( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -359,8 +360,10 @@ class MulticlassF1Score(MulticlassFBetaScore, registry_key="multiclass_f1_score" Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -433,8 +436,7 @@ class MultilabelF1Score( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/functional/accuracy.py b/cyclops/evaluate/metrics/experimental/functional/accuracy.py index f7d009115..d947f54cd 100644 --- a/cyclops/evaluate/metrics/experimental/functional/accuracy.py +++ b/cyclops/evaluate/metrics/experimental/functional/accuracy.py @@ -270,14 +270,18 @@ def multiclass_accuracy( Array(1., dtype=float32) >>> multiclass_accuracy(target, preds, num_classes=3, average=None) Array([0.5, 1. , 1. ], dtype=float32) - >>> multiclass_accuracy(target, preds, num_classes=3, average='macro') + >>> multiclass_accuracy(target, preds, num_classes=3, average="macro") Array(0.8333334, dtype=float32) - >>> multiclass_accuracy(target, preds, num_classes=3, average='weighted') + >>> multiclass_accuracy(target, preds, num_classes=3, average="weighted") Array(0.75, dtype=float32) >>> multiclass_accuracy(target, preds, num_classes=3, average=None, ignore_index=0) Array([0., 1., 1.], dtype=float32) >>> multiclass_accuracy( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.5, 0. , 0. ], dtype=float32) @@ -423,9 +427,9 @@ def multilabel_accuracy( Array(0.5, dtype=float32) >>> multilabel_accuracy(target, preds, num_labels=4, average=None) Array([0.5, 0. , 0.5, 0.5], dtype=float32) - >>> multilabel_accuracy(target, preds, num_labels=4, average='micro') + >>> multilabel_accuracy(target, preds, num_labels=4, average="micro") Array(0.375, dtype=float32) - >>> multilabel_accuracy(target, preds, num_labels=4, average='weighted') + >>> multilabel_accuracy(target, preds, num_labels=4, average="weighted") Array(0.4, dtype=float32) >>> multilabel_accuracy(target, preds, num_labels=4, average=None, ignore_index=0) Array([0.5, 0. , 0. , 1. ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/auroc.py b/cyclops/evaluate/metrics/experimental/functional/auroc.py index 7abe73990..5f203a8f4 100644 --- a/cyclops/evaluate/metrics/experimental/functional/auroc.py +++ b/cyclops/evaluate/metrics/experimental/functional/auroc.py @@ -392,12 +392,15 @@ def multiclass_auroc( >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> multiclass_auroc(target, preds, num_classes=3, thresholds=None) Array(0.33333334, dtype=float32) >>> multiclass_auroc(target, preds, num_classes=3, thresholds=5) diff --git a/cyclops/evaluate/metrics/experimental/functional/average_precision.py b/cyclops/evaluate/metrics/experimental/functional/average_precision.py index 257fd119c..df3a6af05 100644 --- a/cyclops/evaluate/metrics/experimental/functional/average_precision.py +++ b/cyclops/evaluate/metrics/experimental/functional/average_precision.py @@ -151,7 +151,7 @@ def binary_average_precision( -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... binary_average_precision + ... binary_average_precision, ... ) >>> target = anp.asarray([0, 1, 1, 0]) >>> preds = anp.asarray([0, 0.5, 0.7, 0.8]) @@ -408,22 +408,37 @@ def multiclass_average_precision( >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> multiclass_average_precision( - ... target, preds, num_classes=3, thresholds=None, average=None, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, + ... average=None, ... ) Array([0.33333334, 0.5 , 0.5 ], dtype=float32) >>> multiclass_average_precision( - ... target, preds, num_classes=3, thresholds=None, average="macro", + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, + ... average="macro", ... ) Array(0.44444445, dtype=float32) >>> multiclass_average_precision( - ... target, preds, num_classes=3, thresholds=None, average="weighted", + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, + ... average="weighted", ... ) Array(0.44444448, dtype=float32) """ @@ -624,19 +639,35 @@ def multilabel_average_precision( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average=None, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average=None, ... ) Array([1. , 0.5833334, 0.5 ], dtype=float32) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average="micro", + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average="micro", ... ) Array(0.58452386, dtype=float32) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average="macro", + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average="macro", ... ) Array(0.6944445, dtype=float32) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average="weighted", + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average="weighted", ... ) Array(0.6666667, dtype=float32) """ diff --git a/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py b/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py index cfc462269..23faa208d 100644 --- a/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py +++ b/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py @@ -236,7 +236,9 @@ class over the number of samples with the same true class. Examples -------- >>> import numpy.array_api as anp - >>> from cyclops.evaluate.metrics.experimental.functional import binary_confusion_matrix + >>> from cyclops.evaluate.metrics.experimental.functional import ( + ... binary_confusion_matrix, + ... ) >>> target = anp.asarray([0, 1, 0, 1, 0, 1]) >>> preds = anp.asarray([0, 0, 1, 1, 0, 1]) >>> binary_confusion_matrix(target, preds) @@ -727,7 +729,9 @@ class over the number of true samples for each class. Examples -------- >>> import numpy.array_api as anp - >>> from cyclops.evaluate.metrics.experimental.functional import multilabel_confusion_matrix + >>> from cyclops.evaluate.metrics.experimental.functional import ( + ... multilabel_confusion_matrix, + ... ) >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) >>> preds = anp.asarray([[0, 0, 1], [1, 0, 1]]) >>> multilabel_confusion_matrix(target, preds, num_labels=3) diff --git a/cyclops/evaluate/metrics/experimental/functional/f_score.py b/cyclops/evaluate/metrics/experimental/functional/f_score.py index 6cb74db4d..64c8a9173 100644 --- a/cyclops/evaluate/metrics/experimental/functional/f_score.py +++ b/cyclops/evaluate/metrics/experimental/functional/f_score.py @@ -315,7 +315,7 @@ def multiclass_fbeta_score( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_fbeta_score + ... multiclass_fbeta_score, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) @@ -334,16 +334,26 @@ def multiclass_fbeta_score( Array(0.8333333, dtype=float32) >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average=None) Array([0.5555556, 0.8333333, 1. ], dtype=float32) - >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average='macro') + >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average="macro") Array(0.7962963, dtype=float32) - >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average='weighted') + >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average="weighted") Array(0.7361111, dtype=float32) >>> multiclass_fbeta_score( - ... target, preds, beta, num_classes=3, average=None, ignore_index=0, + ... target, + ... preds, + ... beta, + ... num_classes=3, + ... average=None, + ... ignore_index=0, ... ) Array([0., 1., 1.], dtype=float32) >>> multiclass_fbeta_score( - ... target, preds, beta, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... beta, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.5555556, 0. , 0. ], dtype=float32) @@ -500,7 +510,7 @@ def multilabel_fbeta_score( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_fbeta_score + ... multilabel_fbeta_score, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) @@ -517,12 +527,12 @@ def multilabel_fbeta_score( Array(0.3472222, dtype=float32) >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average=None) Array([0.5555556, 0. , 0. , 0.8333333], dtype=float32) - >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average='micro') + >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average="micro") Array(0.41666666, dtype=float32) - >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average='weighted') + >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average="weighted") Array(0.3888889, dtype=float32) >>> multilabel_fbeta_score( - ... target, preds, beta, num_labels=4, average=None, ignore_index=0 + ... target, preds, beta, num_labels=4, average=None, ignore_index=0 ... ) Array([0.5555556, 0. , 0. , 1. ], dtype=float32) @@ -746,14 +756,18 @@ def multiclass_f1_score( Array(0.6666667, dtype=float32) >>> multiclass_f1_score(target, preds, num_classes=3, average=None) Array([0.6666667, 0.6666667, 1. ], dtype=float32) - >>> multiclass_f1_score(target, preds, num_classes=3, average='macro') + >>> multiclass_f1_score(target, preds, num_classes=3, average="macro") Array(0.7777778, dtype=float32) - >>> multiclass_f1_score(target, preds, num_classes=3, average='weighted') + >>> multiclass_f1_score(target, preds, num_classes=3, average="weighted") Array(0.75, dtype=float32) >>> multiclass_f1_score(target, preds, num_classes=3, average=None, ignore_index=0) Array([0., 1., 1.], dtype=float32) >>> multiclass_f1_score( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.6666667, 0. , 0. ], dtype=float32) """ @@ -869,9 +883,9 @@ def multilabel_f1_score( Array(0.33333334, dtype=float32) >>> multilabel_f1_score(target, preds, num_labels=4, average=None) Array([0.6666667, 0. , 0. , 0.6666667], dtype=float32) - >>> multilabel_f1_score(target, preds, num_labels=4, average='micro') + >>> multilabel_f1_score(target, preds, num_labels=4, average="micro") Array(0.44444445, dtype=float32) - >>> multilabel_f1_score(target, preds, num_labels=4, average='weighted') + >>> multilabel_f1_score(target, preds, num_labels=4, average="weighted") Array(0.40000004, dtype=float32) >>> multilabel_f1_score(target, preds, num_labels=4, average=None, ignore_index=0) Array([0.6666667, 0. , 0. , 1. ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/mae.py b/cyclops/evaluate/metrics/experimental/functional/mae.py index 870259e3b..f51ba2190 100644 --- a/cyclops/evaluate/metrics/experimental/functional/mae.py +++ b/cyclops/evaluate/metrics/experimental/functional/mae.py @@ -78,8 +78,8 @@ def mean_absolute_error(target: Array, preds: Array) -> Array: -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import mean_absolute_error - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> mean_absolute_error(target, preds) Array(0.26475, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/mape.py b/cyclops/evaluate/metrics/experimental/functional/mape.py index 4c90cd733..df274d51d 100644 --- a/cyclops/evaluate/metrics/experimental/functional/mape.py +++ b/cyclops/evaluate/metrics/experimental/functional/mape.py @@ -112,10 +112,10 @@ def mean_absolute_percentage_error(target: Array, preds: Array) -> Array: -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... mean_absolute_percentage_error + ... mean_absolute_percentage_error, ... ) - >>> target = anp.asarray([1., 10., 1e6]) - >>> preds = anp.asarray([0.9, 15., 1.2e6]) + >>> target = anp.asarray([1.0, 10.0, 1e6]) + >>> preds = anp.asarray([0.9, 15.0, 1.2e6]) >>> mean_absolute_percentage_error(target, preds) Array(0.26666668, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/mse.py b/cyclops/evaluate/metrics/experimental/functional/mse.py index 4af5dd535..63df3955c 100644 --- a/cyclops/evaluate/metrics/experimental/functional/mse.py +++ b/cyclops/evaluate/metrics/experimental/functional/mse.py @@ -117,14 +117,14 @@ def mean_squared_error( -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import mean_squared_error - >>> target = anp.asarray([0., 1., 2., 3.]) - >>> preds = anp.asarray([0.025, 1., 2., 2.44]) + >>> target = anp.asarray([0.0, 1.0, 2.0, 3.0]) + >>> preds = anp.asarray([0.025, 1.0, 2.0, 2.44]) >>> mean_squared_error(target, preds) Array(0.07855625, dtype=float32) >>> mean_squared_error(target, preds, squared=False) Array(0.2802789, dtype=float32) - >>> target = anp.asarray([[0., 1.], [2., 3.]]) - >>> preds = anp.asarray([[0.025, 1.], [2., 2.44]]) + >>> target = anp.asarray([[0.0, 1.0], [2.0, 3.0]]) + >>> preds = anp.asarray([[0.025, 1.0], [2.0, 2.44]]) >>> mean_squared_error(target, preds, num_outputs=2) Array([0.0003125, 0.1568 ], dtype=float32) >>> mean_squared_error(target, preds, squared=False, num_outputs=2) diff --git a/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py b/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py index 2ca4411cc..10351e921 100644 --- a/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py +++ b/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py @@ -238,9 +238,7 @@ def multiclass_npv( Examples -------- - >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_npv - ... ) + >>> from cyclops.evaluate.metrics.experimental.functional import multiclass_npv >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) >>> preds = anp.asarray([2, 1, 0, 1]) @@ -263,7 +261,11 @@ def multiclass_npv( >>> multiclass_npv(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_npv( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0., 1., 1.], dtype=float32) @@ -391,9 +393,7 @@ def multilabel_npv( Examples -------- - >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_npv - ... ) + >>> from cyclops.evaluate.metrics.experimental.functional import multilabel_npv >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) >>> preds = anp.asarray([[0, 0, 1], [1, 0, 1]]) @@ -414,7 +414,11 @@ def multilabel_npv( >>> multilabel_npv(target, preds, num_labels=4, average="weighted") Array(0.1, dtype=float32) >>> multilabel_npv( - ... target, preds, num_labels=4, average=None, ignore_index=1, + ... target, + ... preds, + ... num_labels=4, + ... average=None, + ... ignore_index=1, ... ) Array([0., 0., 1., 0.], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/precision_recall.py b/cyclops/evaluate/metrics/experimental/functional/precision_recall.py index 283b485cc..6e9df2f7d 100644 --- a/cyclops/evaluate/metrics/experimental/functional/precision_recall.py +++ b/cyclops/evaluate/metrics/experimental/functional/precision_recall.py @@ -245,7 +245,7 @@ def multiclass_precision( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_precision + ... multiclass_precision, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) @@ -269,7 +269,11 @@ def multiclass_precision( >>> multiclass_precision(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_precision( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([1., 0., 0.], dtype=float32) @@ -396,7 +400,7 @@ def multilabel_precision( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_precision + ... multilabel_precision, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) @@ -650,7 +654,11 @@ def multiclass_recall( >>> multiclass_recall(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_recall( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.5, 0. , 0. ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py b/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py index 0c2409670..d484a2b1b 100644 --- a/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py @@ -399,13 +399,15 @@ def binary_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... binary_precision_recall_curve + ... binary_precision_recall_curve, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 0, 1, 0, 1]) >>> preds = anp.asarray([0.11, 0.22, 0.84, 0.73, 0.33, 0.92]) >>> precision, recall, thresholds = binary_precision_recall_curve( - ... target, preds, thresholds=None, + ... target, + ... preds, + ... thresholds=None, ... ) >>> precision Array([0.5 , 0.6 , 0.5 , 0.6666667, @@ -416,7 +418,9 @@ def binary_precision_recall_curve( >>> thresholds Array([0.11, 0.22, 0.33, 0.73, 0.84, 0.92], dtype=float64) >>> precision, recall, thresholds = binary_precision_recall_curve( - ... target, preds, thresholds=5, + ... target, + ... preds, + ... thresholds=5, ... ) >>> precision Array([0.5 , 0.5 , 0.6666667, 0.5 , @@ -786,19 +790,25 @@ class is returned with 1-D Arrays of shape `(num_thresholds,)`. Otherwise, Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_precision_recall_curve + ... multiclass_precision_recall_curve, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> precision, recall, thresholds = multiclass_precision_recall_curve( - ... target, preds, num_classes=3, thresholds=None, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, ... ) >>> precision [Array([0.33333334, 0. , 0. , 1. ], dtype=float32), @@ -809,7 +819,10 @@ class is returned with 1-D Arrays of shape `(num_thresholds,)`. Otherwise, >>> thresholds [Array([0.11, 0.33, 0.84], dtype=float64), Array([0.22, 0.73, 0.92], dtype=float64), Array([0.12, 0.44, 0.67], dtype=float64)] >>> precision, recall, thresholds = multiclass_precision_recall_curve( - ... target, preds, num_classes=3, thresholds=5, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=5, ... ) >>> precision Array([[0.33333334, 0. , 0. , 0. , @@ -1111,7 +1124,7 @@ def multilabel_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_precision_recall_curve + ... multilabel_precision_recall_curve, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 1, 0], [0, 0, 1]]) @@ -1119,7 +1132,10 @@ def multilabel_precision_recall_curve( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> precision, recall, thresholds = multilabel_precision_recall_curve( - ... target, preds, num_labels=3, thresholds=None, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, ... ) >>> precision [Array([0.33333334, 0.5 , 1. , 1. ], dtype=float32), @@ -1130,7 +1146,10 @@ def multilabel_precision_recall_curve( >>> thresholds [Array([0.11, 0.33, 0.84], dtype=float64), Array([0.22, 0.73, 0.92], dtype=float64), Array([0.12, 0.44, 0.67], dtype=float64)] >>> precision, recall, thresholds = multilabel_precision_recall_curve( - ... target, preds, num_labels=3, thresholds=5, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=5, ... ) >>> precision Array([[0.33333334, 0.5 , 1. , 1. , diff --git a/cyclops/evaluate/metrics/experimental/functional/roc.py b/cyclops/evaluate/metrics/experimental/functional/roc.py index e95948d5b..736696195 100644 --- a/cyclops/evaluate/metrics/experimental/functional/roc.py +++ b/cyclops/evaluate/metrics/experimental/functional/roc.py @@ -180,7 +180,9 @@ def binary_roc( >>> thresholds Array([1. , 0.92, 0.84, 0.73, 0.33, 0.22, 0.11], dtype=float64) >>> fpr, tpr, thresholds = binary_roc( - ... target, preds, thresholds=5, + ... target, + ... preds, + ... thresholds=5, ... ) >>> fpr Array([0. , 0.33333334, 0.33333334, 0.6666667 , @@ -379,14 +381,20 @@ def multiclass_roc( >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> fpr, tpr, thresholds = multiclass_roc( - ... target, preds, num_classes=3, thresholds=None, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, ... ) >>> fpr [Array([0. , 0.5, 1. , 1. ], dtype=float32), @@ -401,7 +409,10 @@ def multiclass_roc( Array([1. , 0.92, 0.73, 0.22], dtype=float64), Array([1. , 0.67, 0.44, 0.12], dtype=float64)] >>> fpr, tpr, thresholds = multiclass_roc( - ... target, preds, num_classes=3, thresholds=5, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=5, ... ) >>> fpr Array([[0. , 0.5, 0.5, 1. , 1. ], @@ -587,7 +598,10 @@ def multilabel_roc( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> fpr, tpr, thresholds = multilabel_roc( - ... target, preds, num_labels=3, thresholds=None, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, ... ) >>> fpr [Array([0. , 0. , 0.5, 1. ], dtype=float32), @@ -602,7 +616,10 @@ def multilabel_roc( Array([1. , 0.92, 0.73, 0.22], dtype=float64), Array([1. , 0.67, 0.44, 0.12], dtype=float64)] >>> fpr, tpr, thresholds = multilabel_roc( - ... target, preds, num_labels=3, thresholds=5, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=5, ... ) >>> fpr Array([[0. , 0. , 0. , 0.5, 1. ], diff --git a/cyclops/evaluate/metrics/experimental/functional/smape.py b/cyclops/evaluate/metrics/experimental/functional/smape.py index badefeeb1..d33aeb0d9 100644 --- a/cyclops/evaluate/metrics/experimental/functional/smape.py +++ b/cyclops/evaluate/metrics/experimental/functional/smape.py @@ -110,8 +110,8 @@ def symmetric_mean_absolute_percentage_error(target: Array, preds: Array) -> Arr >>> from cyclops.evaluate.metrics.experimental.functional import ( ... symmetric_mean_absolute_percentage_error, ... ) - >>> target = anp.asarray([1., 10., 1e6]) - >>> preds = anp.asarray([0.9, 15., 1.2e6]) + >>> target = anp.asarray([1.0, 10.0, 1e6]) + >>> preds = anp.asarray([0.9, 15.0, 1.2e6]) >>> symmetric_mean_absolute_percentage_error(target, preds) Array(0.2290271, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/specificity.py b/cyclops/evaluate/metrics/experimental/functional/specificity.py index da27e0957..44847f2fe 100644 --- a/cyclops/evaluate/metrics/experimental/functional/specificity.py +++ b/cyclops/evaluate/metrics/experimental/functional/specificity.py @@ -238,7 +238,7 @@ def multiclass_specificity( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_specificity + ... multiclass_specificity, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) @@ -262,7 +262,11 @@ def multiclass_specificity( >>> multiclass_specificity(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_specificity( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0. , 0.5, 1. ], dtype=float32) @@ -391,7 +395,7 @@ def multilabel_specificity( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_specificity + ... multilabel_specificity, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) @@ -413,7 +417,11 @@ def multilabel_specificity( >>> multilabel_specificity(target, preds, num_labels=4, average="weighted") Array(0.2, dtype=float32) >>> multilabel_specificity( - ... target, preds, num_labels=4, average=None, ignore_index=1, + ... target, + ... preds, + ... num_labels=4, + ... average=None, + ... ignore_index=1, ... ) Array([0., 0., 1., 0.], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/mae.py b/cyclops/evaluate/metrics/experimental/mae.py index dab2f5a5d..aac6cbdd0 100644 --- a/cyclops/evaluate/metrics/experimental/mae.py +++ b/cyclops/evaluate/metrics/experimental/mae.py @@ -21,8 +21,8 @@ class MeanAbsoluteError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import MeanAbsoluteError - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = MeanAbsoluteError() >>> metric(target, preds) Array(0.26475, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/mape.py b/cyclops/evaluate/metrics/experimental/mape.py index 6d9d4afbf..003ba8530 100644 --- a/cyclops/evaluate/metrics/experimental/mape.py +++ b/cyclops/evaluate/metrics/experimental/mape.py @@ -24,8 +24,8 @@ class MeanAbsolutePercentageError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import MeanAbsolutePercentageError - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = MeanAbsolutePercentageError() >>> metric(target, preds) Array(0.34523812, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/metric.py b/cyclops/evaluate/metrics/experimental/metric.py index 1712fabd3..7f94a4fc0 100644 --- a/cyclops/evaluate/metrics/experimental/metric.py +++ b/cyclops/evaluate/metrics/experimental/metric.py @@ -712,5 +712,7 @@ def to_device( def __repr__(self) -> str: """Return a string representation of the object.""" - _op_metrics = f"(\n {self._op}(\n {self.metric_a!r},\n {self.metric_b!r}\n )\n)" # noqa: E501 + _op_metrics = ( + f"(\n {self._op}(\n {self.metric_a!r},\n {self.metric_b!r}\n )\n)" # noqa: E501 + ) return self.__class__.__name__ + _op_metrics diff --git a/cyclops/evaluate/metrics/experimental/metric_dict.py b/cyclops/evaluate/metrics/experimental/metric_dict.py index 08a833522..bd001028c 100644 --- a/cyclops/evaluate/metrics/experimental/metric_dict.py +++ b/cyclops/evaluate/metrics/experimental/metric_dict.py @@ -109,10 +109,10 @@ class MetricDict(UserDict[str, Union[Metric, TorchMetric]]): -------- >>> from cyclops.evaluate.metrics.experimental import MetricDict >>> from cyclops.evaluate.metrics.experimental import ( - ... BinaryAccuracy, - ... BinaryF1Score, - ... BinaryPrecision, - ... BinaryRecall, + ... BinaryAccuracy, + ... BinaryF1Score, + ... BinaryPrecision, + ... BinaryRecall, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 0, 1]) diff --git a/cyclops/evaluate/metrics/experimental/mse.py b/cyclops/evaluate/metrics/experimental/mse.py index 6210055a2..1f0a49c2a 100644 --- a/cyclops/evaluate/metrics/experimental/mse.py +++ b/cyclops/evaluate/metrics/experimental/mse.py @@ -26,8 +26,8 @@ class MeanSquaredError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import MeanSquaredError - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = MeanSquaredError() >>> metric(target, preds) Array(0.25064525, dtype=float32) @@ -35,8 +35,8 @@ class MeanSquaredError(Metric): >>> metric(target, preds) Array(0.50064486, dtype=float32) >>> metric = MeanSquaredError(num_outputs=2) - >>> target = anp.asarray([[0.009, 1.05], [2., 3.]]) - >>> preds = anp.asarray([[0., 1.], [2., 2.]]) + >>> target = anp.asarray([[0.009, 1.05], [2.0, 3.0]]) + >>> preds = anp.asarray([[0.0, 1.0], [2.0, 2.0]]) >>> metric(target, preds) Array([4.0500e-05, 5.0125e-01], dtype=float32) >>> metric = MeanSquaredError(squared=False, num_outputs=2) diff --git a/cyclops/evaluate/metrics/experimental/negative_predictive_value.py b/cyclops/evaluate/metrics/experimental/negative_predictive_value.py index 99602555d..53ec429c6 100644 --- a/cyclops/evaluate/metrics/experimental/negative_predictive_value.py +++ b/cyclops/evaluate/metrics/experimental/negative_predictive_value.py @@ -96,8 +96,10 @@ class MulticlassNPV( Array(0.8, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -167,8 +169,7 @@ class MultilabelNPV( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/precision_recall.py b/cyclops/evaluate/metrics/experimental/precision_recall.py index 57253a1d6..986d678a3 100644 --- a/cyclops/evaluate/metrics/experimental/precision_recall.py +++ b/cyclops/evaluate/metrics/experimental/precision_recall.py @@ -128,8 +128,10 @@ class MulticlassPrecision( Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -195,8 +197,10 @@ class MulticlassPPV(MulticlassPrecision, registry_key="multiclass_ppv"): Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -253,8 +257,7 @@ class MultilabelPrecision( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -321,8 +324,7 @@ class MultilabelPPV(MultilabelPrecision, registry_key="multilabel_ppv"): Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -481,8 +483,10 @@ class MulticlassRecall(_AbstractMulticlassStatScores, registry_key="multiclass_r Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -547,8 +551,10 @@ class MulticlassSensitivity(MulticlassRecall, registry_key="multiclass_sensitivi Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -601,8 +607,10 @@ class MulticlassTPR(MulticlassRecall, registry_key="multiclass_tpr"): Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -656,8 +664,7 @@ class MultilabelRecall(_AbstractMultilabelStatScores, registry_key="multilabel_r Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -724,8 +731,7 @@ class MultilabelSensitivity(MultilabelRecall, registry_key="multilabel_sensitivi Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -780,8 +786,7 @@ class MultilabelTPR(MultilabelRecall, registry_key="multilabel_tpr"): Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/precision_recall_curve.py b/cyclops/evaluate/metrics/experimental/precision_recall_curve.py index 6567e407f..36181a0eb 100644 --- a/cyclops/evaluate/metrics/experimental/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/experimental/precision_recall_curve.py @@ -100,7 +100,11 @@ def __init__( ) def default(xp: ModuleType) -> Array: - return xp.zeros((len_thresholds, 2, 2), dtype=xp.int32, device=self.device) # type: ignore[no-any-return] + return xp.zeros( # type: ignore + (len_thresholds, 2, 2), + dtype=xp.int32, + device=self.device, + ) self.add_state_default_factory( "confmat", @@ -185,12 +189,14 @@ class MulticlassPrecisionRecallCurve( >>> from cyclops.evaluate.metrics.experimental import MulticlassPrecisionRecallCurve >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]] + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] ... ) >>> metric = MulticlassPrecisionRecallCurve(num_classes=3, thresholds=None) >>> metric(target, preds) diff --git a/cyclops/evaluate/metrics/experimental/roc.py b/cyclops/evaluate/metrics/experimental/roc.py index 6c6fbecb5..c3b6de9a5 100644 --- a/cyclops/evaluate/metrics/experimental/roc.py +++ b/cyclops/evaluate/metrics/experimental/roc.py @@ -103,12 +103,14 @@ class MulticlassROC( >>> from cyclops.evaluate.metrics.experimental import MulticlassROC >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]] + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] ... ) >>> metric = MulticlassROC(num_classes=3, thresholds=None) >>> metric(target, preds) diff --git a/cyclops/evaluate/metrics/experimental/smape.py b/cyclops/evaluate/metrics/experimental/smape.py index a7e61c027..a603bb884 100644 --- a/cyclops/evaluate/metrics/experimental/smape.py +++ b/cyclops/evaluate/metrics/experimental/smape.py @@ -26,8 +26,8 @@ class SymmetricMeanAbsolutePercentageError(Metric): >>> from cyclops.evaluate.metrics.experimental import ( ... SymmetricMeanAbsolutePercentageError, ... ) - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = SymmetricMeanAbsolutePercentageError() >>> metric(target, preds) Array(0.61219513, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/specificity.py b/cyclops/evaluate/metrics/experimental/specificity.py index 768b8939e..9b76ef50d 100644 --- a/cyclops/evaluate/metrics/experimental/specificity.py +++ b/cyclops/evaluate/metrics/experimental/specificity.py @@ -95,8 +95,10 @@ class MulticlassSpecificity( Array(0.8, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -166,8 +168,7 @@ class MultilabelSpecificity( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -267,8 +268,10 @@ class MulticlassTNR(MulticlassSpecificity, registry_key="multiclass_tnr"): Array(0.8, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -323,8 +326,7 @@ class MultilabelTNR(MultilabelSpecificity, registry_key="multilabel_tnr"): Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/wmape.py b/cyclops/evaluate/metrics/experimental/wmape.py index fc37cf6a6..0d6803c45 100644 --- a/cyclops/evaluate/metrics/experimental/wmape.py +++ b/cyclops/evaluate/metrics/experimental/wmape.py @@ -25,10 +25,10 @@ class WeightedMeanAbsolutePercentageError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import ( - ... WeightedMeanAbsolutePercentageError, + ... WeightedMeanAbsolutePercentageError, ... ) - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = WeightedMeanAbsolutePercentageError() >>> metric(target, preds) Array(0.17478132, dtype=float32) diff --git a/cyclops/evaluate/metrics/f_beta.py b/cyclops/evaluate/metrics/f_beta.py index 575bacb7c..9c0ffda5d 100644 --- a/cyclops/evaluate/metrics/f_beta.py +++ b/cyclops/evaluate/metrics/f_beta.py @@ -119,14 +119,8 @@ class MulticlassFbetaScore(MulticlassStatScores, registry_key="multiclass_fbeta_ >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -320,8 +314,10 @@ class FbetaScore(Metric, registry_key="fbeta_score", force_register=True): array([0.83333333, 0. , 0.55555556]) >>> metric.reset_state() >>> target = [[0, 1, 0], [0, 0, 1]] - >>> preds = [[[0.1, 0.8, 0.1], [0.1, 0.1, 0.8], [0.8, 0.1, 0.1]], - ... [[0.1, 0.1, 0.8], [0.8, 0.1, 0.1], [0.1, 0.8, 0.1]]] + >>> preds = [ + ... [[0.1, 0.8, 0.1], [0.1, 0.1, 0.8], [0.8, 0.1, 0.1]], + ... [[0.1, 0.1, 0.8], [0.8, 0.1, 0.1], [0.1, 0.8, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -480,8 +476,7 @@ class MulticlassF1Score(MulticlassFbetaScore, registry_key="multiclass_f1_score" array([0.66666667, 0.5 , 0. ]) >>> metric.reset_state() >>> target = [[0, 1], [1, 1]] - >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -640,8 +635,7 @@ class F1Score(FbetaScore, registry_key="f1_score", force_register=True): array([0.66666667, 0.5 , 0. ]) >>> metric.reset_state() >>> target = [[0, 1], [1, 1]] - >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/functional/auroc.py b/cyclops/evaluate/metrics/functional/auroc.py index afb938aae..316d8d638 100644 --- a/cyclops/evaluate/metrics/functional/auroc.py +++ b/cyclops/evaluate/metrics/functional/auroc.py @@ -310,11 +310,13 @@ def multiclass_auroc( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_auroc >>> target = [1, 0, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], - ... [0.05, 0.05, 0.9], [0.9, 0.05, 0.05]] - >>> multiclass_auroc(target, preds, num_classes=3, thresholds=5, - ... average=None - ... ) + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... [0.9, 0.05, 0.05], + ... ] + >>> multiclass_auroc(target, preds, num_classes=3, thresholds=5, average=None) array([0.5 , 0.33333333, 1. ]) """ @@ -453,8 +455,7 @@ def multilabel_auroc( >>> from cyclops.evaluate.metrics.functional import multilabel_auroc >>> target = [[0, 1, 0], [0, 1, 1], [1, 0, 1]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.1, 0.9], [0.8, 0.2, 0.3]] - >>> multilabel_auroc(target, preds, num_labels=3, thresholds=5, - ... average=None) + >>> multilabel_auroc(target, preds, num_labels=3, thresholds=5, average=None) array([1. , 0.75, 0.25]) """ @@ -551,8 +552,14 @@ def auroc( >>> # (multiclass) >>> from cyclops.evaluate.metrics.functional import auroc >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2], - ... [0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2]] + >>> preds = [ + ... [0.1, 0.6, 0.3], + ... [0.05, 0.95, 0], + ... [0.5, 0.3, 0.2], + ... [0.1, 0.6, 0.3], + ... [0.05, 0.95, 0], + ... [0.5, 0.3, 0.2], + ... ] >>> auroc(target, preds, task="multiclass", num_classes=3, average=None) array([0.5, 1. , 0.5]) diff --git a/cyclops/evaluate/metrics/functional/precision_recall.py b/cyclops/evaluate/metrics/functional/precision_recall.py index f127387ce..318e416c8 100644 --- a/cyclops/evaluate/metrics/functional/precision_recall.py +++ b/cyclops/evaluate/metrics/functional/precision_recall.py @@ -399,18 +399,22 @@ def precision( >>> # (multiclass) >>> from cyclops.evaluate.metrics.functional import precision >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3], [0.2, 0.2, 0.6]] - >>> precision(target, preds, task="multiclass", num_classes=3, - ... average="macro") + >>> preds = [ + ... [0.1, 0.6, 0.3], + ... [0.05, 0.95, 0], + ... [0.1, 0.8, 0.1], + ... [0.5, 0.3, 0.2], + ... [0.2, 0.5, 0.3], + ... [0.2, 0.2, 0.6], + ... ] + >>> precision(target, preds, task="multiclass", num_classes=3, average="macro") 0.8333333333333334 >>> # (multilabel) >>> from cyclops.evaluate.metrics.functional import precision >>> target = [[0, 1], [1, 1]] >>> preds = [[0.1, 0.9], [0.2, 0.8]] - >>> precision(target, preds, task="multilabel", num_labels=2, - ... average="macro") + >>> precision(target, preds, task="multilabel", num_labels=2, average="macro") 0.5 """ @@ -565,8 +569,14 @@ def multiclass_recall( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_recall >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.4, 0.1, 0.5], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3], [0.2, 0.2, 0.6]] + >>> preds = [ + ... [0.4, 0.1, 0.5], + ... [0.1, 0.8, 0.1], + ... [0.2, 0.2, 0.6], + ... [0.5, 0.3, 0.2], + ... [0.2, 0.5, 0.3], + ... [0.2, 0.2, 0.6], + ... ] >>> multiclass_recall(target, preds, num_classes=3, average="macro") 0.8333333333333334 diff --git a/cyclops/evaluate/metrics/functional/precision_recall_curve.py b/cyclops/evaluate/metrics/functional/precision_recall_curve.py index 14eb37e73..bbe0bcc78 100644 --- a/cyclops/evaluate/metrics/functional/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/functional/precision_recall_curve.py @@ -311,13 +311,11 @@ def binary_precision_recall_curve( Examples -------- - >>> from cyclops.evaluate.metrics.functional import ( - ... binary_precision_recall_curve - ... ) + >>> from cyclops.evaluate.metrics.functional import binary_precision_recall_curve >>> target = [0, 0, 1, 1] >>> preds = [0.1, 0.4, 0.35, 0.8] - >>> precision, recall, thresholds = binary_precision_recall_curve(target, - ... preds, thresholds=5 + >>> precision, recall, thresholds = binary_precision_recall_curve( + ... target, preds, thresholds=5 ... ) >>> precision array([0.5 , 0.66666667, 1. , 1. , 0. ]) @@ -618,12 +616,13 @@ def multiclass_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.functional import ( - ... multiclass_precision_recall_curve + ... multiclass_precision_recall_curve, ... ) >>> target = [0, 1, 2, 2] >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2], [0.3, 0.4, 0.3]] - >>> precision, recall, thresholds = multiclass_precision_recall_curve(target, - ... preds, num_classes=3, thresholds=5) + >>> precision, recall, thresholds = multiclass_precision_recall_curve( + ... target, preds, num_classes=3, thresholds=5 + ... ) >>> precision array([[0.25, 0. , 0. , 0. , 0. , 1. ], [0.25, 0.25, 0.5 , 1. , 0. , 1. ], @@ -915,11 +914,13 @@ def multilabel_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.functional import ( - ... multilabel_precision_recall_curve) + ... multilabel_precision_recall_curve, + ... ) >>> target = [[1, 1, 0], [0, 1, 0]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.95, 0.35]] >>> precision, recall, thresholds = multilabel_precision_recall_curve( - ... target, preds, num_labels=3, thresholds=5) + ... target, preds, num_labels=3, thresholds=5 + ... ) >>> precision array([[0.5, 0. , 0. , 0. , 0. , 1. ], [1. , 1. , 1. , 1. , 0. , 1. ], @@ -1024,8 +1025,7 @@ def precision_recall_curve( >>> from cyclops.evaluate.metrics.functional import precision_recall_curve >>> target = [0, 0, 1, 1] >>> preds = [0.1, 0.4, 0.35, 0.8] - >>> precision, recall, thresholds = precision_recall_curve(target, preds, - ... "binary") + >>> precision, recall, thresholds = precision_recall_curve(target, preds, "binary") >>> precision array([0.5 , 0.66666667, 0.5 , 1. , 1. ]) >>> recall @@ -1038,7 +1038,8 @@ def precision_recall_curve( >>> target = [0, 1, 2, 2] >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2], [0.3, 0.4, 0.3]] >>> precision, recall, thresholds = precision_recall_curve( - ... target, preds, task="multiclass", num_classes=3) + ... target, preds, task="multiclass", num_classes=3 + ... ) >>> [prec.tolist() for prec in precision] [[0.25, 0.3333333333333333, 0.0, 0.0, 1.0], [0.25, 0.3333333333333333, 0.5, 1.0, 1.0], [0.5, 0.6666666666666666, 0.5, 1.0]] >>> [rec.tolist() for rec in recall] @@ -1050,8 +1051,9 @@ def precision_recall_curve( >>> from cyclops.evaluate.metrics.functional import precision_recall_curve >>> target = [[1, 1, 0], [0, 1, 0]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.95, 0.35]] - >>> precision, recall, thresholds = precision_recall_curve(target, preds, - ... "multilabel", num_labels=3) + >>> precision, recall, thresholds = precision_recall_curve( + ... target, preds, "multilabel", num_labels=3 + ... ) >>> precision [array([0.5, 1. , 1. ]), array([1., 1., 1.]), array([0., 0., 1.])] >>> recall diff --git a/cyclops/evaluate/metrics/functional/roc.py b/cyclops/evaluate/metrics/functional/roc.py index c61387e00..24eb1dd16 100644 --- a/cyclops/evaluate/metrics/functional/roc.py +++ b/cyclops/evaluate/metrics/functional/roc.py @@ -317,10 +317,14 @@ def multiclass_roc_curve( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_roc_curve >>> target = [1, 0, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], - ... [0.05, 0.05, 0.9], [0.9, 0.05, 0.05]] - >>> fpr, tpr, thresholds = multiclass_roc_curve(target, preds, - ... num_classes=3, thresholds=5 + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... [0.9, 0.05, 0.05], + ... ] + >>> fpr, tpr, thresholds = multiclass_roc_curve( + ... target, preds, num_classes=3, thresholds=5 ... ) >>> fpr array([[0. , 0.5 , 0.5 , 0.5 , 1. ], @@ -469,8 +473,8 @@ def multilabel_roc_curve( >>> from cyclops.evaluate.metrics.functional import multilabel_roc_curve >>> target = [[0, 1, 0], [0, 1, 1], [1, 0, 1]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.1, 0.9], [0.8, 0.2, 0.3]] - >>> fpr, tpr, thresholds = multilabel_roc_curve(target, preds, num_labels=3, - ... thresholds=5 + >>> fpr, tpr, thresholds = multilabel_roc_curve( + ... target, preds, num_labels=3, thresholds=5 ... ) >>> fpr array([[0., 0., 0., 0., 1.], @@ -586,7 +590,7 @@ def roc_curve( >>> from cyclops.evaluate.metrics.functional import roc_curve >>> target = [0, 0, 1, 1] >>> preds = [0.1, 0.4, 0.35, 0.8] - >>> fpr, tpr, thresholds = roc_curve(target, preds, task='binary') + >>> fpr, tpr, thresholds = roc_curve(target, preds, task="binary") >>> fpr array([0. , 0. , 0.5, 0.5, 1. ]) >>> tpr @@ -598,8 +602,8 @@ def roc_curve( >>> from cyclops.evaluate.metrics.functional import roc_curve >>> target = [0, 1, 2] >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.89, 0.06], [0.02, 0.03, 0.95]] - >>> fpr, tpr, thresholds = roc_curve(target, preds, task='multiclass', - ... num_classes=3 + >>> fpr, tpr, thresholds = roc_curve( + ... target, preds, task="multiclass", num_classes=3 ... ) >>> fpr [array([0. , 0. , 0.5, 1. ]), array([0. , 0. , 0.5, 1. ]), array([0. , 0. , 0.5, 1. ])] @@ -612,9 +616,7 @@ def roc_curve( >>> from cyclops.evaluate.metrics.functional import roc_curve >>> target = [[1, 1], [0, 1], [1, 0]] >>> preds = [[0.9, 0.8], [0.2, 0.7], [0.8, 0.3]] - >>> fpr, tpr, thresholds = roc_curve(target, preds, task='multilabel', - ... num_labels=2 - ... ) + >>> fpr, tpr, thresholds = roc_curve(target, preds, task="multilabel", num_labels=2) >>> fpr [array([0. , 0.5, 1. , 1. ]), array([0., 0., 0., 1.])] >>> tpr diff --git a/cyclops/evaluate/metrics/functional/sensitivity.py b/cyclops/evaluate/metrics/functional/sensitivity.py index 3dd1357f2..0ad73dc3a 100644 --- a/cyclops/evaluate/metrics/functional/sensitivity.py +++ b/cyclops/evaluate/metrics/functional/sensitivity.py @@ -115,8 +115,14 @@ def multiclass_sensitivity( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_sensitivity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.4, 0.1, 0.5], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3], [0.2, 0.2, 0.6]] + >>> preds = [ + ... [0.4, 0.1, 0.5], + ... [0.1, 0.8, 0.1], + ... [0.2, 0.2, 0.6], + ... [0.5, 0.3, 0.2], + ... [0.2, 0.5, 0.3], + ... [0.2, 0.2, 0.6], + ... ] >>> multiclass_sensitivity(target, preds, num_classes=3, average="macro") 0.8333333333333334 @@ -191,14 +197,13 @@ def multilabel_sensitivity( Examples -------- >>> from cyclops.evaluate.metrics.functional import multilabel_sensitivity - >>> target = [[1, 0, 1], - ... [0, 0, 0], - ... [0, 1, 1], - ... [1, 1, 1]] - >>> preds = [[0.75, 0.05, 0.35], - ... [0.45, 0.75, 0.05], - ... [0.05, 0.55, 0.75], - ... [0.05, 0.65, 0.05]] + >>> target = [[1, 0, 1], [0, 0, 0], [0, 1, 1], [1, 1, 1]] + >>> preds = [ + ... [0.75, 0.05, 0.35], + ... [0.45, 0.75, 0.05], + ... [0.05, 0.55, 0.75], + ... [0.05, 0.65, 0.05], + ... ] >>> multilabel_sensitivity(target, preds, num_labels=3) array([0.5 , 1. , 0.33333333]) diff --git a/cyclops/evaluate/metrics/functional/specificity.py b/cyclops/evaluate/metrics/functional/specificity.py index 046a04c81..b1f1822c7 100644 --- a/cyclops/evaluate/metrics/functional/specificity.py +++ b/cyclops/evaluate/metrics/functional/specificity.py @@ -203,8 +203,14 @@ def multiclass_specificity( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_specificity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05], [0.05, 0.05, 0.9]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... ] >>> multiclass_specificity(target, preds, num_classes=3) array([1. , 0.75, 1. ]) @@ -283,8 +289,13 @@ def multilabel_specificity( -------- >>> from cyclops.evaluate.metrics.functional import multilabel_specificity >>> target = [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> multilabel_specificity(target, preds, num_labels=3) array([0.5, 0. , 0.5]) @@ -390,16 +401,26 @@ def specificity( >>> # (multiclass) >>> from cyclops.evaluate.metrics.functional import specificity >>> target = [0, 1, 2, 0, 1] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> specificity(target, preds, task="multiclass", num_classes=3) array([1. , 0.66666667, 1. ]) >>> # (multilabel) >>> from cyclops.evaluate.metrics.functional import specificity >>> target = [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> specificity(target, preds, task="multilabel", num_labels=3) array([0.5, 0. , 0.5]) diff --git a/cyclops/evaluate/metrics/precision_recall.py b/cyclops/evaluate/metrics/precision_recall.py index 77ed43621..6de0f33c4 100644 --- a/cyclops/evaluate/metrics/precision_recall.py +++ b/cyclops/evaluate/metrics/precision_recall.py @@ -111,14 +111,8 @@ class MulticlassPrecision(MulticlassStatScores, registry_key="multiclass_precisi >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -194,10 +188,7 @@ class MultilabelPrecision(MultilabelStatScores, registry_key="multilabel_precisi array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -307,14 +298,8 @@ class Precision(Metric, registry_key="precision", force_register=True): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -331,10 +316,7 @@ class Precision(Metric, registry_key="precision", force_register=True): array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -484,14 +466,8 @@ class MulticlassRecall(MulticlassStatScores, registry_key="multiclass_recall"): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -562,8 +538,10 @@ class MultilabelRecall(MultilabelStatScores, registry_key="multilabel_recall"): array([0., 1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 0, 1], [0, 0, 1, 1]], [[0, 1, 0, 1], [0, 0, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], - ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]]] + >>> preds = [ + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -670,14 +648,8 @@ class Recall(Metric, registry_key="recall", force_register=True): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -693,10 +665,7 @@ class Recall(Metric, registry_key="recall", force_register=True): array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/precision_recall_curve.py b/cyclops/evaluate/metrics/precision_recall_curve.py index a93a4114a..64bf08833 100644 --- a/cyclops/evaluate/metrics/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/precision_recall_curve.py @@ -178,8 +178,7 @@ class MulticlassPrecisionRecallCurve( -------- >>> from cyclops.evaluate.metrics import MulticlassPrecisionRecallCurve >>> target = [0, 1, 2, 0] - >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0.], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]] + >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0.0], [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]] >>> metric = MulticlassPrecisionRecallCurve(num_classes=3, thresholds=3) >>> metric(target, preds) (array([[0.5 , 0. , 0. , 1. ], @@ -190,7 +189,7 @@ class MulticlassPrecisionRecallCurve( >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [1, 2, 0, 1]] >>> preds = [ - ... [[0.1, 0.6, 0.3], [0.05, 0.95, 0.], [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]], + ... [[0.1, 0.6, 0.3], [0.05, 0.95, 0.0], [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]], ... [[0.3, 0.2, 0.5], [0.1, 0.7, 0.2], [0.6, 0.1, 0.3], [0.1, 0.8, 0.1]], ... ] >>> for t, p in zip(target, preds): @@ -516,10 +515,8 @@ class PrecisionRecallCurve( >>> # (multiclass) >>> from cyclops.evaluate.metrics import PrecisionRecallCurve >>> target = [0, 1, 2, 2] - >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]] - >>> metric = PrecisionRecallCurve(task="multiclass", num_classes=3, - ... thresholds=3) + >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]] + >>> metric = PrecisionRecallCurve(task="multiclass", num_classes=3, thresholds=3) >>> metric(target, preds) (array([[0.25, 0. , 0. , 1. ], [0.25, 0.5 , 0. , 1. ], @@ -528,10 +525,10 @@ class PrecisionRecallCurve( [1., 1., 0., 0.]]), array([0. , 0.5, 1. ])) >>> metric.reset_state() >>> target = [[0, 1, 2, 2], [1, 2, 0, 1]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]], - ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]], + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -545,16 +542,14 @@ class PrecisionRecallCurve( >>> from cyclops.evaluate.metrics import PrecisionRecallCurve >>> target = [[0, 1], [1, 0]] >>> preds = [[0.1, 0.9], [0.8, 0.2]] - >>> metric = PrecisionRecallCurve(task="multilabel", num_labels=2, - ... thresholds=3) + >>> metric = PrecisionRecallCurve(task="multilabel", num_labels=2, thresholds=3) >>> metric(target, preds) (array([[0.5, 1. , 0. , 1. ], [0.5, 1. , 0. , 1. ]]), array([[1., 1., 0., 0.], [1., 1., 0., 0.]]), array([0. , 0.5, 1. ])) >>> metric.reset_state() >>> target = [[[0, 1], [1, 0]], [[1, 0], [0, 1]]] - >>> preds = [[[0.1, 0.9], [0.8, 0.2]], - ... [[0.1, 0.9], [0.8, 0.2]]] + >>> preds = [[[0.1, 0.9], [0.8, 0.2]], [[0.1, 0.9], [0.8, 0.2]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/roc.py b/cyclops/evaluate/metrics/roc.py index c11416ee9..1b2774c8b 100644 --- a/cyclops/evaluate/metrics/roc.py +++ b/cyclops/evaluate/metrics/roc.py @@ -98,8 +98,7 @@ class MulticlassROCCurve( -------- >>> from cyclops.evaluate.metrics import MulticlassROCCurve >>> target = [0, 1, 2, 0] - >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.9, 0.1, 0]] + >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.9, 0.1, 0]] >>> metric = MulticlassROCCurve(num_classes=3, thresholds=4) >>> metric(target, preds) (array([[0. , 0. , 0. , 1. ], @@ -109,10 +108,10 @@ class MulticlassROCCurve( [0. , 0. , 1. , 1. ]]), array([1. , 0.66666667, 0.33333333, 0. ])) >>> metric.reset_state() >>> target = [[1, 1, 0, 0], [0, 0, 1, 1]] - >>> preds = [[[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], - ... [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]], - ... [[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], - ... [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]]] + >>> preds = [ + ... [[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]], + ... [[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -183,8 +182,7 @@ class MultilabelROCCurve( [0., 0., 0., 0.]]), array([1. , 0.66666667, 0.33333333, 0. ])) >>> metric.reset_state() >>> target = [[[1, 1, 0], [0, 1, 0]], [[1, 1, 0], [0, 1, 0]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], - ... [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -305,8 +303,7 @@ class ROCCurve(Metric, registry_key="roc_curve", force_register=True): [0., 0., 0., 0.]]), array([1. , 0.66666667, 0.33333333, 0. ])) >>> metric.reset_state() >>> target = [[[1, 1, 0], [0, 1, 0]], [[1, 1, 0], [0, 1, 0]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], - ... [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/sensitivity.py b/cyclops/evaluate/metrics/sensitivity.py index b58ed0837..5ea9ab5df 100644 --- a/cyclops/evaluate/metrics/sensitivity.py +++ b/cyclops/evaluate/metrics/sensitivity.py @@ -95,14 +95,8 @@ class MulticlassSensitivity(MulticlassRecall, registry_key="multiclass_sensitivi >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -164,8 +158,10 @@ class MultilabelSensitivity(MultilabelRecall, registry_key="multilabel_sensitivi array([0., 1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 0, 1], [0, 0, 1, 1]], [[0, 1, 0, 1], [0, 0, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], - ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]]] + >>> preds = [ + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -260,14 +256,8 @@ class Sensitivity(Metric, registry_key="sensitivity", force_register=True): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -283,10 +273,7 @@ class Sensitivity(Metric, registry_key="sensitivity", force_register=True): array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/specificity.py b/cyclops/evaluate/metrics/specificity.py index b2745e32b..e8efabca5 100644 --- a/cyclops/evaluate/metrics/specificity.py +++ b/cyclops/evaluate/metrics/specificity.py @@ -107,8 +107,14 @@ class MulticlassSpecificity( -------- >>> from cyclops.evaluate.metrics import MulticlassSpecificity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05], [0.05, 0.05, 0.9]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... ] >>> metric = MulticlassSpecificity(num_classes=3) >>> metric(target, preds) array([1. , 0.75, 1. ]) @@ -186,16 +192,25 @@ class MultilabelSpecificity( -------- >>> from cyclops.evaluate.metrics import MultilabelSpecificity >>> target = [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> metric = MultilabelSpecificity(num_labels=3) >>> metric(target, preds) array([0.5, 0. , 0.5]) >>> metric.reset_state() - >>> target = [[[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]], - ... [[1, 0, 1], [0, 1, 0], [1, 1, 0], [0, 0, 1], [1, 0, 0]]] - >>> preds = [[[1, 0, 0], [0, 1, 0], [0, 1, 1], [0, 0, 1], [1, 0, 0]], - ... [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]]] + >>> target = [ + ... [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]], + ... [[1, 0, 1], [0, 1, 0], [1, 1, 0], [0, 0, 1], [1, 0, 0]], + ... ] + >>> preds = [ + ... [[1, 0, 0], [0, 1, 0], [0, 1, 1], [0, 0, 1], [1, 0, 0]], + ... [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -297,15 +312,23 @@ class Specificity(Metric, registry_key="specificity", force_register=True): >>> # (multiclass) >>> from cyclops.evaluate.metrics import Specificity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05], [0.05, 0.05, 0.9]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... ] >>> metric = Specificity(task="multiclass", num_classes=3) >>> metric(target, preds) array([1. , 0.75, 1. ]) >>> metric.reset_state() >>> target = [[0, 1, 1], [1, 2, 1]] - >>> preds = [[[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75]], - ... [[0.35, 0.5, 0.15], [0.25, 0.5, 0.25], [0.5, 0.05, 0.45]]] + >>> preds = [ + ... [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75]], + ... [[0.35, 0.5, 0.15], [0.25, 0.5, 0.25], [0.5, 0.05, 0.45]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/stat_scores.py b/cyclops/evaluate/metrics/stat_scores.py index f39180082..1b3fee8e9 100644 --- a/cyclops/evaluate/metrics/stat_scores.py +++ b/cyclops/evaluate/metrics/stat_scores.py @@ -206,10 +206,12 @@ class MulticlassStatScores(_AbstractScores, registry_key="multiclass_stat_scores array([[1, 0, 2, 1, 2], [1, 1, 2, 0, 1], [1, 0, 3, 0, 1]]) - >>> preds = [[0.16, 0.26, 0.58], - ... [0.22, 0.61, 0.17], - ... [0.71, 0.09, 0.20], - ... [0.05, 0.82, 0.13]] + >>> preds = [ + ... [0.16, 0.26, 0.58], + ... [0.22, 0.61, 0.17], + ... [0.71, 0.09, 0.20], + ... [0.05, 0.82, 0.13], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() @@ -300,8 +302,7 @@ class MultilabelStatScores(_AbstractScores, registry_key="multilabel_stat_scores [2, 0, 0, 0, 2]]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 1]], [[0, 0, 1], [1, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], - ... [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() @@ -428,21 +429,21 @@ class StatScores(Metric, registry_key="stat_scores", force_register=True): >>> metric.reset_state() >>> target = [[2, 0, 2, 2, 1], [1, 1, 0, 2, 2]] >>> preds = [ - ... [ - ... [0.1, 0.2, 0.7], - ... [0.7, 0.1, 0.2], - ... [0.2, 0.7, 0.1], - ... [0.2, 0.7, 0.1], - ... [0.7, 0.2, 0.1], - ... ], - ... [ - ... [0.05, 0.15, 0.8], - ... [0.15, 0.05, 0.8], - ... [0.8, 0.15, 0.05], - ... [0.25, 0.7, 0.05], - ... [0.15, 0.7, 0.15], - ... ], - ... ] + ... [ + ... [0.1, 0.2, 0.7], + ... [0.7, 0.1, 0.2], + ... [0.2, 0.7, 0.1], + ... [0.2, 0.7, 0.1], + ... [0.7, 0.2, 0.1], + ... ], + ... [ + ... [0.05, 0.15, 0.8], + ... [0.15, 0.05, 0.8], + ... [0.8, 0.15, 0.05], + ... [0.25, 0.7, 0.05], + ... [0.15, 0.7, 0.15], + ... ], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() @@ -461,8 +462,7 @@ class StatScores(Metric, registry_key="stat_scores", force_register=True): [2, 0, 0, 0, 2]]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 1]], [[0, 0, 1], [1, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], - ... [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() diff --git a/cyclops/models/wrappers/pt_model.py b/cyclops/models/wrappers/pt_model.py index eb9804f96..14bc15308 100644 --- a/cyclops/models/wrappers/pt_model.py +++ b/cyclops/models/wrappers/pt_model.py @@ -1303,15 +1303,11 @@ def save_model(self, filepath: str, overwrite: bool = True, **kwargs): include_optimizer = kwargs.get("include_optimizer", True) if include_optimizer: - state_dict[ - "optimizer" - ] = self.optimizer_.state_dict() # type: ignore[attr-defined] + state_dict["optimizer"] = self.optimizer_.state_dict() # type: ignore[attr-defined] include_lr_scheduler = kwargs.get("include_lr_scheduler", True) if include_lr_scheduler: - state_dict[ - "lr_scheduler" - ] = self.lr_scheduler_.state_dict() # type: ignore[attr-defined] + state_dict["lr_scheduler"] = self.lr_scheduler_.state_dict() # type: ignore[attr-defined] epoch = kwargs.get("epoch", None) if epoch is not None: diff --git a/cyclops/report/report.py b/cyclops/report/report.py index 051c156f6..a20f39bca 100644 --- a/cyclops/report/report.py +++ b/cyclops/report/report.py @@ -667,9 +667,9 @@ def log_dataset( """ # sensitive features must be in features - if features is None and sensitive_features is not None: + if features is not None and sensitive_features is not None: assert all( - feature in features for feature in sensitive_features # type: ignore + feature in features for feature in sensitive_features ), "All sensitive features must be in the features list." # TODO: plot dataset distribution diff --git a/cyclops/tasks/utils.py b/cyclops/tasks/utils.py index 4f161ef18..cb442e0bb 100644 --- a/cyclops/tasks/utils.py +++ b/cyclops/tasks/utils.py @@ -108,9 +108,7 @@ def prepare_models( models_dict = {model_name: models} # models contains one model name elif isinstance(models, str): - assert ( - models in list_models() - ), f"Model name is not registered! \ + assert models in list_models(), f"Model name is not registered! \ Available models are: {list_models()}" models_dict = {models: create_model(models)} # models contains a list or tuple of model names or wrapped models @@ -120,9 +118,7 @@ def prepare_models( model_name = _model_names_mapping.get(model.model.__name__) models_dict[model_name] = model elif isinstance(model, str): - assert ( - model in list_models() - ), f"Model name is not registered! \ + assert model in list_models(), f"Model name is not registered! \ Available models are: {list_models()}" models_dict[model] = create_model(model) else: diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst index 5de74254b..95ba77181 100644 --- a/docs/source/contributing.rst +++ b/docs/source/contributing.rst @@ -19,8 +19,8 @@ hooks using: Coding guidelines ----------------- -For code style, we recommend the `google style -guide `__. +For code style, we recommend the `PEP 8 style +guide `__. For docstrings we use `numpy format `__. diff --git a/poetry.lock b/poetry.lock index b43c1ee66..54c49ac3f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -9108,4 +9108,4 @@ xgboost = ["xgboost"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "7c84fb05d57be10c95cdb18feba23a38440370406ac100793c5585d4730e277f" +content-hash = "15da0dfaa91408cc1ba11b1f846797215423b085899e817bf7e99287933a29cf" diff --git a/pyproject.toml b/pyproject.toml index 788f4576e..18e19264a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,7 +94,6 @@ optional = true [tool.poetry.group.test.dependencies] pytest = "^7.1.1" pre-commit = "^2.17.0" -black = "^22.1.0" pytest-cov = "^3.0.0" codecov = "^2.1.13" nbstripout = "^0.6.1" @@ -188,6 +187,12 @@ exclude = [ "use_cases", "nbs", ] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" +docstring-code-format = true + [tool.ruff.lint] select = [ "A", # flake8-builtins @@ -216,6 +221,7 @@ ignore = [ "D213", # Multi-line docstring summary should start at the second line "PLR2004", # Replace magic number with named constant "PLR0913", # Too many arguments + "COM812", # Missing trailing comma ] # Ignore import violations in all `__init__.py` files. diff --git a/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py b/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py index 672c4f5e8..9c0fc2fb1 100644 --- a/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py +++ b/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py @@ -38,7 +38,10 @@ def _test_mpi4py_class_init(rank: int, worldsize: int = NUM_PROCESSES): @pytest.mark.integration_test() def test_mpi4py_backend_class_init(): """Test `TorchDistributed` class.""" - pytest.mpi_pool.starmap(_test_mpi4py_class_init, [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)]) # type: ignore + pytest.mpi_pool.starmap( + _test_mpi4py_class_init, + [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)], + ) # type: ignore def _test_all_gather_simple(rank: int, worldsize: int = NUM_PROCESSES): @@ -89,7 +92,10 @@ def _test_all_gather_uneven_multidim_arrays(rank: int, worldsize: int = NUM_PROC ) def test_mpi4py_all_gather(case_fn): """Test `all_gather` method.""" - pytest.mpi_pool.starmap(case_fn, [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)]) # type: ignore + pytest.mpi_pool.starmap( + case_fn, + [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)], + ) # type: ignore def _test_dist_sum(rank: int, worldsize: int = NUM_PROCESSES) -> None: From 9713c14876aae9349f4c1c4565600ef93da1d0aa Mon Sep 17 00:00:00 2001 From: Amrit Krishnan Date: Mon, 19 Feb 2024 13:34:43 -0500 Subject: [PATCH 4/5] Update github actions to latest release versions (#556) --- .github/workflows/code_checks.yml | 4 ++-- .github/workflows/docker.yml | 2 +- .github/workflows/docs_build.yml | 8 ++++---- .github/workflows/docs_deploy.yml | 12 ++++++------ .github/workflows/integration_tests.yml | 8 ++++---- .github/workflows/package.yml | 4 ++-- .github/workflows/publish.yml | 4 ++-- pyproject.toml | 1 - 8 files changed, 21 insertions(+), 22 deletions(-) diff --git a/.github/workflows/code_checks.yml b/.github/workflows/code_checks.yml index e26b716ff..0cf2a725c 100644 --- a/.github/workflows/code_checks.yml +++ b/.github/workflows/code_checks.yml @@ -26,10 +26,10 @@ jobs: run-code-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.1.1 - name: Install poetry run: python3 -m pip install --upgrade pip && python3 -m pip install poetry - - uses: actions/setup-python@v4.7.1 + - uses: actions/setup-python@v5.0.0 with: python-version: '3.10' cache: 'poetry' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9ccb924af..01cdbe1cb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4.1.1 - name: Log in to Docker Hub uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml index 006a39112..0977d97b3 100644 --- a/.github/workflows/docs_build.yml +++ b/.github/workflows/docs_build.yml @@ -25,7 +25,7 @@ jobs: submodules: 'true' - name: Install dependencies, build docs and coverage report run: python3 -m pip install --upgrade pip && python3 -m pip install poetry - - uses: actions/setup-python@v4.7.1 + - uses: actions/setup-python@v5.0.0 with: python-version: '3.10' cache: 'poetry' @@ -41,9 +41,9 @@ jobs: cd docs && rm -rf source/reference/api/_autosummary && make html cd .. && coverage run -m pytest -m "not integration_test" && coverage xml && coverage report -m - name: Upload coverage to Codecov - uses: Wandalen/wretry.action@v1.0.36 + uses: Wandalen/wretry.action@v1.4.4 with: - action: codecov/codecov-action@v3.1.3 + action: codecov/codecov-action@v4.0.1 with: | token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.xml @@ -51,7 +51,7 @@ jobs: fail_ci_if_error: true attempt_limit: 5 attempt_delay: 30000 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4.0.2 with: node-version: 18 cache: yarn diff --git a/.github/workflows/docs_deploy.yml b/.github/workflows/docs_deploy.yml index 36c72e725..d975ba02c 100644 --- a/.github/workflows/docs_deploy.yml +++ b/.github/workflows/docs_deploy.yml @@ -23,12 +23,12 @@ jobs: deploy: runs-on: [self-hosted, db, gpu] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.1.1 with: submodules: 'true' - name: Install dependencies, build docs and coverage report run: python3 -m pip install --upgrade pip && python3 -m pip install poetry - - uses: actions/setup-python@v4.7.1 + - uses: actions/setup-python@v5.0.0 with: python-version: '3.10' cache: 'poetry' @@ -43,9 +43,9 @@ jobs: cd docs && rm -rf source/reference/api/_autosummary && make html cd .. && coverage run -m pytest -m "not integration_test" && coverage xml && coverage report -m - name: Upload coverage to Codecov - uses: Wandalen/wretry.action@v1.0.36 + uses: Wandalen/wretry.action@v1.4.4 with: - action: codecov/codecov-action@v3.1.3 + action: codecov/codecov-action@v4.0.1 with: | token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.xml @@ -53,7 +53,7 @@ jobs: fail_ci_if_error: true attempt_limit: 5 attempt_delay: 30000 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4.0.2 with: node-version: 18 cache: yarn @@ -65,7 +65,7 @@ jobs: yarn build cp -r ../build/html build/api - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v3.9.3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_branch: github_pages diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 97b521c20..f144ee275 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -38,10 +38,10 @@ jobs: integration-tests: runs-on: [self-hosted, gpu, db] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.1.1 - name: Install poetry run: pip install poetry - - uses: actions/setup-python@v4.7.1 + - uses: actions/setup-python@v5.0.0 with: python-version: '3.10' - name: Install dependencies and check code @@ -54,9 +54,9 @@ jobs: env MPICC=/opt/openmpi-4.1.5/bin/mpicc poetry install --with docs,dev,test --all-extras coverage run -m pytest -m integration_test && coverage xml && coverage report -m - name: Upload coverage to Codecov - uses: Wandalen/wretry.action@v1.0.36 + uses: Wandalen/wretry.action@v1.4.4 with: - action: codecov/codecov-action@v3.1.3 + action: codecov/codecov-action@v4.0.1 with: | token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.xml diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index ae32ce3df..3644de004 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -26,10 +26,10 @@ jobs: base-package-install-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.1.1 - name: Install pip run: python3 -m pip install --upgrade pip - - uses: actions/setup-python@v4.7.1 + - uses: actions/setup-python@v5.0.0 with: python-version: '3.10' - name: Install package and test import diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d169cbbdb..3c6686987 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,10 +12,10 @@ jobs: run: | sudo apt-get update sudo apt-get install libcurl4-openssl-dev libssl-dev - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.1.1 - name: Install poetry run: python3 -m pip install --upgrade pip && python3 -m pip install poetry - - uses: actions/setup-python@v4.7.1 + - uses: actions/setup-python@v5.0.0 with: python-version: '3.10' - name: Build package diff --git a/pyproject.toml b/pyproject.toml index 18e19264a..b4f404122 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -184,7 +184,6 @@ extra_checks = true include = ["*.py", "pyproject.toml", "*.ipynb"] line-length = 88 exclude = [ - "use_cases", "nbs", ] From 087e6f8137adca6e6e8e9b71278dcdc98317d053 Mon Sep 17 00:00:00 2001 From: Amrit Krishnan Date: Mon, 19 Feb 2024 15:19:55 -0500 Subject: [PATCH 5/5] Small fix to docs deploy poetry install, update contrib md (#557) * Small fix to docs deploy poetry install, update contrib md * Remove 'the' added by mistake --- .github/workflows/docs_build.yml | 1 - .github/workflows/docs_deploy.yml | 3 +-- CONTRIBUTING.md | 13 ++++--------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml index 0977d97b3..2fcf92148 100644 --- a/.github/workflows/docs_build.yml +++ b/.github/workflows/docs_build.yml @@ -37,7 +37,6 @@ jobs: poetry env use '3.10' source $(poetry env info --path)/bin/activate env MPICC=/opt/openmpi-4.1.5/bin/mpicc poetry install --with docs,dev,test --all-extras - # pandoc README.md -f markdown -t rst -s -o docs/source/intro.rst cd docs && rm -rf source/reference/api/_autosummary && make html cd .. && coverage run -m pytest -m "not integration_test" && coverage xml && coverage report -m - name: Upload coverage to Codecov diff --git a/.github/workflows/docs_deploy.yml b/.github/workflows/docs_deploy.yml index d975ba02c..e93635dbb 100644 --- a/.github/workflows/docs_deploy.yml +++ b/.github/workflows/docs_deploy.yml @@ -38,8 +38,7 @@ jobs: ompi_info poetry env use '3.10' source $(poetry env info --path)/bin/activate - env MPICC=/opt/openmpi-4.1.5/bin/mpicc poetry install --with test,dev --all-extras - # pandoc README.md -f markdown -t rst -s -o docs/source/intro.rst + env MPICC=/opt/openmpi-4.1.5/bin/mpicc poetry install --with docs,test,dev --all-extras cd docs && rm -rf source/reference/api/_autosummary && make html cd .. && coverage run -m pytest -m "not integration_test" && coverage xml && coverage report -m - name: Upload coverage to Codecov diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2292f569b..5e27a2db8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,17 +15,12 @@ pre-commit run --all-files ## Coding guidelines -For code style, we recommend the [google style guide](https://google.github.io/styleguide/pyguide.html). - -Pre-commit hooks apply the [black](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html) -code formatting. +For code style, we recommend the [PEP 8 style guide](https://peps.python.org/pep-0008/). For docstrings we use [numpy format](https://numpydoc.readthedocs.io/en/latest/format.html). -We also use [flake8](https://flake8.pycqa.org/en/latest/) and [pylint](https://pylint.pycqa.org/en/stable/) -for further static code analysis. The pre-commit hooks show errors which you need -to fix before submitting a PR. +We use [ruff](https://docs.astral.sh/ruff/) for code formatting and static code +analysis. Ruff checks various rules including [flake8](https://docs.astral.sh/ruff/faq/#how-does-ruff-compare-to-flake8). The pre-commit hooks show errors which you need to fix before submitting a PR. Last but not the least, we use type hints in our code which is then checked using -[mypy](https://mypy.readthedocs.io/en/stable/). Currently, mypy checks are not -strict, but will be enforced more as the API code becomes more stable. +[mypy](https://mypy.readthedocs.io/en/stable/).