From 1d705951220640e2d69e1d0731fb1d29bfe1e102 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Fri, 8 May 2026 10:17:18 +0200 Subject: [PATCH 01/21] adding model hub as feature --- .../torch/model_hub/backends/__init__.py | 8 ++ src/itwinai/torch/model_hub/backends/base.py | 6 ++ .../torch/model_hub/backends/itwinai_hub.py | 13 +++ src/itwinai/torch/model_hub/feature.py | 44 +++++++++ src/itwinai/torch/model_hub/manifest.py | 94 +++++++++++++++++++ src/itwinai/torch/trainer.py | 7 ++ 6 files changed, 172 insertions(+) create mode 100644 src/itwinai/torch/model_hub/backends/__init__.py create mode 100644 src/itwinai/torch/model_hub/backends/base.py create mode 100644 src/itwinai/torch/model_hub/backends/itwinai_hub.py create mode 100644 src/itwinai/torch/model_hub/feature.py create mode 100644 src/itwinai/torch/model_hub/manifest.py diff --git a/src/itwinai/torch/model_hub/backends/__init__.py b/src/itwinai/torch/model_hub/backends/__init__.py new file mode 100644 index 000000000..33ff3efe2 --- /dev/null +++ b/src/itwinai/torch/model_hub/backends/__init__.py @@ -0,0 +1,8 @@ +from .itwinai_hub import AIModelHubBackend + + +def get_backend(name: str, config: dict): + if name == "ai-model-hub": + return AIModelHubBackend(config) + else: + raise ValueError(f"Unknown backend: {name}") diff --git a/src/itwinai/torch/model_hub/backends/base.py b/src/itwinai/torch/model_hub/backends/base.py new file mode 100644 index 000000000..b41c4508f --- /dev/null +++ b/src/itwinai/torch/model_hub/backends/base.py @@ -0,0 +1,6 @@ +class BaseBackend: + def __init__(self, config: dict): + self.config = config + + def upload(self, model_dir): + raise NotImplementedError diff --git a/src/itwinai/torch/model_hub/backends/itwinai_hub.py b/src/itwinai/torch/model_hub/backends/itwinai_hub.py new file mode 100644 index 000000000..6d600fa71 --- /dev/null +++ b/src/itwinai/torch/model_hub/backends/itwinai_hub.py @@ -0,0 +1,13 @@ +import subprocess +from pathlib import Path + +from .base import BaseBackend + + +# TODO: Can be extended to add other backends, e.g. HuggingFace +class AIModelHubBackend(BaseBackend): + def upload(self, model_dir: Path): + subprocess.run( + ["itwinai", "upload-model-to-hub", str(model_dir)], + check=False, + ) diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py new file mode 100644 index 000000000..4974820c8 --- /dev/null +++ b/src/itwinai/torch/model_hub/feature.py @@ -0,0 +1,44 @@ +from pathlib import Path + +from itwinai.torch.model_hub.manifest import write_manifest, write_metadata +from itwinai.torch.model_hub.backends import get_backend + + +class ModelHubFeature: + def __init__(self, config: dict): + self.config = config or {} + self.enabled = self.config.get("enabled", False) + + backend_name = self.config.get("backend", "itwinai") + self.backend = get_backend(backend_name, self.config) + + def on_checkpoint_saved(self, trainer, ckpt_dir): + ckpt_dir = Path(ckpt_dir) + + # prepare directory + write_manifest(ckpt_dir, self.config) + write_metadata(ckpt_dir, trainer.config) + + # upload type + mode = self.config.get("mode", "deferred") + + if mode == "online": + self.backend.upload(ckpt_dir) + + elif mode == "auto": + if self._has_internet(): + self.backend.upload(ckpt_dir) + else: + print(f"Model Hub config ready in: {ckpt_dir}") + + elif mode == "deferred": + print(f"Model Hub can be run in: {ckpt_dir}") + + def _has_internet(self, timeout=3.0): + import socket + + try: + socket.create_connection(("8.8.8.8", 53), timeout=timeout) + return True + except OSError: + return False diff --git a/src/itwinai/torch/model_hub/manifest.py b/src/itwinai/torch/model_hub/manifest.py new file mode 100644 index 000000000..c3a821d25 --- /dev/null +++ b/src/itwinai/torch/model_hub/manifest.py @@ -0,0 +1,94 @@ +from __future__ import annotations + +from datetime import datetime +from typing import Any, Dict + +import yaml +from pathlib import Path + + +def build_manifest(config: Dict[str, Any]) -> Dict[str, Any]: + """Build a manifest dictionary following the Model Hub schema.""" + + # Ensure required fields exist + name = config.get("name") + model_id = config.get("id") + + if not name or not model_id: + raise ValueError("Model Hub config must contain at least 'name' and 'id'.") + + manifest = { + "authors": [ + { + "name": config.get("author_name", ""), + "affiliation": config.get("author_affiliation", ""), + "github_user": config.get("github_user", ""), + } + ], + "covers": [], + "description": config.get("description", ""), + "documentation": config.get("documentation", "README.md"), + "format_version": "0.1.0", + "git_repo": config.get("git_repo", ""), + "id": model_id, + "license": config.get("license", "MIT"), + "links": config.get("links", []), + "maintainers": config.get("maintainers", []), + "name": name, + "tags": config.get("tags", []), + "type": config.get("type", "torch"), + "version": config.get("version", "0.0.1"), + } + + return manifest + + +def write_manifest( + ckpt_dir: Path, + config: Dict[str, Any], + overwrite: bool = False, +) -> Path: + """Create manifest.yaml inside checkpoint directory.""" + + manifest_path = ckpt_dir / "manifest.yaml" + + if manifest_path.exists() and not overwrite: + return manifest_path + + manifest = build_manifest(config) + + with open(manifest_path, "w") as f: + yaml.safe_dump(manifest, f, sort_keys=False) + + return manifest_path + + +def write_metadata( + ckpt_dir: Path, + trainer_config: Any, + overwrite: bool = False, +) -> Path: + """Optional metadata.json for additional info.""" + + import json + + metadata_path = ckpt_dir / "metadata.json" + + if metadata_path.exists() and not overwrite: + return metadata_path + + if hasattr(trainer_config, "to_dict"): + cfg = trainer_config.to_dict() + else: + cfg = str(trainer_config) + + metadata = { + "framework": "pytorch", + "created_at": datetime.utcnow().isoformat(), + "training_config": cfg, + } + + with open(metadata_path, "w") as f: + json.dump(metadata, f, indent=2) + + return metadata_path diff --git a/src/itwinai/torch/trainer.py b/src/itwinai/torch/trainer.py index 928aa9e6d..6c0ea619f 100644 --- a/src/itwinai/torch/trainer.py +++ b/src/itwinai/torch/trainer.py @@ -40,6 +40,7 @@ from torchmetrics import Metric from tqdm import tqdm +from itwinai.torch.model_hub.feature import ModelHubFeature from itwinai.torch.monitoring.monitoring import measure_gpu_utilization from itwinai.torch.profiling.profiler import profile_torch_trainer @@ -301,6 +302,8 @@ def __init__( self.run_name = run_name + self._model_hub = ModelHubFeature(getattr(self.config, "model_hub", {})) + @property def strategy(self) -> TorchDistributedStrategy: """Strategy currently in use.""" @@ -619,6 +622,10 @@ def save_checkpoint( with config_path.open("w") as f: yaml.safe_dump(self.config.model_dump(), f) + # Upload model to Model Hub if enabled + if self._model_hub.enabled: + self._model_hub.on_checkpoint_saved(self, ckpt_dir) + # Log each file with an appropriate identifier self.log(str(state_path), f"{name}_state", kind="artifact") self.log(str(model_path), f"{name}_model", kind="artifact") From 80663cb491ad72380bab5aaa7a0d389811730380 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Fri, 8 May 2026 13:34:41 +0200 Subject: [PATCH 02/21] fix linting errors --- src/itwinai/torch/model_hub/feature.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py index 4974820c8..026af4d3f 100644 --- a/src/itwinai/torch/model_hub/feature.py +++ b/src/itwinai/torch/model_hub/feature.py @@ -1,7 +1,7 @@ from pathlib import Path -from itwinai.torch.model_hub.manifest import write_manifest, write_metadata from itwinai.torch.model_hub.backends import get_backend +from itwinai.torch.model_hub.manifest import write_manifest, write_metadata class ModelHubFeature: From 77c8919f2c8a2c05d65ad5d05c2082bfda5a5ec6 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Thu, 2 Jul 2026 14:35:24 +0200 Subject: [PATCH 03/21] editing build of manifest --- src/itwinai/torch/model_hub/feature.py | 1 - src/itwinai/torch/model_hub/manifest.py | 105 ++++++++---------------- 2 files changed, 36 insertions(+), 70 deletions(-) diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py index 026af4d3f..adb4c6032 100644 --- a/src/itwinai/torch/model_hub/feature.py +++ b/src/itwinai/torch/model_hub/feature.py @@ -17,7 +17,6 @@ def on_checkpoint_saved(self, trainer, ckpt_dir): # prepare directory write_manifest(ckpt_dir, self.config) - write_metadata(ckpt_dir, trainer.config) # upload type mode = self.config.get("mode", "deferred") diff --git a/src/itwinai/torch/model_hub/manifest.py b/src/itwinai/torch/model_hub/manifest.py index c3a821d25..579b7bdfc 100644 --- a/src/itwinai/torch/model_hub/manifest.py +++ b/src/itwinai/torch/model_hub/manifest.py @@ -1,94 +1,61 @@ from __future__ import annotations from datetime import datetime -from typing import Any, Dict - -import yaml from pathlib import Path +from typing import Any +import yaml -def build_manifest(config: Dict[str, Any]) -> Dict[str, Any]: - """Build a manifest dictionary following the Model Hub schema.""" - - # Ensure required fields exist - name = config.get("name") - model_id = config.get("id") - - if not name or not model_id: - raise ValueError("Model Hub config must contain at least 'name' and 'id'.") - - manifest = { - "authors": [ - { - "name": config.get("author_name", ""), - "affiliation": config.get("author_affiliation", ""), - "github_user": config.get("github_user", ""), - } - ], - "covers": [], - "description": config.get("description", ""), - "documentation": config.get("documentation", "README.md"), - "format_version": "0.1.0", - "git_repo": config.get("git_repo", ""), - "id": model_id, - "license": config.get("license", "MIT"), - "links": config.get("links", []), - "maintainers": config.get("maintainers", []), - "name": name, - "tags": config.get("tags", []), - "type": config.get("type", "torch"), - "version": config.get("version", "0.0.1"), - } - return manifest +DEFAULT_MANIFEST = { + "format_version": "0.1.0", + "published": "true", + "documentation": "README.md", + "license": "MIT", + "git_repo": "", + "covers": [], + "links": [], + "maintainers": [], + "tags": [], + "authors": [], + "type": "torch", + "version": "0.0.1", +} def write_manifest( ckpt_dir: Path, - config: Dict[str, Any], + model_hub_config: dict[str, Any], overwrite: bool = False, ) -> Path: - """Create manifest.yaml inside checkpoint directory.""" + """Create a Model Hub manifest.yaml inside the checkpoint directory.""" manifest_path = ckpt_dir / "manifest.yaml" if manifest_path.exists() and not overwrite: return manifest_path - manifest = build_manifest(config) - - with open(manifest_path, "w") as f: - yaml.safe_dump(manifest, f, sort_keys=False) - - return manifest_path - + # Set default values + manifest = DEFAULT_MANIFEST.copy() -def write_metadata( - ckpt_dir: Path, - trainer_config: Any, - overwrite: bool = False, -) -> Path: - """Optional metadata.json for additional info.""" + # Include user-defined fields + user_manifest = model_hub_config.get("manifest", {}) + manifest.update(user_manifest) - import json + # Validate required fields + required_fields = ("id", "name") - metadata_path = ckpt_dir / "metadata.json" + missing = [field for field in required_fields if not manifest.get(field)] - if metadata_path.exists() and not overwrite: - return metadata_path + if missing: + raise ValueError("Missing required Model Hub manifest fields: " + ", ".join(missing)) - if hasattr(trainer_config, "to_dict"): - cfg = trainer_config.to_dict() - else: - cfg = str(trainer_config) - - metadata = { - "framework": "pytorch", - "created_at": datetime.utcnow().isoformat(), - "training_config": cfg, - } - - with open(metadata_path, "w") as f: - json.dump(metadata, f, indent=2) + with open(manifest_path, "w") as f: + yaml.safe_dump( + manifest, + f, + sort_keys=False, + default_flow_style=False, + ) - return metadata_path + return manifest_path From 16344fa9a90e812813eac494a204505124c8dda0 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Thu, 2 Jul 2026 14:41:00 +0200 Subject: [PATCH 04/21] removing unused import --- src/itwinai/torch/model_hub/feature.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py index adb4c6032..c43c14fc9 100644 --- a/src/itwinai/torch/model_hub/feature.py +++ b/src/itwinai/torch/model_hub/feature.py @@ -1,7 +1,7 @@ from pathlib import Path from itwinai.torch.model_hub.backends import get_backend -from itwinai.torch.model_hub.manifest import write_manifest, write_metadata +from itwinai.torch.model_hub.manifest import write_manifest class ModelHubFeature: From 60e8cc944190a9f900c728f25fbf26430a00b40b Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 21 Jul 2026 14:24:03 +0200 Subject: [PATCH 05/21] adding model hub pulling API --- src/itwinai/torch/inference.py | 65 +++++++++++++++++++++++++- src/itwinai/torch/model_hub/feature.py | 12 +---- src/itwinai/torch/model_hub/utils.py | 9 ++++ 3 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 src/itwinai/torch/model_hub/utils.py diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index cffc933ba..40132bfdd 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -21,9 +21,72 @@ from ..serialization import ModelLoader from .config import TrainingConfiguration from .distributed import TorchDistributedStrategy +from .model_hub.utils import has_internet_connection from .trainer import TorchTrainer +class ModelHubModelLoader(ModelLoader): + """Pulls a model file from the RI-SCALE Model Hub and loads it as a + torch model. + + Args: + model_id (str): Model Hub artifact ID. + file_path (str): Name of the file to download within the model's + artifact. + model_class (nn.Module, optional): required if the checkpoint is + a state dict rather than a full pickled model. + base_url (str): Model Hub artifacts base URL. + """ + + def __init__( + self, + model_id: str, + file_path: str, + model_class: nn.Module | None = None, + base_url: str = "https://hypha.aicell.io/ri-scale/artifacts", + ): + self.model_id = model_id + self.file_path = file_path + self.model_class = model_class + self.base_url = base_url + + def __call__(self) -> nn.Module: + if not has_internet_connection(): + raise ConnectionError( + "No internet connection: cannot reach the Model Hub to pull " + f"model '{self.model_id}'." + ) + + import requests + + url = f"{self.base_url}/{self.model_id}/files/{self.file_path}" + response = requests.get(url, timeout=30) + if response.status_code != 200: + raise ValueError( + f"Could not download '{self.file_path}' for model " + f"'{self.model_id}' from the Model Hub " + f"(status {response.status_code})." + ) + + dst_dir = Path("tmp") / "modelhub_downloads" / self.model_id + dst_dir.mkdir(parents=True, exist_ok=True) + ckpt_path = dst_dir / self.file_path + ckpt_path.write_bytes(response.content) + + checkpoint = torch.load(ckpt_path, weights_only=False) + if isinstance(checkpoint, dict) and "model_state_dict" in checkpoint: + if self.model_class is None: + raise ValueError( + "model_class required to instantiate model when checkpoint is dict." + ) + model = self.model_class() + model.load_state_dict(checkpoint["model_state_dict"], strict=False) + else: + model = checkpoint + + return model.eval() + + class TorchModelLoader(ModelLoader): """Loads a torch model from somewhere. @@ -213,7 +276,7 @@ def execute( if model is not None: # Overrides existing "internal" model self.model = model - elif isinstance(self.model, TorchModelLoader): + elif isinstance(self.model, ModelLoader): self.model = self.model() self.create_dataloaders(inference_dataset=inference_dataset) diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py index c43c14fc9..52c0cbbc1 100644 --- a/src/itwinai/torch/model_hub/feature.py +++ b/src/itwinai/torch/model_hub/feature.py @@ -2,6 +2,7 @@ from itwinai.torch.model_hub.backends import get_backend from itwinai.torch.model_hub.manifest import write_manifest +from itwinai.torch.model_hub.utils import has_internet_connection class ModelHubFeature: @@ -25,19 +26,10 @@ def on_checkpoint_saved(self, trainer, ckpt_dir): self.backend.upload(ckpt_dir) elif mode == "auto": - if self._has_internet(): + if has_internet_connection(): self.backend.upload(ckpt_dir) else: print(f"Model Hub config ready in: {ckpt_dir}") elif mode == "deferred": print(f"Model Hub can be run in: {ckpt_dir}") - - def _has_internet(self, timeout=3.0): - import socket - - try: - socket.create_connection(("8.8.8.8", 53), timeout=timeout) - return True - except OSError: - return False diff --git a/src/itwinai/torch/model_hub/utils.py b/src/itwinai/torch/model_hub/utils.py new file mode 100644 index 000000000..37b2dfc9d --- /dev/null +++ b/src/itwinai/torch/model_hub/utils.py @@ -0,0 +1,9 @@ +def has_internet_connection(timeout: float = 3.0) -> bool: + """Checks for internet connectivity.""" + import socket + + try: + socket.create_connection(("8.8.8.8", 53), timeout=timeout) + return True + except OSError: + return False From a864dae59e7e58bbbd3903b5bab4946b59b83722 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Wed, 29 Jul 2026 14:42:03 +0200 Subject: [PATCH 06/21] reconfiguring pulling API download --- src/itwinai/torch/inference.py | 39 ++++++----------- src/itwinai/torch/model_hub/download.py | 57 +++++++++++++++++++++++++ src/itwinai/torch/model_hub/utils.py | 2 +- 3 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 src/itwinai/torch/model_hub/download.py diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index 40132bfdd..d5b9d765a 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -21,6 +21,7 @@ from ..serialization import ModelLoader from .config import TrainingConfiguration from .distributed import TorchDistributedStrategy +from .model_hub.download import discover_weights_file, download_file from .model_hub.utils import has_internet_connection from .trainer import TorchTrainer @@ -31,9 +32,9 @@ class ModelHubModelLoader(ModelLoader): Args: model_id (str): Model Hub artifact ID. - file_path (str): Name of the file to download within the model's - artifact. - model_class (nn.Module, optional): required if the checkpoint is + file_path (str | None): Name of the file to download within the model's + artifact. If None, will attempt to auto-discover the weights file. + model_class (nn.Module | None): required if the checkpoint is a state dict rather than a full pickled model. base_url (str): Model Hub artifacts base URL. """ @@ -41,7 +42,7 @@ class ModelHubModelLoader(ModelLoader): def __init__( self, model_id: str, - file_path: str, + file_path: str | None = None, model_class: nn.Module | None = None, base_url: str = "https://hypha.aicell.io/ri-scale/artifacts", ): @@ -57,33 +58,21 @@ def __call__(self) -> nn.Module: f"model '{self.model_id}'." ) - import requests - - url = f"{self.base_url}/{self.model_id}/files/{self.file_path}" - response = requests.get(url, timeout=30) - if response.status_code != 200: - raise ValueError( - f"Could not download '{self.file_path}' for model " - f"'{self.model_id}' from the Model Hub " - f"(status {response.status_code})." - ) - + file_path = self.file_path or discover_weights_file(self.base_url, self.model_id) dst_dir = Path("tmp") / "modelhub_downloads" / self.model_id - dst_dir.mkdir(parents=True, exist_ok=True) - ckpt_path = dst_dir / self.file_path - ckpt_path.write_bytes(response.content) + ckpt_path = download_file(self.base_url, self.model_id, file_path, dst_dir) checkpoint = torch.load(ckpt_path, weights_only=False) + if self.model_class is None: + raise ValueError( + "model_class is required: Model Hub checkpoints store weights " + "as a raw state_dict, not a pickled model object." + ) + model = self.model_class() if isinstance(checkpoint, dict) and "model_state_dict" in checkpoint: - if self.model_class is None: - raise ValueError( - "model_class required to instantiate model when checkpoint is dict." - ) - model = self.model_class() model.load_state_dict(checkpoint["model_state_dict"], strict=False) else: - model = checkpoint - + model.load_state_dict(checkpoint, strict=False) return model.eval() diff --git a/src/itwinai/torch/model_hub/download.py b/src/itwinai/torch/model_hub/download.py new file mode 100644 index 000000000..d9e399eb0 --- /dev/null +++ b/src/itwinai/torch/model_hub/download.py @@ -0,0 +1,57 @@ +import requests +from pathlib import Path + + +def list_files(base_url: str, model_id: str, subpath: str = "") -> list[dict]: + """List files in a directory on the Model Hub.""" + url = f"{base_url}/{model_id}/files/{subpath}".rstrip("/") + "/" + response = requests.get(url, timeout=30) + response.raise_for_status() + return response.json() + + +def discover_weights_file(base_url: str, model_id: str) -> str: + """Locates model.pt inside root//, following the + save_checkpoint style in trainer. + """ + top_level = list_files(base_url, model_id) + if not any(e["name"] == "root" and e["type"] == "directory" for e in top_level): + raise ValueError( + f"Model '{model_id}' has no 'root/' directory; cannot " + "auto-discover weights. Please specify file_path explicitly." + ) + + root_entries = list_files(base_url, model_id, "root") + subdirs = [e["name"] for e in root_entries if e["type"] == "directory"] + if len(subdirs) != 1: + raise ValueError( + f"Expected exactly one checkpoint directory under 'root/' for " + f"model '{model_id}', found: {subdirs or '[]'}. " + "Please specify file_path explicitly." + ) + ckpt_dir_name = subdirs[0] + + ckpt_entries = list_files(base_url, model_id, f"root/{ckpt_dir_name}") + filenames = [e["name"] for e in ckpt_entries if e["type"] == "file"] + if "model.pt" not in filenames: + raise ValueError( + f"No 'model.pt' found under 'root/{ckpt_dir_name}/' for model " + f"'{model_id}'. Found: {filenames}. " + "Please specify file_path explicitly." + ) + return f"root/{ckpt_dir_name}/model.pt" + + +def download_file(base_url: str, model_id: str, file_path: str, dst_dir: Path) -> Path: + """Download a file from the Model Hub.""" + url = f"{base_url}/{model_id}/files/{file_path}" + response = requests.get(url, timeout=30) + if response.status_code != 200: + raise ValueError( + f"Could not download '{file_path}' for model '{model_id}' " + f"from the Model Hub (status {response.status_code})." + ) + dst_dir.mkdir(parents=True, exist_ok=True) + dst_path = dst_dir / Path(file_path).name + dst_path.write_bytes(response.content) + return dst_path diff --git a/src/itwinai/torch/model_hub/utils.py b/src/itwinai/torch/model_hub/utils.py index 37b2dfc9d..6b8b59430 100644 --- a/src/itwinai/torch/model_hub/utils.py +++ b/src/itwinai/torch/model_hub/utils.py @@ -3,7 +3,7 @@ def has_internet_connection(timeout: float = 3.0) -> bool: import socket try: - socket.create_connection(("8.8.8.8", 53), timeout=timeout) + socket.create_connection(("1.1.1.1", 443), timeout=timeout) return True except OSError: return False From 6cb6b5f87cac4a16f9dbc5bd2e7b24753a7d30ba Mon Sep 17 00:00:00 2001 From: sarma1 Date: Wed, 29 Jul 2026 15:44:18 +0200 Subject: [PATCH 07/21] fix linting errors --- src/itwinai/torch/model_hub/download.py | 3 ++- src/itwinai/torch/model_hub/manifest.py | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/itwinai/torch/model_hub/download.py b/src/itwinai/torch/model_hub/download.py index d9e399eb0..816bb49e5 100644 --- a/src/itwinai/torch/model_hub/download.py +++ b/src/itwinai/torch/model_hub/download.py @@ -1,6 +1,7 @@ -import requests from pathlib import Path +import requests + def list_files(base_url: str, model_id: str, subpath: str = "") -> list[dict]: """List files in a directory on the Model Hub.""" diff --git a/src/itwinai/torch/model_hub/manifest.py b/src/itwinai/torch/model_hub/manifest.py index 579b7bdfc..034df5ffe 100644 --- a/src/itwinai/torch/model_hub/manifest.py +++ b/src/itwinai/torch/model_hub/manifest.py @@ -1,12 +1,10 @@ from __future__ import annotations -from datetime import datetime from pathlib import Path from typing import Any import yaml - DEFAULT_MANIFEST = { "format_version": "0.1.0", "published": "true", From 38bec8eae400745c1db0ec708ed9edbd1ba66b62 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 4 Aug 2026 15:15:04 +0200 Subject: [PATCH 08/21] adding tutorial, documentation and some refactoring --- docs/api/itwinai.torch.modules.rst | 54 +++++++++ .../model-hub/explain_model_hub.rst | 103 ++++++++++++++++ docs/index.rst | 1 + .../model-hub/model_hub_tutorial.rst | 33 +++++ src/itwinai/cli.py | 61 ++++++---- src/itwinai/torch/inference.py | 2 + src/itwinai/torch/model_hub/feature.py | 26 ++-- src/itwinai/torch/trainer.py | 5 + .../torch-tutorial-model-hub/README.md | 114 ++++++++++++++++++ .../torch-tutorial-model-hub/config.yaml | 65 ++++++++++ .../torch-tutorial-model-hub/data.py | 32 +++++ .../synthetic_data.py | 61 ++++++++++ 12 files changed, 524 insertions(+), 33 deletions(-) create mode 100644 docs/how-it-works/model-hub/explain_model_hub.rst create mode 100644 docs/tutorials/model-hub/model_hub_tutorial.rst create mode 100644 tutorials/model-hub/torch-tutorial-model-hub/README.md create mode 100644 tutorials/model-hub/torch-tutorial-model-hub/config.yaml create mode 100644 tutorials/model-hub/torch-tutorial-model-hub/data.py create mode 100644 tutorials/model-hub/torch-tutorial-model-hub/synthetic_data.py diff --git a/docs/api/itwinai.torch.modules.rst b/docs/api/itwinai.torch.modules.rst index 64a4b4aab..3950e0f7e 100644 --- a/docs/api/itwinai.torch.modules.rst +++ b/docs/api/itwinai.torch.modules.rst @@ -47,6 +47,60 @@ loggers :member-order: bysource +model_hub.feature +++++++++++++++++++ +.. automodule:: itwinai.torch.model_hub.feature + :members: + :undoc-members: + :show-inheritance: + :member-order: bysource + + +model_hub.download ++++++++++++++++++++ +.. automodule:: itwinai.torch.model_hub.download + :members: + :undoc-members: + :show-inheritance: + :member-order: bysource + + +model_hub.manifest ++++++++++++++++++++ +.. automodule:: itwinai.torch.model_hub.manifest + :members: + :undoc-members: + :show-inheritance: + :member-order: bysource + + +model_hub.utils +++++++++++++++++ +.. automodule:: itwinai.torch.model_hub.utils + :members: + :undoc-members: + :show-inheritance: + :member-order: bysource + + +model_hub.backends.base +++++++++++++++++++++++++ +.. automodule:: itwinai.torch.model_hub.backends.base + :members: + :undoc-members: + :show-inheritance: + :member-order: bysource + + +model_hub.backends.itwinai_hub ++++++++++++++++++++++++++++++++ +.. automodule:: itwinai.torch.model_hub.backends.itwinai_hub + :members: + :undoc-members: + :show-inheritance: + :member-order: bysource + + models.mnist ++++++++++++ .. automodule:: itwinai.torch.models.mnist diff --git a/docs/how-it-works/model-hub/explain_model_hub.rst b/docs/how-it-works/model-hub/explain_model_hub.rst new file mode 100644 index 000000000..338947795 --- /dev/null +++ b/docs/how-it-works/model-hub/explain_model_hub.rst @@ -0,0 +1,103 @@ +Accessing models from the RI-SCALE Model Hub +============================================ + +**Author(s)**: Rakesh Sarma (FZJ) + +Once a ML model has been trained, it is often needed to be shared with collaborators, or to +publish it in open repositories. itwinai integrates with the `RI-SCALE Model Hub +`_ to support users with this functionality which allows pushing +a trained checkpoint to the Model Hub, and pulling a checkpoint to run inference on it. + +Pushing a model +--------------- + +Pushing is handled automatically by :class:`~itwinai.torch.trainer.TorchTrainer` whenever +Model Hub support is enabled in its configuration. On every checkpoint save +(:meth:`~itwinai.torch.trainer.TorchTrainer.save_checkpoint`), the checkpoint directory -- +containing ``model.pt`` (the model's raw ``state_dict``), ``state.pt`` (optimizer/scheduler/ +epoch state), and ``config.yaml`` -- is handed to +:class:`~itwinai.torch.model_hub.feature.ModelHubFeature`, which: + +1. Writes a ``manifest.yaml`` into the checkpoint directory via + :func:`~itwinai.torch.model_hub.manifest.write_manifest`, merging user-supplied fields + with sensible defaults. At minimum, ``id`` and ``name`` must be provided. +2. Uploads the checkpoint directory using the configured backend at the end of all epochs. + Backends implement :class:`~itwinai.torch.model_hub.backends.base.BaseBackend` and are + selected by name via :func:`~itwinai.torch.model_hub.backends.get_backend`. Currently the + only backend is :class:`~itwinai.torch.model_hub.backends.itwinai_hub.AIModelHubBackend`. + The abstraction is to enable future backends (e.g. HuggingFace). + +The timing of the upload is controlled by a ``mode`` setting: + +- ``online``: upload immediately, regardless of connectivity. +- ``auto``: upload if internet is available; otherwise print the checkpoint's local + location and skip the upload. +- ``deferred``: never upload automatically; the checkpoint is left ready to be pushed + manually later. + +.. admonition:: Example Model Hub push configuration + + .. code-block:: yaml + + model_hub: + enabled: true + backend: ai-model-hub + mode: online + manifest: + id: checkpoint-example + name: My Model + published: true + + The final `published: true` ensures that the pushed model is readily visible to all users + on the AI Model Hub. + +Pulling a model +--------------- + +Pulling is handled by :class:`~itwinai.torch.inference.ModelHubModelLoader`, an +implementation of :class:`~itwinai.serialization.ModelLoader`. Like any other +``ModelLoader``, it can be used wherever a model loader is expected -- most commonly as the +``model`` argument of :class:`~itwinai.torch.inference.TorchPredictor`. + +Unlike pushing, the Model Hub's file API has no endpoint to download a whole model folder +at once: files are retrieved one at a time, by exact path +(``GET /artifacts/{model_id}/files/{file_path}``). To spare users from needing to know that +exact path, ``ModelHubModelLoader`` supports two modes: + + - If ``file_path`` is provided explicitly, that file is downloaded directly. + - If ``file_path`` is omitted, itwinai lists the model's files + (:func:`~itwinai.torch.model_hub.download.list_files`) and locates + ``root//model.pt`` automatically + (:func:`~itwinai.torch.model_hub.download.discover_weights_file`), matching the layout + produced by :meth:`~itwinai.torch.trainer.TorchTrainer.save_checkpoint`. + ``discover_weights_file`` only looks for a top-level ``root/`` entry; it does not + inspect or otherwise handle any other top-level entries the Hub may contain. + +.. admonition:: Example Model Hub pull configuration + + .. code-block:: yaml + + predictor: + _target_: itwinai.torch.inference.TorchPredictor + config: {} + model: + _target_: itwinai.torch.inference.ModelHubModelLoader + model_id: checkpoint-example + model_class: my_module.MyModel + +.. important:: + Model Hub checkpoints store a raw ``state_dict`` -- just tensors, with no architecture + information -- following the same convention used by + :meth:`~itwinai.torch.trainer.TorchTrainer.save_checkpoint`. This means ``model_class`` + is **always required** when pulling: it must be the exact :class:`~torch.nn.Module` + subclass used at training time. If the original training script is not available, the + downloaded ``state_dict``'s keys and tensor shapes can be inspected directly to + reconstruct a matching class by hand. + +Connectivity +------------ + +Both pushing (in ``auto`` mode) and pulling rely on the same connectivity check, +:func:`~itwinai.torch.model_hub.utils.has_internet_connection`. Pulling always requires +internet access -- unlike pushing, there is no offline or deferred mode for pulling, since +there is no local fallback artifact to use in its place. diff --git a/docs/index.rst b/docs/index.rst index 78b79fe7b..48030f445 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -32,6 +32,7 @@ how-it-works/workflows/explain_workflows how-it-works/hpo/explain-hpo how-it-works/scalability-report/scalability_report + how-it-works/model-hub/explain_model_hub .. toctree:: :maxdepth: 2 diff --git a/docs/tutorials/model-hub/model_hub_tutorial.rst b/docs/tutorials/model-hub/model_hub_tutorial.rst new file mode 100644 index 000000000..36d620e38 --- /dev/null +++ b/docs/tutorials/model-hub/model_hub_tutorial.rst @@ -0,0 +1,33 @@ +Pushing and pulling models with the RI-SCALE Model Hub +====================================================== +.. include:: ../../../tutorials/model-hub/torch-tutorial-model-hub/README.md + :parser: myst_parser.sphinx_ + :start-line: 4 + +Run the training pipeline (trains the model and, as per ``model_hub`` in ``config.yaml``, +pushes the best checkpoint to the Model Hub): + +.. code-block:: bash + + itwinai exec-pipeline +pipe-key training_pipeline + +Then run the inference pipeline (pulls that same checkpoint and runs inference on it): + +.. code-block:: bash + + itwinai exec-pipeline +pipe-key inference_pipeline + +config.yaml ++++++++++++ +.. literalinclude:: ../../../tutorials/model-hub/torch-tutorial-model-hub/config.yaml + :language: yaml + +data.py ++++++++ +.. literalinclude:: ../../../tutorials/model-hub/torch-tutorial-model-hub/data.py + :language: python + +synthetic_data.py ++++++++++++++++++ +.. literalinclude:: ../../../tutorials/model-hub/torch-tutorial-model-hub/synthetic_data.py + :language: python \ No newline at end of file diff --git a/src/itwinai/cli.py b/src/itwinai/cli.py index 2f10db3fb..b93c4e957 100644 --- a/src/itwinai/cli.py +++ b/src/itwinai/cli.py @@ -551,6 +551,7 @@ def _load_slurm_builder_config( return validated_config, (root_config if expect_nested else None) + @app.command() def run( config: Annotated[ @@ -976,7 +977,7 @@ def upload_model_to_hub( str | None, typer.Option( "--env-file", - help="Path to .env file containing MODEL_HUB_URL and MODEL_HUB_API_TOKEN.", + help="Path to .env file containing HYPHA_SERVER_URL and HYPHA_TOKEN.", ), ] = None, upload_script: Annotated[ @@ -1006,7 +1007,7 @@ def _check_internet_connection(timeout: float = 3.0) -> bool: import socket try: - socket.create_connection(("8.8.8.8", 53), timeout=timeout) + socket.create_connection(("1.1.1.1", 443), timeout=timeout) return True except OSError: return False @@ -1014,21 +1015,16 @@ def _check_internet_connection(timeout: float = 3.0) -> bool: model_path = Path(model_dir).resolve() # Validate if model directory exists and is a directory - if not model_path.exists(): - cli_logger.error(f"Model directory '{model_path}' does not exist!") - raise typer.Exit(code=1) - - if not model_path.is_dir(): - cli_logger.error(f"'{model_path}' is not a directory!") + if not model_path.exists() or not model_path.is_dir(): + cli_logger.error( + f"Model directory '{model_path}' does not exist or is not a directory." + ) raise typer.Exit(code=1) # Check if the file manifest.yaml exists manifest_file = model_path / "manifest.yaml" if not manifest_file.exists(): - cli_logger.error( - f"No manifest.yaml found in '{model_path}'. " - "The model directory must contain a manifest.yaml file with the model id." - ) + cli_logger.error(f"No manifest.yaml found in '{model_path}'. ") raise typer.Exit(code=1) # Load environment variables from .env file if specified and if file exists @@ -1121,16 +1117,30 @@ def _check_internet_connection(timeout: float = 3.0) -> bool: cli_logger.info(f"Uploading model from '{model_path}' to {final_hub_url}") try: - # Call the upload script as subprocess - # The original usage is: python upload_model.py model_example1 - result = subprocess.run( - [sys.executable, str(upload_script_path), str(model_path)], - env=env_vars, - capture_output=True, - text=True, - cwd=str(upload_script_path.parent), # Run from script directory - check=False, - ) + # Build the "root/" layout that discover_weights_file expects, + # via a symlink + scratch_dir = Path(tempfile.mkdtemp()) + root_dir = scratch_dir / "root" + root_dir.mkdir(parents=True, exist_ok=True) + symlink_path = root_dir / model_path.name + if not symlink_path.exists(): + symlink_path.symlink_to(model_path, target_is_directory=True) + + relative_upload_arg = f"root/{model_path.name}" + + try: + # Call the upload script as subprocess + # The original usage is: python upload_model.py model_example1 + result = subprocess.run( + [sys.executable, str(upload_script_path), relative_upload_arg], + env=env_vars, + capture_output=True, + text=True, + cwd=str(scratch_dir), + check=False, + ) + finally: + shutil.rmtree(scratch_dir, ignore_errors=True) # Print stdout (even if there's an error, this may be useful for debugging) if result.stdout: @@ -1171,12 +1181,13 @@ def _load_env_file(env_path: Path, env_dict: dict): key = key.strip() value = value.strip() # Remove quotes if present - if ( - (value.startswith('"') and value.endswith('"')) or - (value.startswith("'") and value.endswith("'")) + if (value.startswith('"') and value.endswith('"')) or ( + value.startswith("'") and value.endswith("'") ): value = value[1:-1] + env_dict[key] = value + if __name__ == "__main__": app() diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index d5b9d765a..af1fc59c1 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -324,6 +324,8 @@ def transform_predictions(self, batch: torch.Tensor) -> torch.Tensor: threshold in case of multi-label classifier). """ + return batch + class MulticlassTorchPredictor(TorchPredictor): """Applies a pre-trained torch model to unseen data for multiclass classification.""" diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py index 52c0cbbc1..f954009f3 100644 --- a/src/itwinai/torch/model_hub/feature.py +++ b/src/itwinai/torch/model_hub/feature.py @@ -9,27 +9,37 @@ class ModelHubFeature: def __init__(self, config: dict): self.config = config or {} self.enabled = self.config.get("enabled", False) + self.final_checkpoint_name = self.config.get("final_checkpoint_name", "best_model") - backend_name = self.config.get("backend", "itwinai") + backend_name = self.config.get("backend", "ai-model-hub") self.backend = get_backend(backend_name, self.config) def on_checkpoint_saved(self, trainer, ckpt_dir): ckpt_dir = Path(ckpt_dir) + if ckpt_dir.name != self.final_checkpoint_name: + return + write_manifest(ckpt_dir, self.config) - # prepare directory + def on_training_end(self, trainer, ckpt_dir): + ckpt_dir = Path(ckpt_dir) + if ckpt_dir.name != self.final_checkpoint_name: + return write_manifest(ckpt_dir, self.config) - # upload type mode = self.config.get("mode", "deferred") - if mode == "online": - self.backend.upload(ckpt_dir) - + self._safe_upload(ckpt_dir) elif mode == "auto": if has_internet_connection(): - self.backend.upload(ckpt_dir) + self._safe_upload(ckpt_dir) else: print(f"Model Hub config ready in: {ckpt_dir}") - elif mode == "deferred": print(f"Model Hub can be run in: {ckpt_dir}") + + def _safe_upload(self, ckpt_dir: Path) -> None: + try: + self.backend.upload(ckpt_dir) + except Exception as e: + print(f"Model Hub upload failed for checkpoint at '{ckpt_dir}': {e}") + print(f"You can re-upload later with: itwinai upload-model-to-hub {ckpt_dir}") diff --git a/src/itwinai/torch/trainer.py b/src/itwinai/torch/trainer.py index 6c0ea619f..1af1ae8f9 100644 --- a/src/itwinai/torch/trainer.py +++ b/src/itwinai/torch/trainer.py @@ -8,6 +8,7 @@ # - Anna Lappe - CERN # - Jarl Sondre Sæther - CERN # - Linus Eickhoff - CERN +# - Rakesh Sarma - FZJ # -------------------------------------------------------------------------------------- @@ -1275,6 +1276,10 @@ def train(self) -> None: kind="metric", step=self.current_epoch, ) + if self.strategy.is_main_worker: + best_ckpt_dir = Path(self.checkpoints_location) / "best_model" + if best_ckpt_dir.exists(): + self._model_hub.on_training_end(self, best_ckpt_dir) def train_epoch(self) -> torch.Tensor: """Perform a complete sweep over the training dataset, completing an epoch of training. diff --git a/tutorials/model-hub/torch-tutorial-model-hub/README.md b/tutorials/model-hub/torch-tutorial-model-hub/README.md new file mode 100644 index 000000000..88e800fbf --- /dev/null +++ b/tutorials/model-hub/torch-tutorial-model-hub/README.md @@ -0,0 +1,114 @@ +# Tutorial: pushing and pulling models with the RI-SCALE Model Hub + +**Author(s)**: Rakesh Sarma (FZJ) + +This tutorial shows the full implementation: train a small model with `itwinai`'s +`TorchTrainer`, push its checkpoint to the Model Hub, then pull that same checkpoint back +and run inference on it with `TorchPredictor`. Both steps run as itwinai pipelines via the +`itwinai exec-pipeline` CLI. Please note than when installing the `itwinai` environment, you +need to select the extra option `modelhub` to install the dependencies related to the AI Model +Hub. + +`synthetic_data.py` defines `SanityCheckModel` (a small 3-layer CNN) and two synthetic +datasets (`SyntheticCheckpointDataset` for training, `SyntheticInferenceDataset` for +inference). The data itself is random noise -- only the tensor shapes matter here, since +the goal of this tutorial is to demonstrate the push/pull feature, not model quality. +`data.py` wraps those datasets in two small pipeline steps: +`SyntheticCheckpointDatasetSplitter` (train/val split) and `SyntheticInferenceDatasetGenerator` +(inference set). + +## Part 1: train and push + +```bash +itwinai exec-pipeline +pipe-key=training_pipeline +``` + +`config.yaml` contains all the configuration options for the trainer, predictor and the AI +Model Hub parameters that are needed to be specified. +`training_pipeline` has two steps: `SyntheticCheckpointDatasetSplitter` produces +`(train_dataset, validation_dataset)`, which the pipeline unpacks straight into +`TorchTrainer.execute(train_dataset, validation_dataset)`. The trainer step itself is built +with nested `_target_`s: `model` builds `SanityCheckModel`. + +The `model_hub` block defines the parameters needed to push the model to the Model Hub. Here +`TorchTrainer.__init__` reads `getattr(self.config, "model_hub", {})` to +build its `ModelHubFeature`. + +Because `model_hub.enabled: true`, every time `TorchTrainer.save_checkpoint` saves the +"best_model" checkpoint, it hands the checkpoint directory to +`ModelHubFeature.on_checkpoint_saved`, which calls `write_manifest` to create +`manifest.yaml` in the checkpoint directory -- filling in defaults and overlaying the +fields from `model_hub.manifest` (`id` and `name` are required; here we also set +`description`, `authors`, and `published`). The `published` flag instantly makes the model +visible on the AI Model Hub. This runs on every improvement during training, but +only writes local metadata -- it never uploads anything. + +Once the whole training loop finishes, `TorchTrainer.train()` calls +`ModelHubFeature.on_training_end` on the final best checkpoint, which + +1. Resolves a backend via `get_backend(model_hub.backend, config)` (`backend: ai-model-hub` + here) and, depending on `mode`, uploads right away (`online`), checks for internet and + uploads or defers (`auto`), or always defers and just prints where the checkpoint is + (`deferred`). +2. With `backend: ai-model-hub`, "upload" means running `itwinai upload-model-to-hub + ` as a subprocess -- see "Credentials and connectivity" below. + +## Part 2: pull and run inference + +```bash +itwinai exec-pipeline +pipe-key=inference_pipeline +``` + +`inference_pipeline` mirrors the same shape: `SyntheticInferenceDatasetGenerator` produces +the inference dataset, fed into `TorchPredictor.execute(inference_dataset)`. `TorchPredictor` +takes `model: nn.Module | ModelLoader` directly, so `model` here is a +`ModelHubModelLoader` `_target_` rather than an already-built model -- +`TorchPredictor.execute` detects this (`isinstance(self.model, ModelLoader)`) and calls it +to actually fetch and build the model at run time. + +`ModelHubModelLoader` pulls the checkpoint by `model_id`, auto-discovering +`model.pt` under `root//model.pt` (no need to know the exact file path in +the Hub). Because an itwinai checkpoint only contains weights, `model_class` must be given +explicitly. Since `model_class` needs to be the *class itself* (it calls +`self.model_class()` internally) rather than an instance, the config points it at +`synthetic_data.sanity_check_model_class`, a small factory function that returns +`SanityCheckModel` uninstantiated. + +By default it pulls from `https://hypha.aicell.io/ri-scale/artifacts`; add a `base_url` key +under the `ModelHubModelLoader` step if you're pointing at a different Hub instance. + +`TorchPredictor.execute()` returns a dict mapping each inference item's ID (its index, in +this tutorial's `SyntheticInferenceDataset`) to its predicted value. + +## Notes + +On `model_class`, if you don't have the original training script available, you can still +inspect the raw `state_dict` to reconstruct a matching class by hand: + +```python +state_dict = torch.load(ckpt_path, weights_only=False) +for k, v in state_dict.items(): + print(k, v.shape) +``` + +## Credentials and connectivity + +When `model_hub.backend: ai-model-hub`, pushing a checkpoint (`AIModelHubBackend.upload`) +doesn't talk to the Hub directly -- it shells out to `itwinai upload-model-to-hub +` as a subprocess. That command is `cli.py`'s `upload_model_to_hub`, which: +downloads `upload_model.py` from GitHub (unless `--upload-script` is given -- which the +subprocess call never passes), and needs a Hub URL and token, resolved with priority +explicit argument > environment variable > `.env` file in the current directory (in this case, +the file was put in the `tutorials/model-hub/torch-tutorial-model-hub`), using +`HYPHA_SERVER_URL` and `HYPHA_TOKEN`. Please see [this page](https://github.com/RI-SCALE/ai-model-hub-example/blob/main/.env.example) +for details on how these parameters should be set. + +Because the subprocess call passes neither `--hub-url` nor `--api-token`, **the automatic +push during training only works if `HYPHA_SERVER_URL` and `HYPHA_TOKEN` are already set as +environment variables, or sit in a `.env` file in the working directory `itwinai +exec-pipeline` is run from.** + +## Requirements + +Internet access is required for both steps: to GitHub and the Hub for Part 1's push, and +to the Hub (`https://hypha.aicell.io/ri-scale/artifacts` by default) for Part 2's pull. diff --git a/tutorials/model-hub/torch-tutorial-model-hub/config.yaml b/tutorials/model-hub/torch-tutorial-model-hub/config.yaml new file mode 100644 index 000000000..c916c59cb --- /dev/null +++ b/tutorials/model-hub/torch-tutorial-model-hub/config.yaml @@ -0,0 +1,65 @@ +# -------------------------------------------------------------------------------------- +# Part of the RI-SCALE Project: https://www.riscale.eu/ +# -------------------------------------------------------------------------------------- + +train_samples: 64 +val_samples: 16 +inference_samples: 16 + +model_hub: + enabled: true + backend: ai-model-hub + mode: auto # or "online" / "deferred" -- see Model Hub docs page + manifest: + id: checkpoint-itwinai-tutorial + name: Sanity Check itwinai Tutorial + description: > + Small 3-layer CNN trained on synthetic noise to demonstrate itwinai integration with + RI-SCALE Model Hub push/pull feature. + authors: + - name: Rakesh Sarma + affiliation: FZJ + github_user: r-sarma + published: true + +# Run with: itwinai exec-pipeline +pipe_key=training_pipeline +training_pipeline: + _target_: itwinai.pipeline.Pipeline + steps: + - _target_: data.SyntheticCheckpointDatasetSplitter + train_samples: ${train_samples} + val_samples: ${val_samples} + - _target_: itwinai.torch.trainer.TorchTrainer + model: + _target_: synthetic_data.SanityCheckModel + epochs: 2 + strategy: ddp + checkpoint_every: 1 + checkpoints_location: checkpoints + config: + optimizer: sgd + loss: mse + optim_lr: 0.01 + # TorchTrainer reads this via `getattr(self.config, "model_hub", {})`, + # so it has to declared on `config`. + model_hub: ${model_hub} + +# Run with: itwinai exec-pipeline +pipe_key=inference_pipeline +inference_pipeline: + _target_: itwinai.pipeline.Pipeline + steps: + - _target_: data.SyntheticInferenceDatasetGenerator + inference_samples: ${inference_samples} + - _target_: itwinai.torch.inference.TorchPredictor + config: + model_hub: ${model_hub} + strategy: ddp + model: + _target_: itwinai.torch.inference.ModelHubModelLoader + model_id: ${model_hub.manifest.id} + # `model_class` needs to end up as the *class* itself, not an instance -- + # `synthetic_data.sanity_check_model_class` is a plain function that returns + # `SanityCheckModel` uninstantiated, so instantiating this `_target_` gives + # `ModelHubModelLoader.model_class = SanityCheckModel` (the class object). + model_class: + _target_: synthetic_data.sanity_check_model_class \ No newline at end of file diff --git a/tutorials/model-hub/torch-tutorial-model-hub/data.py b/tutorials/model-hub/torch-tutorial-model-hub/data.py new file mode 100644 index 000000000..cd6276b59 --- /dev/null +++ b/tutorials/model-hub/torch-tutorial-model-hub/data.py @@ -0,0 +1,32 @@ +# -------------------------------------------------------------------------------------- +# Part of the RI-SCALE Project: https://www.riscale.eu/ +# -------------------------------------------------------------------------------------- +"""Pipeline steps that produce the synthetic datasets used by this tutorial.""" + +from typing import Tuple + +from synthetic_data import SyntheticCheckpointDataset, SyntheticInferenceDataset +from torch.utils.data import Dataset + + +class SyntheticCheckpointDatasetSplitter: + """Produces the train/validation split consumed by `training_pipeline`.""" + + def __init__(self, train_samples: int = 64, val_samples: int = 16): + self.train_samples = train_samples + self.val_samples = val_samples + + def execute(self) -> Tuple[Dataset, Dataset]: + train_dataset = SyntheticCheckpointDataset(num_samples=self.train_samples) + validation_dataset = SyntheticCheckpointDataset(num_samples=self.val_samples) + return train_dataset, validation_dataset + + +class SyntheticInferenceDatasetGenerator: + """Produces the inference dataset consumed by `inference_pipeline`.""" + + def __init__(self, inference_samples: int = 16): + self.inference_samples = inference_samples + + def execute(self) -> Dataset: + return SyntheticInferenceDataset(num_samples=self.inference_samples) diff --git a/tutorials/model-hub/torch-tutorial-model-hub/synthetic_data.py b/tutorials/model-hub/torch-tutorial-model-hub/synthetic_data.py new file mode 100644 index 000000000..b631001ed --- /dev/null +++ b/tutorials/model-hub/torch-tutorial-model-hub/synthetic_data.py @@ -0,0 +1,61 @@ +# -------------------------------------------------------------------------------------- +# Part of the RI-SCALE Project: https://www.riscale.eu/ +# -------------------------------------------------------------------------------------- +"""Synthetic model and datasets for the Model Hub push/pull tutorial.""" + +import torch +import torch.nn as nn +from torch.utils.data import Dataset + + +class SanityCheckModel(nn.Module): + """Small 3-layer CNN used throughout this tutorial.""" + + def __init__(self): + super().__init__() + self.conv1 = nn.Conv2d(2, 16, kernel_size=3, padding=1) + self.conv2 = nn.Conv2d(16, 16, kernel_size=1) + self.conv3 = nn.Conv2d(16, 1, kernel_size=3, padding=1) + + def forward(self, x): + x = torch.relu(self.conv1(x)) + x = torch.relu(self.conv2(x)) + return self.conv3(x) + + +def sanity_check_model_class(): + """Returns the (uninstantiated) `SanityCheckModel` class. + + Used as a `_target_` in config.yaml when a config value needs to be a *class* + rather than an instance -- e.g. in the `ModelHubModelLoader.model_class`. + """ + return SanityCheckModel + + +class SyntheticCheckpointDataset(Dataset): + """Random (input, target) pairs used to train/validate `SanityCheckModel`.""" + + def __init__(self, num_samples: int = 64): + self.num_samples = num_samples + + def __len__(self): + return self.num_samples + + def __getitem__(self, idx): + x = torch.randn(2, 32, 32) + y = torch.randn(1, 32, 32) + return x, y + + +class SyntheticInferenceDataset(Dataset): + """Random inputs (no targets), each paired with an item ID.""" + + def __init__(self, num_samples: int = 16): + self.num_samples = num_samples + + def __len__(self): + return self.num_samples + + def __getitem__(self, idx): + x = torch.randn(2, 32, 32) + return idx, x From dc079c19601a60dbe180f148d434dbc02fc99851 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 4 Aug 2026 16:02:30 +0200 Subject: [PATCH 09/21] fix linting error and mlflow integration test --- docs/index.rst | 1 + docs/tutorials/tutorials.rst | 19 ++++++++++++++++--- tests/conftest.py | 2 ++ .../torch-tutorial-model-hub/README.md | 2 +- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 48030f445..d93ffeb05 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -146,6 +146,7 @@ Quick Start - :ref:`Hyper-parameter Optimization ` - :ref:`ML Workflows ` - :ref:`Code Profiling and Optimization ` +- :ref:`Model Hub ` 📚 Use Cases & 🧩 Plugins ========================== diff --git a/docs/tutorials/tutorials.rst b/docs/tutorials/tutorials.rst index d9adb7b99..0a58eda2a 100644 --- a/docs/tutorials/tutorials.rst +++ b/docs/tutorials/tutorials.rst @@ -48,16 +48,16 @@ Here you can find a collection of tutorials for various complexity ML workflows. .. toctree:: :maxdepth: 1 - + workflows/01-pipeline-introduction/tutorial_0_basic_workflow workflows/02-pipeline-configuration/tutorial_1_intermediate_workflow workflows/03-dag-workflows/tutorial_2_advanced_workflow workflows/04_itwinai_argparser - + .. _hpo-tutorials: -Hyperparameter Optimization +Hyperparameter Optimization =========================== This tutorial provides an overview of Hyperparameter Optimization (HPO) workflows. @@ -81,3 +81,16 @@ Here you can find our tutorials on how to do profiling with **itwinai**: profiling/profiling-overview profiling/py-spy-profiling profiling/py-spy-lattice-qcd-example + + +.. _model-hub-tutorials: + +Model Hub +========= + +Here you can find our tutorial on pushing and pulling models with the RI-SCALE Model Hub. + +.. toctree:: + :maxdepth: 1 + + model-hub/model_hub_tutorial diff --git a/tests/conftest.py b/tests/conftest.py index b1975f174..192b043f0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -12,6 +12,8 @@ import pytest +os.environ.setdefault("MLFLOW_ALLOW_FILE_STORE", "true") + @pytest.fixture def torch_env() -> str: diff --git a/tutorials/model-hub/torch-tutorial-model-hub/README.md b/tutorials/model-hub/torch-tutorial-model-hub/README.md index 88e800fbf..eeb803b22 100644 --- a/tutorials/model-hub/torch-tutorial-model-hub/README.md +++ b/tutorials/model-hub/torch-tutorial-model-hub/README.md @@ -64,7 +64,7 @@ the inference dataset, fed into `TorchPredictor.execute(inference_dataset)`. `To takes `model: nn.Module | ModelLoader` directly, so `model` here is a `ModelHubModelLoader` `_target_` rather than an already-built model -- `TorchPredictor.execute` detects this (`isinstance(self.model, ModelLoader)`) and calls it -to actually fetch and build the model at run time. +to actually fetch and build the model at runtime. `ModelHubModelLoader` pulls the checkpoint by `model_id`, auto-discovering `model.pt` under `root//model.pt` (no need to know the exact file path in From 5ad88564214c58a7824753e4e66c759bb687a4ce Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 4 Aug 2026 16:25:04 +0200 Subject: [PATCH 10/21] fix failing integration tests --- src/itwinai/torch/model_hub/feature.py | 4 ++++ src/itwinai/torch/trainer.py | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py index f954009f3..4ed7bf04f 100644 --- a/src/itwinai/torch/model_hub/feature.py +++ b/src/itwinai/torch/model_hub/feature.py @@ -15,12 +15,16 @@ def __init__(self, config: dict): self.backend = get_backend(backend_name, self.config) def on_checkpoint_saved(self, trainer, ckpt_dir): + if not self.enabled: + return ckpt_dir = Path(ckpt_dir) if ckpt_dir.name != self.final_checkpoint_name: return write_manifest(ckpt_dir, self.config) def on_training_end(self, trainer, ckpt_dir): + if not self.enabled: + return ckpt_dir = Path(ckpt_dir) if ckpt_dir.name != self.final_checkpoint_name: return diff --git a/src/itwinai/torch/trainer.py b/src/itwinai/torch/trainer.py index 1af1ae8f9..3dd3b1267 100644 --- a/src/itwinai/torch/trainer.py +++ b/src/itwinai/torch/trainer.py @@ -623,7 +623,7 @@ def save_checkpoint( with config_path.open("w") as f: yaml.safe_dump(self.config.model_dump(), f) - # Upload model to Model Hub if enabled + # Save model and manifest locally if enabled if self._model_hub.enabled: self._model_hub.on_checkpoint_saved(self, ckpt_dir) @@ -1276,7 +1276,7 @@ def train(self) -> None: kind="metric", step=self.current_epoch, ) - if self.strategy.is_main_worker: + if self.strategy.is_main_worker and self._model_hub.enabled: best_ckpt_dir = Path(self.checkpoints_location) / "best_model" if best_ckpt_dir.exists(): self._model_hub.on_training_end(self, best_ckpt_dir) From bc7f56cc7e13fc5b8f1d52eaf139f7e12506c6ba Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 4 Aug 2026 16:48:58 +0200 Subject: [PATCH 11/21] Trigger Read the Docs rebuild From 248970d3358af4179ef1bc48dfa4623100ca6f55 Mon Sep 17 00:00:00 2001 From: Matteo Bunino <48362942+matbun@users.noreply.github.com> Date: Fri, 28 Aug 2026 10:42:45 +0200 Subject: [PATCH 12/21] Fix MLflow filesystem backend (#505) --- docs/use-cases/radio-astronomy.rst | 2 +- pyproject.toml | 9 +- src/itwinai/__init__.py | 5 + src/itwinai/loggers.py | 21 +- tests/loggers/test_mlflow_backend.py | 158 ++ use-cases/3dgan/README.md | 2 +- use-cases/mnist/torch-lightning/README.md | 2 +- use-cases/mnist/torch/README.md | 2 +- use-cases/virgo/README.md | 4 +- uv.lock | 3031 +++++++++++++++++++-- 10 files changed, 2990 insertions(+), 246 deletions(-) create mode 100644 tests/loggers/test_mlflow_backend.py diff --git a/docs/use-cases/radio-astronomy.rst b/docs/use-cases/radio-astronomy.rst index 02a244318..5ed8fd1de 100644 --- a/docs/use-cases/radio-astronomy.rst +++ b/docs/use-cases/radio-astronomy.rst @@ -35,7 +35,7 @@ Logging with MLflow ----------------------------------------------------------------------------------------------- By default, the `config.yaml` ensures that the MLflow logging is enabled during the training. During or after the run, you can launch an MLflow server by executing -`mlflow server --backend-store-uri mllogs/mlflow` and connecting to `http://127.0.0.1:5000/` +`itwinai mlflow-server --path mllogs/mlflow` and connecting to `http://127.0.0.1:5000/` in your browser. Test suite diff --git a/pyproject.toml b/pyproject.toml index e9810f00c..dc9c0d403 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "typer>=0.9.0", "numpy<2.0.0", "wandb>=0.18.7", - "mlflow>=2.17.2", + "mlflow>=3.1,<4", "wheel>=0.45.0", "seaborn>=0.13.2", "py-cpuinfo>=9.0.0", @@ -93,7 +93,12 @@ hpo = [ "hpbandster>=0.7.0", "gpy>=1.13.2", ] -modelhub = ["hypha-rpc", "dotenv", "httpx", "hypha-artifact"] +modelhub = [ + "hypha-rpc", + "dotenv", + "httpx", + "hypha-artifact; python_version >= '3.11'", +] [tool.hatch.metadata] allow-direct-references = true diff --git a/src/itwinai/__init__.py b/src/itwinai/__init__.py index 481bce50b..ae09648f6 100644 --- a/src/itwinai/__init__.py +++ b/src/itwinai/__init__.py @@ -62,6 +62,11 @@ def format(self, record: logging.LogRecord) -> str: plain_logger.addHandler(h) plain_logger.propagate = False +# MLflow: itwinai logs to a local filesystem backend by default, which MLflow >=3.14 +# rejects unless this opt-out is set. +if os.environ.get("MLFLOW_ALLOW_FILE_STORE", None) is None: + os.environ["MLFLOW_ALLOW_FILE_STORE"] = "true" + # Ray if os.environ.get("TUNE_DISABLE_STRICT_METRIC_CHECKING", None) is None: os.environ["TUNE_DISABLE_STRICT_METRIC_CHECKING"] = "1" diff --git a/src/itwinai/loggers.py b/src/itwinai/loggers.py index 98225cac9..06882f07c 100644 --- a/src/itwinai/loggers.py +++ b/src/itwinai/loggers.py @@ -70,8 +70,10 @@ """ import functools +import inspect import logging import os +import re from abc import ABC, abstractmethod from contextlib import contextmanager from pathlib import Path @@ -666,7 +668,24 @@ def log( import torch if isinstance(item, torch.nn.Module): - self.mlflow.pytorch.log_model(item, identifier) + # MLflow >=3 turned the run-relative artifact path into a validated model + # name, and defaults to the 'pt2' format, which requires an input_example. + model_name = re.sub(r"""[/:.%"']""", "_", identifier) or "model" + if model_name != identifier: + py_logger.warning( + "MLflow model names cannot contain / : . % \" ', logging" + f" '{identifier}' as '{model_name}'" + ) + accepted = { + name + for name, param in inspect.signature( + self.mlflow.pytorch.log_model + ).parameters.items() + if param.kind is not inspect.Parameter.VAR_KEYWORD + } - {"pytorch_model", "name", "artifact_path"} + model_kwargs = {k: v for k, v in kwargs.items() if k in accepted} + model_kwargs.setdefault("serialization_format", "pickle") + self.mlflow.pytorch.log_model(item, name=model_name, **model_kwargs) else: py_logger.warning("Unrecognized model type.") elif kind == "dataset": diff --git a/tests/loggers/test_mlflow_backend.py b/tests/loggers/test_mlflow_backend.py new file mode 100644 index 000000000..f2f5cc6bc --- /dev/null +++ b/tests/loggers/test_mlflow_backend.py @@ -0,0 +1,158 @@ +# -------------------------------------------------------------------------------------- +# Part of the interTwin Project: https://www.intertwin.eu/ +# +# Created by: Matteo Bunino +# +# Credit: +# - Matteo Bunino - CERN +# -------------------------------------------------------------------------------------- + +"""Regression tests for the MLflow backend. + +These tests deliberately avoid mocking the mlflow API: they exercise a real local +tracking backend, which is what broke when mlflow 3 started rejecting file stores. +""" + +import os +import subprocess +import sys +import textwrap +from pathlib import Path +from unittest.mock import patch + +import pytest + +from itwinai.loggers import MLFlowLogger + +FILE_STORE_OPT_OUT = "MLFLOW_ALLOW_FILE_STORE" + + +def test_importing_itwinai_opts_into_file_store(): + """itwinai logs to a local file store by default, so the opt-out must be set on import.""" + assert os.environ.get(FILE_STORE_OPT_OUT) == "true" + + +def test_file_store_usable_without_preset_env_var(tmp_path): + """A local tracking backend must work in a fresh process that does not preset the opt-out. + + Runs in a subprocess because itwinai has already been imported in this one, which sets + the environment variable process-wide and would mask the regression. + """ + script = textwrap.dedent(f""" + from itwinai.loggers import MLFlowLogger + + logger = MLFlowLogger(savedir=r"{tmp_path}", experiment_name="regression") + logger.create_logger_context() + logger.log(1.0, "a_metric", kind="metric", step=0) + logger.destroy_logger_context() + print("OK") + """) + + env = {k: v for k, v in os.environ.items() if k != FILE_STORE_OPT_OUT} + result = subprocess.run( + [sys.executable, "-c", script], capture_output=True, text=True, env=env + ) + + assert result.returncode == 0, ( + f"local file store rejected with {FILE_STORE_OPT_OUT} unset:\n{result.stderr}" + ) + assert "OK" in result.stdout + + +def test_metric_roundtrip_through_real_backend(tmp_path): + """Metrics must be readable back from the store, not just accepted by the fluent API.""" + logger = MLFlowLogger(savedir=tmp_path, experiment_name="roundtrip") + logger.create_logger_context() + run_id = logger.active_run.info.run_id + for step, value in enumerate([0.3, 0.2, 0.1]): + logger.log(value, "loss", kind="metric", step=step) + logger.destroy_logger_context() + + from mlflow.tracking import MlflowClient + + history = MlflowClient(tracking_uri=logger.tracking_uri).get_metric_history(run_id, "loss") + assert [m.value for m in history] == [0.3, 0.2, 0.1] + + +def test_log_torch_model_roundtrip(tmp_path): + """``kind='model'`` must produce a loadable model. + + mlflow 3 changed ``mlflow.pytorch.log_model`` to default to the 'pt2' serialization + format, which raises unless an ``input_example`` is supplied. + """ + torch = pytest.importorskip("torch") + import mlflow + + model = torch.nn.Linear(4, 2) + logger = MLFlowLogger(savedir=tmp_path, experiment_name="models") + logger.create_logger_context() + logger.log(model, "my_model", kind="model") + run_id = logger.active_run.info.run_id + logger.destroy_logger_context() + + mlflow.set_tracking_uri(logger.tracking_uri) + loaded = mlflow.pytorch.load_model(f"runs:/{run_id}/my_model") + assert torch.allclose(loaded.weight, model.weight) + + +def test_log_model_ignores_non_mlflow_kwargs(tmp_path): + """Extra kwargs accepted by ``log()`` must not leak into ``mlflow.pytorch.log_model``. + + Use cases pass things like ``context="training"``, which would otherwise reach + ``torch.save`` and raise a TypeError. + """ + torch = pytest.importorskip("torch") + + logger = MLFlowLogger(savedir=tmp_path, experiment_name="kwargs") + logger.create_logger_context() + logger.log(torch.nn.Linear(2, 2), "generator_epoch_0", kind="model", context="training") + logger.destroy_logger_context() + + +def test_log_model_forwards_known_mlflow_kwargs(tmp_path): + """kwargs that ``mlflow.pytorch.log_model`` does accept must still be forwarded.""" + torch = pytest.importorskip("torch") + + logger = MLFlowLogger(savedir=tmp_path, experiment_name="kwargs-fwd") + logger.create_logger_context() + with patch.object(logger.mlflow.pytorch, "log_model", autospec=True) as mock_log_model: + logger.log(torch.nn.Linear(2, 2), "LSTM", kind="model", registered_model_name="LSTM") + logger.destroy_logger_context() + + assert mock_log_model.call_args.kwargs["registered_model_name"] == "LSTM" + assert mock_log_model.call_args.kwargs["name"] == "LSTM" + + +@pytest.mark.parametrize( + "identifier,expected", + [ + ("my_model", "my_model"), + ("generator_epoch_1", "generator_epoch_1"), + ("ckpts/generator", "ckpts_generator"), + ("best_model.pth", "best_model_pth"), + ], +) +def test_log_model_sanitizes_identifier(tmp_path, identifier, expected): + """mlflow 3 validates model names, which the old run-relative artifact path did not. + + Path-like identifiers are valid input everywhere else in ``log()``, so they must keep + working rather than raising MlflowException. + """ + torch = pytest.importorskip("torch") + import mlflow + + logger = MLFlowLogger(savedir=tmp_path, experiment_name="names") + logger.create_logger_context() + run_id = logger.active_run.info.run_id + logger.log(torch.nn.Linear(2, 2), identifier, kind="model") + logger.destroy_logger_context() + + mlflow.set_tracking_uri(logger.tracking_uri) + assert mlflow.pytorch.load_model(f"runs:/{run_id}/{expected}") is not None + + +def test_tracking_uri_is_a_resolved_file_uri(tmp_path): + """The default backend stays a local file URI under savedir.""" + logger = MLFlowLogger(savedir=tmp_path, experiment_name="uri") + assert logger.tracking_uri.startswith("file://") + assert Path(logger.tracking_uri.removeprefix("file://")).is_absolute() diff --git a/use-cases/3dgan/README.md b/use-cases/3dgan/README.md index e66b80422..e8b2b7148 100644 --- a/use-cases/3dgan/README.md +++ b/use-cases/3dgan/README.md @@ -110,7 +110,7 @@ To visualize the logs generated with **MLFLow**, if you set a local path as trac run the following in the terminal: ```bash -mlflow ui --backend-store-uri LOCAL_TRACKING_URI +itwinai mlflow-ui --path LOCAL_TRACKING_URI ``` And select the "3DGAN" experiment. diff --git a/use-cases/mnist/torch-lightning/README.md b/use-cases/mnist/torch-lightning/README.md index 4ec3adb09..3e933006c 100644 --- a/use-cases/mnist/torch-lightning/README.md +++ b/use-cases/mnist/torch-lightning/README.md @@ -15,5 +15,5 @@ itwinai exec-pipeline +pipe_key=training_pipeline View training logs on MLFLow server (if activated from the configuration): ```bash -mlflow ui --backend-store-uri mllogs/mlflow/ +itwinai mlflow-ui --path mllogs/mlflow/ ``` diff --git a/use-cases/mnist/torch/README.md b/use-cases/mnist/torch/README.md index 5a76a4dd9..0d391143f 100644 --- a/use-cases/mnist/torch/README.md +++ b/use-cases/mnist/torch/README.md @@ -41,7 +41,7 @@ itwinai exec-pipeline --config-name config.yaml View training logs on MLFLow server (if activated from the configuration): ```bash -mlflow ui --backend-store-uri mllogs/mlflow/ +itwinai mlflow-ui --path mllogs/mlflow/ ``` ### Hyper-parameter optimization diff --git a/use-cases/virgo/README.md b/use-cases/virgo/README.md index 034c8a9e4..2c67c6f13 100644 --- a/use-cases/virgo/README.md +++ b/use-cases/virgo/README.md @@ -68,10 +68,10 @@ itwinai exec-pipeline +pipe_key=training_pipeline ``` ```bash -mlflow ui --backend-store-uri mllogs/mlflow +itwinai mlflow-ui --path mllogs/mlflow # In background -mlflow ui --backend-store-uri mllogs/mlflow > /dev/null 2>&1 & +itwinai mlflow-ui --path mllogs/mlflow > /dev/null 2>&1 & ``` ## Training using SLURM diff --git a/uv.lock b/uv.lock index 9870db945..9284ac3d7 100644 --- a/uv.lock +++ b/uv.lock @@ -1,18 +1,31 @@ version = 1 requires-python = ">=3.10" resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", "python_version < '0'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", @@ -23,30 +36,52 @@ resolution-markers = [ "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.11' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", @@ -62,20 +97,19 @@ resolution-markers = [ "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] @@ -93,6 +127,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f6/d4/349f7f4bd5ea92dab34f5bb0fe31775ef6c311427a14d5a5b31ecb442341/absl_py-2.2.2-py3-none-any.whl", hash = "sha256:e5797bc6abe45f64fd95dc06394ca3f2bedf3b5d895e9da691c9ee3397d70092", size = 135565 }, ] +[[package]] +name = "aenum" +version = "3.1.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/e9/8b283567c1fef7c24d1f390b37daede8b61593d8cdaffb8e95d571699e83/aenum-3.1.17.tar.gz", hash = "sha256:a969a4516b194895de72c875ece355f17c0d272146f7fda346ef74f93cf4d5ba", size = 137648 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/8d/1fe30c6fd8999b9d462547c4a1bb6690bda24af38f2913c4bec7decb81f2/aenum-3.1.17-py3-none-any.whl", hash = "sha256:8b883a37a04e74cc838ac442bdd28c266eae5bbf13e1342c7ef123ed25230139", size = 165560 }, +] + [[package]] name = "aiohappyeyeballs" version = "2.6.1" @@ -249,6 +292,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] +[[package]] +name = "ansicon" +version = "1.89.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/e2/1c866404ddbd280efedff4a9f15abfe943cb83cde6e895022370f3a61f85/ansicon-1.89.0.tar.gz", hash = "sha256:e4d039def5768a47e4afec8e89e83ec3ae5a26bf00ad851f914d1240b444d2b1", size = 67312 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/f9/f1c10e223c7b56a38109a3f2eb4e7fe9a757ea3ed3a166754fb30f65e466/ansicon-1.89.0-py2.py3-none-any.whl", hash = "sha256:f1def52d17f65c2c9682cf8370c03f541f410c1752d6a14029f97318e4b9dfec", size = 63675 }, +] + [[package]] name = "antlr4-python3-runtime" version = "4.9.3" @@ -259,17 +311,145 @@ sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d name = "anyio" version = "4.9.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, - { name = "idna" }, - { name = "sniffio" }, - { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "idna", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "sniffio", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } wheels = [ { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, ] +[[package]] +name = "anyio" +version = "4.11.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "idna", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "sniffio", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typing-extensions", marker = "(python_full_version >= '3.11' and python_full_version < '3.13') or (python_full_version < '3.11' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (python_full_version >= '3.13' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/78/7d432127c41b50bccba979505f272c16cbcadcc33645d5fa3a738110ae75/anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4", size = 219094 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc", size = 109097 }, +] + [[package]] name = "appnope" version = "0.1.4" @@ -279,6 +459,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] +[[package]] +name = "arcp" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/4d/de103380fb1646b720a5318401cf2a49a1a88c082ef06fdd015d848f073b/arcp-0.2.1.tar.gz", hash = "sha256:5c17ac7972c9ef82979cc2caf2b3a87c1aefd3fefe9adb8a5dd728ada57715dd", size = 22063 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/df/32574bc8f1d440d40f4aaf3b455316b2b1536c7243c985a90f8516cf3074/arcp-0.2.1-py2.py3-none-any.whl", hash = "sha256:4e09b2d8a9fc3fda7ec112b553498ff032ea7de354e27dbeb1acc53667122444", size = 15838 }, +] + +[[package]] +name = "arrow" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/33/032cdc44182491aa708d06a68b62434140d8c50820a087fac7af37703357/arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7", size = 152931 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797 }, +] + +[[package]] +name = "asciitree" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e", size = 3951 } + [[package]] name = "asttokens" version = "3.0.0" @@ -319,6 +527,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] +[[package]] +name = "authlib" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "joserfc", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/98/7d93f30d029643c0275dbc0bd6d5a6f670661ee6c9a94d93af7ab4887600/authlib-1.7.2.tar.gz", hash = "sha256:2cea25fefcd4e7173bdf1372c0afc265c8034b23a8cd5dcb6a9164b826c64231", size = 176511 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/95/adcb68e20c34162e9135f370d6e31737719c2b6f94bc953fe7ed1f10fe21/authlib-1.7.2-py2.py3-none-any.whl", hash = "sha256:3e1faedc9d87e7d56a164eca3ccb6ace0d61b94abe83e92242f8dc8bba9b4a9f", size = 259548 }, +] + [[package]] name = "babel" version = "2.17.0" @@ -373,6 +594,19 @@ css = [ { name = "tinycss2" }, ] +[[package]] +name = "blessed" +version = "1.48.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinxed" }, + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/1b/b7c3971c1b34e6fe32ffcb00be769769cbb8ccaf0678aa9bb6f23aea677a/blessed-1.48.0.tar.gz", hash = "sha256:5ed4c0d40d0121669ef949e4f23465982614eb821bd110d1d5a98ed97dea13d8", size = 14036135 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/3e/6e6ba6c809688332d2f8450371e672c76f7e8e73574aba9dfe89b55eb900/blessed-1.48.0-py3-none-any.whl", hash = "sha256:c4ce01cba220f41d2ff244e9829cb4ef2390a26ace8ce1687b8bced1613676e5", size = 131267 }, +] + [[package]] name = "blinker" version = "1.9.0" @@ -402,59 +636,163 @@ wheels = [ [[package]] name = "cffi" -version = "1.17.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, - { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, - { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, - { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, - { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, - { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, - { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, - { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, - { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, - { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, - { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/ef/008a1939e372c06329a3fce4279c02f328488f3526744906eeec3da7ad5f/cffi-2.1.1.tar.gz", hash = "sha256:dd31f52ea1086513bb9df30f8fcee9b8918323ae067a3d5b78bc826a000712be", size = 530807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/d2/2cde336b375f55c76ca670f0be3978cc048e31e24f3b4d7ce8473150a388/cffi-2.1.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:baed1e86cc735622097354b9d1281406caf42ff42a886d29faa8e8d1630333be", size = 183779 }, + { url = "https://files.pythonhosted.org/packages/94/1a/4b2f7c92293ba05cbd4a9a1b28faaf0326272d9488e6354657571c48a7aa/cffi-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca82be1a1d406ecfe1d25dc16cb33488e5a16bf4438c9fb590484ea29d92478b", size = 184178 }, + { url = "https://files.pythonhosted.org/packages/17/0b/ba385d8ccedf926c3cd06e8e2f327027da5afe5f0eb30f1f7bc43ac55125/cffi-2.1.1-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:42e2f76b9455f5a9a844f770bf3e200ed3da0e15f5df3db9c31fe80b04b3d004", size = 211037 }, + { url = "https://files.pythonhosted.org/packages/a3/b9/0f2e58b2cefa33255bff36935d42b13180fe559bba82596540eb404bde7d/cffi-2.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5a59cc1c4442bc3d5c703bf720b51138d0bfc173618807c9ee2490a7541dd3d9", size = 218652 }, + { url = "https://files.pythonhosted.org/packages/37/15/180e0dab27b9312c7479003d14c9e547634b7dcb934e2cc4650e1b131a7a/cffi-2.1.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:9f8d177621de5cb38ee3e731eda45d421db093ec0739f46a5594babda7987a98", size = 205422 }, + { url = "https://files.pythonhosted.org/packages/18/d4/03026f0c850cbbaa9030750490225b4a7f4d524ea4df72c3cc740a90f4ef/cffi-2.1.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:75f80557d1389eddbd0de2681f6a390a0c5338c31ddaa821381c203fc3fd50d9", size = 205444 }, + { url = "https://files.pythonhosted.org/packages/75/77/60bebf6f818bec84210ac5b6979ce4eeadce6fbbaabc9c7ab23e506d1ce5/cffi-2.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:194cffa889098ced9976c3fc6340305e43f6303657d298da55366907c05c22d6", size = 218742 }, + { url = "https://files.pythonhosted.org/packages/b0/ae/679bf47e73fd77b352171727f07de559a003f14de5d02b904a6ec1fa73ca/cffi-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5bb4e7ea95dcd6a014a6fef62e62467d67d8e582326443f3d68e71d6320a9fcf", size = 221054 }, + { url = "https://files.pythonhosted.org/packages/09/b8/eefc0e06913b70aa153bf74c946094a18f58fd4aff11b7f372bfdfdca050/cffi-2.1.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3d22a20b1fb1632cc72c22f95f7b0d2961c3e1c235f245ba4c606c4771035659", size = 213489 }, + { url = "https://files.pythonhosted.org/packages/6f/13/4e56852824a03cdf68523a35686f1c28eacd4bd30a7b0a78e682e6e6e1d3/cffi-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dea0e4d7d4f11f619fe8c1d76caf49e24405b4b5743c0e3be16a500ecd930c9", size = 220241 }, + { url = "https://files.pythonhosted.org/packages/99/7f/040f9e163e4acac3ee3d85b02d00b2576e7ca980d8785f0a3a5f1a9bf7f5/cffi-2.1.1-cp310-cp310-win32.whl", hash = "sha256:7ce713ace7c0e4520535b42b77eaa742c16dab813978064913e5a3cf82973b41", size = 174578 }, + { url = "https://files.pythonhosted.org/packages/ba/0b/644a2ec1a4eaba49c2939410bb1eb1d25b09d6d0582f5d2f95c537043725/cffi-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:a48d62ab9d6f4f98c983223a547af44be6ca3691074c31cecced6facd3ba2dc1", size = 185082 }, + { url = "https://files.pythonhosted.org/packages/70/d2/16d99a0c4948febc0ebd133a13b2f688ff7f8cb04da971e1128872ce0c03/cffi-2.1.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:c8d2c9fd1f2d16f780d15127abb050d13d1a76c03a4bd87d7e4980e45e511e12", size = 183838 }, + { url = "https://files.pythonhosted.org/packages/cd/95/31b535a9f0220ae9f357de4a08d57ce89cb417653c2fd9f075f50822a388/cffi-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:398aff33cee2767e3e781d2554c54bd0dff386bb437581e0d8011fde1a942ec1", size = 184168 }, + { url = "https://files.pythonhosted.org/packages/ad/5a/4707a0dc1f203f5dde5a907b0d4e3c25d71120241048bd5bc6f1bb9d4e71/cffi-2.1.1-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:154852545011f779917b11c78db2358d095da62a9a172b78ad0a583ee5adc0d0", size = 211805 }, + { url = "https://files.pythonhosted.org/packages/ad/66/c19feabb28485b6e0bbaaafa90837a1ef5d302e90f2178bd33f17a49879b/cffi-2.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3311ed60d36f83378794e1009ac6258bafbf81f7888b4caa7b35a521e3f95813", size = 218716 }, + { url = "https://files.pythonhosted.org/packages/a7/92/500760486c8baab49a7a8a58ba7fc3355ec3974b454b8a09e528efde9e1d/cffi-2.1.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6e192623c49c94421616a5778fba35cf0d5a8d000650c1967ef4448ee5cdd990", size = 205569 }, + { url = "https://files.pythonhosted.org/packages/a5/a7/a67c733254d6e7373f7822f8082d8d6beade791e0cf12a7611f376fa61c7/cffi-2.1.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:a6e721d4b0e45d5b65e87534470e67b18dcd092c83f68fba09f152b9cbc061af", size = 204907 }, + { url = "https://files.pythonhosted.org/packages/f7/a4/4399daaf8f7dfee9d7c3327fdb0426ee041cc63edc358b93911ceb2bfc7a/cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:34e261f78cb6ceaaa36f42f2613f4380d94d9c759a9c73c769ee6e0247364632", size = 217807 }, + { url = "https://files.pythonhosted.org/packages/28/f7/dabe6da2466ecbd82dc62e7342dc6b1065dad990c06f00f0ede9ebf2a0ed/cffi-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7225e4514edb64eb6740324353e0da0711954fd8d7da4576755b1c6e09b697cd", size = 221252 }, + { url = "https://files.pythonhosted.org/packages/ce/87/616202d8e51342c07d2534c510111c4cc37201775ce8f60802c9335d1edd/cffi-2.1.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df913725b79db7bcf03448f36b7bf8815363417d5b58deecf9305e3e30f0f21a", size = 214214 }, + { url = "https://files.pythonhosted.org/packages/b4/c6/ab025d75d2c26c19b087c0124e75ee31cb65032f4fe345d356d8c507ab97/cffi-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f5cfbc5fe74540d335175b656c725d74d90e3730c626d92575eea35029d9afaa", size = 219408 }, + { url = "https://files.pythonhosted.org/packages/db/e2/7e8109f65445bdc673a7b54f02c677de462db75674220fd1335efc8eb598/cffi-2.1.1-cp311-cp311-win32.whl", hash = "sha256:f8ec5e643a9a937f64e1999eb9f75d072263751912dc5cd06d3c85f8f44be7c3", size = 174470 }, + { url = "https://files.pythonhosted.org/packages/73/c0/77ba02423c2f7d7091143c45cd49e0e6575c4c1967394bb542bd923a9b74/cffi-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:42f6930c31dc7f50732c9ae793c2786c7b6b044195967bbdde40bb9be81c4cc0", size = 185096 }, + { url = "https://files.pythonhosted.org/packages/7c/47/9f1f85f9672ceda4984dc6c4f8824e8558992a2972c3d3c81fb8eb28d4ba/cffi-2.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:c7659f22557c5a0bc4855cd635f55edec690cc008a40768527762cb9fb263455", size = 179941 }, + { url = "https://files.pythonhosted.org/packages/10/69/43965eccfdead3b9220015fd1320e117be8c6ed01a62ffab76eeb752f5d5/cffi-2.1.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:c8c69575568085ba0b1b10c0249d779a214aea6f6522e949a0fc9fb0fcb449d0", size = 184821 }, + { url = "https://files.pythonhosted.org/packages/54/7d/16e5a096677b5e313ca80cd5e5170efa3ea44624a82bb111925522da64b1/cffi-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f81b3b8f3d4e343550fa4baa0e479bba9f2d29ce9c2e9b51d1ce1718d7442fcf", size = 184719 }, + { url = "https://files.pythonhosted.org/packages/56/e6/8941622732edec876dd17d0453dce07317ae96db34f2ec1436c9d3785986/cffi-2.1.1-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:811bd1e21d32de12efca32393a0ab3f5133b54fce9bd44b8bd77ab07da14bf6a", size = 214799 }, + { url = "https://files.pythonhosted.org/packages/44/de/f98430906df1545ffde0d543dd124a7a439bc2cd32b36b9c53f805df7333/cffi-2.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:68e62fe11f30d5ca8289242866f0a5291402d8529ca2178ab8afc5c9694ae890", size = 222389 }, + { url = "https://files.pythonhosted.org/packages/6a/5b/717f1526b9957b34456313c31645c5b82b8fb5c3fe9e4752999be7128bfc/cffi-2.1.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:4a7c934f7360e8cd64fe9efadcbd10c7c6364f531e432b9a4bf5ccbc9e0e8b50", size = 210249 }, + { url = "https://files.pythonhosted.org/packages/64/b3/f8aa4f3e34986c7e4ec45072d1b1b9dd295b6b18007b45518d79726dd725/cffi-2.1.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:3143d81e29e1e20a9ce10901ec369012947876596f75a222235965f2b7ae832e", size = 208775 }, + { url = "https://files.pythonhosted.org/packages/b1/db/dceb9dd5b231e1da801793f8acc9f3c52a7e1afe40bb1aae37e02b0faad5/cffi-2.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c1453022f490d2459a11819d83ad1d586e9ff65a12ac3e705ffebd46d3685dcf", size = 221822 }, + { url = "https://files.pythonhosted.org/packages/a0/d2/6cd24ae3be000a634109c247d1475d62e5616d0dc78c82770942ec384248/cffi-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:208f941bb9d18e768138677f0a6d2ce01f590df56043dda1df1535ac57c88517", size = 225232 }, + { url = "https://files.pythonhosted.org/packages/cb/52/3fa190537004dd7f0ab860a6dc7c0175b8667f68d1e618a46f5498d30250/cffi-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:210019b6c7cf07f081b4c54635c8cf744377001350e29cc0f81c4377b4797735", size = 223597 }, + { url = "https://files.pythonhosted.org/packages/80/fb/0bb75b7039588c074b37ae99f40d9bfddf990ecb2fbc346ebccd2e56b9be/cffi-2.1.1-cp312-cp312-win32.whl", hash = "sha256:046bfc24911b37851ee1b51aab8bffe713d89c68c6a057b09484ce9fd5f69b4e", size = 175292 }, + { url = "https://files.pythonhosted.org/packages/d9/79/615cc094e2fb508cade7de88d3b4f6c4ec2bab695c97bce9153dc65aadf5/cffi-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f53e442b08449d42821fa4a4fba000095af9f62742a500f978a9f557ec44339a", size = 185919 }, + { url = "https://files.pythonhosted.org/packages/70/c6/d0ea84713fe46b243a436a18fcd47d639732747e21635c8a27191b06dc30/cffi-2.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:7bde5e4cc5c10140859842b9d383af292b22639a4dffb725314baf45968cef80", size = 180093 }, + { url = "https://files.pythonhosted.org/packages/9d/f4/035513d4117049066b4779dc3b7c0c0fdad175fa13731c9f4003f1cd1478/cffi-2.1.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:b5bdfd1c873d4e093aabc0ca84c4ca6dbc4f752afb5c86f146d9742580c9da2e", size = 194248 }, + { url = "https://files.pythonhosted.org/packages/76/af/2aeb4dbb5fc41a04161ae9ff1518de7cec08e164f44a8ce6a4cf7fd2cd1d/cffi-2.1.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:31348097ff5bbe827ccc41795d4dd099d9f0625e7def00ee653c137a490c2a6c", size = 196908 }, + { url = "https://files.pythonhosted.org/packages/a7/46/2e5fdde8555706dd98139a910ca11be02809f3f605ce956f655d0214e100/cffi-2.1.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:9d2055050ea716bd38b7f7f1579c275386646b4894c155a3e2f3cd62ed41b7c6", size = 184805 }, + { url = "https://files.pythonhosted.org/packages/55/41/4c7042f317b9217502988f0873af87e16ad606dc20f84e546e3e6ce9764c/cffi-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19ee6127ee34de7d83ce3d371ebc5ed91addbdcc39f9ab15ce4eb35a4e534971", size = 184764 }, + { url = "https://files.pythonhosted.org/packages/43/1f/1c3d90d91811c8f86ced9ed637956c54bfe5b79ca98fe976d7f8c8979f6b/cffi-2.1.1-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:6a8dddef476fab96d066d578fc88526767b836ab5ab21754e1d5bf3879c31c7c", size = 214722 }, + { url = "https://files.pythonhosted.org/packages/37/6f/3b5ce4c3b2192d250f04908f2bfd91ef34552ec8f7716a5d4abdb8d67bb2/cffi-2.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f16c709686a78c727bbbf059f92b0bf41c6fc60deec706d2dc19f529175a6125", size = 222369 }, + { url = "https://files.pythonhosted.org/packages/02/10/4b3c75dde3d9663c9e02ba05c2668b954f671d4bbe346413ca8c696b295a/cffi-2.1.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:fcd22650c908d7b7da162bbfaab594a1227a15d1643a98c68b122ac642fa2264", size = 210175 }, + { url = "https://files.pythonhosted.org/packages/df/62/14f74b9543e605d17701dc797b815958b8bb70b7624ce1b832ddad48ed6c/cffi-2.1.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:aa9511c62d14da7aacc9b4bf51f3f697a621e83b2d6919008243c3aad168eea3", size = 208670 }, + { url = "https://files.pythonhosted.org/packages/95/95/86342356ff5953b3fb06f7ef7c5bee212d45e770abc7218d451b9148313c/cffi-2.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a931079504ecc49efed7744c476a5c343a92fabf66dec2db95edb1b2fdc770e2", size = 221824 }, + { url = "https://files.pythonhosted.org/packages/eb/ff/7b3429ff53aafe931ed8a5fc69f481bbef7ba6de87ddcbb63d08f483f613/cffi-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a2d7755bef5a12ed488f4ef1f1b69ee9191d7396083b755a5d2295f6edb4768b", size = 225148 }, + { url = "https://files.pythonhosted.org/packages/34/34/a95870b9221e09cf4f2ce3178b1a210abdfe63a1bd357da940418d7b8d15/cffi-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e0bcb7e0f677f543555d2adff3bf19c05f66cdb4796e5ff602442ab2fe3c4ef7", size = 223564 }, + { url = "https://files.pythonhosted.org/packages/70/ea/839b50531021a647fb5e929f72cf97bc1ff702b5472166164b5b6e76b851/cffi-2.1.1-cp313-cp313-win32.whl", hash = "sha256:334644fbac4eff73d985a17a91226df55d0f394160c4cfb880e084c8f7161cac", size = 175263 }, + { url = "https://files.pythonhosted.org/packages/60/a6/8b149b2c3f2e11aaa1618ef64500b45f50f22c57a977a4dff1aff1f91042/cffi-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:1aa5645c30469b09530c4ebca77ebf8f17618293c58f8549cb1a543a50236e7d", size = 185688 }, + { url = "https://files.pythonhosted.org/packages/01/9a/11f687cb39d6a3504060d5242f04f48c735afb4d3d533958a20594890cb2/cffi-2.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:63bbfd5ded17c4840ac07cd8f1c21ba9d9708141f840b324f422f41b207e3973", size = 180078 }, + { url = "https://files.pythonhosted.org/packages/d3/7b/d6bbf82b8b96e7391438898c42f5bd96dd02030fd5b64937d248220003e2/cffi-2.1.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7dbb61fe3a7699468030f71bbe5f8a0e326a151daa91beb11a6fc1f980c55e1c", size = 194064 }, + { url = "https://files.pythonhosted.org/packages/94/e6/bcc91b283be94735e268487a054004f0aa19947b6348fa367db53230abc8/cffi-2.1.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:f24fb43132a4c6b4cb4eb029492919b2db645be6808d738f244fd146c03c32cb", size = 196720 }, + { url = "https://files.pythonhosted.org/packages/d9/99/c4b0c17cacdc9c3b8f280026286a9826d6a208c0f047591a3c3ce99b91fd/cffi-2.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d28630f5854ab07ab1fd4aba756de52326c82e6be15d414b12793f1975048b54", size = 184964 }, + { url = "https://files.pythonhosted.org/packages/b3/a9/9db617d05d7367c1ad0ab00b3aa6e6f9281edd689b4ee9ea0e5a84e89c97/cffi-2.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:661c298b4821edebead0c91edd2b00374d67ad7c5a1f7a91d4442633b79d6a72", size = 184962 }, + { url = "https://files.pythonhosted.org/packages/67/b8/b42132ca113dc567d37684437b46ca1dafc885902b02a110a02d5b511857/cffi-2.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58acb8ab8e295e6c5ea12f888cbb13cf21511ef2a3303a23f4325c29d17fe5c1", size = 222328 }, + { url = "https://files.pythonhosted.org/packages/80/10/c5c0cbf0a657aecf59ef511409734230bf556f05a0d6c9eed7aa5c0a0166/cffi-2.1.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:456a61fa52d579ebf9df2e9552ead5129855dbaff6c1e5a9b1bc408809bdc062", size = 209985 }, + { url = "https://files.pythonhosted.org/packages/d5/6c/bfa0b87b03b9238148beca990292843c9396ba069b54496596594173de7b/cffi-2.1.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:a4f00aa42f75d6e4595e8866e748cc1705adc0cddfeb2ca86d0d03993d63ba03", size = 208530 }, + { url = "https://files.pythonhosted.org/packages/e9/02/4e7d553a7ac4b4238b38b3c1b80d486e9d4436f8d2acbf87a0997fe3f402/cffi-2.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b0431303acaea1089ad4b3e9ce4e6518193def1118d4073ca848635ee4ea2e96", size = 221525 }, + { url = "https://files.pythonhosted.org/packages/82/1d/a4aaf9babd75acb4d5f223bff71533bee748dd770a382619a798960ee9ba/cffi-2.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:64faea20f4e2613363a1a9b9c7dd73058f3ecd00133a511e72ad7c511658f527", size = 225053 }, + { url = "https://files.pythonhosted.org/packages/81/10/5dc0e7bdd18e22107054288283380fc97a06ae3f1656a106908d666a3c88/cffi-2.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5c58fe613dc5e5336357eff555824a314d8e43282600435c8d1cb6a7a2fedd13", size = 223213 }, + { url = "https://files.pythonhosted.org/packages/0b/e9/d0061c364cde06ee43168a0d076ac1da512cbc380d44767b844ba34fe2b6/cffi-2.1.1-cp314-cp314-win32.whl", hash = "sha256:1a18a57b58cfb21fc28d72e876acf10eaed67a1ed96226f92af4df681d571c4c", size = 177682 }, + { url = "https://files.pythonhosted.org/packages/a7/06/1c3e01e3ba14c39f6d10bfbac52753b7e22259e38088e5cfe1d704918690/cffi-2.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:3222ba5d678f80a030e6afbcc33dc1ae5cb45facabb61cee2c7016b8432fde48", size = 187949 }, + { url = "https://files.pythonhosted.org/packages/87/5b/da4e39efe18eeb89cf580ea9cfc66b6a7c3eadb808fc0cc1d3a295cb5a5d/cffi-2.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:ab36d55f9ed2d067327667c2fea18dda018eb628dd6347aa01dda6cf1f5d3836", size = 182947 }, + { url = "https://files.pythonhosted.org/packages/23/59/40338bf421c5accea1d45158170c87006ef1cd371b05c077e76476949728/cffi-2.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7750c6449dff7864bb9bb27ddfb0267756189201a3afc911d82b3caacd70dfc3", size = 188504 }, + { url = "https://files.pythonhosted.org/packages/7d/47/5ecf1023850036e674c77ec4de86182d309ae344e39e7cba984b7df5d647/cffi-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0beceaabe56af686895136a2de78db54ecd8e4046b236b8fd6d6cb61389e9bf2", size = 188259 }, + { url = "https://files.pythonhosted.org/packages/2a/9c/92934c3bea9f785b23eba304538c0b4d37a2a96d2431eb3a1bc87a11aa19/cffi-2.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:49cbc70e6542d4ccccb936558d1064a8012541e78f821f955cff24e357776c94", size = 223864 }, + { url = "https://files.pythonhosted.org/packages/4d/45/ba4c93527bc38616a8bd36488acb69a2212d60486794f0c1f318949bbb76/cffi-2.1.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e2d65b31f36619cda3999b78b2aa9632e76b78448e7a56fc4240824200e7c4fc", size = 211538 }, + { url = "https://files.pythonhosted.org/packages/80/e9/b6ef565e452acb932fb0cb5443f44a78efbd1233e566f02b5a83855e9115/cffi-2.1.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:28907ab9bfb6aa13184cfc17c6b8e1023c5ab6fd7076d8c20a35e59fe04f8f29", size = 210688 }, + { url = "https://files.pythonhosted.org/packages/9a/95/eff5f0cee78d2eabc7eebffec40d3fc1876b5f3c95582e018bb4b99601f2/cffi-2.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51b31d1c98274844cfd7838ce00bfc27c7423a4dc00fc0772fc3331c2cc90676", size = 223803 }, + { url = "https://files.pythonhosted.org/packages/fa/01/579d39fb8bef00a335a23d83757b44feb24cd6345a2c451b64cb67b9c362/cffi-2.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e7cecbaadb83884793e05828cee59b210b24583b9c7425d0ba6a754fe22eb4e", size = 226763 }, + { url = "https://files.pythonhosted.org/packages/8d/b0/0b44f47c60b01b57b6e2bbd92343f13a85a1d93bc46ccf6e47e244acd99c/cffi-2.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:25792eac27877609e7bb06d42ff88278a6624fff2ba9bbb523c09616b117e80f", size = 225688 }, + { url = "https://files.pythonhosted.org/packages/eb/d2/3b7176cb570a1d3e27faf67b72f591af508036e0d8b2be2ef9af9e8c84bb/cffi-2.1.1-cp314-cp314t-win32.whl", hash = "sha256:8ef53b2de9bcb9197d31854256575d59dbac0cba72ac627bb291ef5eceb74be4", size = 182868 }, + { url = "https://files.pythonhosted.org/packages/56/78/31f00c1bcd97c9bbf55f1bfdf5bc809a5de8887473e90bb9960dca825e80/cffi-2.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:616f097f2fe415bc92a247f02e11f634e1f9e9a83d327e3c915c15089c87869e", size = 194104 }, + { url = "https://files.pythonhosted.org/packages/7b/1b/58496f2ed0a35de575250c02a43ab3cc2c04d494a88fed31c1cabc0fd176/cffi-2.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ad2c86c495b899d862ea0f4b42891b8713a3bd45dd4105c7fd51c2a72f39f3a5", size = 186402 }, + { url = "https://files.pythonhosted.org/packages/c1/8f/9ebe220eab48a093d1a5a5e339ab0dc7316eef3bb04d63c42f0251b61f50/cffi-2.1.1-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:dddad92b554513a31f272570678ba307fb9f618f05e3d4a5eacafff9eae03e1d", size = 194043 }, + { url = "https://files.pythonhosted.org/packages/ff/69/844bad3ece306c4782c2ecb93597035b6690d48704b803914c199da1e8b3/cffi-2.1.1-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:da0e573f9f97159390c89d9f1a9e41908b66d408cc5b58d08cf3847d844c531b", size = 196737 }, + { url = "https://files.pythonhosted.org/packages/1b/8a/af668013284634733f02d683458a0728739c7d6ddb5e14cb0c20832266fe/cffi-2.1.1-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:fb92203a88b3d3053034db775110081c49d28be6551923805e039924093761e4", size = 184933 }, + { url = "https://files.pythonhosted.org/packages/0c/75/2f5207ff6d1a613133b23a5203cc0c2a628313b5eb3974d7956ae3c57950/cffi-2.1.1-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:2ae64be792b8966f2c69538199728b290e34726562896df1e5dc8ffd8d8188e8", size = 185002 }, + { url = "https://files.pythonhosted.org/packages/e2/31/9e1313b0a6e30e91b3b3d3fff51ae99c857c07738e3afcce1f7334e1b7ab/cffi-2.1.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:507a24c282e0f42f8ed737cf048572cbf580468da5555764a8331735e9c736b6", size = 222271 }, + { url = "https://files.pythonhosted.org/packages/50/e3/f6234a833e6e08c7007003074723c406559eecf9b48dfc97471e5a8eb7a0/cffi-2.1.1-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:246fa40ce8645a614ff682e0b70f37134e460eaf93a775e0cbe3cca585a67a80", size = 209919 }, + { url = "https://files.pythonhosted.org/packages/0d/fc/5f74e293fced6edb51af3a46c4ccf6c23c9943774ecb375ddbd522c76add/cffi-2.1.1-cp315-cp315-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:471cee653ae88de62096552e6d24ccb4a5adb8c8c9f10b5054d0122c15bf2779", size = 208529 }, + { url = "https://files.pythonhosted.org/packages/44/16/29e6d01b388bef055ecd6ca8244b3f4d336bd09e92d5d892187b9601084e/cffi-2.1.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeae0e330c9f6acd681f647d46cefd30c29f93e3392882e792e82080c9691399", size = 221630 }, + { url = "https://files.pythonhosted.org/packages/a4/18/fa7f1f6857d5eb88a4ca99ffcbfb7c387a287ccc154c64a73e86314745d7/cffi-2.1.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:42a494cee34437f05546455144f2b5d9ac09b1face62bcfce597d2e521066688", size = 225134 }, + { url = "https://files.pythonhosted.org/packages/e0/9f/e8e3dfa04a1b4c241f8c91faacad872b4d4efd051d49764ad4e2fd4b9fea/cffi-2.1.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:cc572dace3f60ef98d7b12ff411d20f5362feb31a0439eab0085bbfd349982d7", size = 223197 }, + { url = "https://files.pythonhosted.org/packages/f8/7e/8debeb04f1ab9fe2a6963964cd6f1aaf7192627b83926586a6a4e089c9fa/cffi-2.1.1-cp315-cp315-win32.whl", hash = "sha256:4f42141fc14250de6dde5ee7ea4432be017252d91f19c5ad043c084cea629cac", size = 177683 }, + { url = "https://files.pythonhosted.org/packages/e0/31/5158704cc474ab65c1647932e88be78dc0873f47130e253be38bcaf13d01/cffi-2.1.1-cp315-cp315-win_amd64.whl", hash = "sha256:e6e8cff14d6fb0be70a09c0bdc58096f501952d04624ebf867e0e56da2df8960", size = 187897 }, + { url = "https://files.pythonhosted.org/packages/cc/4b/b3a2da8570c704ffc0f9762cdc3ec0f02c8573798e0b5cf7f11c82bbb70f/cffi-2.1.1-cp315-cp315-win_arm64.whl", hash = "sha256:27350daa11d4f10c540e6e89dada4c54feb7256ad03e9a4dc075ebad7ba360d1", size = 182935 }, + { url = "https://files.pythonhosted.org/packages/d0/ef/5443574510a1207e6f6bc38ba6e1f1de36cb48fef07b2728bb896a21f430/cffi-2.1.1-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:c26608d2222fb1e94487e4a387d85f13eb55d5ed725cb25a0c589ac4ee60e7bc", size = 188464 }, + { url = "https://files.pythonhosted.org/packages/7e/ae/a56fa8c4686ad50e148fcbc8d3ae0d03915ff5c30d795058988c24118cef/cffi-2.1.1-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:4be96343e422f2dfcd12ab5c9f5aebe03f82f737c6bffeca6830b3875cb44aab", size = 188262 }, + { url = "https://files.pythonhosted.org/packages/53/b2/6187f46f2912276a3ae284076109cc5c8680482f11f766ccf26db4a86427/cffi-2.1.1-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:937c0052c05a31ca1daf18de3158eed4dbfcb9cc107adbea227728d647be701e", size = 223779 }, + { url = "https://files.pythonhosted.org/packages/8a/f6/c3ad28bd19f77047a03084424fbd4cbe997303267c14423737324be0385d/cffi-2.1.1-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:df423d40ee8654634421812bc3b196da3f9bd7d32929da813f8394c4348a5358", size = 211520 }, + { url = "https://files.pythonhosted.org/packages/a0/cd/ccac9013a5bd9fd764de118674ab9c805b5ca10c19270d90ee273f8b2240/cffi-2.1.1-cp315-cp315t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:a730a083190634c65cca36ba5f489531576ebd79bcd5c8e172130f6453127231", size = 210673 }, + { url = "https://files.pythonhosted.org/packages/52/86/2976131c639aead931c5bee5aba67e4b09fbeb8018b6f282f70803f923a7/cffi-2.1.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:363e05fa78e15116c3c32c210ee36884fd6b9afa6d440e47112c3bd511d64cb6", size = 223835 }, + { url = "https://files.pythonhosted.org/packages/ac/0c/33a7aeab2f9c76918c52e084beb39c570db3588133412929e8ec06fab90b/cffi-2.1.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:770de9db11e84213beec501cfcaa013b019820ca881e03344dea5844f7876d94", size = 226705 }, + { url = "https://files.pythonhosted.org/packages/e3/26/2cde30fdde421130bfc18f70395731a6e6b2053c6a1978a5258ff04e72fa/cffi-2.1.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:7da0c5eff80f0197f3b3d1232ec5a682a9325f4ae9016a78f5f5ca35f9ced1f5", size = 225539 }, + { url = "https://files.pythonhosted.org/packages/6d/cd/a361394c94b2129d604bb846f624a8e88255a3ee33129c434a00d715e64f/cffi-2.1.1-cp315-cp315t-win32.whl", hash = "sha256:06c72bb76605a4b0cd0aad6930b69d4baf7dd5d806cfc409b824191099700e66", size = 182707 }, + { url = "https://files.pythonhosted.org/packages/9b/b5/ba2b299993c26577d529b6ae29841f9e15b9fcf004d65f423f4fcf94ade9/cffi-2.1.1-cp315-cp315t-win_amd64.whl", hash = "sha256:d9c275eaacd24aa73f94ffd6de08fc3f932424d8b6c376f4bed7cde376fe7bc3", size = 193772 }, + { url = "https://files.pythonhosted.org/packages/aa/29/35e016098c814cd93de9cd320c66b5bfba14dc6ecedd3cb518fa7c408c69/cffi-2.1.1-cp315-cp315t-win_arm64.whl", hash = "sha256:d18e5ac0f2f03f4f518d3e23db0f0cad7faa1da8620e9c09461d443bbf6e6692", size = 186360 }, +] + +[[package]] +name = "cftime" +version = "1.6.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/dc/470ffebac2eb8c54151eb893055024fe81b1606e7c6ff8449a588e9cd17f/cftime-1.6.5.tar.gz", hash = "sha256:8225fed6b9b43fb87683ebab52130450fc1730011150d3092096a90e54d1e81e", size = 326605 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/45/dcc38d7b293107d3e33b3d94b2619687eb414a4f16880e2e841cdb6ac49a/cftime-1.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ad81e8cb0eb873b33c3d1e22c6168163fdc64daa8f7aeb4da8092f272575f4d", size = 510221 }, + { url = "https://files.pythonhosted.org/packages/68/63/2875341516fcfe80f1a16f86b420aec9441223ab5381d554441c9fdae56e/cftime-1.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12d95c6af852114a13301c5a61e41afdbd1542e72939c1083796f8418b9b8b0e", size = 490684 }, + { url = "https://files.pythonhosted.org/packages/80/7f/85f2c4c7ae8300b7871af7d7d144ad06f71dc0dd6258f0d18fd966067d1b/cftime-1.6.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2659b7df700e27d9e3671f686ce474dfb5fc274966961edf996acc148dfa094a", size = 1592268 }, + { url = "https://files.pythonhosted.org/packages/6c/9a/72dbd72498e958edf41a770bbd05e68141774325a945092059f4eb9c653d/cftime-1.6.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:94cebdfcda6a985b8e69aed22d00d6b8aa1f421495adbdcff1d59b3e896d81e2", size = 1624716 }, + { url = "https://files.pythonhosted.org/packages/bc/9e/2c4c720ad8bbe87994ca62a0e3c09d3786b984af664a91a6f3a668aa0b13/cftime-1.6.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:179681b023349a2fe277ceccc89d4fc52c0dd105cb59b7187b5bc5d442875133", size = 1705927 }, + { url = "https://files.pythonhosted.org/packages/da/77/66484061dee5fbcb2fdcfa6a491d4efb880725117f4a339d20a5323105df/cftime-1.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:d8b9fdecb466879cfe8ca4472b229b6f8d0bb65e4ffd44266ae17484bac2cf38", size = 472435 }, + { url = "https://files.pythonhosted.org/packages/e4/f6/9da7aba9548ede62d25936b8b448acd7e53e5dcc710896f66863dcc9a318/cftime-1.6.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:474e728f5a387299418f8d7cb9c52248dcd5d977b2a01de7ec06bba572e26b02", size = 512733 }, + { url = "https://files.pythonhosted.org/packages/1f/d5/d86ad95fc1fd89947c34b495ff6487b6d361cf77500217423b4ebcb1f0c2/cftime-1.6.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab9e80d4de815cac2e2d88a2335231254980e545d0196eb34ee8f7ed612645f1", size = 492946 }, + { url = "https://files.pythonhosted.org/packages/4f/93/d7e8dd76b03a9d5be41a3b3185feffc7ea5359228bdffe7aa43ac772a75b/cftime-1.6.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ad24a563784e4795cb3d04bd985895b5db49ace2cbb71fcf1321fd80141f9a52", size = 1689856 }, + { url = "https://files.pythonhosted.org/packages/3e/8d/86586c0d75110f774e46e2bd6d134e2d1cca1dedc9bb08c388fa3df76acd/cftime-1.6.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a3cda6fd12c7fb25eff40a6a857a2bf4d03e8cc71f80485d8ddc65ccbd80f16a", size = 1718573 }, + { url = "https://files.pythonhosted.org/packages/bb/fe/7956914cfc135992e89098ebbc67d683c51ace5366ba4b114fef1de89b21/cftime-1.6.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:28cda78d685397ba23d06273b9c916c3938d8d9e6872a537e76b8408a321369b", size = 1788563 }, + { url = "https://files.pythonhosted.org/packages/e5/c7/6669708fcfe1bb7b2a7ce693b8cc67165eac00d3ac5a5e8f6ce1be551ff9/cftime-1.6.5-cp311-cp311-win_amd64.whl", hash = "sha256:93ead088e3a216bdeb9368733a0ef89a7451dfc1d2de310c1c0366a56ad60dc8", size = 473631 }, + { url = "https://files.pythonhosted.org/packages/82/c5/d70cb1ab533ca790d7c9b69f98215fa4fead17f05547e928c8f2b8f96e54/cftime-1.6.5-cp311-cp311-win_arm64.whl", hash = "sha256:3384d69a0a7f3d45bded21a8cbcce66c8ba06c13498eac26c2de41b1b9b6e890", size = 459383 }, + { url = "https://files.pythonhosted.org/packages/b6/c1/e8cb7f78a3f87295450e7300ebaecf83076d96a99a76190593d4e1d2be40/cftime-1.6.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eef25caed5ebd003a38719bd3ff8847cd52ef2ea56c3ebdb2c9345ba131fc7c5", size = 504175 }, + { url = "https://files.pythonhosted.org/packages/50/1a/86e1072b09b2f9049bb7378869f64b6747f96a4f3008142afed8955b52a4/cftime-1.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c87d2f3b949e45463e559233c69e6a9cf691b2b378c1f7556166adfabbd1c6b0", size = 485980 }, + { url = "https://files.pythonhosted.org/packages/35/28/d3177b60da3f308b60dee2aef2eb69997acfab1e863f0bf0d2a418396ce5/cftime-1.6.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:82cb413973cc51b55642b3a1ca5b28db5b93a294edbef7dc049c074b478b4647", size = 1591166 }, + { url = "https://files.pythonhosted.org/packages/d1/fd/a7266970312df65e68b5641b86e0540a739182f5e9c62eec6dbd29f18055/cftime-1.6.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85ba8e7356d239cfe56ef7707ac30feaf67964642ac760a82e507ee3c5db4ac4", size = 1642614 }, + { url = "https://files.pythonhosted.org/packages/c4/73/f0035a4bc2df8885bb7bd5fe63659686ea1ec7d0cc74b4e3d50e447402e5/cftime-1.6.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:456039af7907a3146689bb80bfd8edabd074c7f3b4eca61f91b9c2670addd7ad", size = 1688090 }, + { url = "https://files.pythonhosted.org/packages/88/15/8856a0ab76708553ff597dd2e617b088c734ba87dc3fd395e2b2f3efffe8/cftime-1.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:da84534c43699960dc980a9a765c33433c5de1a719a4916748c2d0e97a071e44", size = 464840 }, + { url = "https://files.pythonhosted.org/packages/3a/85/451009a986d9273d2208fc0898aa00262275b5773259bf3f942f6716a9e7/cftime-1.6.5-cp312-cp312-win_arm64.whl", hash = "sha256:c62cd8db9ea40131eea7d4523691c5d806d3265d31279e4a58574a42c28acd77", size = 450534 }, + { url = "https://files.pythonhosted.org/packages/2e/60/74ea344b3b003fada346ed98a6899085d6fd4c777df608992d90c458fda6/cftime-1.6.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4aba66fd6497711a47c656f3a732c2d1755ad15f80e323c44a8716ebde39ddd5", size = 502453 }, + { url = "https://files.pythonhosted.org/packages/1e/14/adb293ac6127079b49ff11c05cf3d5ce5c1f17d097f326dc02d74ddfcb6e/cftime-1.6.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89e7cba699242366e67d6fb5aee579440e791063f92a93853610c91647167c0d", size = 484541 }, + { url = "https://files.pythonhosted.org/packages/4f/74/bb8a4566af8d0ef3f045d56c462a9115da4f04b07c7fbbf2b4875223eebd/cftime-1.6.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2f1eb43d7a7b919ec99aee709fb62ef87ef1cf0679829ef93d37cc1c725781e9", size = 1591014 }, + { url = "https://files.pythonhosted.org/packages/ba/08/52f06ff2f04d376f9cd2c211aefcf2b37f1978e43289341f362fc99f6a0e/cftime-1.6.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e02a1d80ffc33fe469c7db68aa24c4a87f01da0c0c621373e5edadc92964900b", size = 1633625 }, + { url = "https://files.pythonhosted.org/packages/cf/33/03e0b23d58ea8fab94ecb4f7c5b721e844a0800c13694876149d98830a73/cftime-1.6.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18ab754805233cdd889614b2b3b86a642f6d51a57a1ec327c48053f3414f87d8", size = 1684269 }, + { url = "https://files.pythonhosted.org/packages/a4/60/a0cfba63847b43599ef1cdbbf682e61894994c22b9a79fd9e1e8c7e9de41/cftime-1.6.5-cp313-cp313-win_amd64.whl", hash = "sha256:6c27add8f907f4a4cd400e89438f2ea33e2eb5072541a157a4d013b7dbe93f9c", size = 465364 }, + { url = "https://files.pythonhosted.org/packages/3d/e8/ec32f2aef22c15604e6fda39ff8d581a00b5469349f8fba61640d5358d2c/cftime-1.6.5-cp313-cp313-win_arm64.whl", hash = "sha256:31d1ff8f6bbd4ca209099d24459ec16dea4fb4c9ab740fbb66dd057ccbd9b1b9", size = 450468 }, + { url = "https://files.pythonhosted.org/packages/ea/6c/a9618f589688358e279720f5c0fe67ef0077fba07334ce26895403ebc260/cftime-1.6.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c69ce3bdae6a322cbb44e9ebc20770d47748002fb9d68846a1e934f1bd5daf0b", size = 502725 }, + { url = "https://files.pythonhosted.org/packages/d8/e3/da3c36398bfb730b96248d006cabaceed87e401ff56edafb2a978293e228/cftime-1.6.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e62e9f2943e014c5ef583245bf2e878398af131c97e64f8cd47c1d7baef5c4e2", size = 485445 }, + { url = "https://files.pythonhosted.org/packages/32/93/b05939e5abd14bd1ab69538bbe374b4ee2a15467b189ff895e9a8cdaddf6/cftime-1.6.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7da5fdaa4360d8cb89b71b8ded9314f2246aa34581e8105c94ad58d6102d9e4f", size = 1584434 }, + { url = "https://files.pythonhosted.org/packages/7f/89/648397f9936e0b330999c4e776ebf296ec3c6a65f9901687dbca4ab820da/cftime-1.6.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bff865b4ea4304f2744a1ad2b8149b8328b321dd7a2b9746ef926d229bd7cd49", size = 1609812 }, + { url = "https://files.pythonhosted.org/packages/e7/0f/901b4835aa67ad3e915605d4e01d0af80a44b114eefab74ae33de6d36933/cftime-1.6.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e552c5d1c8a58f25af7521e49237db7ca52ed2953e974fe9f7c4491e95fdd36c", size = 1669768 }, + { url = "https://files.pythonhosted.org/packages/22/d5/e605e4b28363e7a9ae98ed12cabbda5b155b6009270e6a231d8f10182a17/cftime-1.6.5-cp314-cp314-win_amd64.whl", hash = "sha256:e645b095dc50a38ac454b7e7f0742f639e7d7f6b108ad329358544a6ff8c9ba2", size = 463818 }, + { url = "https://files.pythonhosted.org/packages/3d/89/a8f85ae697ff10206ec401c2621f5ca9f327554f586d62f244739ceeb347/cftime-1.6.5-cp314-cp314-win_arm64.whl", hash = "sha256:b9044d7ac82d3d8af189df1032fdc871bbd3f3dd41a6ec79edceb5029b71e6e0", size = 459862 }, + { url = "https://files.pythonhosted.org/packages/ab/05/7410e12fd03a0c52717e74e6a1b49958810807dda212e23b65d43ea99676/cftime-1.6.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9ef56460cb0576e1a9161e1428c9e1a633f809a23fa9d598f313748c1ae5064e", size = 533781 }, + { url = "https://files.pythonhosted.org/packages/44/ba/10e3546426d3ed9f9cc82e4a99836bb6fac1642c7830f7bdd0ac1c3f0805/cftime-1.6.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4f4873d38b10032f9f3111c547a1d485519ae64eee6a7a2d091f1f8b08e1ba50", size = 515218 }, + { url = "https://files.pythonhosted.org/packages/bd/68/efa11eae867749e921bfec6a865afdba8166e96188112dde70bb8bb49254/cftime-1.6.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ccce0f4c9d3f38dd948a117e578b50d0e0db11e2ca9435fb358fd524813e4b61", size = 1579932 }, + { url = "https://files.pythonhosted.org/packages/9d/6c/0971e602c1390a423e6621dfbad9f1d375186bdaf9c9c7f75e06f1fbf355/cftime-1.6.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19cbfc5152fb0b34ce03acf9668229af388d7baa63a78f936239cb011ccbe6b1", size = 1555894 }, + { url = "https://files.pythonhosted.org/packages/ad/fc/8475a15b7c3209a4a68b563dfc5e01ce74f2d8b9822372c3d30c68ab7f39/cftime-1.6.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4470cd5ef3c2514566f53efbcbb64dd924fa0584637d90285b2f983bd4ee7d97", size = 513027 }, + { url = "https://files.pythonhosted.org/packages/f7/80/4ecbda8318fbf40ad4e005a4a93aebba69e81382e5b4c6086251cd5d0ee8/cftime-1.6.5-cp314-cp314t-win_arm64.whl", hash = "sha256:034c15a67144a0a5590ef150c99f844897618b148b87131ed34fda7072614662", size = 469065 }, ] [[package]] @@ -523,7 +861,7 @@ name = "click" version = "8.1.8" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "(platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "colorama", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } wheels = [ @@ -539,6 +877,172 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, ] +[[package]] +name = "codecarbon" +version = "3.0.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "arrow", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "click", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "fief-client", extra = ["cli"], marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "nvidia-ml-py", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "pandas", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "prometheus-client", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "psutil", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "py-cpuinfo", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "pydantic", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "questionary", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "rapidfuzz", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "requests", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "rich", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typer", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/85/6aefb6545c713910368a5b8520ffe8e3adbeda897b9fb99dd1595a091ede/codecarbon-3.0.6.tar.gz", hash = "sha256:913b5342e25d28e1600b850089edffa7573a19ff6b001f6920ebdce4364c7612", size = 297690 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/f8/49769329c4f9f31f073ca89c099e8c30de2e8e451d99272ed6db98c73362/codecarbon-3.0.6-py3-none-any.whl", hash = "sha256:99f103dca070fb30a3cf6f0b54d8b9ea10bc8a9cb275050b21e1e8e69085939d", size = 278045 }, +] + +[[package]] +name = "codecarbon" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "arrow", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "authlib", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "click", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "joserfc", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "nvidia-ml-py", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "pandas", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "prometheus-client", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "psutil", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "py-cpuinfo", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "pycountry", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "pydantic", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "questionary", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "rapidfuzz", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "requests", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "rich", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typer", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/33/0954d862a3ba83ca6f6c6103b75b3467eef6013e86af3e51fa9c0507f7d5/codecarbon-3.3.0.tar.gz", hash = "sha256:80dad7db6e62f5c6b716afd3746ea892146d36071ca1e786683899c6de75d6f7", size = 447073 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/76/619b837c3ed1cee46235bdae3a6959ca9fc90c2f0b5cb115036e91d70574/codecarbon-3.3.0-py3-none-any.whl", hash = "sha256:38cbe0b4fcc7e6ebde529c49fb4cd05ef29f3da3ec43c81acdd2f0acda4f195e", size = 396941 }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -553,7 +1057,7 @@ name = "colorful" version = "0.5.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "(platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "colorama", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fa/5f/38e40c3bc4107c39e4062d943026b8ee25154cb4b185b882f274a1ab65da/colorful-0.5.6.tar.gz", hash = "sha256:b56d5c01db1dac4898308ea889edcb113fbee3e6ec5df4bacffd61d5241b5b8d", size = 209280 } wheels = [ @@ -584,6 +1088,9 @@ dependencies = [ { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0e/bc/2a53b259ec14101a42690992ea8fc2456edcacc73ede62f803dd3c4b0bdc/configspace-1.2.1.tar.gz", hash = "sha256:2fc1c4477f7839d38b53d8813c2581967df57ccd7d8b4b506e879a8835cb964c", size = 130983 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/d0/e899691a9cdec2b866fbf7c39747195b9402e64260632f415c851ae8e503/configspace-1.2.1-py3-none-any.whl", hash = "sha256:78d3cef1bdb447bf25c2433891580bf6c2b468d47b729356a8646d5b7cd9eb5a", size = 117557 }, +] [[package]] name = "contourpy" @@ -717,6 +1224,63 @@ toml = [ { name = "tomli", marker = "python_full_version <= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, ] +[[package]] +name = "cryptography" +version = "49.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100 }, + { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978 }, + { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422 }, + { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503 }, + { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779 }, + { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683 }, + { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874 }, + { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283 }, + { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844 }, + { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290 }, + { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612 }, + { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804 }, + { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026 }, + { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892 }, + { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835 }, + { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239 }, + { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593 }, + { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961 }, + { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145 }, + { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719 }, + { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209 }, + { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285 }, + { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441 }, + { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869 }, + { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948 }, + { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153 }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947 }, + { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429 }, + { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968 }, + { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758 }, + { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863 }, + { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983 }, + { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173 }, + { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298 }, + { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338 }, + { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650 }, + { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820 }, + { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968 }, + { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547 }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685 }, + { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239 }, + { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584 }, + { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885 }, + { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449 }, + { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731 }, +] + [[package]] name = "cycler" version = "0.12.1" @@ -887,6 +1451,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 }, ] +[[package]] +name = "donfig" +version = "0.8.1.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, +] + +[[package]] +name = "dotenv" +version = "0.9.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dotenv" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/b7/545d2c10c1fc15e48653c91efde329a790f2eecfbbf2bd16003b5db2bab0/dotenv-0.9.9-py2.py3-none-any.whl", hash = "sha256:29cf74a087b31dafdb5a446b6d7e11cbce8ed2741540e2339c69fbef92c94ce9", size = 1892 }, +] + [[package]] name = "exceptiongroup" version = "1.2.2" @@ -928,6 +1515,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 }, ] +[[package]] +name = "fasteners" +version = "0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/18/7881a99ba5244bfc82f06017316ffe93217dbbbcfa52b887caa1d4f2a6d3/fasteners-0.20.tar.gz", hash = "sha256:55dce8792a41b56f727ba6e123fcaee77fd87e638a6863cec00007bfea84c8d8", size = 25087 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/ac/e5d886f892666d2d1e5cb8c1a41146e1d79ae8896477b1153a21711d3b44/fasteners-0.20-py3-none-any.whl", hash = "sha256:9422c40d1e350e4259f509fb2e608d6bc43c0136f79a00db1b49046029d0b3b7", size = 18702 }, +] + [[package]] name = "fastjsonschema" version = "2.21.1" @@ -937,6 +1533,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] +[[package]] +name = "fief-client" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", version = "0.27.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "jwcrypto", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/af/f6cc3ded8bdb901097b92a3ed444c48576a1b62f01352cb2fa069b0dd166/fief_client-0.20.0.tar.gz", hash = "sha256:dbfb906d03c4a5402ceac5c843aa4708535fb6f5d5c1c4e263ec06fbbbc434d7", size = 32465 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/06/d33506317b4c9b71025eb010d96c4f7a8f89fa620ca30532c2e8e4390593/fief_client-0.20.0-py3-none-any.whl", hash = "sha256:425f40cc7c45c651daec63da402e033c53d91dcaa3f9bf208873fd8692fc16dc", size = 20219 }, +] + +[package.optional-dependencies] +cli = [ + { name = "yaspin", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] + [[package]] name = "filelock" version = "3.18.0" @@ -962,6 +1576,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/af/47/93213ee66ef8fae3b93b3e29206f6b251e65c97bd91d8e1c5596ef15af0a/flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136", size = 102979 }, ] +[[package]] +name = "flask-cors" +version = "6.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/03/4e464a50860f9adf08b5c1d3479cb8ea1f12af2aa69535c7042c6e628135/flask_cors-6.0.5.tar.gz", hash = "sha256:30c5031552cd59f620ac0c8211dac45b345d3b2df310e7721879e4f46ef9c601", size = 101386 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/55/5bb1a2d918e9f02f131e47a59032bae70e48050e986e941511fd737a935c/flask_cors-6.0.5-py3-none-any.whl", hash = "sha256:68fcf75693e961f3af26683b23c4b9a8fb6b64de17d20d0c37b95e8de7ab2ed8", size = 16692 }, +] + [[package]] name = "flatbuffers" version = "25.2.10" @@ -1129,6 +1757,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216", size = 491326 }, ] +[[package]] +name = "fvcore" +version = "0.1.5.post20221221" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "iopath" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "pyyaml" }, + { name = "tabulate" }, + { name = "termcolor" }, + { name = "tqdm" }, + { name = "yacs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/93/d056a9c4efc6c79ba7b5159cc66bb436db93d2cc46dca18ed65c59cc8e4e/fvcore-0.1.5.post20221221.tar.gz", hash = "sha256:f2fb0bb90572ae651c11c78e20493ed19b2240550a7e4bbb2d6de87bdd037860", size = 50217 } + [[package]] name = "gast" version = "0.6.0" @@ -1138,6 +1782,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a3/61/8001b38461d751cd1a0c3a6ae84346796a5758123f3ed97a1b121dfbf4f3/gast-0.6.0-py3-none-any.whl", hash = "sha256:52b182313f7330389f72b069ba00f174cfe2a06411099547288839c6cbafbd54", size = 21173 }, ] +[[package]] +name = "geocoder" +version = "1.38.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "future" }, + { name = "ratelim" }, + { name = "requests" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/0b/2ea440270c1efb7ac73450cb704344c8127f45dabff0bea48711dc9dd93a/geocoder-1.38.1.tar.gz", hash = "sha256:c9925374c961577d0aee403b09e6f8ea1971d913f011f00ca70c76beaf7a77e7", size = 64345 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/6b/13166c909ad2f2d76b929a4227c952630ebaf0d729f6317eb09cbceccbab/geocoder-1.38.1-py2.py3-none-any.whl", hash = "sha256:a733e1dfbce3f4e1a526cac03aadcedb8ed1239cf55bd7f3a23c60075121a834", size = 98590 }, +] + [[package]] name = "gitdb" version = "4.0.12" @@ -1193,8 +1853,43 @@ wheels = [ ] [[package]] -name = "google-pasta" -version = "0.2.0" +name = "google-crc32c" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/41/4b9c02f99e4c5fb477122cd5437403b552873f014616ac1d19ac8221a58d/google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79", size = 14192 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/ac/6f7bc93886a823ab545948c2dd48143027b2355ad1944c7cf852b338dc91/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0470b8c3d73b5f4e3300165498e4cf25221c7eb37f1159e221d1825b6df8a7ff", size = 31296 }, + { url = "https://files.pythonhosted.org/packages/f7/97/a5accde175dee985311d949cfcb1249dcbb290f5ec83c994ea733311948f/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:119fcd90c57c89f30040b47c211acee231b25a45d225e3225294386f5d258288", size = 30870 }, + { url = "https://files.pythonhosted.org/packages/3d/63/bec827e70b7a0d4094e7476f863c0dbd6b5f0f1f91d9c9b32b76dcdfeb4e/google_crc32c-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f35aaffc8ccd81ba3162443fabb920e65b1f20ab1952a31b13173a67811467d", size = 33214 }, + { url = "https://files.pythonhosted.org/packages/63/bc/11b70614df04c289128d782efc084b9035ef8466b3d0a8757c1b6f5cf7ac/google_crc32c-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:864abafe7d6e2c4c66395c1eb0fe12dc891879769b52a3d56499612ca93b6092", size = 33589 }, + { url = "https://files.pythonhosted.org/packages/3e/00/a08a4bc24f1261cc5b0f47312d8aebfbe4b53c2e6307f1b595605eed246b/google_crc32c-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:db3fe8eaf0612fc8b20fa21a5f25bd785bc3cd5be69f8f3412b0ac2ffd49e733", size = 34437 }, + { url = "https://files.pythonhosted.org/packages/5d/ef/21ccfaab3d5078d41efe8612e0ed0bfc9ce22475de074162a91a25f7980d/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8", size = 31298 }, + { url = "https://files.pythonhosted.org/packages/c5/b8/f8413d3f4b676136e965e764ceedec904fe38ae8de0cdc52a12d8eb1096e/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:86cfc00fe45a0ac7359e5214a1704e51a99e757d0272554874f419f79838c5f7", size = 30872 }, + { url = "https://files.pythonhosted.org/packages/f6/fd/33aa4ec62b290477181c55bb1c9302c9698c58c0ce9a6ab4874abc8b0d60/google_crc32c-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:19b40d637a54cb71e0829179f6cb41835f0fbd9e8eb60552152a8b52c36cbe15", size = 33243 }, + { url = "https://files.pythonhosted.org/packages/71/03/4820b3bd99c9653d1a5210cb32f9ba4da9681619b4d35b6a052432df4773/google_crc32c-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:17446feb05abddc187e5441a45971b8394ea4c1b6efd88ab0af393fd9e0a156a", size = 33608 }, + { url = "https://files.pythonhosted.org/packages/7c/43/acf61476a11437bf9733fb2f70599b1ced11ec7ed9ea760fdd9a77d0c619/google_crc32c-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:71734788a88f551fbd6a97be9668a0020698e07b2bf5b3aa26a36c10cdfb27b2", size = 34439 }, + { url = "https://files.pythonhosted.org/packages/e9/5f/7307325b1198b59324c0fa9807cafb551afb65e831699f2ce211ad5c8240/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113", size = 31300 }, + { url = "https://files.pythonhosted.org/packages/21/8e/58c0d5d86e2220e6a37befe7e6a94dd2f6006044b1a33edf1ff6d9f7e319/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb", size = 30867 }, + { url = "https://files.pythonhosted.org/packages/ce/a9/a780cc66f86335a6019f557a8aaca8fbb970728f0efd2430d15ff1beae0e/google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411", size = 33364 }, + { url = "https://files.pythonhosted.org/packages/21/3f/3457ea803db0198c9aaca2dd373750972ce28a26f00544b6b85088811939/google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454", size = 33740 }, + { url = "https://files.pythonhosted.org/packages/df/c0/87c2073e0c72515bb8733d4eef7b21548e8d189f094b5dad20b0ecaf64f6/google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962", size = 34437 }, + { url = "https://files.pythonhosted.org/packages/d1/db/000f15b41724589b0e7bc24bc7a8967898d8d3bc8caf64c513d91ef1f6c0/google_crc32c-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:3ebb04528e83b2634857f43f9bb8ef5b2bbe7f10f140daeb01b58f972d04736b", size = 31297 }, + { url = "https://files.pythonhosted.org/packages/d7/0d/8ebed0c39c53a7e838e2a486da8abb0e52de135f1b376ae2f0b160eb4c1a/google_crc32c-1.8.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:450dc98429d3e33ed2926fc99ee81001928d63460f8538f21a5d6060912a8e27", size = 30867 }, + { url = "https://files.pythonhosted.org/packages/ce/42/b468aec74a0354b34c8cbf748db20d6e350a68a2b0912e128cabee49806c/google_crc32c-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3b9776774b24ba76831609ffbabce8cdf6fa2bd5e9df37b594221c7e333a81fa", size = 33344 }, + { url = "https://files.pythonhosted.org/packages/1c/e8/b33784d6fc77fb5062a8a7854e43e1e618b87d5ddf610a88025e4de6226e/google_crc32c-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:89c17d53d75562edfff86679244830599ee0a48efc216200691de8b02ab6b2b8", size = 33694 }, + { url = "https://files.pythonhosted.org/packages/92/b1/d3cbd4d988afb3d8e4db94ca953df429ed6db7282ed0e700d25e6c7bfc8d/google_crc32c-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:57a50a9035b75643996fbf224d6661e386c7162d1dfdab9bc4ca790947d1007f", size = 34435 }, + { url = "https://files.pythonhosted.org/packages/21/88/8ecf3c2b864a490b9e7010c84fd203ec8cf3b280651106a3a74dd1b0ca72/google_crc32c-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:e6584b12cb06796d285d09e33f63309a09368b9d806a551d8036a4207ea43697", size = 31301 }, + { url = "https://files.pythonhosted.org/packages/36/c6/f7ff6c11f5ca215d9f43d3629163727a272eabc356e5c9b2853df2bfe965/google_crc32c-1.8.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:f4b51844ef67d6cf2e9425983274da75f18b1597bb2c998e1c0a0e8d46f8f651", size = 30868 }, + { url = "https://files.pythonhosted.org/packages/56/15/c25671c7aad70f8179d858c55a6ae8404902abe0cdcf32a29d581792b491/google_crc32c-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b0d1a7afc6e8e4635564ba8aa5c0548e3173e41b6384d7711a9123165f582de2", size = 33381 }, + { url = "https://files.pythonhosted.org/packages/42/fa/f50f51260d7b0ef5d4898af122d8a7ec5a84e2984f676f746445f783705f/google_crc32c-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3f68782f3cbd1bce027e48768293072813469af6a61a86f6bb4977a4380f21", size = 33734 }, + { url = "https://files.pythonhosted.org/packages/08/a5/7b059810934a09fb3ccb657e0843813c1fee1183d3bc2c8041800374aa2c/google_crc32c-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:d511b3153e7011a27ab6ee6bb3a5404a55b994dc1a7322c0b87b29606d9790e2", size = 34878 }, + { url = "https://files.pythonhosted.org/packages/52/c5/c171e4d8c44fec1422d801a6d2e5d7ddabd733eeda505c79730ee9607f07/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:87fa445064e7db928226b2e6f0d5304ab4cd0339e664a4e9a25029f384d9bb93", size = 28615 }, + { url = "https://files.pythonhosted.org/packages/9c/97/7d75fe37a7a6ed171a2cf17117177e7aab7e6e0d115858741b41e9dd4254/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c", size = 28800 }, +] + +[[package]] +name = "google-pasta" +version = "0.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, @@ -1216,6 +1911,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15a920390abe675f386dec35f7ae3ffe6da582d3ade42c7/googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8", size = 294530 }, ] +[[package]] +name = "gpustat" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blessed" }, + { name = "nvidia-ml-py" }, + { name = "psutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/c4/46d005aec3bf911cb030467d91e062a5386ff4a03e51874424cacc0f60c1/gpustat-1.1.1.tar.gz", hash = "sha256:c18d3ed5518fc16300c42d694debc70aebb3be55cae91f1db64d63b5fa8af9d8", size = 98052 } + +[[package]] +name = "gputil" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/0e/5c61eedde9f6c87713e89d794f01e378cfd9565847d4576fa627d758c554/GPUtil-1.4.0.tar.gz", hash = "sha256:099e52c65e512cdfa8c8763fca67f5a5c2afb63469602d5dcb4d296b3661efb9", size = 5545 } + [[package]] name = "gpy" version = "1.13.2" @@ -1443,6 +2155,174 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/13/3e/62192b0bb527d9353d222b4b6df14400b3c4f36a92a2b138f11a5eafe000/hpbandster-0.7.4.tar.gz", hash = "sha256:49ffc32688155b509e62f3617b52ae15a96c9bff2c996a23df83f279106c5921", size = 51310 } +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, +] + +[[package]] +name = "httpx" +version = "0.27.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "anyio", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "certifi", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "httpcore", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "idna", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "sniffio", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/82/08f8c936781f67d9e6b9eeb8a0c8b4e406136ea4c3d1f89a5db71d42e0e6/httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2", size = 144189 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0", size = 76395 }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "anyio", version = "4.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "anyio", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14') or (python_full_version < '3.11' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (python_full_version >= '3.14' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "certifi", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "httpcore", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "idna", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, +] + +[[package]] +name = "huey" +version = "3.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/67/adfd477458ad70b73ce8311bbe84b1befbf986d0134fff2a1a55669ecd50/huey-3.3.4.tar.gz", hash = "sha256:6de196c6ece2e38b5173f7510600091ab035c0e86b0958d0e5b38a82b9984666", size = 614249 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/49/7b49afcb523431db7bcb7b83d9911c754ee8138c3b5939830507359655d6/huey-3.3.4-py3-none-any.whl", hash = "sha256:a6e2e9a8fbda15c2dfb8e33b23a5e6e228326ea8e0087c11027957ef7c210e96", size = 123919 }, +] + [[package]] name = "hydra-core" version = "1.3.2" @@ -1476,6 +2356,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b6/cd/5b3334d39276067f54618ce0d0b48ed69d91352fbf137468c7095170d0e5/hyperopt-0.2.7-py2.py3-none-any.whl", hash = "sha256:f3046d91fe4167dbf104365016596856b2524a609d22f047a066fc1ac796427c", size = 1583421 }, ] +[[package]] +name = "hypha-artifact" +version = "0.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "httpx", version = "0.27.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "httpx", version = "0.28.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14') or (python_full_version < '3.11' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (python_full_version >= '3.14' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "hypha-rpc", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "python-dotenv", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "pyyaml", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "tqdm", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/25/e1dcc8302c3b443232d2e7478dacc24d9df7f4080a171ddd70bb7b4d8e03/hypha_artifact-0.2.5.tar.gz", hash = "sha256:3f18de79f855e4aaa879c601e28a6e2c4611ceb1b16313b4acc16b57349945e0", size = 62301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/ce/ee536338fc1f5379ae449001bcfd06c905689543fafb6dfb8d0bc48348ad/hypha_artifact-0.2.5-py3-none-any.whl", hash = "sha256:4dc6227478df747d3a4fa9bcca8532ec2926753216f0905126b3c93e5b862738", size = 51174 }, +] + +[[package]] +name = "hypha-rpc" +version = "0.21.46" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", version = "0.27.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "httpx", version = "0.28.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "msgpack" }, + { name = "munch" }, + { name = "numpy" }, + { name = "shortuuid" }, + { name = "websockets", version = "16.1.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_system != 'Emscripten') or (python_full_version >= '3.11' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (platform_system == 'Emscripten' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "websockets", version = "17.0.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_system != 'Emscripten') or (python_full_version < '3.11' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (platform_system == 'Emscripten' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/a8/b556a586f6b7ed24410fe7a353cea91e30543127acf3fe27cb612fc615cc/hypha_rpc-0.21.46.tar.gz", hash = "sha256:dffe4211cad64d9fad1ca5c8d82905182504f802674c0441236a7bced71f93e2", size = 164141 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/26/943b0fe8e11f8edf9b26fce4fb3c2f596c7a5ea6ab6411e383104f66d8d2/hypha_rpc-0.21.46-py3-none-any.whl", hash = "sha256:cf79fd15ac5c34c01b656a6d78f870ba8657a03d7adebef6465ed800e13e9ce0", size = 95425 }, +] + [[package]] name = "idna" version = "3.10" @@ -1524,6 +2441,17 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] +[[package]] +name = "iopath" +version = "0.1.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "portalocker" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/73/b3d451dfc523756cf177d3ebb0af76dc7751b341c60e2a21871be400ae29/iopath-0.1.10.tar.gz", hash = "sha256:3311c16a4d9137223e20f141655759933e1eda24f8bff166af834af3c645ef01", size = 42226 } + [[package]] name = "ipykernel" version = "6.29.5" @@ -1558,10 +2486,14 @@ resolution-markers = [ "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.11' and sys_platform == 'linux'", "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", @@ -1570,7 +2502,6 @@ resolution-markers = [ "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] @@ -1597,17 +2528,30 @@ name = "ipython" version = "9.2.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", @@ -1615,24 +2559,42 @@ resolution-markers = [ "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", @@ -1642,16 +2604,16 @@ resolution-markers = [ "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] @@ -1685,6 +2647,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, ] +[[package]] +name = "isodate" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/7a/c0a56c7d56c7fa723988f122fa1f1ccf8c5c4ccc48efad0d214b49e5b1af/isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9", size = 28443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/85/7882d311924cbcfc70b1890780763e36ff0b140c7e51c110fc59a532f087/isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96", size = 41722 }, +] + [[package]] name = "itsdangerous" version = "2.2.0" @@ -1696,7 +2670,7 @@ wheels = [ [[package]] name = "itwinai" -version = "0.3.4" +version = "0.4.2" source = { editable = "." } dependencies = [ { name = "click" }, @@ -1722,6 +2696,7 @@ dependencies = [ { name = "validators" }, { name = "wandb" }, { name = "wheel" }, + { name = "yprov4ml" }, ] [package.optional-dependencies] @@ -1756,6 +2731,13 @@ hpo = [ { name = "hpbandster" }, { name = "hyperopt" }, ] +modelhub = [ + { name = "dotenv" }, + { name = "httpx", version = "0.27.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "httpx", version = "0.28.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "hypha-artifact", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "hypha-rpc" }, +] tf = [ { name = "tensorflow" }, { name = "tf-keras" }, @@ -1772,9 +2754,9 @@ torch = [ { name = "torchaudio" }, { name = "torchmetrics" }, { name = "torchrun-jsc" }, - { name = "torchvision", version = "0.21.0", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_system != 'Darwin' and sys_platform == 'linux')" }, + { name = "torchvision", version = "0.21.0", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'win32') or (platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_system != 'Darwin' and sys_platform == 'linux')" }, { name = "torchvision", version = "0.21.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_system == 'Darwin' and sys_platform != 'linux' and sys_platform != 'win32'" }, - { name = "torchvision", version = "0.21.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'linux') or (platform_system != 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torchvision", version = "0.21.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and sys_platform == 'win32') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')" }, ] [package.metadata] @@ -1783,17 +2765,21 @@ requires-dist = [ { name = "bayesian-optimization", marker = "extra == 'hpo'", specifier = ">=2.0.0" }, { name = "click", specifier = "==8.1.8" }, { name = "configspace", marker = "extra == 'hpo'", specifier = ">=1.2.0" }, + { name = "dotenv", marker = "extra == 'modelhub'" }, { name = "gpy", marker = "extra == 'hpo'", specifier = ">=1.13.2" }, { name = "hpbandster", marker = "extra == 'hpo'", specifier = ">=0.7.0" }, + { name = "httpx", marker = "extra == 'modelhub'" }, { name = "hydra-core", specifier = ">=1.3.2" }, { name = "hyperopt", marker = "extra == 'hpo'", specifier = ">=0.2.0" }, + { name = "hypha-artifact", marker = "python_full_version >= '3.11' and extra == 'modelhub'" }, + { name = "hypha-rpc", marker = "extra == 'modelhub'" }, { name = "ipykernel", marker = "extra == 'dev'", specifier = ">=6.29.5" }, { name = "ipython", marker = "extra == 'dev'", specifier = ">=8.30.0" }, { name = "ipython", marker = "extra == 'docs'", specifier = ">=8.30.0" }, { name = "jsonargparse", extras = ["signatures"], specifier = ">=4.34.0" }, { name = "lightning", marker = "extra == 'torch'", specifier = ">=2" }, { name = "matplotlib", specifier = ">=3.9.2" }, - { name = "mlflow", specifier = ">=2.17.2" }, + { name = "mlflow", specifier = ">=3.1,<4" }, { name = "myst-parser", marker = "extra == 'docs'", specifier = ">=2.0.0" }, { name = "nbsphinx", marker = "extra == 'docs'", specifier = ">=0.9.4" }, { name = "numpy", specifier = "<2.0.0" }, @@ -1836,6 +2822,7 @@ requires-dist = [ { name = "validators", specifier = ">=0.35.0" }, { name = "wandb", specifier = ">=0.18.7" }, { name = "wheel", specifier = ">=0.45.0" }, + { name = "yprov4ml", specifier = "==2.0.9" }, ] [[package]] @@ -1862,6 +2849,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] +[[package]] +name = "jinxed" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ansicon", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/d7/6e6d474ec5eaeca6a61acc17766bb19563b3a372b4b9d92910078f5fe49f/jinxed-2.1.0.tar.gz", hash = "sha256:7e755b831faa2443d44fb4ce7c0202eb9c3ed39bd5bf1193365888f4f6092b54", size = 61287 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/1d/0a6be99b69bb448448403a45a241aff0dca751832ae54f027ed940d2eb52/jinxed-2.1.0-py2.py3-none-any.whl", hash = "sha256:43b802d18b70e405d410fb66eb2837d1101e7e5ea922e666507bb43f34d11d09", size = 104999 }, +] + [[package]] name = "joblib" version = "1.5.0" @@ -1871,6 +2870,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/d3/13ee227a148af1c693654932b8b0b02ed64af5e1f7406d56b088b57574cd/joblib-1.5.0-py3-none-any.whl", hash = "sha256:206144b320246485b712fc8cc51f017de58225fa8b414a1fe1764a7231aca491", size = 307682 }, ] +[[package]] +name = "joserfc" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography", marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/e0/27a6a081ae25420eda6768ceae05d7022a7f2447f420588843f2a44e4298/joserfc-1.7.4.tar.gz", hash = "sha256:b3bc561672ae541b17a9237053b48a03dacddd92d68047b3ecdfb4b5714a88ed", size = 234027 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/bf/249dcd99b3376375910b7fa922383b57792975c8758f50d44612e749226c/joserfc-1.7.4-py3-none-any.whl", hash = "sha256:32d46c2cd5e3203c13e87a6c61333cab310b1ba80cd54b4c4f386a848a122463", size = 71000 }, +] + [[package]] name = "jsonargparse" version = "4.39.0" @@ -1955,6 +2966,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, ] +[[package]] +name = "jwcrypto" +version = "1.5.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typing-extensions", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/7e/53c14813521693e931e420d9db00efe317419ff194495903bce03402275e/jwcrypto-1.5.8.tar.gz", hash = "sha256:c3d7114b6f6e65b52f6b7da817eb8cb8423e1da31e1ef13508447c81ecbdcc34", size = 90772 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/7c/f87c5db042c4f7b4476346fc0d22f1025a777fee08eebde3720d3b9c4eb5/jwcrypto-1.5.8-py3-none-any.whl", hash = "sha256:85aeb475f808d56bbc2f2ed1f6f73e6a317c4011a4321505f02f0aed695a3742", size = 96133 }, +] + [[package]] name = "keras" version = "3.9.2" @@ -2113,6 +3137,124 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1a/c1/31b3184cba7b257a4a3b5ca5b88b9204ccb7aa02fe3c992280899293ed54/lightning_utilities-0.14.3-py3-none-any.whl", hash = "sha256:4ab9066aa36cd7b93a05713808901909e96cc3f187ea6fd3052b2fd91313b468", size = 28894 }, ] +[[package]] +name = "lxml" +version = "6.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/3b/aab6728cae887456f409b4d75e8a01856e4f04bd510de38052a47768b680/lxml-6.1.1.tar.gz", hash = "sha256:ba96ae44888e0185281e937633a743ea90d5a196c6000f82565ebb0580012d40", size = 4197430 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/da/dbe4dfc01ac226fb0504fad035f4d69f3202f3502e20e68537631daddd96/lxml-6.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:09dd5b7075dc2f7709654a46543ba1ea3c2e217b2ed8fbd413a8a945a0f40f60", size = 8541124 }, + { url = "https://files.pythonhosted.org/packages/78/20/f7095ed9fc2c025f9cfe71cc6ec9f1feb05624edc1812423b5f1aecf3d4b/lxml-6.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f6ac4ef4d82dff54670227a69c67782ae0b811b5cf6b17954f1e8f7502fc0d1d", size = 4602783 }, + { url = "https://files.pythonhosted.org/packages/4a/a4/65c63ca98bd129f6cff7b8c2fa48953ab058cc6005b541354e7dd54d8000/lxml-6.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:556e94a63c9b04716f8e4de2abb65775061f846e89331b6c5be79183a24f98ea", size = 5002687 }, + { url = "https://files.pythonhosted.org/packages/96/1d/ab7a5c4b5a394d98a94e2d0fc67bab8297597426770dd4978370fbdaf531/lxml-6.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5c6bf403fbb3b3e348a561a5f4f0b9961835657981c802a1df03653eef8a9074", size = 5155099 }, + { url = "https://files.pythonhosted.org/packages/d0/b1/07603bfeeb891a2596d5c2a68f7d2f70f7d11c841ebe391412c69c2857b0/lxml-6.1.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1dde6131244bba38a17c745836ba190bc753fd73c9291666287fd0a3fa3dcf30", size = 5057225 }, + { url = "https://files.pythonhosted.org/packages/7a/16/cb391ee4b90186fa16d9ebcbe3ea96c71b8da3b0686386c8dcbcc3c67d44/lxml-6.1.1-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98fc784c2c1440667aeedf8465bdfe10208acf0ead656a2c68627299f546b315", size = 5287643 }, + { url = "https://files.pythonhosted.org/packages/eb/d6/b619717f918fd76747448fdbaee0e769edbc70e659b5b5d0112b7020b7a3/lxml-6.1.1-cp310-cp310-manylinux_2_28_i686.whl", hash = "sha256:add8cf6ddf9a65116119a28ece0f7886e30af27ba724a7594305f1d1b58a92a1", size = 5412445 }, + { url = "https://files.pythonhosted.org/packages/c6/80/12bc5390ac0a3edeb579d9535e5049a5dda663438728e179d52fb319c33a/lxml-6.1.1-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:cf9d57306d848218f3601fee7601fab1a327c942d56e2e97610583cb4dd74206", size = 4770864 }, + { url = "https://files.pythonhosted.org/packages/0b/59/6500c09da3137f54f020e908d81cfc5ee3e8888e908fd380207afad7c2e6/lxml-6.1.1-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:88136950da4d13c318bde414ce10219931937851327f44328f2df4d2c4614067", size = 5359594 }, + { url = "https://files.pythonhosted.org/packages/f2/9b/f64b4cc6b7ebcf75d95af3cde934d254b5f2f10d4163928d838d86b6eb48/lxml-6.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cecdd5dfdc87b1fd87dbf81d4b037a544f47f4c744200a67013771682d67686a", size = 5107713 }, + { url = "https://files.pythonhosted.org/packages/16/19/c7388ad5d3a72315d2832dc1458cbf4f2af7f2b990b606ff4876efd04511/lxml-6.1.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:cd312b9692e831d2ffcad61eab31d91d4b4655a962e61de8fb410472cbcd37aa", size = 4803973 }, + { url = "https://files.pythonhosted.org/packages/3f/22/76197f0bbf165f0b9e75be59be4997e5259cde973f12f098c1b54c7f5d60/lxml-6.1.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:5b7328b46d49fc9477d91ae8f6d55340347d827b7734ba3ea33faae0efef1383", size = 5349925 }, + { url = "https://files.pythonhosted.org/packages/24/52/d2a0cfeccb9bcdc47c7ee05cdae5d69b48c9acf20997790a6338bb0d0b3b/lxml-6.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37a58976370f36d9329d118ad0b953c5aeb9119ac9c6a4e258942a225d0573a1", size = 5309825 }, + { url = "https://files.pythonhosted.org/packages/19/4a/b30944266776c2f49749ef2445aa7e78898194134b80ad776386f61b56ae/lxml-6.1.1-cp310-cp310-win32.whl", hash = "sha256:cea3f4c1af79af13cdb2da0c028111d8f8522d4f22a000c82385535f24e5cf3a", size = 3598402 }, + { url = "https://files.pythonhosted.org/packages/9e/97/33691c66a4d7ec1a5a98e7c909a5b83ee45c7f7ba4cf92b1c4cf26e98079/lxml-6.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:3abf332af33a74288675d936fe861fd4344da0dd6622193fbc4f2bfbb35536b5", size = 4021295 }, + { url = "https://files.pythonhosted.org/packages/d0/5f/26a4dd0e12b9456ff7b12a21af5b491eb6629680d1edd73f4140fd386bcf/lxml-6.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:8dadbe5b217ff35b6a8d16610dd710219b59b76d13f0e3f0d9f36786206e4485", size = 3667717 }, + { url = "https://files.pythonhosted.org/packages/62/b0/83f481780d1548750b8ce2ec824073deef2f452d9cd1a6faff8507e3d16d/lxml-6.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:53b7d2b7a10b1c35c0a5e21e9224accf60c1bbfba523990732e521b2b73adef2", size = 8526461 }, + { url = "https://files.pythonhosted.org/packages/b9/d5/30fa0f808002c7329397bfbb24e306789c0b29f04aa5842c07b174b4216f/lxml-6.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ff3f333630ab480244a1bff72043e511a91eb22e7595dead8653ee5612dd8f3d", size = 4595375 }, + { url = "https://files.pythonhosted.org/packages/4f/d2/edb71cf0e561581a7c5eb2626244320eb04e9f8ce6d563184fd668b45073/lxml-6.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a4bbea04c97f6d78a48e3fbc1cb9116d2780b1b39e03a23f6eb9b603fd61f510", size = 4923654 }, + { url = "https://files.pythonhosted.org/packages/4c/77/1bc7eeb0de4577d783fb625aa092cc9357883bba35845a3666bf1259f3dc/lxml-6.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:db1d75f6617a49c1c01bc7023713e0ff59ab32c9579ae62a7674c0e34f3b0b0a", size = 5067921 }, + { url = "https://files.pythonhosted.org/packages/1b/3c/c0690d74bd2bc17bc03b5b0d093569ead597dd0bfa088bf99eef8c24e19c/lxml-6.1.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a12689be69a28ddaa0ab99a5a1137da2afd5f8f16df7b5680b66f616d3eda1d", size = 5002456 }, + { url = "https://files.pythonhosted.org/packages/66/8d/d1b3271af0c0f1e27e8472a849e4d2c65bc7766884b9ad2da9e76e145c88/lxml-6.1.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b73c339ae29b90fd2d06e58ebd555a751bde9cd6bbd36cc0281b9a2c94e9d8", size = 5202776 }, + { url = "https://files.pythonhosted.org/packages/7a/45/689824ffb237fd10125ad273f32b28ff04dc6203c2822c85ff65a93df65e/lxml-6.1.1-cp311-cp311-manylinux_2_28_i686.whl", hash = "sha256:752d3bbfe874715ccd0aec7f88d7fc623c0f1fd7aa7b3238a084e017bad2a009", size = 5329945 }, + { url = "https://files.pythonhosted.org/packages/5d/c0/ef73af53767e958fd87d437c170f272e2f6e6c0f854939f133a895f1e711/lxml-6.1.1-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:6b1761fbf9ec984e2e9d9c589ef5f5fd684b7c19f92aadd567a26c5224958db6", size = 4659237 }, + { url = "https://files.pythonhosted.org/packages/a0/5e/e1158e40397585e91cb0472374a1f63d0926a1ddeaa92f13d1a1ffe306d5/lxml-6.1.1-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d680fbcb768404c601ecb43519ecd8461f6954cb11c06a78962f666832ccfca8", size = 5265904 }, + { url = "https://files.pythonhosted.org/packages/a0/16/8687e5d1400ed1c0bc41dace232ebb7553952b618ea1f2e5fb6e2cfbbe23/lxml-6.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:162af1091cd785f2f27e62d3547ae9bc58ec5c86dd314d67021fd02463708d83", size = 5045225 }, + { url = "https://files.pythonhosted.org/packages/ca/18/d877bd1ae2e5ffdfd4836565aba350db31feb2f2656d6ce70316ed66a05e/lxml-6.1.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e9308ff8241c532df3f3e570f9a5aeed6c853f888512ba4b75638d7c11c95ef6", size = 4712721 }, + { url = "https://files.pythonhosted.org/packages/44/4d/1f44fd1d770b10dacbf6b5c6e520f4d6e0708744930f719dc04e67cab981/lxml-6.1.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5f6994074ebae6ffb04447268e37dc16edc304f9859cf91acb86e0af6c1b395c", size = 5252549 }, + { url = "https://files.pythonhosted.org/packages/64/5d/1d66b84f850089254c230ef6ea6b267a5a54e2e179a5d960036a05d501d7/lxml-6.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:80c2dfadb855da477cf73373ad29a333535dedb9b12bad02c9814c8e2b43bf08", size = 5226877 }, + { url = "https://files.pythonhosted.org/packages/ad/00/84c4b5302d42a2d0184f38d538c8a197f33b52a50bd4f7bcfe990bce3036/lxml-6.1.1-cp311-cp311-win32.whl", hash = "sha256:30a89d3ac8faec007453fb541f3f46807eeec88edd5826f6e3fe001752a2c621", size = 3594072 }, + { url = "https://files.pythonhosted.org/packages/61/9d/2e2f7d876349f45e0f3e29f72da311668853d59b58d473a2dea4f0160135/lxml-6.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:abbefa31eee84842140f67acef1c828e28bba8bbf0c3bc6e5492a9af88152c28", size = 4025469 }, + { url = "https://files.pythonhosted.org/packages/b0/d5/570e6390e4110331e6208b2ba83d1482cc9146808ee118b22824a34c1070/lxml-6.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:dcb292aa7fe485ceff7af4f92e46c5af397daec5dff64871a528f0fc47a3cc5b", size = 3667640 }, + { url = "https://files.pythonhosted.org/packages/6a/6e/c4add832b6fc1e887125b96f880d7b9b70aae5248718e046b1704bcac4b9/lxml-6.1.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:104c09bda8d2a562824c0e319d0768ce26a779b7601e0931d33b09b53c392ef7", size = 8570821 }, + { url = "https://files.pythonhosted.org/packages/22/00/ff3009c88e65de8011630acf8ab5a09cb2becd2aaf47fba2f3449f6224e9/lxml-6.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:25c6997a9a534e016695a0ba06b2f07945de682731ff01065b6d5a4474179da1", size = 4624252 }, + { url = "https://files.pythonhosted.org/packages/42/95/bb63f0fd62e554fe078e1fb3c8fe9083c14ddc7ad7fa178d10e57e071ac7/lxml-6.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c921ba5c51e4e9f63b8b00267d06566e1f63407408a0496da2d1d0bfc819c7fc", size = 4930746 }, + { url = "https://files.pythonhosted.org/packages/eb/99/0013e8d9b5960f4f041cf0b73e2f80c23eb5205b1f7bfb20203243651359/lxml-6.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:54a7f95e4de5fb94e2f9f4b9055c6ba33bf3d628fd77a1d647c5923caa2cdcdc", size = 5093723 }, + { url = "https://files.pythonhosted.org/packages/29/91/317b332636bfc7bddcff828d41b3307f50043f4b237e40849c333d80fa1a/lxml-6.1.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f2ec43df44b1f76249ee0a615334f9b5b060e1c8bd90e706dad2d14d02f383", size = 5005557 }, + { url = "https://files.pythonhosted.org/packages/42/2f/cc9bf06afe70f9c9093ae60855d9759da9db601ec4080f7473319666ffd7/lxml-6.1.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:70ef8a7e102a1508f8121aae5b0867abd663f72c14f0a9c937e6554cb4587b7b", size = 5631036 }, + { url = "https://files.pythonhosted.org/packages/08/f6/af32e23e563971ffb0fb86be52bc5be5c2c118858ffc119bf6a9039b173d/lxml-6.1.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebe6af670449830d6d9b752c256a983291c766a1365ba5d5460048f9e33a7818", size = 5240367 }, + { url = "https://files.pythonhosted.org/packages/78/83/8555d40948b09ce86f1bd0c68a7ac31d07b1929f92cc1b074006c97ef2d2/lxml-6.1.1-cp312-cp312-manylinux_2_28_i686.whl", hash = "sha256:27acc820660aaffa4f7c087f29120e12980f7779d56d8492d263170111284740", size = 5350171 }, + { url = "https://files.pythonhosted.org/packages/63/75/5d92da93729b7bad783689e6496049fa40927b45bec7bf183c981de3ca70/lxml-6.1.1-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:1db753c9115ec7100d073b744d17e25e88a8f90f5c39b2f5dd878149af59671f", size = 4694874 }, + { url = "https://files.pythonhosted.org/packages/c5/b5/3aad415a9a25b822e783f15deeb4dffccf5113030f1afa2222dd929313d9/lxml-6.1.1-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c4f469aebd783bb741c2ecb2a681008fd26bfe5c16a9a72ed5467f834e810df2", size = 5244492 }, + { url = "https://files.pythonhosted.org/packages/f1/a1/5fcf7eb9904b80086aa47dcf0027de07b1bb990afad2e6823144c368ae04/lxml-6.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:766b010012d59470072c1816b5b6c69f1d243e5db36ea5968e94accf430a4635", size = 5048232 }, + { url = "https://files.pythonhosted.org/packages/77/74/1f601b63c7a69fcdf10fa9b148c81da8442204194f6c55509cc485c786b9/lxml-6.1.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b8d812c6011c08b8111a15e54dd990b8923692d80adf35488bee34026c35accf", size = 4777023 }, + { url = "https://files.pythonhosted.org/packages/a2/b9/7a78f51aec95b1bf780d78e12705a9f6533284f8693dc5c0e6724fa53d3f/lxml-6.1.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fe0306bd29505a9177aac19f1877174b0e7422c222a59f70b2cd41633448c3dc", size = 5645773 }, + { url = "https://files.pythonhosted.org/packages/a5/6e/98a7b7ad54e4e74fa1f20fff776913980619d0ebe5558232d7da6580bdd8/lxml-6.1.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5ba186ad207446c65d3bb3d3e0412b032b1d9f595e59861e2354798c5703d955", size = 5233088 }, + { url = "https://files.pythonhosted.org/packages/65/d1/bc0ed2427bf609f2ee10da303a6a226f9c8bce94f945dc29a32ce55de6e4/lxml-6.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aa366a1e55b8ebfe8ca8ddc3cfe75c8ebade181aeb0f661d0cb05986b647f72a", size = 5260995 }, + { url = "https://files.pythonhosted.org/packages/69/8b/6772e1a4b513fc50a8d931f19edde0e13ae6918510a1e13ff67864f3e5ed/lxml-6.1.1-cp312-cp312-win32.whl", hash = "sha256:126c93f7f56f0eda92f6d8c619edc463a4f23d9252f1c9d0405a76f25fa9f11a", size = 3596382 }, + { url = "https://files.pythonhosted.org/packages/1b/89/45198e9624762af2dfd2cb8782598477ceb29f6e59caab560388ae1f4ec1/lxml-6.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:26e6eda8d38c1fcab1090dd196ee87cbd13788e531937610e2589085de074e77", size = 3997255 }, + { url = "https://files.pythonhosted.org/packages/90/a9/7a54b6834088d9ae528a7b780584ba6a39a9457b0ac330479f20ffbc9449/lxml-6.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:6540377fbd53fe1b629172288c464fb18db11ce1fa7dc15891da10aa9dcc3e7f", size = 3659610 }, + { url = "https://files.pythonhosted.org/packages/a5/eb/7e6f37c5584ccbb2ff267f56fd0339016938c1c8684cfefab9b33ffc2f36/lxml-6.1.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:68a9198d0fc122d14bb76837de9aa80cf84caed990b5b237f532ed87d3706736", size = 8559780 }, + { url = "https://files.pythonhosted.org/packages/a1/36/587c2521cf23a2cd6c9c22108aa7528f683a1f195ed7ccd23a4b1786ad36/lxml-6.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7d47866cb32fb503450b6edc9df355d10dc49836af2e89901bd6ac6b0896d9d9", size = 4618006 }, + { url = "https://files.pythonhosted.org/packages/6e/ca/ab7bfe2bf4c972af5e7878262845ead3a24a929a9b04bc11c7c1ece6c82a/lxml-6.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb7c9811bfaa8b1ed5ed319f5d370dfbcaa59d52ea64be2a5a85e18195930354", size = 4924139 }, + { url = "https://files.pythonhosted.org/packages/6b/55/a0c72851dfee5ecc689f949723a73dea457758912542cb955b108eaf0d8f/lxml-6.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:762ff394d5bd56da0cf034a23dcce4e13923f15321a2adfa2ac00201dc6d3fca", size = 5082329 }, + { url = "https://files.pythonhosted.org/packages/f0/b6/0608f7d61a3b96cc67e5648a3d906e31a5082093e10e7be65b3886289938/lxml-6.1.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a088f287f7d8275a33c07f2cac6c50b9319309a0200a39e7e75d80c707723099", size = 4993564 }, + { url = "https://files.pythonhosted.org/packages/4c/66/ae227524b066d29d55bf0b453d93d2d793c40218657d643dcbbca13b8faf/lxml-6.1.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e902da4b04e6b52e5893900d4b8ab46068f75f3561f01bf1080957f9fd932ed6", size = 5613467 }, + { url = "https://files.pythonhosted.org/packages/a6/76/dbe4a00b50385e40194231dcfe5a12c059de7cf90e89c83407d2b085b719/lxml-6.1.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1d4962d4c66bf830a7e59ed6cfc17d148149898a3aefa8ec6e59763e6e3ed085", size = 5228304 }, + { url = "https://files.pythonhosted.org/packages/1c/01/00b1b8442ed2041793336868ba0b9ea4b13d7da7c085c6404c207a63bf79/lxml-6.1.1-cp313-cp313-manylinux_2_28_i686.whl", hash = "sha256:581d4c8ae690a6609e64862dd6b7c2489635c2d13907fc2b20f2bc200ff1d21e", size = 5341607 }, + { url = "https://files.pythonhosted.org/packages/63/36/1ad29931e9a4638bb707869f01d423a6c815f82152138d1a40dfcfde2b95/lxml-6.1.1-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:876e1ff5930ed8bf295ec5ef9a8155e9b6b1876bbf1deed8b3a8069311875a8f", size = 4700168 }, + { url = "https://files.pythonhosted.org/packages/3c/d1/a9536cecf9be18a0dc72d32bead283a2332d1ffebd2dd3ac70ce444686e5/lxml-6.1.1-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9eb9b5a968f6e0f6d640092a567e14529ff8cea2e29d00da6f78a79fa49f013c", size = 5232487 }, + { url = "https://files.pythonhosted.org/packages/0e/77/b4fb1e03bf5d130e879214d3100092e386418807fb74dd0adc4b0a48f351/lxml-6.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:aa49e06d94aba782c6a02eecb7e507969e7e7a41b267f1b359bb35585f295d5b", size = 5044231 }, + { url = "https://files.pythonhosted.org/packages/26/4c/d00daeeb0a5530c4028a9232aa1b93db3ef4ed2158c116ea73c79a9765b3/lxml-6.1.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:70cdfd80589d59e43e18005dd7244e8895e93db8ab6a620b7e23df5445a4e3d2", size = 4769450 }, + { url = "https://files.pythonhosted.org/packages/ed/6a/715a3a8d156ce42f29cf014706f5410c2ff3b02267774110fc23266409fe/lxml-6.1.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:aad9aa39483ed8ec44d6d2e59e5b98a0d80676ef0d92f44bfc374836111f62f5", size = 5635874 }, + { url = "https://files.pythonhosted.org/packages/45/37/0544bc21dde2a88f3a17b504e6fc79c0e01d25a33c2f6079724e9e72b9c7/lxml-6.1.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:d49514be2f28d895c38cf9d2b72d7b9a07d00314519f456c0b50b53cfcf4c785", size = 5223987 }, + { url = "https://files.pythonhosted.org/packages/4d/f8/f6a5e8185bcb28c2befae3d31f8e3df3b811cb0f47746517a81279fcafe1/lxml-6.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:47402e62c52ff5988c1e8c6c63177f5708bccf48e366dea4e3dcf1e645e04947", size = 5250276 }, + { url = "https://files.pythonhosted.org/packages/c7/f2/1a2b9f1b7a49d45495369be7ef9ad05b262930f2eab3e3145706fca8083f/lxml-6.1.1-cp313-cp313-win32.whl", hash = "sha256:3483644525531e1d5762b0c44a8e18b6efba321b6dcf8a8952de10b037618bca", size = 3596903 }, + { url = "https://files.pythonhosted.org/packages/e6/99/f4ffb024f238eec2131aaa09f3278fb6129cf892741bf68e1fc1afb8c100/lxml-6.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:a10bd2fd62e8ce916ececb342f348f190724a098c1faa056fdfb2a22ad5e8660", size = 3995869 }, + { url = "https://files.pythonhosted.org/packages/d1/53/70eb8c5c6037f27448f1e3c54ebede9545a801ae63f0a7254afca4fe8e45/lxml-6.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:424aa57aca0897eb922aef34395bd1289b3b6f04e6bae20ea123c0c7e333cffc", size = 3658490 }, + { url = "https://files.pythonhosted.org/packages/13/e2/2e325795566de01d0d7c3bb57d3c370616b2d07b01214e84eec5d3b10963/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:19b7ab10b210b0b3ad7985d9ac4eb66ab09a90b20fe6e2f7ba55d01a234345d0", size = 8577146 }, + { url = "https://files.pythonhosted.org/packages/93/cf/5630b5e4be7d2e6bee8efe83865c925221103cf0221303b104ce134b01e2/lxml-6.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c08e5c694306507275f2290073350c4f32e383db15213b2c69e7ff39c1193840", size = 4623866 }, + { url = "https://files.pythonhosted.org/packages/d2/51/3904907c063451cf8d4a5c9fe0cad95fa1f4ec57f4e3884fa0731bd7a305/lxml-6.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:74a9717fd0d82effef5c2854f0d917231d5324b5a3eb7275c43ac9fa32f97a14", size = 4950022 }, + { url = "https://files.pythonhosted.org/packages/94/cd/9c7611a51c37a2830928405817cc5d56a97f64fab83cc3f628748b135749/lxml-6.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:efe0374196335f93b53269acd811b944f2e6bdc88e8894f214bd636455484909", size = 5086695 }, + { url = "https://files.pythonhosted.org/packages/da/d6/24e3b5906abb0b674ff2ae195bc3ce59708df2bcd17cf17703b2d7dd643a/lxml-6.1.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac931cdc9442c1763b8a8f6cd62c0c938737eafc5be75eff88df55fc73bc0d00", size = 5031642 }, + { url = "https://files.pythonhosted.org/packages/2d/db/6ec54f99019838bff54785c51da07f189eb4676861c5f2730962b0d8d665/lxml-6.1.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:aee395f5d0927f947758b4ec119fd5fc8ec71f07a1c5c52077b30b04c0fa6955", size = 5647338 }, + { url = "https://files.pythonhosted.org/packages/42/3d/ef4dcfffd22d27a61805d8ed9f7fb888495bc6aa88648fa07c1eaa5586b6/lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9395002973c827b3ed67db77e6ec09f092919a587022174554096a269378fb13", size = 5239528 }, + { url = "https://files.pythonhosted.org/packages/62/bb/37fb3f0dff146bdcfa78eec47879273820b2a0bf350ec236ce14bd0b1c26/lxml-6.1.1-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:73bc2086f141224ebddb7fc5c6a36ca58b31b94b561e1dfe8e073e3270fad1e7", size = 5350730 }, + { url = "https://files.pythonhosted.org/packages/90/42/43253f168388df4fae1f38c01df36ddb9bee39e2048167b54cdcbae85ea3/lxml-6.1.1-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:3779def59032b81e44a5f70096ef6bf2082f8d901937dca354474ba09782e245", size = 4697530 }, + { url = "https://files.pythonhosted.org/packages/eb/a8/c5a8504f81bbdfc8e7094c2c850cdb4ed6777fc4d5ddd9e5ab819f3b0d54/lxml-6.1.1-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:86c89b9d55ebf820ad7c90bc533410f0d098054f293351f10603c0c46ff598f5", size = 5250670 }, + { url = "https://files.pythonhosted.org/packages/77/b7/c7e76ab18744d75e21f320ebf9ff9d1ceae2b54dd431ea5a64caf26c9672/lxml-6.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19607c6bbff2a44cf3fe8250abccd20942d3462473e0a721d01d379ed017e462", size = 5084485 }, + { url = "https://files.pythonhosted.org/packages/31/31/b35c53f8ef7b7c31cacd23d3638652fff7bcd1deb6eedb709ab43b685908/lxml-6.1.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:c6ed5141a5c7507cf3ee76bd363b0d6f801e3321adc35b5d825a23115faa5465", size = 4737635 }, + { url = "https://files.pythonhosted.org/packages/d9/06/31f23c813a7fe8e0cb1b175e915b08c9bf4e86d225b210feadbdbe519667/lxml-6.1.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:62aeb7e85b5d60320b9d77eef2e773994e2c0ce10121b277e0a19804e1654a5a", size = 5670681 }, + { url = "https://files.pythonhosted.org/packages/1a/bc/ce619bccc89b1fd9ad8a8e1330ee3f3beff9f2ff95b712d7bbcdd6e22fc3/lxml-6.1.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:b1b963fd8f5caa68e99dfae060d54de1fe9cba899b8718b44a00cdca53c3e590", size = 5238229 }, + { url = "https://files.pythonhosted.org/packages/2f/5d/b329acbbedc0b619ebc2be6cf7ee9ed07e80892c88d4dfd612c33805789a/lxml-6.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:63876be28efefa04a1df615b46770e82042cce445cfdce55160522f57b231ccb", size = 5264191 }, + { url = "https://files.pythonhosted.org/packages/d6/85/be36fb1425b30db3c3f9df75fe86343ebffb79e6320bd7f588e25bfeac39/lxml-6.1.1-cp314-cp314-win32.whl", hash = "sha256:7f7a92e8583f06b1fd49d01158143b8461cfcd135dcb10ec807270a3051bd603", size = 3657202 }, + { url = "https://files.pythonhosted.org/packages/b8/ce/3cf9a827342269f54d405a6202397de63f07c69cbd6ce7d183a3f0cba1e9/lxml-6.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:b2d444f2e66624d68e9c6b211e28a76e22fff5fcabcfff4deac18b529b7d4137", size = 4064497 }, + { url = "https://files.pythonhosted.org/packages/d9/3e/1a957bde8f0760039e627f94699f82caa782c9d838d86c3d28245ee67212/lxml-6.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:3fd9728a2735fda14f4e8235830c86b539e9661e849665bf926d3f867943b4bf", size = 3741991 }, + { url = "https://files.pythonhosted.org/packages/78/b2/00ed55b3a2efa4658fb795c38d1090ec9b3e8a6c3683d4441fa517f09c3b/lxml-6.1.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:787b2496d0dbe8cd180984e8d29e3a6f76e7ea34db781cb3bd55e4ba1ef8b4ee", size = 8827545 }, + { url = "https://files.pythonhosted.org/packages/c0/73/74573db19baa618d5f266f2407898b087ff6927115b00b71e5fc1b700847/lxml-6.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2c8daa471358dc2d6fcf02165e80ec68f77871a286df95bc5cc3816153b0fd2c", size = 4735736 }, + { url = "https://files.pythonhosted.org/packages/16/02/6f7061f4f95f51e545d48e87647c54791d204a4e881be4156e7a26ba5338/lxml-6.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:acd7d70b64c0aae0c7922cca83d288a16f5f6da523637697872253415269baef", size = 4970291 }, + { url = "https://files.pythonhosted.org/packages/b0/02/55fc057d8283427dea7d6edb102e7a840239c77a64a983d92f62a304c0e9/lxml-6.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4f0dd2f01f9f8a89f565d000e03abcf0a13d692a346c8d22f628d49af098777a", size = 5102822 }, + { url = "https://files.pythonhosted.org/packages/e4/48/8e1cf78d89d66850121d9255a2a24414c98f775da93b90cf976956c24b14/lxml-6.1.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b7e8a14c8634bf6f7a568634cb395305a6d964aeb5b7ee32248094bed3a7e2c", size = 5027923 }, + { url = "https://files.pythonhosted.org/packages/ed/00/0632a0647612c8af24d26997b3b961397daa9d5b2581444805933629a4cb/lxml-6.1.1-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:86281fbdd6a8162756f8d603f37e3435bfa38043adb79c6dc6a2dfee065e7525", size = 5595843 }, + { url = "https://files.pythonhosted.org/packages/bc/86/ab008a7dc360711b66858d61c80a5979a70a09f2aa2b05d9698df80b803d/lxml-6.1.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5d7152ec39ca7c402d8fb9bad86140a15b9503bd0c54484e3f1bbe3dd37ceca", size = 5224515 }, + { url = "https://files.pythonhosted.org/packages/75/c6/2702ff375e728e34f56d9a45339a9cf7e4427e917f542225242d63a05afa/lxml-6.1.1-cp314-cp314t-manylinux_2_28_i686.whl", hash = "sha256:88d8cb75b9d82858497a5393e3c63cfbf03035225e4b35a49ed7ccb151e4dc0e", size = 5312511 }, + { url = "https://files.pythonhosted.org/packages/b7/57/a5807c98f87a86f10ef9ffab35516df7c0f0c4b6d5d33e9f608ab9c04a31/lxml-6.1.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f64ec5397ea6a41fc1b4af0380d79b44a755b5531dcaccd9940fb260dca93038", size = 4639206 }, + { url = "https://files.pythonhosted.org/packages/1f/e1/8a0a2c35734812395f4da4eaf33748a7e5705bfb2a58b128da764339d5ec/lxml-6.1.1-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d34bbf07dbc7ca5970671b1512e928991fb5e9d95365636c9b2d8b4f53af405e", size = 5232404 }, + { url = "https://files.pythonhosted.org/packages/c2/e2/0e6a4dd5ad84d01d99aa7bae7cfefd4a760a0e0f8176818241de17d9b6c0/lxml-6.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:17e0e18d4ad8adbd0399291bc44845b69d9dd68439a3cdebdf35ff902ec05072", size = 5083769 }, + { url = "https://files.pythonhosted.org/packages/a0/7e/161f33d463f6ffc1c7679104b65086dea120080d49dde4d238f015aaee2f/lxml-6.1.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:3ab541146f1f6968c462d6c2ac495148e8cdba2f8347700b2141b6ec5a75bf52", size = 4758936 }, + { url = "https://files.pythonhosted.org/packages/f1/fb/2369825e3f6ca99305bf9f7b7085fda91c8b0922a89e54d900974aa3ef85/lxml-6.1.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2a0217714657e023ef4293500f65aa20fce6164c8fd6b08fa5bd4a859fb14b9b", size = 5620296 }, + { url = "https://files.pythonhosted.org/packages/30/90/d61e383146f74c5ab683947ea14dc7b82778838ab9b95ea73a23b60d0191/lxml-6.1.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:05a82eb6e1530a64f26225b55cbd178113bd0b5af1c2b625f25e5296742c26d2", size = 5228598 }, + { url = "https://files.pythonhosted.org/packages/76/2d/2dafd8149e94b05bb070690efd5bb2680720681e03ff03fc57d2b70a1105/lxml-6.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9e36f163528fc50cbef305f02a5fd66d404edf7049cdaff211dbc2cba5a7013e", size = 5247845 }, + { url = "https://files.pythonhosted.org/packages/ce/68/b30e913340c380ddac9580c6e6230991fc37240ec4f64704833e4f3e2769/lxml-6.1.1-cp314-cp314t-win32.whl", hash = "sha256:649dda677cf3bd6ac9ae14007ba0c824ded8ce5808b53fc7431d9140399118c1", size = 3897345 }, + { url = "https://files.pythonhosted.org/packages/3c/4e/9eb2af5335545f9fbcd7af57bcf87c6025d31eaa31b14ec184a6c8675328/lxml-6.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:793033d6c5cdf33a573f910d9bea14ef8f5771820411d118da8e1182edb53d5e", size = 4393350 }, + { url = "https://files.pythonhosted.org/packages/7f/2c/0f1e93c636720e8a3eb59af2bfda99d98b55891e1c53bc30c2e0e865f01b/lxml-6.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:58bb955caba94e467d2a96da17660d2d704e0675894cba21ab8a775b8621fd1c", size = 3817223 }, + { url = "https://files.pythonhosted.org/packages/b5/32/86a3f0f724a3a402d4627937a7fc27b160e45e7012b4adf47f6e1e844511/lxml-6.1.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:31033dc34636ea6b7d5cc11b1ddbda78a14de858ba9d3e1ed4b69a3085bc521e", size = 3930127 }, + { url = "https://files.pythonhosted.org/packages/40/44/d832e82af08723761556d004b1d04d281c09f9a8cecd7d3148548c9941a3/lxml-6.1.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3893c14c4b6ac5b2d54ba8cf03e99fe5104e592de491f19bd6b82756c09f8004", size = 4210769 }, + { url = "https://files.pythonhosted.org/packages/6d/39/0dc5949f759ed7d951e0bb8c2f2d9d7aca1908d22352fa84a8afd2ea54af/lxml-6.1.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c07da4cebf6889f03ebac8d238f62318e29f495de0aa18a51ea14e61ae907e2e", size = 4318163 }, + { url = "https://files.pythonhosted.org/packages/e6/fb/8ab3845fe046ba4cbf74536bcf6801a774b7caf4350de1c5d37f1f0a9e90/lxml-6.1.1-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f6f0ce10945fab9c4c06ce14e22af9059d1a87493a9af4501a5b0b9187e21cf2", size = 4250945 }, + { url = "https://files.pythonhosted.org/packages/68/1b/7553ab136894374ffae8851ec06f98f511cd8e66246e41b6be059d0a7289/lxml-6.1.1-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f8844cd288697c6425c9beba919302241e3278871dc6519515e72b04e987abcf", size = 4401664 }, + { url = "https://files.pythonhosted.org/packages/db/a4/441aee36c6f6b249823d20fd91f9be9ab89d7c5a8ae542a4a4ca6d342d56/lxml-6.1.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:ed21202aec73cda4d55d1ce57b389aadb90ffb044e6cd1080b8347efe1b1ec84", size = 3508989 }, +] + [[package]] name = "mako" version = "1.3.10" @@ -2326,35 +3468,39 @@ wheels = [ [[package]] name = "mlflow" -version = "2.22.0" +version = "3.15.1" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "aiohttp" }, { name = "alembic" }, + { name = "cryptography" }, { name = "docker" }, { name = "flask" }, + { name = "flask-cors" }, { name = "graphene" }, { name = "gunicorn", marker = "platform_system != 'Windows' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, - { name = "jinja2", marker = "(platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_system != 'Windows' and sys_platform == 'darwin') or (platform_system != 'Windows' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, - { name = "markdown" }, + { name = "huey" }, { name = "matplotlib" }, { name = "mlflow-skinny" }, + { name = "mlflow-tracing" }, { name = "numpy" }, { name = "pandas" }, { name = "pyarrow", version = "17.0.0", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'x86_64' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform != 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, { name = "pyarrow", version = "19.0.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' or sys_platform != 'darwin' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, { name = "scikit-learn" }, { name = "scipy" }, + { name = "skops" }, { name = "sqlalchemy" }, - { name = "waitress", marker = "(platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "waitress", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2c/22/a2d2fa7d142959720a3c5b5ffcd914be9fe02e299734ddd21c293a797981/mlflow-2.22.0.tar.gz", hash = "sha256:5b8780a8407c1b2ad441a13054f33ed0a0a58df4a69ddada2e30321d287e4f87", size = 28375641 } +sdist = { url = "https://files.pythonhosted.org/packages/51/01/aff6c6e1ee571769688e926d2cf55ae9ddd300f95541905a0a82ea1599c7/mlflow-3.15.1.tar.gz", hash = "sha256:6177b02c442d7d6ab3ad752daa826db9cf993e255450fb4b00ea8b7b5539c01d", size = 10396741 } wheels = [ - { url = "https://files.pythonhosted.org/packages/28/8f/b3bdbaf3f060801e5d8b7b7f3b67c79e3d12939c67002f9a618150317a29/mlflow-2.22.0-py3-none-any.whl", hash = "sha256:3ada72e39bd7b381c360aa9baddeb701d41f0b83b5889ddab7fdc6d7a5bc9b52", size = 29002380 }, + { url = "https://files.pythonhosted.org/packages/5a/ff/24e530a328b3b2c9d004e94cdd59ea5ec9c052c4935799f675d7bb1f1d2c/mlflow-3.15.1-py3-none-any.whl", hash = "sha256:c91f78d304d8ef825869ea07e638c73a2850660f0d9f098993bacecc359f8a75", size = 11189154 }, ] [[package]] name = "mlflow-skinny" -version = "2.22.0" +version = "3.15.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, @@ -2365,19 +3511,41 @@ dependencies = [ { name = "gitpython" }, { name = "importlib-metadata" }, { name = "opentelemetry-api" }, + { name = "opentelemetry-proto" }, { name = "opentelemetry-sdk" }, { name = "packaging" }, { name = "protobuf" }, { name = "pydantic" }, + { name = "python-dotenv" }, { name = "pyyaml" }, { name = "requests" }, { name = "sqlparse" }, + { name = "starlette" }, { name = "typing-extensions" }, { name = "uvicorn" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/1e/7d29817fa2370f88550e86ae2be4bee5f9efe82169032dc5b1cab642e5b6/mlflow_skinny-2.22.0.tar.gz", hash = "sha256:774b58970038990650486cd934d46b7038fc390682c3bde70b4e5106f6857cce", size = 5889903 } +sdist = { url = "https://files.pythonhosted.org/packages/7e/d7/f71b2607ef378b8481a1cea08463a6025b9ca831b4607afc16c75df57872/mlflow_skinny-3.15.1.tar.gz", hash = "sha256:8c53c85bf0fe6e9ba8aa72f6b8675c774d1ff55b00735a5cd33a510803905237", size = 3035284 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/eb/53dd2a5db1040a21da2980c382ebe3a9bda2d8af8365c2d01053c924b150/mlflow_skinny-2.22.0-py3-none-any.whl", hash = "sha256:9efc39454f6cc3433e7d804c3df8dab4fbba1abe504c52c05f00ef1d0696fef5", size = 6268849 }, + { url = "https://files.pythonhosted.org/packages/f3/9e/4e8138583321f6dfbaa35360f46056b4ecc06d505d130c03a5d81aec5620/mlflow_skinny-3.15.1-py3-none-any.whl", hash = "sha256:b62056806d0afc425e8948233a3646b0b3af504702ff3b334b6395f48b22b832", size = 3613028 }, +] + +[[package]] +name = "mlflow-tracing" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "databricks-sdk" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, + { name = "packaging" }, + { name = "protobuf" }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/a6/76964d8f265be984838a13b77656b047686c492b61b3f46ca2ef29ef7325/mlflow_tracing-3.15.1.tar.gz", hash = "sha256:ba1c4d873151c0ceeab37f53daf0997feea18a1c092358995072dc53e1944a29", size = 1501188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/c7/13db54bd1b6525a0f09d880260d9dcf8072ae89155dae7a74c9e75a1ba03/mlflow_tracing-3.15.1-py3-none-any.whl", hash = "sha256:3cdef1f1675fe2c7c9f409e132439d65b063e37455b338027bfb2c0f986bebca", size = 1785591 }, ] [[package]] @@ -2547,6 +3715,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 }, ] +[[package]] +name = "munch" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/2b/45098135b5f9f13221820d90f9e0516e11a2a0f55012c13b081d202b782a/munch-4.0.0.tar.gz", hash = "sha256:542cb151461263216a4e37c3fd9afc425feeaf38aaa3025cd2a981fadb422235", size = 19089 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/b3/7c69b37f03260a061883bec0e7b05be7117c1b1c85f5212c72c8c2bc3c8c/munch-4.0.0-py2.py3-none-any.whl", hash = "sha256:71033c45db9fb677a0b7eb517a4ce70ae09258490e419b0e7f00d1e386ecb1b4", size = 9950 }, +] + [[package]] name = "myst-parser" version = "4.0.1" @@ -2654,6 +3831,187 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, ] +[[package]] +name = "netcdf4" +version = "1.7.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", +] +dependencies = [ + { name = "certifi", marker = "(platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32') or (platform_system == 'Windows' and sys_platform == 'win32' and extra == 'extra-7-itwinai-tf-cuda') or (platform_system == 'Windows' and sys_platform == 'win32' and extra != 'extra-7-itwinai-torch') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "cftime", marker = "(platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32') or (platform_system == 'Windows' and sys_platform == 'win32' and extra == 'extra-7-itwinai-tf-cuda') or (platform_system == 'Windows' and sys_platform == 'win32' and extra != 'extra-7-itwinai-torch') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "numpy", marker = "(platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32') or (platform_system == 'Windows' and sys_platform == 'win32' and extra == 'extra-7-itwinai-tf-cuda') or (platform_system == 'Windows' and sys_platform == 'win32' and extra != 'extra-7-itwinai-torch') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/76/7bc801796dee752c1ce9cd6935564a6ee79d5c9d9ef9192f57b156495a35/netcdf4-1.7.3.tar.gz", hash = "sha256:83f122fc3415e92b1d4904fd6a0898468b5404c09432c34beb6b16c533884673", size = 836095 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/f6/a2fe830a5659736838ed8329992294625b70a9691818650a0b8553ce3092/netcdf4-1.7.3-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:db761afd3a6b9482df018c4783e0bdf99141a41db1f14c68c89986effb182d57", size = 2803413 }, + { url = "https://files.pythonhosted.org/packages/29/74/57d07e2b418c683b7fe9b1b912b5636fc091ad83f3430e91828db98423e7/netcdf4-1.7.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:ad4c2d9b469248d83cbacb70ad9e7d3a6c0ba27febe839c90192147199745ba4", size = 2417570 }, + { url = "https://files.pythonhosted.org/packages/ec/3a/c487ea7c7a20e34b1eecdfd8a64794e2e8d6ed2089cace3939769d2904af/netcdf4-1.7.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6986d039717582071e55ae9c6fbebfe4e5bbbc3af122fc3db0c0c09c4d8955e", size = 9682170 }, + { url = "https://files.pythonhosted.org/packages/74/c0/5f2cf4bae134f4346ad9c11f94f3291d9bd60352b5d60810a0bba0952351/netcdf4-1.7.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:348e79b4f26f2e403fe3c54364e9297e4ef326c7ee12f9be01c037db853d26c0", size = 9520808 }, + { url = "https://files.pythonhosted.org/packages/06/57/c233d8dcf6efe0add48bb1d8d6fe32d7ad547d5c0d84bf0cbe7e5d82147b/netcdf4-1.7.3-cp310-cp310-win_amd64.whl", hash = "sha256:6ab71f5d70e55e8584d168d5158efdb2fd8d350a033d0c27d942c3d399587f54", size = 7214638 }, + { url = "https://files.pythonhosted.org/packages/49/62/d286c76cdf0f6faf6064dc032ba7df3d6172ccca6e7d3571eee5516661b9/netcdf4-1.7.3-cp311-abi3-macosx_13_0_x86_64.whl", hash = "sha256:801c222d8ad35fd7dc7e9aa7ea6373d184bcb3b8ee6b794c5fbecaa5155b1792", size = 2751401 }, + { url = "https://files.pythonhosted.org/packages/f8/5e/0bb5593df674971e9fe5d76f7a0dd2006f3ee6b3a9eaece8c01170bac862/netcdf4-1.7.3-cp311-abi3-macosx_14_0_arm64.whl", hash = "sha256:83dbfd6f10a0ec785d5296016bd821bbe9f0df780be72fc00a1f0d179d9c5f0f", size = 2387517 }, + { url = "https://files.pythonhosted.org/packages/8e/27/9530c58ddec2c28297d1abbc2f3668cb7bf79864bcbfb0516634ad0d3908/netcdf4-1.7.3-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:949e086d4d2612b49e5b95f60119d216c9ceb7b17bc771e9e0fa0e9b9c0a2f9f", size = 9621631 }, + { url = "https://files.pythonhosted.org/packages/97/1a/78b19893197ed7525edfa7f124a461626541e82aec694a468ba97755c24e/netcdf4-1.7.3-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0c764ba6f6a1421cab5496097e8a1c4d2e36be2a04880dfd288bb61b348c217e", size = 9453727 }, + { url = "https://files.pythonhosted.org/packages/2a/f8/a5509bc46faedae2b71df29c57e6525b7eb47aee44000fd43e2927a9a3a9/netcdf4-1.7.3-cp311-abi3-win_amd64.whl", hash = "sha256:1b6c646fa179fb1e5e8d6e8231bc78cc0311eceaa1241256b5a853f1d04055b9", size = 7149328 }, +] + +[[package]] +name = "netcdf4" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "certifi", marker = "(platform_machine != 'ARM64' and extra == 'extra-7-itwinai-torch') or platform_system != 'Windows' or sys_platform == 'darwin' or sys_platform == 'linux' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "cftime", marker = "(platform_machine != 'ARM64' and extra == 'extra-7-itwinai-torch') or platform_system != 'Windows' or sys_platform == 'darwin' or sys_platform == 'linux' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "numpy", marker = "(platform_machine != 'ARM64' and sys_platform == 'darwin') or (platform_machine != 'ARM64' and sys_platform == 'linux') or (platform_machine != 'ARM64' and extra == 'extra-7-itwinai-torch') or platform_system != 'Windows' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/b6/0370bb3af66a12098da06dc5843f3b349b7c83ccbdf7306e7afa6248b533/netcdf4-1.7.4.tar.gz", hash = "sha256:cdbfdc92d6f4d7192ca8506c9b3d4c1d9892969ff28d8e8e1fc97ca08bf12164", size = 838352 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/07/dfdd017641e82fadaf4e043d91fa179d34940c7d69175a3034dea877df9c/netcdf4-1.7.4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:b1c1a7ea3678db76bf33d14f7e202385d634db38c5e70d8cf4895971023eebb9", size = 23499427 }, + { url = "https://files.pythonhosted.org/packages/a7/6c/8cd98d166f30d378488c5235457d6af7df09f9925ab5ad03d6840543f42e/netcdf4-1.7.4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d3f9497873454207f9480847d02b1b19a4bc81ad6e9166e1c17d4e2f8f3555d1", size = 22886591 }, + { url = "https://files.pythonhosted.org/packages/08/1c/ab31713a95160ebc6b4ec495cd4f03f38b235188a7e955bf33703c5039ca/netcdf4-1.7.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8e18294af803e80f8c0339f791901942e268c334c099bbd5f7ea8325a49801a", size = 10336881 }, + { url = "https://files.pythonhosted.org/packages/26/d7/bb16993af267acda23fe3de4ead2528cbe49043e391f732a1a4a15beec20/netcdf4-1.7.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b06c0b93fd0ecc1ec67a582f3ba98b7db9da1fa843c8f83fd75990e3701771e", size = 10182772 }, + { url = "https://files.pythonhosted.org/packages/9b/a6/e6fca338488a896c5e1f661ba3007e83f46700e1a59552b05013d501bc45/netcdf4-1.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:889ba77f084504aebaba9c6f9a88ac213431fef0e897f887cd35aef351ff7740", size = 21363337 }, + { url = "https://files.pythonhosted.org/packages/38/de/38ed7e1956943d28e8ea74161e97c3a00fb98d6d08943b4fd21bae32c240/netcdf4-1.7.4-cp311-abi3-macosx_13_0_x86_64.whl", hash = "sha256:dec70e809cc65b04ebe95113ee9c85ba46a51c3a37c058d2b2b0cadc4d3052d8", size = 23427499 }, + { url = "https://files.pythonhosted.org/packages/e5/70/2f73c133b71709c412bc81d8b721e28dc6237ba9d7dad861b7bfbb70408a/netcdf4-1.7.4-cp311-abi3-macosx_14_0_arm64.whl", hash = "sha256:75cf59100f0775bc4d6b9d4aca7cbabd12e2b8cf3b9a4fb16d810b92743a315a", size = 22847667 }, + { url = "https://files.pythonhosted.org/packages/77/ce/43a3c0c41a6e2e940d87feea79d29aa88302211ac122604838f8a5a48de6/netcdf4-1.7.4-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddfc7e9d261125c74708119440c85ea288b5fee41db676d2ba1ce9be11f96932", size = 10274769 }, + { url = "https://files.pythonhosted.org/packages/7b/7a/a8d32501bb95ecff342004a674720164f95ad616f269450b3bc13dc88ae3/netcdf4-1.7.4-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a72c9f58767779ec14cb7451c3b56bdd8fdc027a792fac2062b14e090c5617f3", size = 10123122 }, + { url = "https://files.pythonhosted.org/packages/18/68/e89b4fa9242e59326c849c39ce0f49eb68499603c639405a8449900a4f15/netcdf4-1.7.4-cp311-abi3-win_amd64.whl", hash = "sha256:9476e1f23161ae5159cd1548c50c8a37922e77d76583e247133f256ef7b825fc", size = 21299637 }, + { url = "https://files.pythonhosted.org/packages/6c/fc/edd41a3607241027aa4533e7f18e0cd647e74dde10a63274c65350f59967/netcdf4-1.7.4-cp311-abi3-win_arm64.whl", hash = "sha256:876ad9d58f09c98741c066c726164c45a098a58fb90e5fac9e74de4bb8a793fd", size = 2386377 }, + { url = "https://files.pythonhosted.org/packages/f1/3e/1e83534ba68459bc5ae39df46fa71003984df58aabf31f7dcd6e22ecddb0/netcdf4-1.7.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56688c03444fffe0d0c7512cb45245e650389cd841c955b30e4552fa681c4cd9", size = 10519821 }, + { url = "https://files.pythonhosted.org/packages/c0/8c/a15d6fe97f81d6d5202b17838a9a298b5955b3e9971e20609195112829b5/netcdf4-1.7.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ecf471ba8a6ddb2200121949bedfa0095db228822f38227d5da680694a38358", size = 10371133 }, + { url = "https://files.pythonhosted.org/packages/d8/2b/684b15dd4791f8be295b2f6fa97377bbc07a768478a63b7d3c4951712e36/netcdf4-1.7.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5841de0735e8e4875b367c668e81d334287858d64dd9f3e3e2261e808c84922", size = 10395635 }, + { url = "https://files.pythonhosted.org/packages/37/dc/44d21524cf1b1c64254f92e22395a7a10f70c18f3a13a18ac9db258760f7/netcdf4-1.7.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86fac03a8c5b250d57866e7d98918a64742e4b0de1681c5c86bac5726bab8aee", size = 10237725 }, + { url = "https://files.pythonhosted.org/packages/d4/9d/c3ddf54296ad8f18f02f77f23452bdb0971aece1b87e84bab9d734bf72cc/netcdf4-1.7.4-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:ad083d260301b5add74b1669c75ab0df03bdf986decfcc092cb45eec2615b5f1", size = 23515258 }, + { url = "https://files.pythonhosted.org/packages/dd/44/bc0346e995d436d03fab682b7fbd2a9adcf0db6a05790b8f24853bf08170/netcdf4-1.7.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f22014092cc9da3f056b0368e2e38c42afd5725c87ad4843eb2f467e16dd4f6", size = 22910171 }, + { url = "https://files.pythonhosted.org/packages/30/6b/f9bc3f43c55e2dac72ee9f98d77860789bdd5d50c29adf164a6bdb303078/netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:224a15434c165a5e0225e5831f591edf62533044b1ce62fdfee815195bbd077d", size = 10567579 }, + { url = "https://files.pythonhosted.org/packages/6d/d5/e7685c66b7f011c73cd746127f986358a26c642a4e4a1aa5ab51481b6586/netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31a2318305de6831a18df25ad0df9f03b6d68666af0356d4f6057d66c02ffeb6", size = 10255032 }, + { url = "https://files.pythonhosted.org/packages/a6/14/7506738bb6c8bc373b01e5af8f3b727f83f4f496c6b108490ea2609dc2cf/netcdf4-1.7.4-cp314-cp314t-win_amd64.whl", hash = "sha256:6c4a0aa9446c3a616ef3be015b629dc6173643f8b09546de26a4e40e272cd1ed", size = 22289653 }, + { url = "https://files.pythonhosted.org/packages/af/2e/39d5e9179c543f2e6e149a65908f83afd9b6d64379a90789b323111761db/netcdf4-1.7.4-cp314-cp314t-win_arm64.whl", hash = "sha256:034220887d48da032cb2db5958f69759dbb04eb33e279ec6390571d4aea734fe", size = 2531682 }, +] + [[package]] name = "netifaces" version = "0.11.0" @@ -2670,11 +4028,184 @@ wheels = [ ] [[package]] -name = "numpy" -version = "1.26.4" +name = "numcodecs" +version = "0.13.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } -wheels = [ +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "numpy", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/56/8895a76abe4ec94ebd01eeb6d74f587bc4cddd46569670e1402852a5da13/numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc", size = 5955215 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/c0/6d72cde772bcec196b7188731d41282993b2958440f77fdf0db216f722da/numcodecs-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96add4f783c5ce57cc7e650b6cac79dd101daf887c479a00a29bc1487ced180b", size = 1580012 }, + { url = "https://files.pythonhosted.org/packages/94/1d/f81fc1fa9210bbea97258242393a1f9feab4f6d8fb201f81f76003005e4b/numcodecs-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:237b7171609e868a20fd313748494444458ccd696062f67e198f7f8f52000c15", size = 1176919 }, + { url = "https://files.pythonhosted.org/packages/16/e4/b9ec2f4dfc34ecf724bc1beb96a9f6fa9b91801645688ffadacd485089da/numcodecs-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e42f73c31b8c24259c5fac6adba0c3ebf95536e37749dc6c62ade2989dca28", size = 8625842 }, + { url = "https://files.pythonhosted.org/packages/fe/90/299952e1477954ec4f92813fa03e743945e3ff711bb4f6c9aace431cb3da/numcodecs-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:eda7d7823c9282e65234731fd6bd3986b1f9e035755f7fed248d7d366bb291ab", size = 828638 }, + { url = "https://files.pythonhosted.org/packages/f0/78/34b8e869ef143e88d62e8231f4dbfcad85e5c41302a11fc5bd2228a13df5/numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666", size = 1580199 }, + { url = "https://files.pythonhosted.org/packages/3b/cf/f70797d86bb585d258d1e6993dced30396f2044725b96ce8bcf87a02be9c/numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc", size = 1177203 }, + { url = "https://files.pythonhosted.org/packages/a8/b5/d14ad69b63fde041153dfd05d7181a49c0d4864de31a7a1093c8370da957/numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f", size = 8868743 }, + { url = "https://files.pythonhosted.org/packages/13/d4/27a7b5af0b33f6d61e198faf177fbbf3cb83ff10d9d1a6857b7efc525ad5/numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b", size = 829603 }, + { url = "https://files.pythonhosted.org/packages/37/3a/bc09808425e7d3df41e5fc73fc7a802c429ba8c6b05e55f133654ade019d/numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917", size = 1575806 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/dc74d0bfdf9ec192332a089d199f1e543e747c556b5659118db7a437dcca/numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6", size = 1178233 }, + { url = "https://files.pythonhosted.org/packages/d4/ce/434e8e3970b8e92ae9ab6d9db16cb9bc7aa1cd02e17c11de6848224100a1/numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53", size = 8857827 }, + { url = "https://files.pythonhosted.org/packages/83/e7/1d8b1b266a92f9013c755b1c146c5ad71a2bff147ecbc67f86546a2e4d6a/numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca", size = 826539 }, + { url = "https://files.pythonhosted.org/packages/83/8b/06771dead2cc4a8ae1ea9907737cf1c8d37a323392fa28f938a586373468/numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43", size = 1571660 }, + { url = "https://files.pythonhosted.org/packages/f9/ea/d925bf85f92dfe4635356018da9fe4bfecb07b1c72f62b01c1bc47f936b1/numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf", size = 1169925 }, + { url = "https://files.pythonhosted.org/packages/0f/d6/643a3839d571d8e439a2c77dc4b0b8cab18d96ac808e4a81dbe88e959ab6/numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701", size = 8814257 }, + { url = "https://files.pythonhosted.org/packages/a6/c5/f3e56bc9b4e438a287fff738993d6d11abef368c0328a612ac2842ba9fca/numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176", size = 821887 }, +] + +[[package]] +name = "numcodecs" +version = "0.16.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "numpy", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/bd/8a391e7c356366224734efd24da929cc4796fff468bfb179fe1af6548535/numcodecs-0.16.5.tar.gz", hash = "sha256:0d0fb60852f84c0bd9543cc4d2ab9eefd37fc8efcc410acd4777e62a1d300318", size = 6276387 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/85/1ac101a40ead81eaa1c7dc49a8827a30e2e436211b43ebdc63c590eb1347/numcodecs-0.16.5-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:78382dcea50622f2ef1e6e7a71dbe7f861d8fe376b27b7c297c26907304fef1e", size = 1621795 }, + { url = "https://files.pythonhosted.org/packages/0e/cc/0d97ef55dda48cb0f93d7b92d761208e7a99bd2eea6b0e859426e6a99a21/numcodecs-0.16.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2d04a19cb57a3c519b4127ac377cca6471aee1990d7c18f5b1e3a4fe1306689", size = 1153030 }, + { url = "https://files.pythonhosted.org/packages/5e/41/e120ee1b390730ac5987cde2afd82e2b8442cec315ab40b94b0373e93e73/numcodecs-0.16.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c043af648eb280cd61785c99c22ff5c3c3460f906eb51a8511327c4f5111b283", size = 8510503 }, + { url = "https://files.pythonhosted.org/packages/54/4b/195ac84cc8f6077b4f0f421e8daee21b7f1bd88cb7716414234379fe68ec/numcodecs-0.16.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c398919ef2eb0e56b8e97456f622640bfd3deed06de3acc976989cbcb22628a3", size = 9123428 }, + { url = "https://files.pythonhosted.org/packages/0f/5b/af02c417954f46e5c7bd5163ac251f535877d909fce54861c99ae197f6f6/numcodecs-0.16.5-cp311-cp311-win_amd64.whl", hash = "sha256:3820860ed302d4d84a1c66e70981ff959d5eb712555be4e7d8ced49888594773", size = 801542 }, + { url = "https://files.pythonhosted.org/packages/75/cc/55420f3641a67f78392dc0bc5d02cb9eb0a9dcebf2848d1ac77253ca61fa/numcodecs-0.16.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:24e675dc8d1550cd976a99479b87d872cb142632c75cc402fea04c08c4898523", size = 1656287 }, + { url = "https://files.pythonhosted.org/packages/f5/6c/86644987505dcb90ba6d627d6989c27bafb0699f9fd00187e06d05ea8594/numcodecs-0.16.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ddfa4341d1a3ab99989d13b01b5134abb687d3dab2ead54b450aefe4ad5bd6", size = 1148899 }, + { url = "https://files.pythonhosted.org/packages/97/1e/98aaddf272552d9fef1f0296a9939d1487914a239e98678f6b20f8b0a5c8/numcodecs-0.16.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b554ab9ecf69de7ca2b6b5e8bc696bd9747559cb4dd5127bd08d7a28bec59c3a", size = 8534814 }, + { url = "https://files.pythonhosted.org/packages/fb/53/78c98ef5c8b2b784453487f3e4d6c017b20747c58b470393e230c78d18e8/numcodecs-0.16.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad1a379a45bd3491deab8ae6548313946744f868c21d5340116977ea3be5b1d6", size = 9173471 }, + { url = "https://files.pythonhosted.org/packages/1c/20/2fdec87fc7f8cec950d2b0bea603c12dc9f05b4966dc5924ba5a36a61bf6/numcodecs-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:845a9857886ffe4a3172ba1c537ae5bcc01e65068c31cf1fce1a844bd1da050f", size = 801412 }, + { url = "https://files.pythonhosted.org/packages/38/38/071ced5a5fd1c85ba0e14ba721b66b053823e5176298c2f707e50bed11d9/numcodecs-0.16.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25be3a516ab677dad890760d357cfe081a371d9c0a2e9a204562318ac5969de3", size = 1654359 }, + { url = "https://files.pythonhosted.org/packages/d1/c0/5f84ba7525577c1b9909fc2d06ef11314825fc4ad4378f61d0e4c9883b4a/numcodecs-0.16.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0107e839ef75b854e969cb577e140b1aadb9847893937636582d23a2a4c6ce50", size = 1144237 }, + { url = "https://files.pythonhosted.org/packages/0b/00/787ea5f237b8ea7bc67140c99155f9c00b5baf11c49afc5f3bfefa298f95/numcodecs-0.16.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:015a7c859ecc2a06e2a548f64008c0ec3aaecabc26456c2c62f4278d8fc20597", size = 8483064 }, + { url = "https://files.pythonhosted.org/packages/c4/e6/d359fdd37498e74d26a167f7a51e54542e642ea47181eb4e643a69a066c3/numcodecs-0.16.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84230b4b9dad2392f2a84242bd6e3e659ac137b5a1ce3571d6965fca673e0903", size = 9126063 }, + { url = "https://files.pythonhosted.org/packages/27/72/6663cc0382ddbb866136c255c837bcb96cc7ce5e83562efec55e1b995941/numcodecs-0.16.5-cp313-cp313-win_amd64.whl", hash = "sha256:5088145502ad1ebf677ec47d00eb6f0fd600658217db3e0c070c321c85d6cf3d", size = 799275 }, + { url = "https://files.pythonhosted.org/packages/3c/9e/38e7ca8184c958b51f45d56a4aeceb1134ecde2d8bd157efadc98502cc42/numcodecs-0.16.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b05647b8b769e6bc8016e9fd4843c823ce5c9f2337c089fb5c9c4da05e5275de", size = 1654721 }, + { url = "https://files.pythonhosted.org/packages/a1/37/260fa42e7b2b08e6e00ad632f8dd620961a60a459426c26cea390f8c68d0/numcodecs-0.16.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3832bd1b5af8bb3e413076b7d93318c8e7d7b68935006b9fa36ca057d1725a8f", size = 1146887 }, + { url = "https://files.pythonhosted.org/packages/4e/15/e2e1151b5a8b14a15dfd4bb4abccce7fff7580f39bc34092780088835f3a/numcodecs-0.16.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49f7b7d24f103187f53135bed28bb9f0ed6b2e14c604664726487bb6d7c882e1", size = 8476987 }, + { url = "https://files.pythonhosted.org/packages/6d/30/16a57fc4d9fb0ba06c600408bd6634f2f1753c54a7a351c99c5e09b51ee2/numcodecs-0.16.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aec9736d81b70f337d89c4070ee3ffeff113f386fd789492fa152d26a15043e4", size = 9102377 }, + { url = "https://files.pythonhosted.org/packages/31/a5/a0425af36c20d55a3ea884db4b4efca25a43bea9214ba69ca7932dd997b4/numcodecs-0.16.5-cp314-cp314-win_amd64.whl", hash = "sha256:b16a14303800e9fb88abc39463ab4706c037647ac17e49e297faa5f7d7dbbf1d", size = 819022 }, +] + +[[package]] +name = "numpy" +version = "1.26.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } +wheels = [ { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468 }, { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411 }, { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016 }, @@ -2839,6 +4370,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ad/d3/540ba5c6d627be251d6d4cb88d85f2163a18fa3b4c1b980d5f9500a5d7c4/nvidia_nvjitlink_cu12-12.3.101-py3-none-win_amd64.whl", hash = "sha256:1b2e317e437433753530792f13eece58f0aec21a2b05903be7bffe58a606cbd1", size = 94711468 }, ] +[[package]] +name = "nvitop" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "nvidia-ml-py" }, + { name = "psutil" }, + { name = "windows-curses", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ee/86/81c262e9c4adee00dd4eb968c8a7c4b2395a9f466299b87f5f422e503609/nvitop-1.7.1.tar.gz", hash = "sha256:3803112a1d4a7e01989ae5bf5a5e42f0366bf791d68ad8e3b1859d7ed747140c", size = 222479 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/4b/ca5d6242f27d0606b7f4fdf58bd5a150ed686a56eee4c1d3f967c6bdefea/nvitop-1.7.1-py3-none-any.whl", hash = "sha256:af757193bb41156d0154d7cc51957a287647092e78dc4f5e20bbec7d73819825", size = 207976 }, +] + [[package]] name = "omegaconf" version = "2.3.0" @@ -2888,6 +4434,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/12/f2/89ea3361a305466bc6460a532188830351220b5f0851a5fa133155c16eca/opentelemetry_api-1.32.1-py3-none-any.whl", hash = "sha256:bbd19f14ab9f15f0e85e43e6a958aa4cb1f36870ee62b7fd205783a112012724", size = 65287 }, ] +[[package]] +name = "opentelemetry-proto" +version = "1.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/59/959f0beea798ae0ee9c979b90f220736fbec924eedbefc60ca581232e659/opentelemetry_proto-1.27.0.tar.gz", hash = "sha256:33c9345d91dafd8a74fc3d7576c5a38f18b7fdf8d02983ac67485386132aedd6", size = 34749 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/56/3d2d826834209b19a5141eed717f7922150224d1a982385d19a9444cbf8d/opentelemetry_proto-1.27.0-py3-none-any.whl", hash = "sha256:b133873de5581a50063e1e4b29cdcf0c5e253a8c2d8dc1229add20a4c3830ace", size = 52464 }, +] + [[package]] name = "opentelemetry-sdk" version = "1.32.1" @@ -3210,6 +4768,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, ] +[[package]] +name = "portalocker" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/f7/24b2821a077e0d85197a8c4093a4f71f78713d0a6f216c3f7cc90f7a5cc4/portalocker-4.1.0.tar.gz", hash = "sha256:91d0ff02d6f5f9a2dbf1ef1367ddb05b83136b2676707a1b2c8746f1f0dcd992", size = 97751 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/91/288c883303be067c1648f1e63ea38e5f8eb5ab7123fd3a9a7366148e58b7/portalocker-4.1.0-py3-none-any.whl", hash = "sha256:d985a430d265adf31adf12bc0bf3501aea59efc495e9104c057e5dfb7394c226", size = 65914 }, +] + +[[package]] +name = "prettytable" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/74/ba08d81e668ccfe8658d7520a307e63c19862c08eb4ccb26f356c5239a7a/prettytable-3.18.0.tar.gz", hash = "sha256:439217116152244369caf3d9f1caf2f9fe29b03bd79e88d2928c8e718c95d680", size = 76373 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/be/2e6798ace5cc036f5d05d36b7b2fd85346f1a708c87060890b070d0ec607/prettytable-3.18.0-py3-none-any.whl", hash = "sha256:b3346e0e6f79180833aebaac088ae926340586cf6d7d991b9eb125b65f72313a", size = 37357 }, +] + [[package]] name = "prometheus-client" version = "0.21.1" @@ -3346,6 +4925,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/17/d7/1e7c80cb2ea2880cfe38580dcfbb22b78b746640c9c13fc3337a6967dc4c/protobuf-4.25.7-py3-none-any.whl", hash = "sha256:e9d969f5154eaeab41404def5dcf04e62162178f4b9de98b2d3c1c70f5f84810", size = 156468 }, ] +[[package]] +name = "prov" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/64/2357152813c37d0b02d605f96de4c072c9016b46b3c57908f89e25d95bf9/prov-3.1.0.tar.gz", hash = "sha256:e3ecbf6345e46b1958b286bd1b090c5baffa942015ecf04b44a8cc63830f8a92", size = 274265 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/a2/0d328e04d5c6279efbaeedb9998d6dd6ad47552c6f889fa1098ed7d071b6/prov-3.1.0-py3-none-any.whl", hash = "sha256:c70f2785e353bc3366f4711d7a5488380249026498fcf6274c71f783f2773545", size = 673103 }, +] + [[package]] name = "psutil" version = "7.0.0" @@ -3417,9 +5005,12 @@ name = "pyarrow" version = "17.0.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", @@ -3463,17 +5054,30 @@ name = "pyarrow" version = "19.0.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", @@ -3484,24 +5088,43 @@ resolution-markers = [ "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.11' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", @@ -3511,20 +5134,19 @@ resolution-markers = [ "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] @@ -3587,6 +5209,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259 }, ] +[[package]] +name = "pycountry" +version = "26.2.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/1d/061b9e7a48b85cfd69f33c33d2ef784a531c359399ad764243399673c8f5/pycountry-26.2.16.tar.gz", hash = "sha256:5b6027d453fcd6060112b951dd010f01f168b51b4bf8a1f1fc8c95c8d94a0801", size = 7711342 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/42/7703bd45b62fecd44cd7d3495423097e2f7d28bc2e99e7c1af68892ab157/pycountry-26.2.16-py3-none-any.whl", hash = "sha256:115c4baf7cceaa30f59a4694d79483c9167dbce7a9de4d3d571c5f3ea77c305a", size = 8044600 }, +] + [[package]] name = "pycparser" version = "2.22" @@ -3698,6 +5329,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 }, ] +[[package]] +name = "pydot" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/35/b17cb89ff865484c6a20ef46bf9d95a5f07328292578de0b295f4a6beec2/pydot-4.0.1.tar.gz", hash = "sha256:c2148f681c4a33e08bf0e26a9e5f8e4099a82e0e2a068098f32ce86577364ad5", size = 162594 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl", hash = "sha256:869c0efadd2708c0be1f916eb669f3d664ca684bc57ffb7ecc08e70d5e93fee6", size = 37087 }, +] + [[package]] name = "pygments" version = "2.19.1" @@ -3807,6 +5450,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] +[[package]] +name = "python-dotenv" +version = "1.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/53/ed9d74092561d4b01a2ef1349d52cdbc135e526c245f366b089cfca6de49/python_dotenv-1.2.3.tar.gz", hash = "sha256:a20a594dabeaa385725aa239d5244871c143ecb356add8a20fcf23773a6c3a35", size = 58945 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/17/c5c6b53ddc18f297992099b3d9ec16c855c0ccc83263a21fe4d1c625ec6c/python_dotenv-1.2.3-py3-none-any.whl", hash = "sha256:904552145e8bfed22162c09dab1c2b9b54fefa7b23ba780f4f26ca0316b0f0d9", size = 22780 }, +] + [[package]] name = "pytorch-lightning" version = "2.5.1.post0" @@ -3972,6 +5624,120 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, ] +[[package]] +name = "questionary" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/45/eafb0bba0f9988f6a2520f9ca2df2c82ddfa8d67c95d6625452e97b204a5/questionary-2.1.1.tar.gz", hash = "sha256:3d7e980292bb0107abaa79c68dd3eee3c561b83a0f89ae482860b181c8bd412d", size = 25845 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl", hash = "sha256:a51af13f345f1cdea62347589fbb6df3b290306ab8930713bfae4d475a7d4a59", size = 36753 }, +] + +[[package]] +name = "rapidfuzz" +version = "3.14.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/21/ef6157213316e85790041254259907eb722e00b03480256c0545d98acd33/rapidfuzz-3.14.5.tar.gz", hash = "sha256:ba10ac57884ce82112f7ed910b67e7fb6072d8ef2c06e30dc63c0f604a112e0e", size = 57901753 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/b1/d6d6e7737fe3d0eb2ac2ac337686420d538f83f28495acc3cc32201c0dbf/rapidfuzz-3.14.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:071d96b957a33b9296b9284b6350a0fb6d030b154a04efd7c15e56b98b79a517", size = 1953508 }, + { url = "https://files.pythonhosted.org/packages/2b/7b/94c1c953ac818bdd88b43213a9d38e4a41e953b786af3c3b2444d4a8f96d/rapidfuzz-3.14.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:667f40fe9c81ad129b198d236881b00dd9e8314d9cc72d03c3e16bdfe5879051", size = 1160895 }, + { url = "https://files.pythonhosted.org/packages/7f/60/a67a7ca7c2532c6c1a4b5cd797917780eed43798b82c98b6df734a086c95/rapidfuzz-3.14.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9fff308486bbd2c8c24f25e8e152c7594d3fe8db265a2d6a1ce24d58671127f", size = 1382245 }, + { url = "https://files.pythonhosted.org/packages/95/ff/a42c9ce9f9e90ceb5b51136e0b8e8e6e5113ba0b45d986effbd671e7dddf/rapidfuzz-3.14.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dfa552338f51aec280f17b02d28bace1e162d1a84ccd80e3339a57f98aedb56b", size = 3163974 }, + { url = "https://files.pythonhosted.org/packages/e3/3c/11e2d41075e6e48b7dad373631b379b7e40491f71d5412c5a98d3c58f60f/rapidfuzz-3.14.5-cp310-cp310-manylinux_2_39_riscv64.whl", hash = "sha256:068b3e965ca9d9ee4debe40001ae7c3938ba646308afd33cf0c66618147db65c", size = 1475540 }, + { url = "https://files.pythonhosted.org/packages/29/fa/09be143dcc22c79f09cf90168a574725dbda49f02cbbd55d0447da8bec86/rapidfuzz-3.14.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:88b7d31ff1cc5e9bc0e4406e6b1fa00b6d37163d50bb58091e9b976ff1129faa", size = 2404128 }, + { url = "https://files.pythonhosted.org/packages/32/f9/1aeb504cdcfde42881825e9c86f48238d4e01ba8a1530491e82eb17e5689/rapidfuzz-3.14.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:eacb434410b8d9ca99a8d42352ef085cf423e3c76c1f0b86be2fcba3bff2952c", size = 2508455 }, + { url = "https://files.pythonhosted.org/packages/10/8e/b1b5eed8d887a29b0e18fd3222c46ca60fddfb528e7e1c41267ce42d5522/rapidfuzz-3.14.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:649712823f3abcdc48427147a5384fac15623ba435d0013959b52e6462521397", size = 4274060 }, + { url = "https://files.pythonhosted.org/packages/e3/c4/7e5b0353693d4f47b8b0f96e941efc377cfb2034b67ef92d082ac4441a0f/rapidfuzz-3.14.5-cp310-cp310-win32.whl", hash = "sha256:13cb79c23ef5516e4c4e3830877be8b19aa75203636be1163d690d37803f6504", size = 1727457 }, + { url = "https://files.pythonhosted.org/packages/d9/6e/f530a39b946fa71c009bc9c81fdb6b48a77bbc57ee8572ac0302b3bf6308/rapidfuzz-3.14.5-cp310-cp310-win_amd64.whl", hash = "sha256:f2073495a7f9b75e57e600747ac09510d67683fd64d3228e009740b7ef88f9fe", size = 1544657 }, + { url = "https://files.pythonhosted.org/packages/bc/01/02fa075f9f59ff766d374fecbd042b3ac9782dcd5abc52d909a54f587eeb/rapidfuzz-3.14.5-cp310-cp310-win_arm64.whl", hash = "sha256:8166efddea49fdbc61185559f47593239e4794fd7c9044dd5a789d1a90af852d", size = 816587 }, + { url = "https://files.pythonhosted.org/packages/e1/f9/3c41a7be8855803f4f6c713b472226a98d31d41869d98f64f4ca790510d6/rapidfuzz-3.14.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e251126d48615e1f02b4a178f2cd0cd4f0332b8a019c01a2e10480f7552554b4", size = 1952372 }, + { url = "https://files.pythonhosted.org/packages/9e/89/c2557e37531d03465193bff0ab9de70b468420a807d71a26a65100635459/rapidfuzz-3.14.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ab449c9abd0d4e1f8145dce0798a4c822a1a1933d613c764a641bea88b8bdab", size = 1159782 }, + { url = "https://files.pythonhosted.org/packages/1a/b2/ffeeb7eca1a897d51b998f4c0ef0281696c3b06abcca4f88f9def708ffe1/rapidfuzz-3.14.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb2829fedd672dd7107267189dabe2bbe07972801d636014417c6861eb89e358", size = 1383677 }, + { url = "https://files.pythonhosted.org/packages/6b/d0/4539e42a2d596e068f7738f279638a4a74edd1fbb6f8594e2458058979c6/rapidfuzz-3.14.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3d50e5861872935fece391351cbb5ba21d1bced277cf5e1143d207a0a35f1925", size = 3168906 }, + { url = "https://files.pythonhosted.org/packages/5e/1c/3ec897eb9d8b05308aa8ef6ae4ed64b088ad521a3f9d8ff469e7e97bc2b0/rapidfuzz-3.14.5-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:7092a216728f80c960bd6b3807275d1ee318b168986bd5dc523349581d4890b8", size = 1478176 }, + { url = "https://files.pythonhosted.org/packages/ab/ba/970c03a12ce20a5399e22afe9f8932fd4cd1265b8a8461d0e63b00eb4eae/rapidfuzz-3.14.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9669753caef7fdc6529f6adcc5883ed98d65976445d9322e7dbdb6b697feee13", size = 2402441 }, + { url = "https://files.pythonhosted.org/packages/81/93/61d351cae60c1d0e21ba5ff1a1015ad045539ed215da9d6e302204ed887a/rapidfuzz-3.14.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:823b1b9d9230809d8edcc18872770764bfe8ef4357995e16744047c8ccf0e489", size = 2511628 }, + { url = "https://files.pythonhosted.org/packages/87/52/374d2d4f60fd98155142a869323aa221e30868cfa1f15171a0f64070c247/rapidfuzz-3.14.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f0b2af76b7e7060c09e1a0dfa9410eb19369cbe6164509bff2ef94094b54d2b6", size = 4275480 }, + { url = "https://files.pythonhosted.org/packages/d8/04/82e7989bc9ec20a15b720a335c5cb6b0724bf6582013898f90a3280cfccd/rapidfuzz-3.14.5-cp311-cp311-win32.whl", hash = "sha256:c5801a89604c65ab4cc9e91b23bc4076d0ca80efd8c976fb63843d7879a85d7f", size = 1725627 }, + { url = "https://files.pythonhosted.org/packages/b9/b5/eca8ac5609bc9bcb02bb6ff87fa5983cc92b8772d66a431556ab8a8c178f/rapidfuzz-3.14.5-cp311-cp311-win_amd64.whl", hash = "sha256:d7ca16637c0ede8243f84074044bd0b2335a0341421f8227c85756de2d18c819", size = 1545977 }, + { url = "https://files.pythonhosted.org/packages/ca/e1/dbf318de28f65fa2cdd0a9dfbdee380f8199eb83b19259bc4f8592551b4e/rapidfuzz-3.14.5-cp311-cp311-win_arm64.whl", hash = "sha256:8c90cdf8516d9057e502aa6003cea71cf5ec27cc44699ca52412b502a04761bb", size = 816827 }, + { url = "https://files.pythonhosted.org/packages/d3/e3/574435c6aafb80254c191ef40d7aca2cb2bb97a095ec9395e9fa59ac307a/rapidfuzz-3.14.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0d3378f471ef440473a396ce2f8e97ee12f89a78b495540e0a5617bbfe895638", size = 1944601 }, + { url = "https://files.pythonhosted.org/packages/d0/1f/fbad3102a255ecc112ce9a7e779bacab7fd14398217be8868dc9082ba363/rapidfuzz-3.14.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e910eebca9fd0eba245c0555e764597e8a0cccb673a92da2dc2397050725f48", size = 1164293 }, + { url = "https://files.pythonhosted.org/packages/88/37/a3eb7ff6121ed3a5f199a8c38cc86c8e481816f879cb0e0b738b078c9a7e/rapidfuzz-3.14.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:01550fe5f60fd176aa66b7611289d46dc4aa4b1b904874c7b6d1d54e581c5ec1", size = 1371999 }, + { url = "https://files.pythonhosted.org/packages/79/72/97a9728c711c7c1b06e107d3f0623880fb4ef90e147ed13c551a1730e7cc/rapidfuzz-3.14.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:48bee0b91bebfaec41e1081e351000659ab7570cc4598d617aa04d5bf827f9e6", size = 3145715 }, + { url = "https://files.pythonhosted.org/packages/ed/54/d5caabbea233ac90c286c87c260e49d7641467e87438a18d858e41c82e91/rapidfuzz-3.14.5-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:7e580cb04ad849ae9b786fa21383c6b994b6e6c1444ad1cb9f22392759d72741", size = 1456304 }, + { url = "https://files.pythonhosted.org/packages/fc/a7/2d1a81250ac8c01a0100c026018e76f0e7a097ff63e4c553e02a6938c6fb/rapidfuzz-3.14.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:09d6c9ba091854f07817055d795d604179c12a8f308ba4c7d56f3719dfea1646", size = 2389089 }, + { url = "https://files.pythonhosted.org/packages/65/0d/c47c3872203ae88e6506997c0b576ad731f5261daa25d559be09c9756658/rapidfuzz-3.14.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:1e989f86113be66574113b9c7bdf4793f3f863d248e47d911b355e05ca6b6b10", size = 2493404 }, + { url = "https://files.pythonhosted.org/packages/8f/2f/71e0a5a3130792146c8a200a2dd1e52aa16f7c1074012e17f2601eea9a90/rapidfuzz-3.14.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ebd1a18e2e47bc0b292a07e6ed9c3642f8aaa672d12253885f599b50807a4f9", size = 4251709 }, + { url = "https://files.pythonhosted.org/packages/86/45/d39874901abacef325adb5b34ae416817c8486dfb4fb87c7a9b74ec5b072/rapidfuzz-3.14.5-cp312-cp312-win32.whl", hash = "sha256:9981d38a703b86f0e315a3cd229fd1906fe1d91c989ed121fb975b3c849f89f5", size = 1710069 }, + { url = "https://files.pythonhosted.org/packages/85/0b/f65572c53de8a1c704bda707f63a447b67bdbe95d7cdc70d18885e191df5/rapidfuzz-3.14.5-cp312-cp312-win_amd64.whl", hash = "sha256:d8375e3da319593389727c3187ccaf3e0e84199accc530866b8e0f2b79af05e9", size = 1540630 }, + { url = "https://files.pythonhosted.org/packages/5e/c3/143be3a578f989758cae516f3270d5cbb49783a7bfdf57cc27a670e00456/rapidfuzz-3.14.5-cp312-cp312-win_arm64.whl", hash = "sha256:478b59bb018a6780d73f33e38d0b3ec5e968a6c1ed42876b993dd456b7aa20e8", size = 813137 }, + { url = "https://files.pythonhosted.org/packages/11/66/252803f2010ba699618cdc048b6e1f7cc1f433c08b4a9a17579b92ab0142/rapidfuzz-3.14.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebd8fd343bf8492a1e60bcb6dc99f90f74f65d98d8241a6b3e1fed225b76ecd6", size = 1940205 }, + { url = "https://files.pythonhosted.org/packages/ea/59/b2afd98e41af9cd54554a4c1c423d84cdd60e6b1c0a09496f033b55f60ec/rapidfuzz-3.14.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6737b35d5af7479c5bf9710f7b17edd9d2c43128d974d25fb4ea653e42c64609", size = 1159639 }, + { url = "https://files.pythonhosted.org/packages/a3/31/7aa7e62c4c516a7af322ed0c4f0774208b72d457d0cfec808bad0df12f4a/rapidfuzz-3.14.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b002c7994cc9f2bc9d9856f0fbaee6e8072c983873846c92f25cefba5b2a925f", size = 1367194 }, + { url = "https://files.pythonhosted.org/packages/90/79/2fc252a63bc91d3c3b234d0a3a6ad4ebc460037a23cdcdaf9285f986e6c9/rapidfuzz-3.14.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:17a34330cd2a538c1ce5d400b61ba358c5b72c654b928ff87b362e88f8b864c7", size = 3151805 }, + { url = "https://files.pythonhosted.org/packages/17/54/0c83508f2683ea70e2d05f8527eb07328acf7bb1e9d97a3bece5702378e7/rapidfuzz-3.14.5-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:95d937e74c1a7a1287dfb03b62a827be08ede10a155cf1af73bbf47f2b73ee6e", size = 1455667 }, + { url = "https://files.pythonhosted.org/packages/71/1b/070175e873177814d58850a01ebe80e20ae11e93eb4da894d563988660fa/rapidfuzz-3.14.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:46b92a9970dcc34f0096901c792644094cab49554ac3547f35e3aebbdf0a3610", size = 2388246 }, + { url = "https://files.pythonhosted.org/packages/c9/dd/77caf7aaf9c2be050ad1f128d7c24ff0f59079aa62c5f62f9df41c0af45e/rapidfuzz-3.14.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e012177c8e8a8a0754ae0d6027d63042aa5ff036d9f40f07cb3466a6082e21b8", size = 2494333 }, + { url = "https://files.pythonhosted.org/packages/2c/e2/dd7e1f2aa31a8fbbfc16b0610af1d770ffaf1287490f3c8c5b1c52da264f/rapidfuzz-3.14.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a2ae6f53f99c9a0eca7a0afc5b4e45fc73bc1dd4ac74c00509031d76df80ed98", size = 4258579 }, + { url = "https://files.pythonhosted.org/packages/9c/0a/ac99e1ba347ba0e85e0bb60b74231d55fb93c0eff43f2920ccb413d0be08/rapidfuzz-3.14.5-cp313-cp313-win32.whl", hash = "sha256:4a60f0057231188e3bd30216f7b4e0f279b11fa4ec818bb6c1d9f014d1562fbc", size = 1709231 }, + { url = "https://files.pythonhosted.org/packages/cf/cb/0e251d731b3166378644238e8f0cf9e89858c024e19f75ca9f7e3ae83fd5/rapidfuzz-3.14.5-cp313-cp313-win_amd64.whl", hash = "sha256:11bfc2ed8fbe4ab86bd516fadefab126f90e6dcadffa761739fcb304707dfd35", size = 1538519 }, + { url = "https://files.pythonhosted.org/packages/30/6f/4548132acc947db6d5346a248e44a8b3a22d608ef30e770fb578caaf2d00/rapidfuzz-3.14.5-cp313-cp313-win_arm64.whl", hash = "sha256:b486b5218808f6f4dc471b114b1054e63553db69705c97da0271f47bd706aedd", size = 812628 }, + { url = "https://files.pythonhosted.org/packages/00/60/69b177577290c5eab892c6f75fe89c3aff3f9ae80298a78d9372b1cecb9a/rapidfuzz-3.14.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:39ef8658aaf67d51667e7bdaf7096f432333377d8302ac43c70b5df8a4cf89b8", size = 1970231 }, + { url = "https://files.pythonhosted.org/packages/48/38/2fd790052659cc4e2907b63c25433f0987864b445c1aeec1a302ef5ad948/rapidfuzz-3.14.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ad37a0be705b544af6296da8edddc260d10a8ae5462530fc9991f66498bb1f9", size = 1194394 }, + { url = "https://files.pythonhosted.org/packages/80/f4/28430ad8472fc3536e8ebd51a864a226e979cfe924c6e3f83d111373aa74/rapidfuzz-3.14.5-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d45e06f60729e07d9b20c205f7e5cff90b6ef2584e852eecf46e045aea69627d", size = 1377051 }, + { url = "https://files.pythonhosted.org/packages/77/7e/9aeacabcfd1e77397968362e5b98fe14248b8307011136b17daf99752a8e/rapidfuzz-3.14.5-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e52da10236aa6212de71b9e170bace65b64b129c0dea7fc243d6c9ce976f5074", size = 3160565 }, + { url = "https://files.pythonhosted.org/packages/56/f4/db4dd7be0cd2f2022117ac5407d905f435d60e48baaea313a567ad27e865/rapidfuzz-3.14.5-cp313-cp313t-manylinux_2_39_riscv64.whl", hash = "sha256:440d30faaf682ca496170a7f0cc5453ec942e3e079f0fd802c9a7f938dfb50a3", size = 1442113 }, + { url = "https://files.pythonhosted.org/packages/a4/99/0e9f6aa57f3e32a767216f797e56dc96b720fcecfb9d8ee907ecc82f8d66/rapidfuzz-3.14.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:56227a61fd3d17b0cd9793132431f3a3d07c8654be96794ba9f89fe0fc8b2d09", size = 2396618 }, + { url = "https://files.pythonhosted.org/packages/60/94/44a78e39ffce17cbdd3e2b53b696acc751d5d153be0f499d052b07a4d904/rapidfuzz-3.14.5-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:2e83cd2e25bb4edd97b689d9979d9c3acccdaaf26ceac08212ceece202febcfa", size = 2478220 }, + { url = "https://files.pythonhosted.org/packages/dd/df/454311469a09a507e9d784a35796742bec22e4cebe75551e2da4e0e290fd/rapidfuzz-3.14.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:af3b859726cd3374287e405e14b9634563c078c5531a4f62375508addebddad1", size = 4265027 }, + { url = "https://files.pythonhosted.org/packages/fc/01/175465a9ab3e3b70ba669058372f009d1d49c1746e2dcd56b69df188d3a5/rapidfuzz-3.14.5-cp313-cp313t-win32.whl", hash = "sha256:8ce1d850b3c0178440efde9e884d98421b5e87ff925f364d6d79e23910d7593f", size = 1766814 }, + { url = "https://files.pythonhosted.org/packages/1b/a0/a9b84a47af06ebed94a1439eb2f02adebfb8628bcd30af1fe3e02f5ef56c/rapidfuzz-3.14.5-cp313-cp313t-win_amd64.whl", hash = "sha256:c84af70bcf34e99aee894e46a0f1ac77f17d0ef828179c387407642e2466d28a", size = 1582448 }, + { url = "https://files.pythonhosted.org/packages/1e/f1/5937800238b3f8248e70860d79f69ba8f73e764fff47e36bc9e2f26dbcc6/rapidfuzz-3.14.5-cp313-cp313t-win_arm64.whl", hash = "sha256:aac0ad28c686a5e72b81668b906c030ee28050b244544b8af68e12fb32543895", size = 832932 }, + { url = "https://files.pythonhosted.org/packages/81/41/aa3ffb3355e62e1bf91f6599b3092e866bc88487a07c524004943c7676df/rapidfuzz-3.14.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:1a31cc6d7d03e7318a0974c038959c59e19c752b81115f2e9138b3331cd64d45", size = 1943327 }, + { url = "https://files.pythonhosted.org/packages/2d/e1/c2141f1840a41e07ad2db6f724945f8f8ff3065463899a22939152dd6e09/rapidfuzz-3.14.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0298d357e2bc59d572da4db0bc631009b6f8f6c9bc8c11e99a12b833f16b6575", size = 1161755 }, + { url = "https://files.pythonhosted.org/packages/ca/07/66e753eeaa353161d1d331b7dd517bb349b0bacfebe8496d7b26be26f81f/rapidfuzz-3.14.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:59b3dba758661a318995655435c6ab20a04ade79fa51e75bc8dc107cac8df280", size = 1376571 }, + { url = "https://files.pythonhosted.org/packages/c8/85/9535df0b78ba51f478c9ce7eb6d1f85535cc31fe356773b48fd9d3e563ca/rapidfuzz-3.14.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4900143d82071bdda533b00300c40b14b963ff826b3642cc463b6dd0f036585e", size = 3156468 }, + { url = "https://files.pythonhosted.org/packages/81/ee/b667eb93bba6dc4e0de658edd778e1619dc4d6aab68fa5e5c7f075152735/rapidfuzz-3.14.5-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:feedf219672eef83ea6be6f3bb093bba396a8560fc75be85ba225f082903df0a", size = 1458311 }, + { url = "https://files.pythonhosted.org/packages/7d/ce/479074f5624364a48df3403c538797ef22d3ac49c19dc76c3f79fcdcc70c/rapidfuzz-3.14.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:419e4397a36e2665ec992d8d64c20ba4b2a42500c76ecadeca78a4f19cb9cc32", size = 2398228 }, + { url = "https://files.pythonhosted.org/packages/0b/15/a8982f649150fffbdcd6f17565974501f6ab33b2795267bffbd4a7ba905b/rapidfuzz-3.14.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:97131ab2be39043054ee28d99e09efe316e6d53449b7e962dfcf3c2de8b2b246", size = 2497226 }, + { url = "https://files.pythonhosted.org/packages/19/52/5267c03ef6759831b7d4625a0c9c06e87baa2fae084b61ac9c388858317b/rapidfuzz-3.14.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:593c00dac4e30231c35bf3b4f1da8ec0998762e9e94425586a5d636fcd57f9d0", size = 4262283 }, + { url = "https://files.pythonhosted.org/packages/71/c0/2579f343a97f5254c43bb5853baccc01488357dcb64a27bcb869b7888a4a/rapidfuzz-3.14.5-cp314-cp314-win32.whl", hash = "sha256:0084b687b02b4e569b46d8d6d4ad25659528e6081cd6d067ca453a69035f07e4", size = 1744614 }, + { url = "https://files.pythonhosted.org/packages/17/eb/8edfed1e80119dc9c35b11df4bc701eea85622ad681fff0263b6961d3224/rapidfuzz-3.14.5-cp314-cp314-win_amd64.whl", hash = "sha256:5dfa89d78f22cd773054caff44827b846161a29f2dcf7e78b8f90d086621e502", size = 1588971 }, + { url = "https://files.pythonhosted.org/packages/f6/04/5676df93c85cfa57a3045d8047318df9f3cd58c7b8a99340dd95f874795e/rapidfuzz-3.14.5-cp314-cp314-win_arm64.whl", hash = "sha256:67f3f9d2b444268ab53e47d31bab89954888d23c04c6789f2c727e51fe4b1d13", size = 834985 }, + { url = "https://files.pythonhosted.org/packages/f7/0d/4a8988cea658fe335048ddef8c876addff1b6daa3c9ca8ad65a5a2196e69/rapidfuzz-3.14.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:77eac0526899b3c3ad1454bb2b03cdb491d67358ec8ef0c9c48bd61b632b431d", size = 1972517 }, + { url = "https://files.pythonhosted.org/packages/1c/a3/f5cfd9965a9d9a9e32249159797c47b5d6299ea6d1629f9126b25f1c10a3/rapidfuzz-3.14.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b9c6bd754d11f6e78ac54e3d86b4b11dc1ba2f13e5fc958899574532897f5a99", size = 1196056 }, + { url = "https://files.pythonhosted.org/packages/64/07/561c2e40cfd10e6630a7b0ac5a2a813aef50d944bcd1f3d260319d659d5b/rapidfuzz-3.14.5-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:738c96944d076deeaff70e92b65696ab4f7ecb8081d7791c5403a3257dfaf8ff", size = 1374732 }, + { url = "https://files.pythonhosted.org/packages/c2/39/123bb94fee40e2fb3b7c49b80827c7ef42d838e18def3fc2fef5a3cf817a/rapidfuzz-3.14.5-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4c1bca487a17fe4226b4ffb2d30e799d2b274d692cffa76bd0746f56235fca3", size = 3166902 }, + { url = "https://files.pythonhosted.org/packages/75/0a/45716fafc9fd2e028cf20b5ac5bc704887081cd312f84edb0e325599414b/rapidfuzz-3.14.5-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:af6a90a4ed2a48fa1a2d17e9d824e6c7c950bea5bad0b707c77fd55751e6bfef", size = 1452130 }, + { url = "https://files.pythonhosted.org/packages/ca/49/4e96c413114398481c0a5b0086af32c364a18613c9a2ea578d17c4bea4ee/rapidfuzz-3.14.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bf5018938208d4597b2e679a4f8cff9fd252f1df53583130ae56281a21801b64", size = 2396308 }, + { url = "https://files.pythonhosted.org/packages/89/b7/49fea9fc6878d59bd259d01dd1972d9b86117992b1c66d9b16f0a65273c3/rapidfuzz-3.14.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c0919d1f89ddf91129906705723118ea09754171e4116f5a5dbc667c7bc9b261", size = 2488210 }, + { url = "https://files.pythonhosted.org/packages/0c/44/a1f732b93ffacbdad077b7c801149549b2938e1bece6addb5ad85ed74df8/rapidfuzz-3.14.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:93d8da883a35116d6813432177f35e570db5b0a5e30ecb0cbd7cb39c815735df", size = 4270621 }, + { url = "https://files.pythonhosted.org/packages/bb/ce/ff942d19fce5385054650bb71a58495ddda299d94661ccc4e6e7fa44868b/rapidfuzz-3.14.5-cp314-cp314t-win32.whl", hash = "sha256:0f23e37019ec07712d58976b1ab2b889f8649a7f7c2f626a2f34ea9139e79279", size = 1803950 }, + { url = "https://files.pythonhosted.org/packages/5c/0f/9aafc63f9661222b819b391c187eed29fc90ad5935f9690e5ecc2d2047a4/rapidfuzz-3.14.5-cp314-cp314t-win_amd64.whl", hash = "sha256:7d5ca9c7832e6879a707296d1463685f7c243a27846227044504741640caec66", size = 1632357 }, + { url = "https://files.pythonhosted.org/packages/70/a6/51fc1b0e61e3326e1c68a61cfd0c6b3c34c843681c4b1eefbf0596f59162/rapidfuzz-3.14.5-cp314-cp314t-win_arm64.whl", hash = "sha256:3e91dcd2549b8f8d843f98ba03a17e01f3d8b72ce942adbbb6761bc58ffce813", size = 855409 }, + { url = "https://files.pythonhosted.org/packages/d9/ee/e71853bf82846c5c2174b924b71d8e8099fb05ff87c958a720380b434ba3/rapidfuzz-3.14.5-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:578e6051f6d5e6200c259b47a103cf06bb875ab5814d17333fc0b5c290b22f4c", size = 1888603 }, + { url = "https://files.pythonhosted.org/packages/36/82/40f67b730f32be2ebad9f62add1571c754f52249254b2e88af094b907eee/rapidfuzz-3.14.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbf1b8bb2695415b347f3727da1addca2acb82c9b97ac86bebf8b1bead1eb12d", size = 1120599 }, + { url = "https://files.pythonhosted.org/packages/ef/9f/a3635cc4ec8fc6e14b46e7db1f7f8763d8c4bef33dcc124eea2e6cb2c8f3/rapidfuzz-3.14.5-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8f4a8f5cc84c7ad6bffa0e9947b33eb343ad66e6b53e94fe54378a5508c5ed53", size = 1348524 }, + { url = "https://files.pythonhosted.org/packages/cc/1b/2b229520f0b48464cfcd7aa758f74551d12c9bc4ab544022a60210aab064/rapidfuzz-3.14.5-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97c6d85283629646fa87acc22c66b30ea9d4de7f6fdf887daa2e30fa041829b5", size = 3099302 }, + { url = "https://files.pythonhosted.org/packages/aa/b5/363906b1064fc6fe611783a61764927bbd91919aaaabe8cba82151ca93ef/rapidfuzz-3.14.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:dfef96543ced67d9513a422755db422ae1dc34dade0a1485e0b43e7342ed3ebf", size = 1509889 }, +] + +[[package]] +name = "ratelim" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "decorator" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/5a/e1440017bccb14523bb76356e6f3a5468386b8a9192bd901e98babd1a1ea/ratelim-0.1.6.tar.gz", hash = "sha256:826d32177e11f9a12831901c9fda6679fd5bbea3605910820167088f5acbb11d", size = 2793 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/98/7e6d147fd16a10a5f821db6e25f192265d6ecca3d82957a4fdd592cad49c/ratelim-0.1.6-py2.py3-none-any.whl", hash = "sha256:e1a7dd39e6b552b7cc7f52169cd66cdb826a1a30198e355d7016012987c9ad08", size = 4017 }, +] + [[package]] name = "ray" version = "2.45.0" @@ -4040,6 +5806,19 @@ tune = [ { name = "tensorboardx" }, ] +[[package]] +name = "rdflib" +version = "6.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "isodate" }, + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/28/4d1f27c5d73f58e567ca1a14a4eab7d7978a09c4e117687f9f6c216d3366/rdflib-6.3.2.tar.gz", hash = "sha256:72af591ff704f4caacea7ecc0c5a9056b8553e0489dd4f35a9bc52dbd41522e0", size = 4749592 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/92/d7fb1d7fb70c9f7003fa50b7a3880ebcb311cc3f8552b3595e7c8f75aeeb/rdflib-6.3.2-py3-none-any.whl", hash = "sha256:36b4e74a32aa1e4fa7b8719876fb192f19ecd45ff932ea5ebbd2e417a0247e63", size = 528122 }, +] + [[package]] name = "referencing" version = "0.36.2" @@ -4083,6 +5862,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 }, ] +[[package]] +name = "rocrate" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arcp" }, + { name = "click" }, + { name = "jinja2" }, + { name = "python-dateutil" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/58/04321e914bf9ae7593ea10baf9a111cb37551e3c442d0dbdcb52f6121f5a/rocrate-0.15.1.tar.gz", hash = "sha256:4f4cf6eea66559baa9d9b8f10ae06e0611ba13eb3644edc783bdf7dd0072fced", size = 321715 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/c7/3e8a7cdbed5cc7b1295196990f1bdea178ed7e6fc14ef40163e8b61ddca5/rocrate-0.15.1-py3-none-any.whl", hash = "sha256:fc04c1078774259ad8c70779c40acec14d80a8cf310db1e8f51ae65720c153fa", size = 351054 }, +] + [[package]] name = "rpds-py" version = "0.24.0" @@ -4409,6 +6204,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, ] +[[package]] +name = "shortuuid" +version = "1.0.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/e2/bcf761f3bff95856203f9559baf3741c416071dd200c0fc19fad7f078f86/shortuuid-1.0.13.tar.gz", hash = "sha256:3bb9cf07f606260584b1df46399c0b87dd84773e7b25912b7e391e30797c5e72", size = 9662 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/44/21d6bf170bf40b41396480d8d49ad640bca3f2b02139cd52aa1e272830a5/shortuuid-1.0.13-py3-none-any.whl", hash = "sha256:a482a497300b49b4953e15108a7913244e1bb0d41f9d332f5e9925dba33a3c5a", size = 10529 }, +] + [[package]] name = "six" version = "1.17.0" @@ -4418,6 +6222,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] +[[package]] +name = "skops" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "prettytable" }, + { name = "scikit-learn" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/9f/46448c4e41a4c5ee4bdb74b3758af48e5ff0faeffe40f4e301bfc7594894/skops-0.14.0.tar.gz", hash = "sha256:6c8c0e047f691a3a582c3258943eecafcbfd79c8c7eef66260f3703e363254f0", size = 608084 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/0e/3ae19fa941522cd98e119762e7181d371c8dba0b2d72bfaf9522692e329c/skops-0.14.0-py3-none-any.whl", hash = "sha256:60a5db78a9db46ccee2139a0ba13ab5afb1c96f4749b382e75a371291bbe3e36", size = 132198 }, +] + [[package]] name = "smart-open" version = "7.1.0" @@ -4685,7 +6505,8 @@ name = "starlette" version = "0.46.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "anyio" }, + { name = "anyio", version = "4.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "anyio", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846 } wheels = [ @@ -4962,22 +6783,46 @@ name = "torch" version = "2.6.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] dependencies = [ { name = "filelock", marker = "platform_system == 'Darwin' and sys_platform != 'linux' and sys_platform != 'win32'" }, @@ -5012,16 +6857,33 @@ name = "torch" version = "2.6.0+cu126" source = { registry = "https://download.pytorch.org/whl/cu126" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and sys_platform == 'linux'", @@ -5029,33 +6891,82 @@ resolution-markers = [ "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.11' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] dependencies = [ { name = "filelock", marker = "platform_system != 'Darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, @@ -5067,20 +6978,20 @@ dependencies = [ { name = "typing-extensions", marker = "platform_system != 'Darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, ] wheels = [ - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp310-cp310-linux_aarch64.whl", hash = "sha256:48775b8544e6705aa72256117f33c5f0c3c1ab51cb7abef1989dcfc3cf2e6500" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c55280b4da58e565d8a25e0e844dc27d0c96aaada7b90b4de70a45397faf604e" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp310-cp310-win_amd64.whl", hash = "sha256:eda7768f0a2ad9da3513abf60ff5c13049e7e2ec74ed4cfcd4736a8523ab1f89" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp311-cp311-linux_aarch64.whl", hash = "sha256:d4809b188f5c9b9753f7578085b79ae1f5d9c36a3fffc122e83e446ecf251325" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cd3b15819315bd44d34e6fa56a8f6f64192608de17da112ec0cd6cd5fc1781f3" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp311-cp311-win_amd64.whl", hash = "sha256:5ddca43b81c64df8ce0c59260566e648ee46b2622ab6a718e38dea3c0ca059a1" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp312-cp312-linux_aarch64.whl", hash = "sha256:993e0e99c472df1d2746c3233ef8e88d992904fe75b8996a2c15439c43ff46c4" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6bc5b9126daa3ac1e4d920b731da9f9503ff1f56204796de124e080f5cc3570e" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp312-cp312-win_amd64.whl", hash = "sha256:b10c39c83e5d1afd639b5c9f5683b351e97e41390a93f59c59187004a9949924" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313-linux_aarch64.whl", hash = "sha256:e7913d9dcca60d352b296adf566ae9bb84c9e4d27414cf070b78a84c0a0ceb20" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:2356c759696f4e296a7a08e8146c6381ccf2da40990fe400264b189a8a6c4bab" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313-win_amd64.whl", hash = "sha256:a1ce724eb9813fcd05b99cb8b652b2d02f447caba65f1469abd7d50af5e5323f" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313t-linux_aarch64.whl", hash = "sha256:e38a2564b15fba3fd8cb24d03d165b86a80fe3681b7207be5e500b100e19893c" }, - { url = "https://download.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:90d9c64ab8961595e05d4816e7190f38d8a1cd9931909a669da7bc398b9bc26b" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp310-cp310-linux_aarch64.whl", hash = "sha256:48775b8544e6705aa72256117f33c5f0c3c1ab51cb7abef1989dcfc3cf2e6500" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c55280b4da58e565d8a25e0e844dc27d0c96aaada7b90b4de70a45397faf604e" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp310-cp310-win_amd64.whl", hash = "sha256:eda7768f0a2ad9da3513abf60ff5c13049e7e2ec74ed4cfcd4736a8523ab1f89" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp311-cp311-linux_aarch64.whl", hash = "sha256:d4809b188f5c9b9753f7578085b79ae1f5d9c36a3fffc122e83e446ecf251325" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cd3b15819315bd44d34e6fa56a8f6f64192608de17da112ec0cd6cd5fc1781f3" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp311-cp311-win_amd64.whl", hash = "sha256:5ddca43b81c64df8ce0c59260566e648ee46b2622ab6a718e38dea3c0ca059a1" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp312-cp312-linux_aarch64.whl", hash = "sha256:993e0e99c472df1d2746c3233ef8e88d992904fe75b8996a2c15439c43ff46c4" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6bc5b9126daa3ac1e4d920b731da9f9503ff1f56204796de124e080f5cc3570e" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp312-cp312-win_amd64.whl", hash = "sha256:b10c39c83e5d1afd639b5c9f5683b351e97e41390a93f59c59187004a9949924" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313-linux_aarch64.whl", hash = "sha256:e7913d9dcca60d352b296adf566ae9bb84c9e4d27414cf070b78a84c0a0ceb20" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:2356c759696f4e296a7a08e8146c6381ccf2da40990fe400264b189a8a6c4bab" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313-win_amd64.whl", hash = "sha256:a1ce724eb9813fcd05b99cb8b652b2d02f447caba65f1469abd7d50af5e5323f" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313t-linux_aarch64.whl", hash = "sha256:e38a2564b15fba3fd8cb24d03d165b86a80fe3681b7207be5e500b100e19893c" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.6.0%2Bcu126-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:90d9c64ab8961595e05d4816e7190f38d8a1cd9931909a669da7bc398b9bc26b" }, ] [[package]] @@ -5093,9 +7004,9 @@ dependencies = [ { name = "scipy" }, { name = "torch", version = "2.6.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_system == 'Darwin' and sys_platform != 'linux' and sys_platform != 'win32'" }, { name = "torch", version = "2.6.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, - { name = "torchvision", version = "0.21.0", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, + { name = "torchvision", version = "0.21.0", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'win32') or (platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, { name = "torchvision", version = "0.21.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_system == 'Darwin' and sys_platform != 'linux' and sys_platform != 'win32'" }, - { name = "torchvision", version = "0.21.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_system != 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, + { name = "torchvision", version = "0.21.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/dd/72/687a54bab9a11e351cff3859ece48fb58e13786a493eb13a5da32b42de32/torch_fidelity-0.3.0.tar.gz", hash = "sha256:3d3e33db98919759cc4f3f24cb27e1e74bdc7c905d90a780630e4e1c18492b66", size = 31797 } @@ -5165,41 +7076,92 @@ name = "torchvision" version = "0.21.0" source = { registry = "https://download.pytorch.org/whl/cu126" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and sys_platform == 'linux'", "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.11' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] dependencies = [ - { name = "numpy", marker = "(platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, - { name = "pillow", marker = "(platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, - { name = "torch", version = "2.6.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, + { name = "numpy", marker = "(platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'win32') or (platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, + { name = "pillow", marker = "(platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'win32') or (platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, + { name = "torch", version = "2.6.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'win32') or (platform_system != 'Darwin' and sys_platform == 'darwin') or sys_platform == 'linux'" }, ] wheels = [ - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0-cp310-cp310-linux_aarch64.whl", hash = "sha256:00bc8b6d69644cee178f26af11d7e9491127cf59df15f05a12039a5262c3e005" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0-cp311-cp311-linux_aarch64.whl", hash = "sha256:566acc43a744acabb60d50fa82e4052dd40d19d99b8b7b7aa736f86279089b8b" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0-cp312-cp312-linux_aarch64.whl", hash = "sha256:2ca42d8ccabd3da378f021131813718aab170f302e988a52b24dfeec25a80ef0" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0-cp313-cp313-linux_aarch64.whl", hash = "sha256:ca6f1834818f369a251dc06bd3c2b524ad0788597f2246596197b6c204cae8d1" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0-cp310-cp310-linux_aarch64.whl", hash = "sha256:00bc8b6d69644cee178f26af11d7e9491127cf59df15f05a12039a5262c3e005" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0-cp311-cp311-linux_aarch64.whl", hash = "sha256:566acc43a744acabb60d50fa82e4052dd40d19d99b8b7b7aa736f86279089b8b" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0-cp312-cp312-linux_aarch64.whl", hash = "sha256:2ca42d8ccabd3da378f021131813718aab170f302e988a52b24dfeec25a80ef0" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0-cp313-cp313-linux_aarch64.whl", hash = "sha256:ca6f1834818f369a251dc06bd3c2b524ad0788597f2246596197b6c204cae8d1" }, ] [[package]] @@ -5207,22 +7169,46 @@ name = "torchvision" version = "0.21.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] dependencies = [ { name = "numpy", marker = "platform_system == 'Darwin' and sys_platform != 'linux' and sys_platform != 'win32'" }, @@ -5257,57 +7243,56 @@ name = "torchvision" version = "0.21.0+cu126" source = { registry = "https://download.pytorch.org/whl/cu126" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.11' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", - "python_full_version >= '3.13' and platform_system != 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version >= '3.13' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", - "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", ] dependencies = [ - { name = "numpy", marker = "(platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_system != 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, - { name = "pillow", marker = "(platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_system != 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, - { name = "torch", version = "2.6.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_system != 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, + { name = "numpy", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, + { name = "pillow", marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, + { name = "torch", version = "2.6.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, ] wheels = [ - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp310-cp310-linux_x86_64.whl", hash = "sha256:db4369a89b866b319c8dd73931c3e5f314aa535f7035ae2336ce9a26d7ace15a" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp310-cp310-win_amd64.whl", hash = "sha256:d6b23af252e8f4fc923d57efeab5aad7a33b6e15a72a119d576aa48ec1e0d924" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp311-cp311-linux_x86_64.whl", hash = "sha256:bce6bff7ad759a4c924214af08c04a6c1f6f2d2901031bfcf67fcbaa79c08432" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp311-cp311-win_amd64.whl", hash = "sha256:ddbf4516fbb7624ac42934b877dcf6a3b295d9914ab89643b55dedb9c9773ce4" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp312-cp312-linux_x86_64.whl", hash = "sha256:ec1887ed3c842aa48308ea00f1442c683f7d351fb14e94b76c2072678d06ac92" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp312-cp312-win_amd64.whl", hash = "sha256:600c18579cd6eae8f6bbfcc43a088bc512bfde1fa4de0587a4db1d44eaf411f9" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp313-cp313-linux_x86_64.whl", hash = "sha256:ed7912ed64c110792401273ee8a9dda81fc2ef53a66a3f7b25238bc52900a987" }, - { url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp313-cp313-win_amd64.whl", hash = "sha256:1112ebe400eca7af30060909ceec422708b2bb5ce470489c5ffb5cf93664779b" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp310-cp310-linux_x86_64.whl", hash = "sha256:db4369a89b866b319c8dd73931c3e5f314aa535f7035ae2336ce9a26d7ace15a" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp310-cp310-win_amd64.whl", hash = "sha256:d6b23af252e8f4fc923d57efeab5aad7a33b6e15a72a119d576aa48ec1e0d924" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp311-cp311-linux_x86_64.whl", hash = "sha256:bce6bff7ad759a4c924214af08c04a6c1f6f2d2901031bfcf67fcbaa79c08432" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp311-cp311-win_amd64.whl", hash = "sha256:ddbf4516fbb7624ac42934b877dcf6a3b295d9914ab89643b55dedb9c9773ce4" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp312-cp312-linux_x86_64.whl", hash = "sha256:ec1887ed3c842aa48308ea00f1442c683f7d351fb14e94b76c2072678d06ac92" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp312-cp312-win_amd64.whl", hash = "sha256:600c18579cd6eae8f6bbfcc43a088bc512bfde1fa4de0587a4db1d44eaf411f9" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp313-cp313-linux_x86_64.whl", hash = "sha256:ed7912ed64c110792401273ee8a9dda81fc2ef53a66a3f7b25238bc52900a987" }, + { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp313-cp313-win_amd64.whl", hash = "sha256:1112ebe400eca7af30060909ceec422708b2bb5ce470489c5ffb5cf93664779b" }, ] [[package]] @@ -5333,7 +7318,7 @@ name = "tqdm" version = "4.67.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "(platform_machine != 'x86_64' and platform_system == 'Windows' and sys_platform == 'darwin') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "colorama", marker = "platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } wheels = [ @@ -5497,11 +7482,11 @@ wheels = [ [[package]] name = "wcwidth" -version = "0.2.13" +version = "0.8.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +sdist = { url = "https://files.pythonhosted.org/packages/34/74/c6428f875774288bec1396f5bfcbc2d925700a4dad61727fd5f2b12f249d/wcwidth-0.8.2.tar.gz", hash = "sha256:91fbef97204b96a3d4d421609b80340b760cf33e26da123ff243d76b1fda8dda", size = 1466253 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, + { url = "https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl", hash = "sha256:d63947694a0539a1d51e01eda7caf800c291020e6cdd7e28ad7b14dd33ad4f85", size = 323166 }, ] [[package]] @@ -5513,6 +7498,351 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, ] +[[package]] +name = "websockets" +version = "16.1.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +sdist = { url = "https://files.pythonhosted.org/packages/21/f7/bc3a25c5ec26ce62ce487690becc2f3710bbc7b33338f005ad390db0b986/websockets-16.1.1.tar.gz", hash = "sha256:db234eda965dcce15df96bb9709f587cd87d4d52aaf0e80e2f34ec04c7670c57", size = 182204 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/e7/d1671fb984f9dd844e1da5288070c7c23c9eaba3082d3871aae19c3ab8b9/websockets-16.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:49ae99bdfcae803a885c926bf14f886196e84925395bb3f568fef5c0f0979d7d", size = 179570 }, + { url = "https://files.pythonhosted.org/packages/99/f5/70df723bf571f5e0b1b845e0a4ff1c966eeb84f667599fc251caa37d15a3/websockets-16.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5bfd1ac19b1b9986a9c95a82d5e23a391ebb09e12c34d7be6094b86efcc35731", size = 177252 }, + { url = "https://files.pythonhosted.org/packages/90/72/2f14b2e167170b8bf1c8bb7f9b0d78000f470d41a2085a91f33e3917b6c9/websockets-16.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9246a0d063cfcbcc85f2359dd6876d681213f4790832272aa16641b4ed5d64d4", size = 177530 }, + { url = "https://files.pythonhosted.org/packages/f3/18/a17e2f0cde02dc10154c808deed7e1d8528afff93612f70d3f0a5b19b011/websockets-16.1.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1214e673c404684b9bf7154f5cf43b45025b1a6160fac3a9e438e9c1a97e22cb", size = 186038 }, + { url = "https://files.pythonhosted.org/packages/d5/b0/41de283899cf5929d637b72a508cdbc9aa40dc0f317c6b77613fd1000488/websockets-16.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90001d893bc368e302ef168d82130b4e4fdd27b85fa094682df9b667c2d48838", size = 187278 }, + { url = "https://files.pythonhosted.org/packages/50/61/874aab5257e027f9f61b5004cec65e592babca7942b1bc09f38e72b7f1fd/websockets-16.1.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:130937b167a52af203c8d58e78d67705874e82759862e3b9671a452fec4abc87", size = 189936 }, + { url = "https://files.pythonhosted.org/packages/a6/1a/42173913ac5519607220849ed417c864d77384e4119f06dbba964a50f096/websockets-16.1.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c9f23004a3d40e89c01a7955d186a6cc83418d93b749701944ce2de3e95a1f3", size = 187796 }, + { url = "https://files.pythonhosted.org/packages/1b/f4/37c1840bd89b529479aec41470b97b7c683b107ca90b6399ac5afb99dedf/websockets-16.1.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f55f0b01956a094c8587146d9558c91937e78789c333860ffaf35931a6e5dbc4", size = 186481 }, + { url = "https://files.pythonhosted.org/packages/9e/70/652d9b964adcfbeb056f42e0ca6bece34d108fe75534e74df20643cae199/websockets-16.1.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6aaface73b9c71974c6497366d8b9628357f6c9749e09c4ea3610176c63f2ae3", size = 184351 }, + { url = "https://files.pythonhosted.org/packages/13/f1/af3850e5d48d482921985be72ebcb169c6180b3a77b57bd612deebcee23b/websockets-16.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dc0fad4933f427acd5b1cec210f3ea6dce7089e1724e4b9ec6ef47c6c04d1b3b", size = 186791 }, + { url = "https://files.pythonhosted.org/packages/1d/40/1a4e3ed4969ec378dcad337e5f1472c5e292cb3e733bc392f0dc2e230abd/websockets-16.1.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f2769a0344a09e9ccf5b3cce538bc75a51b53eff3275d3896310c8552049195d", size = 185413 }, + { url = "https://files.pythonhosted.org/packages/aa/3e/4e3fa1afe8f1a6a780434cd9ba8eb422632b044eff3dd73f6af67523c147/websockets-16.1.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f70541f3104339f59f830522d94ebadb1bf47426287381623443d8bb1cdbf33d", size = 187178 }, + { url = "https://files.pythonhosted.org/packages/71/ab/dd742766aa5dda7f349be0de49e4d565b84cf6f7f7fa02e07692f0f2bdd9/websockets-16.1.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:dc385593a42e31cd6fb60c19f0ecb015b386603818fc2c6c274fb42bd2bb4165", size = 185051 }, + { url = "https://files.pythonhosted.org/packages/ae/f5/76438c6560f416f1c0a7f587679fb97cc6e99ed336011d43ce2002dd27c1/websockets-16.1.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:387e8e4aa5df2f90b198fa3cad3478822a89cf905b6a6d6c97dc3664689640cc", size = 185846 }, + { url = "https://files.pythonhosted.org/packages/62/12/5c0320f2127823d27b2d56d611d31b0b284ad4edcb41364d66bf4c92b537/websockets-16.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fd46fff7eb62c24804d234f0051c7a8ea81285ad63e0337d3dcf33ca82aee58a", size = 186066 }, + { url = "https://files.pythonhosted.org/packages/a2/97/875986b857b955c3f9dd192cb8a1af81254dfb2ea22cc9590f0a1e020b8b/websockets-16.1.1-cp310-cp310-win32.whl", hash = "sha256:7883388947767080f094950b342b30d35a2a06b849cd967c422fa0db72b40ea9", size = 179940 }, + { url = "https://files.pythonhosted.org/packages/54/82/1013a5fe7ddae8e102bc3b4b39db81d8d28fd02100a324ce6ede8cd832b1/websockets-16.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d57685547e0060cc6fd90ee6a28405d6bd395e525545f13c8d7cd99c78afd79f", size = 180239 }, + { url = "https://files.pythonhosted.org/packages/2b/03/47debfe28e9d6d354be5d777b67fd44c359b9eb299a5d103500bd7cc3e37/websockets-16.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d0fcf657e9f13ff4b177960ab2200237b12994232dfb6df16f1cfe1d4339f93c", size = 179566 }, + { url = "https://files.pythonhosted.org/packages/72/93/31efa1ed78c17e5cfc229fd449e3966e1b9cc15753204cd585cc8dd01f4a/websockets-16.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b852788aa51764e2d8e4cf5493d559326bcae5e38d16ba25ffa322b034df272a", size = 177250 }, + { url = "https://files.pythonhosted.org/packages/01/4a/542378ab3972b0c1cf1df3df3eff9591cea0d30c58c3aa3c4ddbc244e787/websockets-16.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1427fb4cf0d72f66333e2cacc3ff5f575bf2d7008166ce991a4a470b21d51a22", size = 177528 }, + { url = "https://files.pythonhosted.org/packages/33/d9/162321f63c7eed558e9e1798ed7a1e34a4f6dab51f35419e4ed7a4907979/websockets-16.1.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:da4ca1a9d72f9030b3146b8d7022719a9f3d478f61efe6f7dd51d243f61c51b2", size = 186859 }, + { url = "https://files.pythonhosted.org/packages/de/09/87df740f7430ce564bd52402e9c9458d4d0459cc7d2ee29e530c8204851b/websockets-16.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:86d7f0f8bdb25d2c632b72527325e4776430fd5bc61b9118de4e2b8ddb5f5b01", size = 188095 }, + { url = "https://files.pythonhosted.org/packages/d2/12/3d2703af7cc095f3c81904c92208cc1ae79affbc67376944b50ee9301f73/websockets-16.1.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7dfcad78ea1492ee3a9ec765cb7f51bbc17d477107aaf6b22abf7b2558d1c5a0", size = 191385 }, + { url = "https://files.pythonhosted.org/packages/1d/69/986aa0234a964a00f5149cfc46e136e96c8faad1c783474550f40d31aef4/websockets-16.1.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fb9a0a6dc3d1b3986cb88091b6899f0396651e0f74e2c9766ab8d6ffc3842e29", size = 188653 }, + { url = "https://files.pythonhosted.org/packages/35/6b/10f9d03e3970a69ba67bd3b46b87a929b586d0300fadbfe14f57c1f85490/websockets-16.1.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29dfa8114c4a620c69591c5973860f768eac29d3fd6904f37f34266cb219c512", size = 187426 }, + { url = "https://files.pythonhosted.org/packages/56/db/bb3aad62bf63d8bb3f0634b2eabffcfb3677a34bd19492110ff6869cf703/websockets-16.1.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6ff9417c0ada4d0f7d212f928303e5579bdf3ace4c802fa4afabb30995da58c3", size = 184882 }, + { url = "https://files.pythonhosted.org/packages/6c/4c/c09a2ea9bfbeccce52fdc383e5f28af4bc8843338aabac28c81489af6120/websockets-16.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fe0b50da2d84535fb4f7b4bfa951280f97ce3d558a0443b541166d609e67b57", size = 187584 }, + { url = "https://files.pythonhosted.org/packages/c7/8b/31bb4eb4d9eaacf1fdd39d115772a8aeaedfc19b5dc262e57ffbc8a9d42c/websockets-16.1.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:34420aaa64440ebd51ac72ca8a45ef4626429438c9b02e633ae412ed43f925d3", size = 186174 }, + { url = "https://files.pythonhosted.org/packages/2f/e4/dc02d725610a1ad49e193ef91a548194d71bdc6cdf27da83067dd1f73995/websockets-16.1.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a6a61aff018180c9c50b7b0da33bfd29d378af3497429c95006c589a23a11648", size = 187986 }, + { url = "https://files.pythonhosted.org/packages/e0/73/30ed84c8bfd14c73d4af29d5ed9323c3073b48e0b7b23b67070f4e7fd59b/websockets-16.1.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:04fd29a0e2fe9414a95b00e92c67ae51bf900c50c0f8a4b2dafdad621f49ea1d", size = 185565 }, + { url = "https://files.pythonhosted.org/packages/7d/d3/4be8d4959f51e31b4f8fc0ece12b45bd3b6c0d15ea23b9990d9c11fc805f/websockets-16.1.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5c31aa7e39ee3e8a358573257f1c0bb5c52430d1b637030dd9c8cc2c282926be", size = 186598 }, + { url = "https://files.pythonhosted.org/packages/26/fa/abb38597a52d84ed9cfacadc7a0c6f2db282c0ab23cdf72b58a666a21227/websockets-16.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d14bfb217eb4701e850f1525c9d29d79c44794cdf1c299ead25f39f8c78dea81", size = 186834 }, + { url = "https://files.pythonhosted.org/packages/59/80/1119ad08a228b90c4eb77fbe48df7836731a605f5f881ba701ca826a4a65/websockets-16.1.1-cp311-cp311-win32.whl", hash = "sha256:2e28e602bb13da44fbe518c1781a88e3b9d4c3d48d02c9bad83e546164336f57", size = 179940 }, + { url = "https://files.pythonhosted.org/packages/71/b2/e511c1c6f64a95c2f3fc54bffda0e14eaa7e9442be605c29270f7589b918/websockets-16.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:7421fad442de870a8cbf2287d1cad7e706ece0dbfeba5e911df132cbdc1cb56a", size = 180239 }, + { url = "https://files.pythonhosted.org/packages/17/9d/681cda21c9eee743203a6cb79b9d3d05adad9aa60ec660c6c9bf4dd619ca/websockets-16.1.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:cc97814dfb786a83b6e2dc2e79351e1b83e6d715647d6887fcabd83026417a00", size = 179600 }, + { url = "https://files.pythonhosted.org/packages/fb/8d/6195a88b45e8d2a8f745fc2046e36f885a3c9763e6767d2c46229bf9510c/websockets-16.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e047dc87ef7ca50f4d309bf775ad4a71711c58556d75d7bd0604b2317f43e94b", size = 177272 }, + { url = "https://files.pythonhosted.org/packages/73/e3/fe2d498c64dea0095c9a9f9a351af4cd6eef31b618395582bc1f38ba45ff/websockets-16.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:01fbdcbac298efe19360b94bc0039c8f746f0220ba570f327577bfee81059175", size = 177542 }, + { url = "https://files.pythonhosted.org/packages/fe/ed/f1831681fce0e3242346e5458486003c5f124ed69e5e0b847fd029db4973/websockets-16.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0f62863e8a00a6d33c3d6566ec0b89f23787b747ffe0c3bc71ec0e76b82c94b1", size = 187137 }, + { url = "https://files.pythonhosted.org/packages/6f/79/4ff9dcc1bb46f6b4c536936dde1fd60f9b564f3304307274db97f4c9496d/websockets-16.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8087e82f842609734c9b5a1330464f8e94e346ba0e18c832c08bafa4b0d63c15", size = 188374 }, + { url = "https://files.pythonhosted.org/packages/62/c3/5c49b6efb36cab733d23773f6de575e1dba65736ead17d5d2b2a1daef779/websockets-16.1.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2bb5d041a8307d2e18782e7ce777f6fdb1e8c2f5d09291484b18c294b789d9aa", size = 191155 }, + { url = "https://files.pythonhosted.org/packages/6e/f6/56ccceda3a4838d18f1d40821480da4775397e8b1eecf4031e20c50e2e90/websockets-16.1.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1db4de4a0e95673f7545d393c49eeb0c2f18ac1ef93073218c79d5cdb2ee75ab", size = 189011 }, + { url = "https://files.pythonhosted.org/packages/86/d6/ad5286241a2bce1107e2798d3bfbd62cf79aee167bdb654f8cb1e9dbf949/websockets-16.1.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f17dbe07eb3ea7f99e4df9b7e0efefe80fbf30d37a8cc4d561a0aed310bc8847", size = 187766 }, + { url = "https://files.pythonhosted.org/packages/bc/67/d65c970b7e347fdca69479beb7811c2060529956730a7a4e3ae7c66b0e31/websockets-16.1.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4b57693728576d84ede0a77987ab16881b783d2cd9f1dc180a8fbbc3f79c4428", size = 185173 }, + { url = "https://files.pythonhosted.org/packages/1d/5b/14af3cd4ee69d8ea9baca58f3dc3cfb1ba78332a347fd478cb096549d60e/websockets-16.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2a636ff1e7a5c4edf71ef0e79adae7f25dba93b4fcbe3dc958733477ffeb0eaf", size = 187809 }, + { url = "https://files.pythonhosted.org/packages/7b/11/be301710d70de97e3e7b3586e6d492c9c06d6a61bf1c2202c36cf0c75607/websockets-16.1.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d6bec75c290fe484a8ba4cacdf838501e17c06ecfbbf31eede81a9e431bd7751", size = 186412 }, + { url = "https://files.pythonhosted.org/packages/db/07/fe1435bf6fe738a3d3b54dbe0c18dabf12cba4d909ac8b58b539ce27c1f4/websockets-16.1.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:54509b8e92fee4453e152b7558ddef37ce9705a044922f2095a6105e3f80c96f", size = 188290 }, + { url = "https://files.pythonhosted.org/packages/8a/0a/81f394aff8efcbb01208c1ced77df0a3c7fcce584a88c7273663697946c2/websockets-16.1.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:f0aa4aad3b1b69ad3fd85a0fd0952ec64331c762bd77ec51cc814170873890b2", size = 185844 }, + { url = "https://files.pythonhosted.org/packages/39/5c/dd485b995473f415510251fe9bd708f2d24458f439fce958daf8d66dc7c6/websockets-16.1.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:42290eb6db4ccaca7012656738214f8514082fb6fa40cdeb61bb9a471b52e383", size = 186823 }, + { url = "https://files.pythonhosted.org/packages/9d/0b/f78de76ff446f1e66af12b43c48a35f31744de93cfdec2f4ea67d5d7bbf1/websockets-16.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:53260c8930da5771cec89439bff99c20c8cb03ddb9588b980697355a83cd4bd3", size = 187102 }, + { url = "https://files.pythonhosted.org/packages/37/a1/4cf892007778eaf84ad162bfc98046e0ed89b63ac55949e3236626b2a23f/websockets-16.1.1-cp312-cp312-win32.whl", hash = "sha256:1d27fa8462ad6a1cb36206a3d0640b2333340def181fae11ed7f9adeaa5c0747", size = 179943 }, + { url = "https://files.pythonhosted.org/packages/d9/de/6abe251d28c3a3f217096575400b27750b18e0b1d2fff3a2a239960fea07/websockets-16.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:b436f6ec4fc3a6b4237c84d3f83170ed2b40bb584222f0ac47a0c8a5921980c7", size = 180243 }, + { url = "https://files.pythonhosted.org/packages/ce/fd/6ec6c6d2850aea25b1b2aa9901a016980bb87d01e89b3eb00470b1b5d471/websockets-16.1.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ab59169ace05dcb49a1d4118f0bde139557adf45091bd85747e36bf5de984dd1", size = 179587 }, + { url = "https://files.pythonhosted.org/packages/5f/d8/1d299d2dd34087db39831a34cc645ef8a6f89d78efada6983093513cd81c/websockets-16.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5e3b7d601f6f84156b08cc4a5e541c2b50ad7b36cfc302b657a12477c904a5df", size = 177272 }, + { url = "https://files.pythonhosted.org/packages/3d/86/0a70d3ae2f0f2256bb41302d9804dbca65d4360281e7feb3e1f94102ac46/websockets-16.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cd2ca96a082a36964aca83e992f72abeb61b7306c1a6cba4c7d06a7b93750cac", size = 177530 }, + { url = "https://files.pythonhosted.org/packages/b5/c2/c676c69444d9db448b3f0a55a98dcc534affce0bce961d9d2f0b8499b10a/websockets-16.1.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f5d497865f05bb222cab7016c6034542e84e5f29f49c6fd3f4939cda7197b5b8", size = 187197 }, + { url = "https://files.pythonhosted.org/packages/0b/13/88137fbaf726ebe29d62c1117fa11fa2bbb6209dc79d4ad738efbe36a2aa/websockets-16.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bae954c382e013d5ea5b190d2830526bfa45ad121c326da0049b8c769f185db6", size = 188433 }, + { url = "https://files.pythonhosted.org/packages/01/6d/46c2f2ce6751cb26f39293e1ecbf8544cb01321397cd476c2756b98c216d/websockets-16.1.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e09f753a169951eb4f28c2c774f71069304f66e7277e0f5a2892423599cfa854", size = 189868 }, + { url = "https://files.pythonhosted.org/packages/29/2b/170a9e8097636cfde4dc3c592b6e00b18a44a2f5407606d96ca542dd5838/websockets-16.1.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:024193f8551a2b0eafbdd160911012c4e6c228c28430c84433253299a9e42d6a", size = 189059 }, + { url = "https://files.pythonhosted.org/packages/a7/48/f0d4ebc9ab4b473b8861b9e20fdb663d515d42f7befdf62cdb60fee7a1ec/websockets-16.1.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:aabe464bfd13bd25f4821faf111da6fefdc389f870265a53105580e45b0a2e49", size = 187814 }, + { url = "https://files.pythonhosted.org/packages/d5/ba/39a41d3ae8e72696a9492581900611c5a91e2b07563b0bcd2523adea9854/websockets-16.1.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a28fcbc9b6baf54a2e23f8655f308e4ccc6afdd7266f8fe7954f320dcda0f785", size = 185229 }, + { url = "https://files.pythonhosted.org/packages/3c/36/ac15b604f850d1907f0a85ed721cefe47cd45034b3620069b829746cccbe/websockets-16.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:79eace538c6a97e96d0d03d4f9d314f9677f5ed85a8a984992ffd90b13cb8a56", size = 187874 }, + { url = "https://files.pythonhosted.org/packages/a8/f3/3fbd5d71d59299c3770faa5884d4f45070236ca5a35ab3a61830812c409a/websockets-16.1.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:496af849a472b531f758dbd4d61338f5000538cb1a7b3d20d9d32a264517f509", size = 186469 }, + { url = "https://files.pythonhosted.org/packages/b4/fc/dd90349bba58af2a53ef2ddd9c32716c81eb6d59a0687939fff561860878/websockets-16.1.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5283810d2646741a0d8da2aa733d6aefa0545809afccb2a5d105a26bc45125f1", size = 188347 }, + { url = "https://files.pythonhosted.org/packages/4c/f3/f73ba86427682da59b78c11d77ba56d5b801c32e84afe79b274bbd6a9bb2/websockets-16.1.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:4e3b680b1e0a27457e727a0d572fd81dffa87b6dbf8b228ab57da64f7d85aead", size = 185903 }, + { url = "https://files.pythonhosted.org/packages/34/7c/f95eb20e80104173b3a0a092291f89ea4047ef6e608e0a57ca06eb14eecb/websockets-16.1.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:69159730a823dde3ea8d08783e8d47ef135a6d7e8d44eb127e32b321c9db8e3e", size = 186855 }, + { url = "https://files.pythonhosted.org/packages/b0/35/dd875b3e050ff232d60fa377707f890e369f74d134f1be32e8f68879747c/websockets-16.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ed5bb271084b46530ee2ddc0410537a9961152c5ccba2fc98c5276d992ccba87", size = 187140 }, + { url = "https://files.pythonhosted.org/packages/e8/dc/5cbfcb41824502f6af93b8f3943a4d06c67c23c7d2e31eb18748c4a5b2a7/websockets-16.1.1-cp313-cp313-win32.whl", hash = "sha256:cfb70b4eb56cac4da0a83588f3ad50d46beb0690391082f3d4e2d488c70b68ea", size = 179928 }, + { url = "https://files.pythonhosted.org/packages/b0/c1/71e5deb5b7f8f226997ab64908c184ac3105c0155ce2d486f318e5dd08a8/websockets-16.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:d9531d9cbeac99af6f038fb1bc351403531f7d634a2c2e10e2f7c854c6ed5b68", size = 180242 }, + { url = "https://files.pythonhosted.org/packages/73/a2/ba78a164eeea4620df4a4df4bd2ed6017438c4655cc0f36f2c0bc0432355/websockets-16.1.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:443aefe96b7fdb132e2a70806cca1f2af49bb3f28e47abcd7c2e9dcf4d8fa1b8", size = 179635 }, + { url = "https://files.pythonhosted.org/packages/b9/08/d26d7a7628cd4ac34cbbdb63ac80914ca842ed8e42938c40a53567806df3/websockets-16.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6456ff333092d509127d75a638cb411afae8ff17f092635015d1902efec8a293", size = 177320 }, + { url = "https://files.pythonhosted.org/packages/0f/45/ebec83e6269536aa5932533c67b0af5c781f3e73fdbcd68672dcf43f4f44/websockets-16.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fce6c48559c86d1ac3632ccb1bebc7d5442fbe79bd9bb0e40379ee54be2a4051", size = 177544 }, + { url = "https://files.pythonhosted.org/packages/c9/d5/abc614d2297f6c1c3e01e61260364457a47c25cc1cf6a879038902bc6aa8/websockets-16.1.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:92b820d345f7a3fc7b8163949ee92df910f290c3fc517b3d5301c78065adafe1", size = 187270 }, + { url = "https://files.pythonhosted.org/packages/52/71/4c99af3b87dff1b2927981f6876607d4acb45338c665242168d3982f7758/websockets-16.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a606d9c24035242a3e256e9d5b77ed9cd6bccfcb7cf993e5ca3c0f6f68fb6a7", size = 188509 }, + { url = "https://files.pythonhosted.org/packages/9b/b4/5c8ca14b0df7eb84ed0524165c5359150210140817a3312aee57bf62a1cf/websockets-16.1.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:414e596c75f74e0994084694189d7dc9229fb278e33064d6784b73ffbba3ca31", size = 189882 }, + { url = "https://files.pythonhosted.org/packages/25/c1/bedfba9e70557129cb8083748d167bdcc01483dedf0f0df143676df05cbe/websockets-16.1.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:536676848fc5961aca9d20389951f59169508f765637a172403dc5434d722fa0", size = 189114 }, + { url = "https://files.pythonhosted.org/packages/df/09/aa835b2787835aebd839114be5de51b797cb480b63ba42b26d34dfe147cb/websockets-16.1.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:97fd3a0e8b53efa41970ac1dff3d8cf0d2884cadeb4caaf95db7ad1526926ee3", size = 187861 }, + { url = "https://files.pythonhosted.org/packages/20/26/f6408330694dbc9830857d9d23bc14ac4f6875127a480cfdda8d5ca21198/websockets-16.1.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7b1b19636af86a3c7995d4d028dbe376f39b4bf31541146f9c123582a6c94562", size = 185286 }, + { url = "https://files.pythonhosted.org/packages/17/9a/e0675e70dd8a80762cf35bb18799d3f290a4890ffe6439bc51d222796083/websockets-16.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:41c8e77f17294c0ac18008a7309b99b34ee72247ef10b6dff4c3f8b5ac29896b", size = 187935 }, + { url = "https://files.pythonhosted.org/packages/33/c1/3234cfb86afde01b81e9bddcc6e534c440975d60a13991259e833069ab3e/websockets-16.1.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:9f63bcef7f4b02b06b35fc01c93b96c43b5e88e1e8868676caacf493d5a31f3a", size = 186444 }, + { url = "https://files.pythonhosted.org/packages/89/87/9c15206e1d778923d8daa9657de07aa62ea815e13448319c98458c37b281/websockets-16.1.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dab9eb87869da2d6ed3af3f3adf28414baae6ec9d4df355ffc18889132f3436c", size = 188409 }, + { url = "https://files.pythonhosted.org/packages/f2/00/cf5de5c67676de2d3eef8b2a518f168f6796595447a5b7161ba0d012915c/websockets-16.1.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:43e3a9fdd7cbf7ba6040c31fae0faf84ca1474fef777c4e37912f1540f854499", size = 185958 }, + { url = "https://files.pythonhosted.org/packages/62/c0/731b6ddede2e4136912ec4cff2cffbda35af73546be4762c3d7bd3bd79af/websockets-16.1.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:056ae37939ed7e9974f364f5864e76e49182622d8f9751ac1903c0d09b013985", size = 186911 }, + { url = "https://files.pythonhosted.org/packages/8c/7f/39c634472c4469a24a7c09cecddffb08fac6d0e74f73881a94ee8a40a196/websockets-16.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a0eadbbf2c30f01efa58e1f110eb6fa293261f6b0b1aa38f7f48707107690af9", size = 187204 }, + { url = "https://files.pythonhosted.org/packages/26/89/9667c256c256dafcc62d21328ce7a40067da857969b68ee9af375b0aaf72/websockets-16.1.1-cp314-cp314-win32.whl", hash = "sha256:195c978b065fa40910582464f99d6b15c8b314c68e0546549a55ed83f4735328", size = 179603 }, + { url = "https://files.pythonhosted.org/packages/bd/dd/1c099d6c0fc5deb6b46ccdbb6981fdb4b12c917869cb3952408409dc18db/websockets-16.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:4e8d01cc3bcae7bbf8167f944aeafefed590fae5693552bba9794a9df68371cc", size = 179948 }, + { url = "https://files.pythonhosted.org/packages/35/25/9956b2d5e0529d5d23924f21bba1440d4c5c88a562e4f08550871ffa97a7/websockets-16.1.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0ffd3031ea8bda8d61762e84220186105ba3b748b3c8da2ae4f7816fac03e573", size = 179963 }, + { url = "https://files.pythonhosted.org/packages/17/06/55ffc976c488b6aee9ea05761ff7c4e88e7c1fd82818c8ca7b556ad2f90c/websockets-16.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:84a2cef8deffbd9ab8ee0ea546a2a6a7030c28f44e6cdd4547dbfeb489eb8999", size = 177497 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/f7dac2e980bacc92bdc26cebae4ae4d50cae5380732c50980598fc0bbae4/websockets-16.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3df13f73af9b3b38ab1195eb299ecb67a4330c911c97ae04043ff74085728abe", size = 177698 }, + { url = "https://files.pythonhosted.org/packages/b2/39/26762f734113e22da2b942c3aca85798e0c0405d64c256549540ff31e5a1/websockets-16.1.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:23253dd5bcae3f9aaee0a1d30967a8dbd52e5d3cff93a2e5b84df57b77d4750d", size = 187561 }, + { url = "https://files.pythonhosted.org/packages/11/94/c3f330851806b9b02138b774d593478323e73c99238681b4b93efe64e02d/websockets-16.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1c5705e314449e3308872fe084b8571ce078ee4fc55a98a769bdefe5917392", size = 188732 }, + { url = "https://files.pythonhosted.org/packages/d1/f2/eb2c450f052de334ae33cf200ece6e87b0e14d186807074e4eb1cd2cdea2/websockets-16.1.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69e52d175a0a7d1e13b4b67ad41c560b7d98e8c6f6126eb0bda496c784faf8c7", size = 190872 }, + { url = "https://files.pythonhosted.org/packages/70/31/2ac8cecf3a74f7fed9132129fc3d90b3998a1554570c11a69b2a8c20332d/websockets-16.1.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1f79c89b5eb034d1722938a891916582f8f7f503f58ca22518a63c3f2cd18499", size = 189305 }, + { url = "https://files.pythonhosted.org/packages/6a/cf/8ab19650d3c0d4562c92e70ab47c257c4aa5c6a713ed87fe63766b31fefc/websockets-16.1.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:39f2a024af5c345ffe8fcf1ee18c049c024c94df393bb09b044a6917c77bde43", size = 188033 }, + { url = "https://files.pythonhosted.org/packages/66/d7/a49a38a6127a4acb134fb1912b215d900cc657605cff32445bf519f3acc4/websockets-16.1.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:952303a7318d4cbe1011400839bb2051c9f84fa0a35923267f5daba34b15d458", size = 185748 }, + { url = "https://files.pythonhosted.org/packages/95/3e/ad1fa40388c7f2e0bb2c7930d0090b6c5498594bd1cdaec18864df3d9e97/websockets-16.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:249116b4a76063d930a46391ad56e135c286e4562a18309029fc2c73f4ed4c62", size = 188285 }, + { url = "https://files.pythonhosted.org/packages/35/b8/d5db28ca264b9104f82196f92dc8843e35fd391f763d42e4ad358f5bc97e/websockets-16.1.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:61922544a0587a13fd3f53e4c0e5e606510c7b0d9d22c8444e5fae22a06b38cb", size = 186777 }, + { url = "https://files.pythonhosted.org/packages/42/9c/726cb39d0cc43ae848dce4aa2acb04eecc6738b1264ec6d700bf6bcfb9f8/websockets-16.1.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:46dcaa042cd1de6c59e7d9269fa63ff7572b6df40510600b678f0826b3c7af51", size = 188682 }, + { url = "https://files.pythonhosted.org/packages/be/c7/1168704de8c2dd483edabe4a22cbe4465dd8be8dd95561d214f9fe092871/websockets-16.1.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:38565aca3e01ea8734e578fb2118dade0ecb0250533f29e22b8d1a7a196cf4d0", size = 186377 }, + { url = "https://files.pythonhosted.org/packages/ca/40/f9ff2d630ffce4e7dfea0b2288e1caf9ebbf9ff8a9ec9396136ce8b94935/websockets-16.1.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:42f599f4d48c7e1a3338fdaac3acd075be3b3cf02d4b274f3bf2767aedd3d217", size = 187148 }, + { url = "https://files.pythonhosted.org/packages/b5/71/e177c8299f78d7cbe2d14df228643c10c70c0e86e108e092056bbcc16e46/websockets-16.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dcc04fedf83effaeb9cce98abc9469bb1b42ef85f03e01c8c1f4438ef7555737", size = 187578 }, + { url = "https://files.pythonhosted.org/packages/49/b2/b6987faf330f5af5c787a2610124c2e8403d51724f9001ec4fff6311fe7a/websockets-16.1.1-cp314-cp314t-win32.whl", hash = "sha256:8483c2096363120eea8b07c06ae7304d520f686665fffd4811fad423930a65d7", size = 179729 }, + { url = "https://files.pythonhosted.org/packages/a2/6e/fbac6ed878dd362fbad7d415fa4f84d38e3e33fed8cde45c64e783acf826/websockets-16.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:bcce07e23e5769375158f5efdcdafa8d5cd014b93c6683865b840ed65b96f231", size = 180072 }, + { url = "https://files.pythonhosted.org/packages/e1/ed/71fea6e141590cafc40b14dc5943b0845606bee87bdb52a21b6a73eb4311/websockets-16.1.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:820fb8450edddae3812fd58cbc08e2bf22812cb248ecb5f06dbb82119a56e869", size = 177185 }, + { url = "https://files.pythonhosted.org/packages/01/ec/00e7eeca200facf9266a83e4cbbf1bed0e67fba1d4d45031d3e5b3d81b5c/websockets-16.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:125f22dbefaf1554fea66fc83851490edb284ce4f501d37ffed2752f418332d9", size = 177459 }, + { url = "https://files.pythonhosted.org/packages/75/fd/5774c4b33f7c0d8f0c51809c8b3a93456c48e3543579262cfa64eb5f522e/websockets-16.1.1-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:30bbe120437b5648a77d3519b7024ea09530e0b5b18d3698c5a0ae536fe0cc2e", size = 178294 }, + { url = "https://files.pythonhosted.org/packages/37/c3/48e2c03d2bd79bb45948841c592d24156312dd5f58cdf8f549febe652fb6/websockets-16.1.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b6b9dadbef0cccd9f4c4ee96b08898afa73e26803bbe0f6aeb5bb12b0074206d", size = 179190 }, + { url = "https://files.pythonhosted.org/packages/2d/3f/73e511ecf2496ceac57dd4ed8388efe2bcf0769338a2dbf242c8366ae87e/websockets-16.1.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56cd5fc4f10a9ea8aa0804bddb7b42506cf9e136046f3b4c27de8fec9e2ecba5", size = 180330 }, + { url = "https://files.pythonhosted.org/packages/be/4d/2d0d67834092e354d2b0498f014a41249a89556bc406cf86f3e1557bb463/websockets-16.1.1-py3-none-any.whl", hash = "sha256:6abbd3e82c731c8e531714466acd5d87b5e88ac3243465337ba71d68e23ae7e3", size = 173814 }, +] + +[[package]] +name = "websockets" +version = "17.0.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +sdist = { url = "https://files.pythonhosted.org/packages/f7/96/e01084f83a64bcb3a27994bd0cb0db68ff29d9c6707fae37ec19b18ba990/websockets-17.0.1.tar.gz", hash = "sha256:5baa9bc0dfbae8c507e51c8cf1b6d4628086f7a87bbd3a9952bd5f035451f1cc", size = 183298 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/54/b2bce5b754b91b727b852e78af6d7193d4fe985e420dc54e6c2abe161c1c/websockets-17.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c38515cb54902f7e97d0239e81ef46c4444f9475f4807fb9bbdb789b4089abcf", size = 212573 }, + { url = "https://files.pythonhosted.org/packages/78/1b/eaefeb695b217d8c735fc377ab53c6b00bc9ed64a01a3f6f797096ac0ee8/websockets-17.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:70d438268e49f1a4bd096b6b6f7010f3ab48b5db2574dbf7d8c864c46ce7a06a", size = 210262 }, + { url = "https://files.pythonhosted.org/packages/87/2d/68439a174c74969fb51619bbe9af9496826610883b828a2edd2f022c94fc/websockets-17.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0b52c76b8a870b141b7ca0705289452183ce7a523101954ccfe29a25986a673f", size = 210535 }, + { url = "https://files.pythonhosted.org/packages/a4/ab/13a856b488dbac7fd3c5473e38098897cda0baa04e3ca3b34ec6c8a32b46/websockets-17.0.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b98860aefbd3d9bc8e3c7f0eefb83b11142b16110739c68cd33d3b4d6e84e536", size = 219602 }, + { url = "https://files.pythonhosted.org/packages/45/a1/2b100e71aa1fe283ec8fb73f8b74a8576d855486a49117903b100dd3b78d/websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d41e9845514754a42d1d83b2fca9d27fee2ca7b3b0bee6843ba5a9bb2b6e25ac", size = 219873 }, + { url = "https://files.pythonhosted.org/packages/3b/71/92e6146d3588d145136c0e0e16d106bbb855bb5047e13ec3fdee39cce770/websockets-17.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9aac6081513f02eac3f8caace800dbfc5c608b69e4a7bef69e414eabfc95aa1", size = 221108 }, + { url = "https://files.pythonhosted.org/packages/09/8d/357afa2ffd29686536109e7e3cb2a94f2d09e535df4cf3989393dc506a40/websockets-17.0.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b85b960a4507b0714c0a1246d031be9118d908ee974dc085257297a955205f1d", size = 224401 }, + { url = "https://files.pythonhosted.org/packages/01/27/9efba1e7a8df48e405d017e67513c6b2a8f0b59c8500b820c47cd5f3dea9/websockets-17.0.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c356dbddab0a529ed7574f78f559d75a223735c321c28f6f587fbf02b11ed301", size = 221670 }, + { url = "https://files.pythonhosted.org/packages/01/85/ab27d62103e8a150f3657e043e5fc711ad3e018c8cd8a715093e93d7640c/websockets-17.0.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5661f868ef191d33dfc6a0cc7c5b3d495f0cc8bb3f8b30d87bda8755c61c95f5", size = 220442 }, + { url = "https://files.pythonhosted.org/packages/6d/04/289e00b8001b622b0c397a6901fcc4aa8f34a6d2ed42be17f2704f2faae1/websockets-17.0.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2fa2cb465a131c347ba6717a78c887746e73edb1c131d01c982d6ef0d68b82e0", size = 217760 }, + { url = "https://files.pythonhosted.org/packages/2f/70/0fe58cdac988dfc0066786cc07b09dfd72b48b0c01e5de667721192b2e6e/websockets-17.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55383d8177b3c99fd873ee5db0e0193f4c1dd4a3feaccf1a4a03c1b7cf539cac", size = 220597 }, + { url = "https://files.pythonhosted.org/packages/d5/76/d3eaf120710d1a791d1c7a4963f0b50a589df8ba675394fd2a97dfea3746/websockets-17.0.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:038cfad5d5417f8bb09295abe986029a26d22f34bda622ccc79b670efd4dab56", size = 219187 }, + { url = "https://files.pythonhosted.org/packages/e6/00/4e9ae886bdb1647537176ca33fca66d79dddb3773d213ac98ddc6bba9ab4/websockets-17.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:15920057a6b723f84734f0641403bca163a4b176e5af809ee4f0c4a1e75e9fed", size = 219955 }, + { url = "https://files.pythonhosted.org/packages/7c/67/cd7cc6849a86cf8c9979c0c570b6b6ccee75d2872854238d8d54e77be6ec/websockets-17.0.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5508f38c98ac29def9e747b87543b008a58b075df6da70b2cf2e0b47073d33bb", size = 221002 }, + { url = "https://files.pythonhosted.org/packages/de/5c/4d14eaf7b2f1448d1af24c1641f04eb74c1632a5802952aac4b7e068b8e7/websockets-17.0.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:a68e604c6d1b0338e46652e2688cbce8096ad9c03548b075fda9e2ea19a9b7dd", size = 218579 }, + { url = "https://files.pythonhosted.org/packages/15/67/ff8bc4b8a6ec235ed8985de12fecc59ad2cd68cc8fc79b97deaa42e412ac/websockets-17.0.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8af570fc29cd998a921c7131c8ac81d9434466d6d25300cb12a690fb56a8a08", size = 219612 }, + { url = "https://files.pythonhosted.org/packages/91/eb/103d81d655bab3ffd5c7d5d4b08f92c374499decd1d4be6035ce715b385b/websockets-17.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:246927ae9ae06ca0d42a483a4bdb80d4862e1ee5b4cab37c354a5e1ad8356448", size = 219846 }, + { url = "https://files.pythonhosted.org/packages/b8/1e/3495161b1827941258545604fdf72e3e053d03f25bb61752228a784c26a1/websockets-17.0.1-cp311-cp311-win32.whl", hash = "sha256:1d4cf7e8e5b8b1fa40758ac7524843a00237b124ab217e227542cafcfeb7a946", size = 213046 }, + { url = "https://files.pythonhosted.org/packages/7b/b1/ba0ce59681db38c320a6d485f95a497ddea20356d9a9e8e70615ddd867b9/websockets-17.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:02f0b037a737d0cb0c33866c97bcd1a0b73170dfbf42d69d8fb86f51002fd5ae", size = 213344 }, + { url = "https://files.pythonhosted.org/packages/83/9e/abfdde9cbd57f0b5867a70e3426ac63341e1a21557b273c39bb6d2ccf8b9/websockets-17.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:1bdd8c4be420905dd732e00dcd669852d8128cc723efa585a0c0e51adb00a28a", size = 213277 }, + { url = "https://files.pythonhosted.org/packages/50/ff/6199a52d864215750af8668d84b0274775011a90052081f5a9495807a92b/websockets-17.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:10f461191125c63902ea7394ae9e752b1b5785641850c1d365bb30b0f88bc53f", size = 212603 }, + { url = "https://files.pythonhosted.org/packages/54/7e/439a962bcada88dcf586da77a1b2385f91e2d2910e9359540934c827156b/websockets-17.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cffc84ddec6da7f447677266fee2a3c40ecc78172f00752aa1150b8a8d65df1d", size = 210286 }, + { url = "https://files.pythonhosted.org/packages/d9/82/123660edc759c225626b3b91952c7625f85c77a8362acbc35a4623120f7d/websockets-17.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c23e532c8a2325a1e7486de8763a60dc43e83f01bcaeca07e3ba79652c156db1", size = 210549 }, + { url = "https://files.pythonhosted.org/packages/cd/2f/2940e57080cf56f28190287516400126d5a76b52b9a61dc10ba6f6400dbe/websockets-17.0.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c09e097d0e46e3c289bedab9a475ae344b70c30ff5646e46af22b4e6fdc97b21", size = 219874 }, + { url = "https://files.pythonhosted.org/packages/42/28/9ec976c16d63cc51c28dfec74b66854048c0b8b6579946e902f91b69e8bf/websockets-17.0.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f47b0815af3948ec6a440b3afa02f05b18cc0939549e91b5c677b5d9c2c8472a", size = 220150 }, + { url = "https://files.pythonhosted.org/packages/f4/a4/850c699a16bbc451723856360c59bd997bec075e637154f3fa96e80d5760/websockets-17.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8848c207049ad49d318e5f64a3d4d7bb189f8328d0d98e65647788f2a085785c", size = 221389 }, + { url = "https://files.pythonhosted.org/packages/47/e1/f60a891c1a4b3420d5052333a84eb7241e1fb4a71866dec1562f5fa30027/websockets-17.0.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2604de7228506b13a44a256a9d223943340c0e725af5d367dc068e192b027761", size = 224169 }, + { url = "https://files.pythonhosted.org/packages/26/fb/e2a893be6fae4fddfe50ddc3035a331d3f381103d5467b7900026bdb3a64/websockets-17.0.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07abc3bd196a48af476a82fd47f3f79a6a3f70937a9f930cef703cfa0c9d83b6", size = 222025 }, + { url = "https://files.pythonhosted.org/packages/d9/72/e3144b2d79276fab9798ed7d4aea2f0847434f186800b6f56a1eddcb3114/websockets-17.0.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:769ce7e2acfd9a89f2bed3a9c0da229459516bbc00bd4c9e2ca492c613ae4861", size = 220779 }, + { url = "https://files.pythonhosted.org/packages/c0/5e/69c02174fbcf1c40c6adc45d3c316a401558392fe7bab8969ef8c46f1689/websockets-17.0.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:07d78a509c3333f5908c83d7f78144ea68a6c9ec28110f5c54d81d8fcdc262c4", size = 218053 }, + { url = "https://files.pythonhosted.org/packages/b3/09/7574778b095b99cfa0856583462f56568df784f9b41485145169b2ec9c64/websockets-17.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ffad64ce7ad3703d652a3fd9af26238377d24ce52c6ad8ff35d26d82f61f493f", size = 220825 }, + { url = "https://files.pythonhosted.org/packages/c5/e6/f46571f38765dbc4cbc0d0b47de8db65768006dbbd4340e6f5f51bc1d895/websockets-17.0.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e95e321d0d763f2b6633512605f6112ebd70d5746f3ce05c941909d4a25233f2", size = 219427 }, + { url = "https://files.pythonhosted.org/packages/9d/31/6ff1fee057bd7e9dd5237fc064a749615378d003aa045b5bfc2d12b2f4f7/websockets-17.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cd526c8228e759c1006c4b7c9ac71dc4e925ced1a6a6a5a8e94643709738f63e", size = 220198 }, + { url = "https://files.pythonhosted.org/packages/7a/4f/d41847227a44b9ad87c3d5a9fddbfad8b7c4d6032878d8460d9d37c2d44f/websockets-17.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8cd3369e42c0246afaf9d669cfc19797e3a49e8c0a639544459c57597108b966", size = 221304 }, + { url = "https://files.pythonhosted.org/packages/63/30/21a7e326c6ad2eb526cd5b816383d59cdeb28b8805b65a543c3cfbd8e8ce/websockets-17.0.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:b580794e926cab7ff42ee4371ef14e0b22cb2bb722a607f77769136468f49a3f", size = 218858 }, + { url = "https://files.pythonhosted.org/packages/2d/48/55b0331cd5bec9ce29748f79edc00075805450a47011d0c8e3b1c61dbf04/websockets-17.0.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5033ffe6804dd53afafa7d08e8c3eef2d2431f34d58ca30507a8442dd04a033a", size = 219840 }, + { url = "https://files.pythonhosted.org/packages/78/6e/2e8bc06e546f49b32a58a2bc2957902d1809ecc37552d3d7ccd6639a126e/websockets-17.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6db9e5bf3649ab506c6ae8a3ac85a00fb1ae3816d75962771b2df8adbc5d40d2", size = 220116 }, + { url = "https://files.pythonhosted.org/packages/b0/ad/4bac01fa41aca54307157b9c9f68b066a6bb51fb18716ba618078a67b283/websockets-17.0.1-cp312-cp312-win32.whl", hash = "sha256:bc0bca48ba24c6c866847fd20478a51dd547fa0ad258dab9615c414ec534bbc0", size = 213050 }, + { url = "https://files.pythonhosted.org/packages/82/d8/c3a78cccc74a554780e9e76e323d5cde891048627025f0f82623e22dc3df/websockets-17.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:2b3f3020171202b135ca078e20434977c6b2b02af647130d6980c9e39b9462e3", size = 213348 }, + { url = "https://files.pythonhosted.org/packages/7b/25/e1b8824bd632c8a5a62d504b61e9e35e470b67e4be0206f5c28f90c7f86d/websockets-17.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:41d6aa06b5ab832aee72fedf47a149535b121ac900b6bb4d3fe14712afac9a79", size = 213276 }, + { url = "https://files.pythonhosted.org/packages/ba/a8/79c577bc2f874ee22f6f5ccdab97ba9ce6b96806be3fcc3a6d8490f88a21/websockets-17.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:55b12e47dcee83673a40d07686cfb6f9d6dfc285976ade9463f61d2bef3fad22", size = 212593 }, + { url = "https://files.pythonhosted.org/packages/db/99/e1cfaf419bb3b2fcfd6792a846f1d936293132b0b9a56530ced016c83c7b/websockets-17.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c1c118a6b0e25bfc9a6802075d748fa6321714ffbdf3c88d29d9a0e3c7386c75", size = 210280 }, + { url = "https://files.pythonhosted.org/packages/a2/ef/cc994494bf7d97e41833f6ff55c24f535e4d527a10370b9631737e9c2f00/websockets-17.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:734d20364dc2cfe03674883cafcf580b6e431c5ce42b476312b9285310230cf9", size = 210538 }, + { url = "https://files.pythonhosted.org/packages/87/32/fbf2d132f63ba3e67f675bccf333469786a24e0418969ce1d8e6ff9e6f02/websockets-17.0.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9493314a99e599163c854fb5900ad7f7ea38c5cb9d9103aa30b3c6b8181c01fa", size = 219925 }, + { url = "https://files.pythonhosted.org/packages/16/50/64eee3d25a47fe744a9490e0627cc373dca096755db740f91c28bd61cd35/websockets-17.0.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:18ded646ce98cdd3c0235825b3252f1df55765ba49b616bb10282f758667b4d0", size = 220206 }, + { url = "https://files.pythonhosted.org/packages/15/56/10ed4bc4dd75f204e3c62bd4898e44a8742a27773c80b188cfa7888aad2d/websockets-17.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c1bec5d6a19f5fbe87e4940739cfc65e7bb53d8b353e1029b8037a1653b321bc", size = 221445 }, + { url = "https://files.pythonhosted.org/packages/bf/be/bb14328614c068ab09569962fbf218fc00413ce3febc6d2684c764b6f37e/websockets-17.0.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:872273e629ca7e3d35f16a2dc6ede84e1d5c831e616b8277de6e4f83114e7c58", size = 222887 }, + { url = "https://files.pythonhosted.org/packages/32/1b/4cb0eec2fee310007104687493175af190019f705940c864f9c523fe9f6f/websockets-17.0.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1df81d174c1561292de9e40b141cafc04f69077272f6c352afe1d743e20810df", size = 222072 }, + { url = "https://files.pythonhosted.org/packages/6c/9c/14e6391de777ddb39c439c450deb551406d445e25a5877d6fa25c49d4544/websockets-17.0.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:759adeb5b0c5775b563254ec63b5b79089fc0045b479143a0b1b8c0ebaae1253", size = 220826 }, + { url = "https://files.pythonhosted.org/packages/cb/57/96e94e384442247bbed5d3ab67381c7257355c2d66b62c3ad33a17f5d385/websockets-17.0.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d1d99db29b5444e3982f1ce2ba8a833508ad44b2f1fbd0bd99e81d825c0b461", size = 218107 }, + { url = "https://files.pythonhosted.org/packages/c0/8c/9c9dedd14c3919435df9b35cdee7111268c751252b87652f3a6a4f56e760/websockets-17.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:02ed63bf26dda9fa27df730a41f6664586c4ee05972c8fb667ce1725b3fd13d3", size = 220889 }, + { url = "https://files.pythonhosted.org/packages/94/4d/ca73c2ac82c00f50c529784bacb323e42da4816333211bc1543d90c9cf11/websockets-17.0.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:eab6de8a98b9a7772cf686d00b4de439fc7efb8ab05ae106ef227291d06f87c5", size = 219486 }, + { url = "https://files.pythonhosted.org/packages/5b/da/fb37ac09dcd7c69dd73bac979ed393df35f78a3c232e293d1ff3bd586d24/websockets-17.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2a855b6dfe21c4d3420be265ae031829ba8ba0be0ea350d9f7c3ef30ae63ebe2", size = 220258 }, + { url = "https://files.pythonhosted.org/packages/fc/04/9693f191d968a93f37326a17301a101d49580889c688f466699f89ecdee1/websockets-17.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7002d5f9e1c3ddd991cdfdbfee18cc8c8b196b2445022892badacd6cb338bbbc", size = 221358 }, + { url = "https://files.pythonhosted.org/packages/cf/29/ad0d85c01db5dcf22898d51648bd2c25af0dd0a4a41c550b11acddeeeba7/websockets-17.0.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c395bda8e7d8f51a02e80261fb57127979e5c472675d9a96b2860619ad47da48", size = 218921 }, + { url = "https://files.pythonhosted.org/packages/18/3b/bf8e855e495dcca63f2b8aa019cf2ada3160e1fa66d833c7417f3b1f7f38/websockets-17.0.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aadc298969ad229d8e3029fc5cc751fdad286696230f9cf014e90ff9cd8e6ea0", size = 219871 }, + { url = "https://files.pythonhosted.org/packages/3b/db/c7abd6639a93a40279cd1ddc57e09e1c4f8381c4cfccdb775aa5aac9770a/websockets-17.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f11a398d8170b7ac5000baf7f258dcda579ef3ea744e0cc6a165e0dfbc0d3198", size = 220154 }, + { url = "https://files.pythonhosted.org/packages/f6/2a/25a9f8f2e5a6ef34e911d2f55d9f756bdeb92b4c28cfb77b8430bbc73cb1/websockets-17.0.1-cp313-cp313-win32.whl", hash = "sha256:846a4a8b0833e3cad57523d9e3bd50ec8ea05ab9d06c582f82a1340ba096af5f", size = 213038 }, + { url = "https://files.pythonhosted.org/packages/81/2f/ea1380f72bb11b64fc5bc7ae0d42de5bbf3e6dc13b965706b2a1d4e17cdf/websockets-17.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:409d93efcaa14f7a99592c5baaef5ec6ca94fba0f5aec1a86f693977c69c9c1c", size = 213348 }, + { url = "https://files.pythonhosted.org/packages/e6/c7/b956ed9151c3c74530ebc62d716fbfdbde7507a6acc6423a64f9ecfb6b8a/websockets-17.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:90246fa9e6cb192a778ce6ce024057ec54317a894db7899c922dcdc1f4cbf6a5", size = 213282 }, + { url = "https://files.pythonhosted.org/packages/98/dc/cadab608924ac605647031472fb1f8792d7d4ea07565ba1899ec42028e0d/websockets-17.0.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:53b90c00bc6201ab6695c7ff51a04d0e425514c37515e9eeecd2c1b978ac6c0e", size = 212640 }, + { url = "https://files.pythonhosted.org/packages/16/7a/b034d13ca181211bbd58bb50835cb196a7784cd505b5a2079d4d03374f9f/websockets-17.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5f33a649bfcb8312524173cc4bbafa7dbb236e18eee9aa31a1d324ca0ddda28c", size = 210332 }, + { url = "https://files.pythonhosted.org/packages/2f/4d/943ede39b53744768edf1ed84a3f9401527388228a3d6c1249c02c3d6bd7/websockets-17.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cddc675ec31bca65473321f9a9794e488b43b3b8de5d02c8ef4810c5d5792163", size = 210546 }, + { url = "https://files.pythonhosted.org/packages/cf/e3/88dc159d2ae66743c669443246243f28d873b0c5e58271b8cc1ca0440334/websockets-17.0.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b3ff0ad440ad52dda64138f16895f66403f40192365e39b1010e889f289746b0", size = 219928 }, + { url = "https://files.pythonhosted.org/packages/fe/f2/ff27eaefa15851a5cf7f004ab827a022bf2d6632cb520f89cb100db7e84b/websockets-17.0.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:72d7f2a5aeb4e82daa4ee18f125b4277f427033359be5c745ad709608446cc2c", size = 220279 }, + { url = "https://files.pythonhosted.org/packages/19/2e/a5166149f363d2449c1cb2dde6486a245521979509d53b87a09f3e79662b/websockets-17.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6fd88365da261c53d3e943fb37e0d0721b9cde119f6b2e3fc84369b6ab234d63", size = 221525 }, + { url = "https://files.pythonhosted.org/packages/9b/b5/f46931269b3ff3bde65d27c65ddb22f9bb8ce92ac2c6c4df0910128f6219/websockets-17.0.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ab9f962a5b64a5c3c845d556b7dc4e6fb683f7b67179f8205e814bb2e0213ffe", size = 222897 }, + { url = "https://files.pythonhosted.org/packages/42/f4/deccf3439f35df953ec35e13fe07986821c5f1ab5785d69614283bdb9034/websockets-17.0.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8c07f145d0b9e90cbd96035f31fb79199aef4da1872854e36ebeb258e3d57594", size = 222129 }, + { url = "https://files.pythonhosted.org/packages/35/a5/e1b57a59da92ade37fd021567a17b518ea8267b28e5530075844cdb525fe/websockets-17.0.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9f7747d3daa41a11f25f7cca5dc988fc51da97b311bed4c9d843860f79779283", size = 220875 }, + { url = "https://files.pythonhosted.org/packages/f0/30/e7d0889c790a854156de424575fd67af79ddbaed9ff3157ae863dfd1c1dc/websockets-17.0.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2abb1ba0a5133b7d2ef3c1c9f4b0c1e8a101012dce0b594ab2b2888d9a64820e", size = 218160 }, + { url = "https://files.pythonhosted.org/packages/09/2e/43db785d6ed9ae7594fae7b62bbc9cb4dfee2b015e06a1005f1e5ce283b6/websockets-17.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f3fd9a1f87f8f0f3f8e9f9bd0195f7516562d13f5b178db8c5784d1f60b60bed", size = 220951 }, + { url = "https://files.pythonhosted.org/packages/eb/f5/4ac3cab3d5e8a830657a822f64a8910e3803229c6783e59c3fd9a3487427/websockets-17.0.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:2bc14b481e05e331811108daa1aeb41a5e237a5564ef2f02ec5a356a0f102f78", size = 219460 }, + { url = "https://files.pythonhosted.org/packages/03/0e/c3a4020673ffc17c82cf1a467835038a196a555d3b4f2a50f0f063cf8ccc/websockets-17.0.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:57d2ee9b24b404ce75f3814f92073c0ed88106c950148d2427fe8d25ca254d1f", size = 220248 }, + { url = "https://files.pythonhosted.org/packages/7d/87/e47a6a278cc1dfade38444c893ce18322943c25d4b780a74450d9d164be1/websockets-17.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:1b363bfd72a52c0658a3154a4cff219f15a474b35a235057d38853bf151acce7", size = 221421 }, + { url = "https://files.pythonhosted.org/packages/da/8f/473d5fc4e3836e375b0233c6ef26777e6e5e3f7bfc84ccd524eae4090ed5/websockets-17.0.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:10b1587c599fa0f2c89154587c80e0fda98ade6c9fa8c0260a2823fb1800b685", size = 218975 }, + { url = "https://files.pythonhosted.org/packages/d4/b9/819ec2dcdf69031d7e9cab11247f3a6ff9bbc8c7c53ada1dbcb9055b227b/websockets-17.0.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d7d72843691f50b91127c50688df10cb72ec6f4c4b1d7e2c11ab33b16acf8e51", size = 219925 }, + { url = "https://files.pythonhosted.org/packages/85/b9/6c0da301f6118502e079cf92f4e864adf28e56b3f8c0f6085076ced7b876/websockets-17.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:90973a3a00f23afdfd1c9b06fb84289bf0220f247ef8a62501a1967c7af54f7b", size = 220218 }, + { url = "https://files.pythonhosted.org/packages/55/f9/cba32dc9dd856565263d6272f594255bd0e2781deb8cd982c026a54760ad/websockets-17.0.1-cp314-cp314-win32.whl", hash = "sha256:599b03beb77633bffc095334338fad79cafc2b01fbd58953838130a9ae967d7b", size = 212626 }, + { url = "https://files.pythonhosted.org/packages/fa/95/91cdd8c192287d7ea741f37cf7d64fdc1a14410f06f73805e428a1a590af/websockets-17.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:81ce19c6046ace11da7001781be7317bb1dc389f399af4b2ed962190f76f9add", size = 212969 }, + { url = "https://files.pythonhosted.org/packages/8e/fd/8c98a1e431960661c5769ab1a4dd66494e87ab02d791cc79e51e0d9a289f/websockets-17.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:efe0ae052a8d023b87198921e8a7ce1dc7768816bcd2fbc20df171ac73a04891", size = 212850 }, + { url = "https://files.pythonhosted.org/packages/13/c1/142f5186ee7dc3beee0426b998a79e223e067b7689afcaa95890d64aa800/websockets-17.0.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ab56439c9f74c52770690c7b2f616b3bf775cb3920453ee355ac765c032d8bbf", size = 212967 }, + { url = "https://files.pythonhosted.org/packages/02/de/4b03ed316c9dee180365286c298219809ff247be39beeaaf9958b21167ab/websockets-17.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:20a92f78ac8250984ed459faa9ca48c285adbfc0038ddc3fdac6046990a9c9ed", size = 210504 }, + { url = "https://files.pythonhosted.org/packages/cd/d8/ad2b3e8f867e1e8cac3077e2f33ffb60b71bd763d6cfc71bd916f113c3bf/websockets-17.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6a434e59962a4fb9016bea327e1d14d6cd67670ecfb8942b4f4a0c24036634ce", size = 210702 }, + { url = "https://files.pythonhosted.org/packages/48/18/7a77a82ce9d6f831c07b176da3942f7e71acd0f115f3ecdb1d00a040eb01/websockets-17.0.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2503c7e2a5049a12d5dac917a46d5d52591283a766165b8176bb167560421b38", size = 220290 }, + { url = "https://files.pythonhosted.org/packages/f5/af/43c3e3c3ea7ba4693c2181743f3221957df28bededadcbd9fc8a0661bde0/websockets-17.0.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:28012a54510fe8301bb893ef143cec30a2780a2d3bc20b7bbdf4379d7a63945d", size = 220573 }, + { url = "https://files.pythonhosted.org/packages/1f/bd/ed48eca15725743ee7e2dc172e15c61de29e85ec98dace7b14257f366836/websockets-17.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22bd00f8bae2bccdb5dbe41e20f58ba44ca9fff0b4b561aaf39099c35da762ed", size = 221747 }, + { url = "https://files.pythonhosted.org/packages/99/50/838deb7937a8225c4925dd4a977eafea473fabf444178a99de0bc7e92bb0/websockets-17.0.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e98ec9ec61cce5bc4b8b218322ad090b0994eb060bb04da704c62ef0a3d864e6", size = 223891 }, + { url = "https://files.pythonhosted.org/packages/f8/e9/657fb70c6eb6bcd01adfa5d2b06496e9911e1c1a8813d353b8c00f7591cd/websockets-17.0.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8e387adb0c692c6b5571bdeafc8ac9d1901ea30f10309134780b16ecd35e6605", size = 222317 }, + { url = "https://files.pythonhosted.org/packages/07/4c/82cb722afa5428fed981331210c4c07600570db01bb1620579f655b5adaf/websockets-17.0.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bd1470d2c53fe53269bf5619da7725d30dd9b9693f1689f7a85eab8dea734442", size = 221047 }, + { url = "https://files.pythonhosted.org/packages/90/84/bd6d67d6bc65f0de0cb50de55dab42f256a9876a351c4736522eb168fda0/websockets-17.0.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:884af729b8ab50486acd94d9768c2b60914bf39b579ebba0a5cb73bfdfd61fd2", size = 218626 }, + { url = "https://files.pythonhosted.org/packages/96/cb/6a372c8553976f0d8f97f5115826ed47e34b3be6b8bf0d0249af249a7416/websockets-17.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a60fa1a25cca1bcc2bf87b8d6be37a741f0a3239fb5e9cfb7a37173b68ffcf87", size = 221299 }, + { url = "https://files.pythonhosted.org/packages/bc/31/f966e8472337974f74d788b3ef6c6f3b8b9a5f201efd16a843c91d269fa5/websockets-17.0.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:e8208f2729cba030ff872a92064c97584eeb9502f53d32a05a0f05d5a17ca6c6", size = 219789 }, + { url = "https://files.pythonhosted.org/packages/57/34/404e83a6cc7b0efcac810b7041bffd72ff76900e6fd0aa45a26c92fb2ffe/websockets-17.0.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:54cdcaa56f5d3eafd57058f0fa4a3de93a310b43a3c4699f06efc4c0bd054a5a", size = 220678 }, + { url = "https://files.pythonhosted.org/packages/e5/70/8946188c2a68d67251859b589a3634918cf7867bf0b891347a5ecaa43d30/websockets-17.0.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:4d41c0a1d47a478bc432b3b9068097bee1ce0c5b19327ea6f75c2ab34ab1f2fb", size = 221697 }, + { url = "https://files.pythonhosted.org/packages/04/16/ee73fc2083a2938ac6209f4ec804960496835b20a0068dbcfe8424957c04/websockets-17.0.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f991247276797d0c61ab7770bc9791eadc16f683b4d83517f624932adc1a8bab", size = 219390 }, + { url = "https://files.pythonhosted.org/packages/94/6a/d5f88033c69932af6cdaa72da62516ade47c257e3bf69f4c0ba5f40e12a2/websockets-17.0.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:733e3cc7171fa1b899edbe725ef9382d0e960657dc1fd933f3281ae910c01dab", size = 220161 }, + { url = "https://files.pythonhosted.org/packages/e1/2e/6183dd2c0370287ecf4afe0bb33aca364208e5e7b0e1a286adcaecc0c78b/websockets-17.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:810cb3fb5fa6e447216f4e82d9a85cb8aed0929ae3538153ddfe8a6e3121a58d", size = 220591 }, + { url = "https://files.pythonhosted.org/packages/26/93/70f6516d85b9744f7eac224c4b1b9ef4e84133f80b53be02080cb1c3e663/websockets-17.0.1-cp314-cp314t-win32.whl", hash = "sha256:17ac37716c0244e82c9e384c41653c090b1864c6610224ca3857e7f7b58fce10", size = 212755 }, + { url = "https://files.pythonhosted.org/packages/f1/2c/9d9c1da5a7ea9af307b386d25f64d1dead4729644198d2b92e36db5dfd41/websockets-17.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:bb31f42ea095ea826463c770829aa188a86c9a5c976b1467cbbf583c811de833", size = 213094 }, + { url = "https://files.pythonhosted.org/packages/5b/24/a585e7573e128070605d003b5544729bcd58d9756c7e99d550818ca4b916/websockets-17.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:dbfae8e75b342e31fc6fd1a8bbb393b7cbb91d6cfd581650300a94381e7b7e2b", size = 213009 }, + { url = "https://files.pythonhosted.org/packages/51/77/63b4abd29f15107d856f010de6f35434faa7c49ef89151e051d2807a9c40/websockets-17.0.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:49266e4488309b38783257293a38298942b9a03aa106fcb45195377a77c0c1e2", size = 210194 }, + { url = "https://files.pythonhosted.org/packages/ef/ab/6160542ee644f72b865af13ddfff23740c95595b237e16312262cafdb641/websockets-17.0.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d69fd559f9f0e8a52d2fce6f04ee143f86e70df0a189cd95164eddac599e810f", size = 210465 }, + { url = "https://files.pythonhosted.org/packages/53/1a/d4437d3cb0691eeac2c6064e21c83a9eeda04f6ef0261abfc0dde708590d/websockets-17.0.1-pp311-pypy311_pp73-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a39ce3a7b0e6059be093213d637963101380157bcbad355916738fafb490698d", size = 211417 }, + { url = "https://files.pythonhosted.org/packages/88/28/2d671e23a20359a1cc142848384659813b49028d46cb0acdc28e81ac59b5/websockets-17.0.1-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2437d4ca208cc0f246d3a2297ae7474b4ba18261aaf5b9c79c84c031ecf348e1", size = 211309 }, + { url = "https://files.pythonhosted.org/packages/02/52/b85a676b161991e5c0d884252376435f60510789e7740e3da73489d22a6e/websockets-17.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6740be6d1bab69f08ab52cb15b08f76c143b6fe61c580ba62bd929f3ab7a1d42", size = 212203 }, + { url = "https://files.pythonhosted.org/packages/bf/e3/91e297e41381d9131f3142a9c1a50389fd96b98125ce9b81526fa4e14b9f/websockets-17.0.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:afbce6e3f0fac32dc87c2a0d84869d1a706460d64f39f3889386413e6e4d3d26", size = 213434 }, + { url = "https://files.pythonhosted.org/packages/09/ce/3929538b2b9918f5eee623fbf3346893973191f6df93f19bbda097bd7bb7/websockets-17.0.1-py3-none-any.whl", hash = "sha256:c6be9cba65c65cc76dfa3d4619e359ff02a4476c74e179b215236c11a0b32345", size = 206718 }, +] + [[package]] name = "werkzeug" version = "3.1.3" @@ -5534,6 +7864,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, ] +[[package]] +name = "windows-curses" +version = "2.4.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/6c/21393045010dd74887c71f1738f2bb1e60758c04d74cc97cefc03731a6d6/windows_curses-2.4.2-cp310-cp310-win32.whl", hash = "sha256:fb55b40df1dd8633f431307f204293ca2a0b4f928927490509f1bf68beef3cfe", size = 71143 }, + { url = "https://files.pythonhosted.org/packages/1c/aa/4a67a104ab4d6ac4d5d5f8f80363feec688d7846180c5ca69327f602196a/windows_curses-2.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:0ff2a0884cb78d48e15eea1e274f73c1f5a780a4b872357724c17b39de75c996", size = 81848 }, + { url = "https://files.pythonhosted.org/packages/d1/58/5fd430fec0ebe1cef88ddccba345ca119f1b44e58f58d6998878a01c9973/windows_curses-2.4.2-cp311-cp311-win32.whl", hash = "sha256:ecf7af9c97002af661d3e47b9c5eb31cdb7629a032adcdab46530efea8ba1864", size = 71135 }, + { url = "https://files.pythonhosted.org/packages/84/62/e2bae0ab9c5c80dca9a708a4cb9c8afaf0ef61c8d4459b57f96785040831/windows_curses-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:03c4ef0095ab8212ed964236d51b4d8c815f302c5a7de94831dae468f05ce333", size = 81863 }, + { url = "https://files.pythonhosted.org/packages/2e/9c/b2a3706c8edadae8ae88b327ba072d6056ad1b492f9996214cff027e9f01/windows_curses-2.4.2-cp312-cp312-win32.whl", hash = "sha256:7ec4629685add716d494e8fbdd0b83485de726e9deeda57d30e742c77a32a156", size = 71547 }, + { url = "https://files.pythonhosted.org/packages/8b/ee/8c5da36191524856fb2c675f8cae99211ccf77bcd4e4a9010477e08000ac/windows_curses-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:df782859176f9e8142618e4966d6cee7a53a8b1c819faeb6e606a60fa4f8972a", size = 82282 }, + { url = "https://files.pythonhosted.org/packages/b1/54/195f2c4d0258ced34a401c8e3c9eefa2aa2221a9f0179ae64ad3cb039e64/windows_curses-2.4.2-cp313-cp313-win32.whl", hash = "sha256:248bf3f1d973e92ca193b1ea8a626ec7f81a66be6f6d6c5e31ff82056453678d", size = 71458 }, + { url = "https://files.pythonhosted.org/packages/47/e8/38fd0fef95271280a77a4f3b65e0961d3c39716388b39c08b3040bfb4f2c/windows_curses-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:1bf3d0c902374b6c430a954adcb686a5ecd7a31fc4195d31136385b5c1bea925", size = 82200 }, + { url = "https://files.pythonhosted.org/packages/d2/22/f90c7d1d83464eb63345802f33e8de41bd732521d9a60a69ad985c8faa90/windows_curses-2.4.2-cp314-cp314-win32.whl", hash = "sha256:a970bf067b3126251423b4da051ef8c1c77acf6294ec96a7d6de7f6b9e5c27a0", size = 77028 }, + { url = "https://files.pythonhosted.org/packages/6f/6a/1f8754de746474a049a841e139b443b250a96908d6913ccf2db9a4303584/windows_curses-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:6c22cb0310500dfbfe54c76354e37070e300d5473596d48ac4f9c65b2d578b6f", size = 86361 }, +] + [[package]] name = "wrapt" version = "1.17.2" @@ -5598,6 +7945,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] +[[package]] +name = "yacs" +version = "0.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/3e/4a45cb0738da6565f134c01d82ba291c746551b5bc82e781ec876eb20909/yacs-0.1.8.tar.gz", hash = "sha256:efc4c732942b3103bea904ee89af98bcd27d01f0ac12d8d4d369f1e7a2914384", size = 11100 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/4f/fe9a4d472aa867878ce3bb7efb16654c5d63672b86dc0e6e953a67018433/yacs-0.1.8-py3-none-any.whl", hash = "sha256:99f893e30497a4b66842821bac316386f7bd5c4f47ad35c9073ef089aa33af32", size = 14747 }, +] + [[package]] name = "yarl" version = "1.20.0" @@ -5697,6 +8056,204 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, ] +[[package]] +name = "yaspin" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "termcolor", marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/cd/3d2877a5558fdad6de4166fa0160dc49cb1382820cd955753c67b56facd2/yaspin-3.3.0.tar.gz", hash = "sha256:505c9a44c6e3723a1bee8f7a17a055b17475176b74dd93e468fa8db48c172a41", size = 42411 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/bd/980187b627f9c5126ecbe909cc23f7d2c23ea4b046b2d3511d80ea0a8b79/yaspin-3.3.0-py3-none-any.whl", hash = "sha256:ab5113be4b34ef33f7d4d97be9b6867101ad020c2fb02bc92e3137c75b06d712", size = 21800 }, +] + +[[package]] +name = "yprov4ml" +version = "2.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aenum" }, + { name = "codecarbon", version = "3.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "codecarbon", version = "3.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "fvcore" }, + { name = "geocoder" }, + { name = "gpustat" }, + { name = "gputil" }, + { name = "lightning" }, + { name = "lxml" }, + { name = "netcdf4", version = "1.7.3", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32') or (platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32') or (platform_system == 'Windows' and sys_platform == 'win32' and extra == 'extra-7-itwinai-tf-cuda') or (platform_system == 'Windows' and sys_platform == 'win32' and extra != 'extra-7-itwinai-torch') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "netcdf4", version = "1.7.4", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine != 'ARM64' and extra == 'extra-7-itwinai-torch') or platform_system != 'Windows' or sys_platform == 'darwin' or sys_platform == 'linux' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "numpy" }, + { name = "nvidia-ml-py" }, + { name = "nvitop" }, + { name = "pandas" }, + { name = "prov" }, + { name = "psutil" }, + { name = "pydot" }, + { name = "rdflib" }, + { name = "rocrate" }, + { name = "torch", version = "2.6.0", source = { registry = "https://pypi.org/simple" }, marker = "(platform_system == 'Darwin' and sys_platform != 'linux' and sys_platform != 'win32') or (platform_system != 'Darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'win32' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "torch", version = "2.6.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "platform_system != 'Darwin' or sys_platform == 'linux' or sys_platform == 'win32' or extra == 'extra-7-itwinai-tf-cuda' or extra != 'extra-7-itwinai-torch'" }, + { name = "torchvision", version = "0.21.0", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'win32') or (platform_system != 'Darwin' and sys_platform == 'darwin') or (platform_system == 'Darwin' and sys_platform != 'win32' and extra == 'extra-7-itwinai-tf-cuda') or (platform_system == 'Darwin' and sys_platform != 'win32' and extra != 'extra-7-itwinai-torch') or (platform_system == 'Windows' and sys_platform != 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or sys_platform == 'linux' or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda') or (sys_platform == 'darwin' and extra != 'extra-7-itwinai-torch') or (sys_platform == 'win32' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "torchvision", version = "0.21.0", source = { registry = "https://pypi.org/simple" }, marker = "(platform_system == 'Darwin' and sys_platform != 'linux' and sys_platform != 'win32') or (platform_system != 'Darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'win32' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "torchvision", version = "0.21.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux') or (platform_system != 'Windows' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or sys_platform == 'win32' or (sys_platform == 'darwin' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'linux' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "tqdm" }, + { name = "typing-extensions" }, + { name = "zarr", version = "2.18.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "zarr", version = "3.1.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6c/aa/05be226ed1e0d948296fa9dca37d5c721fb833e69e613b36974a2c7d1cd8/yprov4ml-2.0.9.tar.gz", hash = "sha256:162577e73425d36ee74f5770bfb8ca04762d83e77b28832bf0849da9cfb24a71", size = 66113 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/f1/ae2541ff6761503d373ea554a4a7e10f92dec439089be0bd47c5879ae800/yprov4ml-2.0.9-py3-none-any.whl", hash = "sha256:59dddca6f4efc0ac85a726db10a93727847be01f2eb4f6b6a4dee96755077dd7", size = 60326 }, +] + +[[package]] +name = "zarr" +version = "2.18.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version < '3.11' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "asciitree", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "fasteners", marker = "(python_full_version < '3.11' and sys_platform != 'emscripten') or (python_full_version >= '3.11' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch') or (sys_platform == 'emscripten' and extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "numcodecs", version = "0.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "numpy", marker = "python_full_version < '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/c4/187a21ce7cf7c8f00c060dd0e04c2a81139bb7b1ab178bba83f2e1134ce2/zarr-2.18.3.tar.gz", hash = "sha256:2580d8cb6dd84621771a10d31c4d777dca8a27706a1a89b29f42d2d37e2df5ce", size = 3603224 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl", hash = "sha256:b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd", size = 210723 }, +] + +[[package]] +name = "zarr" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'ARM64' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_system == 'Windows' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version >= '3.14' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.12.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system == 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.11.*' and platform_machine != 'x86_64' and platform_system != 'Windows' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Windows' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "donfig", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "google-crc32c", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "numcodecs", version = "0.16.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "numpy", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "packaging", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11' or (extra == 'extra-7-itwinai-tf-cuda' and extra == 'extra-7-itwinai-torch')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/76/7fa87f57c112c7b9c82f0a730f8b6f333e792574812872e2cd45ab604199/zarr-3.1.5.tar.gz", hash = "sha256:fbe0c79675a40c996de7ca08e80a1c0a20537bd4a9f43418b6d101395c0bba2b", size = 366825 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/15/bb13b4913ef95ad5448490821eee4671d0e67673342e4d4070854e5fe081/zarr-3.1.5-py3-none-any.whl", hash = "sha256:29cd905afb6235b94c09decda4258c888fcb79bb6c862ef7c0b8fe009b5c8563", size = 284067 }, +] + [[package]] name = "zipp" version = "3.21.0" From 1905080a684e285f535d11fb619711ca857cebf0 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 4 Aug 2026 16:48:58 +0200 Subject: [PATCH 13/21] Trigger Read the Docs rebuild From 731cb032299d697651d91efef8fd39b3d788dd65 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 8 Sep 2026 10:43:21 +0200 Subject: [PATCH 14/21] incorporating matbun comments --- tests/conftest.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 192b043f0..b1975f174 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -12,8 +12,6 @@ import pytest -os.environ.setdefault("MLFLOW_ALLOW_FILE_STORE", "true") - @pytest.fixture def torch_env() -> str: From cf66202e025089122672ac180eb254b78cc8afba Mon Sep 17 00:00:00 2001 From: sarma1 Date: Tue, 8 Sep 2026 16:56:54 +0200 Subject: [PATCH 15/21] incorporating matbun comments --- src/itwinai/cli.py | 12 +++--- src/itwinai/torch/inference.py | 40 +++++++++++-------- .../torch/model_hub/backends/itwinai_hub.py | 2 +- src/itwinai/torch/model_hub/feature.py | 4 -- src/itwinai/torch/trainer.py | 11 ++++- 5 files changed, 39 insertions(+), 30 deletions(-) diff --git a/src/itwinai/cli.py b/src/itwinai/cli.py index b93c4e957..fcb7a9283 100644 --- a/src/itwinai/cli.py +++ b/src/itwinai/cli.py @@ -970,14 +970,14 @@ def upload_model_to_hub( str | None, typer.Option( "--api-token", - help="API token. If not provided, use HYPHA_TOKEN or .env file.", + help="API token. If not provided, use HYPHA_API_TOKEN or .env file.", ), ] = None, env_file: Annotated[ str | None, typer.Option( "--env-file", - help="Path to .env file containing HYPHA_SERVER_URL and HYPHA_TOKEN.", + help="Path to .env file containing HYPHA_SERVER_URL and HYPHA_API_TOKEN.", ), ] = None, upload_script: Annotated[ @@ -1043,7 +1043,7 @@ def _check_internet_connection(timeout: float = 3.0) -> bool: # Get credentials with priority: CLI args > env vars > .env file final_hub_url = hub_url or env_vars.get("HYPHA_SERVER_URL") - final_api_token = api_token or env_vars.get("HYPHA_TOKEN") + final_api_token = api_token or env_vars.get("HYPHA_API_TOKEN") if not final_hub_url: cli_logger.error( @@ -1058,14 +1058,14 @@ def _check_internet_connection(timeout: float = 3.0) -> bool: cli_logger.error( "API token not provided. Set it via:\n" " - --api-token option\n" - " - HYPHA_TOKEN environment variable\n" - " - HYPHA_TOKEN in .env file" + " - HYPHA_API_TOKEN environment variable\n" + " - HYPHA_API_TOKEN in .env file" ) raise typer.Exit(code=1) # Update environment variables for subprocess env_vars["HYPHA_SERVER_URL"] = final_hub_url - env_vars["HYPHA_TOKEN"] = final_api_token + env_vars["HYPHA_API_TOKEN"] = final_api_token # Get or download the upload script upload_script_path = None diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index af1fc59c1..c6c9ee21b 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -52,15 +52,17 @@ def __init__( self.base_url = base_url def __call__(self) -> nn.Module: - if not has_internet_connection(): - raise ConnectionError( - "No internet connection: cannot reach the Model Hub to pull " - f"model '{self.model_id}'." - ) - file_path = self.file_path or discover_weights_file(self.base_url, self.model_id) dst_dir = Path("tmp") / "modelhub_downloads" / self.model_id - ckpt_path = download_file(self.base_url, self.model_id, file_path, dst_dir) + ckpt_path = dst_dir / Path(file_path).name + + if not ckpt_path.exists(): + if not has_internet_connection(): + raise ConnectionError( + "No internet connection: cannot reach the Model Hub to pull " + f"model '{self.model_id}'." + ) + ckpt_path = download_file(self.base_url, self.model_id, file_path, dst_dir) checkpoint = torch.load(ckpt_path, weights_only=False) if self.model_class is None: @@ -101,17 +103,16 @@ def __call__(self) -> nn.Module: """ if Path(self.model_uri).exists(): # Model is on local filesystem. - checkpoint = torch.load(self.model_uri, weights_only=False) - + checkpoint = torch.load(self.model_uri, weights_only=True) + if self.model_class is None: + raise ValueError( + "model_class required to instantiate model when checkpoint is dict." + ) + model = self.model_class() if isinstance(checkpoint, dict) and "model_state_dict" in checkpoint: - if self.model_class is None: - raise ValueError( - "model_class required to instantiate model when checkpoint is dict." - ) - model = self.model_class() - model.load_state_dict(checkpoint["model_state_dict"], strict=False) + model.load_state_dict(checkpoint["model_state_dict"], strict=True) else: - model = checkpoint + model.load_state_dict(checkpoint, strict=True) return model.eval() @@ -266,7 +267,12 @@ def execute( # Overrides existing "internal" model self.model = model elif isinstance(self.model, ModelLoader): - self.model = self.model() + loader = self.model() + if self.strategy.is_main_worker: + self.model = loader() + self.strategy.barrier() + if not self.strategy.is_main_worker: + self.model = loader() self.create_dataloaders(inference_dataset=inference_dataset) diff --git a/src/itwinai/torch/model_hub/backends/itwinai_hub.py b/src/itwinai/torch/model_hub/backends/itwinai_hub.py index 6d600fa71..3872011ea 100644 --- a/src/itwinai/torch/model_hub/backends/itwinai_hub.py +++ b/src/itwinai/torch/model_hub/backends/itwinai_hub.py @@ -9,5 +9,5 @@ class AIModelHubBackend(BaseBackend): def upload(self, model_dir: Path): subprocess.run( ["itwinai", "upload-model-to-hub", str(model_dir)], - check=False, + check=True, ) diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py index 4ed7bf04f..bd8b049ce 100644 --- a/src/itwinai/torch/model_hub/feature.py +++ b/src/itwinai/torch/model_hub/feature.py @@ -18,16 +18,12 @@ def on_checkpoint_saved(self, trainer, ckpt_dir): if not self.enabled: return ckpt_dir = Path(ckpt_dir) - if ckpt_dir.name != self.final_checkpoint_name: - return write_manifest(ckpt_dir, self.config) def on_training_end(self, trainer, ckpt_dir): if not self.enabled: return ckpt_dir = Path(ckpt_dir) - if ckpt_dir.name != self.final_checkpoint_name: - return write_manifest(ckpt_dir, self.config) mode = self.config.get("mode", "deferred") diff --git a/src/itwinai/torch/trainer.py b/src/itwinai/torch/trainer.py index 3dd3b1267..9852bdaa4 100644 --- a/src/itwinai/torch/trainer.py +++ b/src/itwinai/torch/trainer.py @@ -1231,8 +1231,13 @@ def train(self) -> None: step=self.current_epoch, ) if avg_metric < self.best_validation_metric: + checkpoint_name = ( + self._model_hub.final_checkpoint_name + if self._model_hub.enabled + else "best_model" + ) best_ckpt_path = self.save_checkpoint( - name="best_model", + name=checkpoint_name, best_validation_metric=avg_metric, force=True, ) @@ -1277,7 +1282,9 @@ def train(self) -> None: step=self.current_epoch, ) if self.strategy.is_main_worker and self._model_hub.enabled: - best_ckpt_dir = Path(self.checkpoints_location) / "best_model" + best_ckpt_dir = ( + Path(self.checkpoints_location) / self._model_hub.final_checkpoint_name + ) if best_ckpt_dir.exists(): self._model_hub.on_training_end(self, best_ckpt_dir) From 825cfba84cabd5f7adc74e81c6d18610738bcfb7 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Wed, 9 Sep 2026 14:50:57 +0200 Subject: [PATCH 16/21] addressing matbun and okrochak PR comments --- docs/api/itwinai.torch.modules.rst | 19 +-- .../model-hub/explain_model_hub.rst | 20 ++-- .../model_hub/backends/__init__.py | 0 .../{torch => }/model_hub/backends/base.py | 0 .../model_hub/backends/itwinai_hub.py | 0 src/itwinai/{torch => }/model_hub/download.py | 0 src/itwinai/model_hub/feature.py | 112 ++++++++++++++++++ src/itwinai/{torch => }/model_hub/manifest.py | 0 src/itwinai/torch/inference.py | 54 --------- src/itwinai/torch/model_hub/feature.py | 45 ------- src/itwinai/torch/model_hub/utils.py | 9 -- src/itwinai/torch/trainer.py | 2 +- .../torch-tutorial-model-hub/config.yaml | 2 +- 13 files changed, 129 insertions(+), 134 deletions(-) rename src/itwinai/{torch => }/model_hub/backends/__init__.py (100%) rename src/itwinai/{torch => }/model_hub/backends/base.py (100%) rename src/itwinai/{torch => }/model_hub/backends/itwinai_hub.py (100%) rename src/itwinai/{torch => }/model_hub/download.py (100%) create mode 100644 src/itwinai/model_hub/feature.py rename src/itwinai/{torch => }/model_hub/manifest.py (100%) delete mode 100644 src/itwinai/torch/model_hub/feature.py delete mode 100644 src/itwinai/torch/model_hub/utils.py diff --git a/docs/api/itwinai.torch.modules.rst b/docs/api/itwinai.torch.modules.rst index 3950e0f7e..ea247be15 100644 --- a/docs/api/itwinai.torch.modules.rst +++ b/docs/api/itwinai.torch.modules.rst @@ -49,7 +49,7 @@ loggers model_hub.feature ++++++++++++++++++ -.. automodule:: itwinai.torch.model_hub.feature +.. automodule:: itwinai.model_hub.feature :members: :undoc-members: :show-inheritance: @@ -58,7 +58,7 @@ model_hub.feature model_hub.download +++++++++++++++++++ -.. automodule:: itwinai.torch.model_hub.download +.. automodule:: itwinai.model_hub.download :members: :undoc-members: :show-inheritance: @@ -67,16 +67,7 @@ model_hub.download model_hub.manifest +++++++++++++++++++ -.. automodule:: itwinai.torch.model_hub.manifest - :members: - :undoc-members: - :show-inheritance: - :member-order: bysource - - -model_hub.utils -++++++++++++++++ -.. automodule:: itwinai.torch.model_hub.utils +.. automodule:: itwinai.model_hub.manifest :members: :undoc-members: :show-inheritance: @@ -85,7 +76,7 @@ model_hub.utils model_hub.backends.base ++++++++++++++++++++++++ -.. automodule:: itwinai.torch.model_hub.backends.base +.. automodule:: itwinai.model_hub.backends.base :members: :undoc-members: :show-inheritance: @@ -94,7 +85,7 @@ model_hub.backends.base model_hub.backends.itwinai_hub +++++++++++++++++++++++++++++++ -.. automodule:: itwinai.torch.model_hub.backends.itwinai_hub +.. automodule:: itwinai.model_hub.backends.itwinai_hub :members: :undoc-members: :show-inheritance: diff --git a/docs/how-it-works/model-hub/explain_model_hub.rst b/docs/how-it-works/model-hub/explain_model_hub.rst index 338947795..2e2b45bd3 100644 --- a/docs/how-it-works/model-hub/explain_model_hub.rst +++ b/docs/how-it-works/model-hub/explain_model_hub.rst @@ -16,15 +16,15 @@ Model Hub support is enabled in its configuration. On every checkpoint save (:meth:`~itwinai.torch.trainer.TorchTrainer.save_checkpoint`), the checkpoint directory -- containing ``model.pt`` (the model's raw ``state_dict``), ``state.pt`` (optimizer/scheduler/ epoch state), and ``config.yaml`` -- is handed to -:class:`~itwinai.torch.model_hub.feature.ModelHubFeature`, which: +:class:`~itwinai.model_hub.feature.ModelHubFeature`, which: 1. Writes a ``manifest.yaml`` into the checkpoint directory via - :func:`~itwinai.torch.model_hub.manifest.write_manifest`, merging user-supplied fields + :func:`~itwinai.model_hub.manifest.write_manifest`, merging user-supplied fields with sensible defaults. At minimum, ``id`` and ``name`` must be provided. 2. Uploads the checkpoint directory using the configured backend at the end of all epochs. - Backends implement :class:`~itwinai.torch.model_hub.backends.base.BaseBackend` and are - selected by name via :func:`~itwinai.torch.model_hub.backends.get_backend`. Currently the - only backend is :class:`~itwinai.torch.model_hub.backends.itwinai_hub.AIModelHubBackend`. + Backends implement :class:`~itwinai.model_hub.backends.base.BaseBackend` and are + selected by name via :func:`~itwinai.model_hub.backends.get_backend`. Currently the + only backend is :class:`~itwinai.model_hub.backends.itwinai_hub.AIModelHubBackend`. The abstraction is to enable future backends (e.g. HuggingFace). The timing of the upload is controlled by a ``mode`` setting: @@ -54,7 +54,7 @@ The timing of the upload is controlled by a ``mode`` setting: Pulling a model --------------- -Pulling is handled by :class:`~itwinai.torch.inference.ModelHubModelLoader`, an +Pulling is handled by :class:`~itwinai.model_hub.feature.ModelHubModelLoader`, an implementation of :class:`~itwinai.serialization.ModelLoader`. Like any other ``ModelLoader``, it can be used wherever a model loader is expected -- most commonly as the ``model`` argument of :class:`~itwinai.torch.inference.TorchPredictor`. @@ -66,9 +66,9 @@ exact path, ``ModelHubModelLoader`` supports two modes: - If ``file_path`` is provided explicitly, that file is downloaded directly. - If ``file_path`` is omitted, itwinai lists the model's files - (:func:`~itwinai.torch.model_hub.download.list_files`) and locates + (:func:`~itwinai.model_hub.download.list_files`) and locates ``root//model.pt`` automatically - (:func:`~itwinai.torch.model_hub.download.discover_weights_file`), matching the layout + (:func:`~itwinai.model_hub.download.discover_weights_file`), matching the layout produced by :meth:`~itwinai.torch.trainer.TorchTrainer.save_checkpoint`. ``discover_weights_file`` only looks for a top-level ``root/`` entry; it does not inspect or otherwise handle any other top-level entries the Hub may contain. @@ -81,7 +81,7 @@ exact path, ``ModelHubModelLoader`` supports two modes: _target_: itwinai.torch.inference.TorchPredictor config: {} model: - _target_: itwinai.torch.inference.ModelHubModelLoader + _target_: itwinai.model_hub.feature.ModelHubModelLoader model_id: checkpoint-example model_class: my_module.MyModel @@ -98,6 +98,6 @@ Connectivity ------------ Both pushing (in ``auto`` mode) and pulling rely on the same connectivity check, -:func:`~itwinai.torch.model_hub.utils.has_internet_connection`. Pulling always requires +:func:`~itwinai.model_hub.feature.has_internet_connection`. Pulling always requires internet access -- unlike pushing, there is no offline or deferred mode for pulling, since there is no local fallback artifact to use in its place. diff --git a/src/itwinai/torch/model_hub/backends/__init__.py b/src/itwinai/model_hub/backends/__init__.py similarity index 100% rename from src/itwinai/torch/model_hub/backends/__init__.py rename to src/itwinai/model_hub/backends/__init__.py diff --git a/src/itwinai/torch/model_hub/backends/base.py b/src/itwinai/model_hub/backends/base.py similarity index 100% rename from src/itwinai/torch/model_hub/backends/base.py rename to src/itwinai/model_hub/backends/base.py diff --git a/src/itwinai/torch/model_hub/backends/itwinai_hub.py b/src/itwinai/model_hub/backends/itwinai_hub.py similarity index 100% rename from src/itwinai/torch/model_hub/backends/itwinai_hub.py rename to src/itwinai/model_hub/backends/itwinai_hub.py diff --git a/src/itwinai/torch/model_hub/download.py b/src/itwinai/model_hub/download.py similarity index 100% rename from src/itwinai/torch/model_hub/download.py rename to src/itwinai/model_hub/download.py diff --git a/src/itwinai/model_hub/feature.py b/src/itwinai/model_hub/feature.py new file mode 100644 index 000000000..dcf4294d3 --- /dev/null +++ b/src/itwinai/model_hub/feature.py @@ -0,0 +1,112 @@ +from pathlib import Path + +import torch +from backends import get_backend +from download import discover_weights_file, download_file +from manifest import write_manifest +from torch import nn + +from ..serialization import ModelLoader + + +class ModelHubFeature: + def __init__(self, config: dict): + self.config = config or {} + self.enabled = self.config.get("enabled", False) + self.final_checkpoint_name = self.config.get("final_checkpoint_name", "best_model") + + backend_name = self.config.get("backend", "ai-model-hub") + self.backend = get_backend(backend_name, self.config) + + def on_checkpoint_saved(self, trainer, ckpt_dir): + if not self.enabled: + return + ckpt_dir = Path(ckpt_dir) + write_manifest(ckpt_dir, self.config) + + def on_training_end(self, trainer, ckpt_dir): + if not self.enabled: + return + ckpt_dir = Path(ckpt_dir) + write_manifest(ckpt_dir, self.config) + + mode = self.config.get("mode", "deferred") + if mode == "online": + self._safe_upload(ckpt_dir) + elif mode == "auto": + if has_internet_connection(): + self._safe_upload(ckpt_dir) + else: + print(f"Model Hub config ready in: {ckpt_dir}") + elif mode == "deferred": + print(f"Model Hub can be run in: {ckpt_dir}") + + def _safe_upload(self, ckpt_dir: Path) -> None: + try: + self.backend.upload(ckpt_dir) + except Exception as e: + print(f"Model Hub upload failed for checkpoint at '{ckpt_dir}': {e}") + print(f"You can re-upload later with: itwinai upload-model-to-hub {ckpt_dir}") + + +class ModelHubModelLoader(ModelLoader): + """Pulls a model file from the RI-SCALE Model Hub and loads it as a + torch model. + + Args: + model_id (str): Model Hub artifact ID. + file_path (str | None): Name of the file to download within the model's + artifact. If None, will attempt to auto-discover the weights file. + model_class (nn.Module | None): required if the checkpoint is + a state dict rather than a full pickled model. + base_url (str): Model Hub artifacts base URL. + """ + + def __init__( + self, + model_id: str, + file_path: str | None = None, + model_class: nn.Module | None = None, + base_url: str = "https://hypha.aicell.io/ri-scale/artifacts", + ): + self.model_id = model_id + self.file_path = file_path + self.model_class = model_class + self.base_url = base_url + + def __call__(self) -> nn.Module: + file_path = self.file_path or discover_weights_file(self.base_url, self.model_id) + dst_dir = Path("tmp") / "modelhub_downloads" / self.model_id + ckpt_path = dst_dir / Path(file_path).name + + if not ckpt_path.exists(): + if not has_internet_connection(): + raise ConnectionError( + "No internet connection: cannot reach the Model Hub to pull " + f"model '{self.model_id}'." + ) + ckpt_path = download_file(self.base_url, self.model_id, file_path, dst_dir) + + checkpoint = torch.load(ckpt_path, weights_only=False) + if self.model_class is None: + raise ValueError( + "model_class is required: Model Hub checkpoints store weights " + "as a raw state_dict, not a pickled model object." + ) + model = self.model_class() + if isinstance(checkpoint, dict) and "model_state_dict" in checkpoint: + model.load_state_dict(checkpoint["model_state_dict"], strict=False) + else: + model.load_state_dict(checkpoint, strict=False) + return model.eval() + + +def has_internet_connection(timeout: float = 3.0) -> bool: + """Checks for internet connectivity.""" + import socket + + try: + socket.create_connection(("1.1.1.1", 443), timeout=timeout) + return True + except OSError: + return False diff --git a/src/itwinai/torch/model_hub/manifest.py b/src/itwinai/model_hub/manifest.py similarity index 100% rename from src/itwinai/torch/model_hub/manifest.py rename to src/itwinai/model_hub/manifest.py diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index c6c9ee21b..f212e8431 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -21,63 +21,9 @@ from ..serialization import ModelLoader from .config import TrainingConfiguration from .distributed import TorchDistributedStrategy -from .model_hub.download import discover_weights_file, download_file -from .model_hub.utils import has_internet_connection from .trainer import TorchTrainer -class ModelHubModelLoader(ModelLoader): - """Pulls a model file from the RI-SCALE Model Hub and loads it as a - torch model. - - Args: - model_id (str): Model Hub artifact ID. - file_path (str | None): Name of the file to download within the model's - artifact. If None, will attempt to auto-discover the weights file. - model_class (nn.Module | None): required if the checkpoint is - a state dict rather than a full pickled model. - base_url (str): Model Hub artifacts base URL. - """ - - def __init__( - self, - model_id: str, - file_path: str | None = None, - model_class: nn.Module | None = None, - base_url: str = "https://hypha.aicell.io/ri-scale/artifacts", - ): - self.model_id = model_id - self.file_path = file_path - self.model_class = model_class - self.base_url = base_url - - def __call__(self) -> nn.Module: - file_path = self.file_path or discover_weights_file(self.base_url, self.model_id) - dst_dir = Path("tmp") / "modelhub_downloads" / self.model_id - ckpt_path = dst_dir / Path(file_path).name - - if not ckpt_path.exists(): - if not has_internet_connection(): - raise ConnectionError( - "No internet connection: cannot reach the Model Hub to pull " - f"model '{self.model_id}'." - ) - ckpt_path = download_file(self.base_url, self.model_id, file_path, dst_dir) - - checkpoint = torch.load(ckpt_path, weights_only=False) - if self.model_class is None: - raise ValueError( - "model_class is required: Model Hub checkpoints store weights " - "as a raw state_dict, not a pickled model object." - ) - model = self.model_class() - if isinstance(checkpoint, dict) and "model_state_dict" in checkpoint: - model.load_state_dict(checkpoint["model_state_dict"], strict=False) - else: - model.load_state_dict(checkpoint, strict=False) - return model.eval() - - class TorchModelLoader(ModelLoader): """Loads a torch model from somewhere. diff --git a/src/itwinai/torch/model_hub/feature.py b/src/itwinai/torch/model_hub/feature.py deleted file mode 100644 index bd8b049ce..000000000 --- a/src/itwinai/torch/model_hub/feature.py +++ /dev/null @@ -1,45 +0,0 @@ -from pathlib import Path - -from itwinai.torch.model_hub.backends import get_backend -from itwinai.torch.model_hub.manifest import write_manifest -from itwinai.torch.model_hub.utils import has_internet_connection - - -class ModelHubFeature: - def __init__(self, config: dict): - self.config = config or {} - self.enabled = self.config.get("enabled", False) - self.final_checkpoint_name = self.config.get("final_checkpoint_name", "best_model") - - backend_name = self.config.get("backend", "ai-model-hub") - self.backend = get_backend(backend_name, self.config) - - def on_checkpoint_saved(self, trainer, ckpt_dir): - if not self.enabled: - return - ckpt_dir = Path(ckpt_dir) - write_manifest(ckpt_dir, self.config) - - def on_training_end(self, trainer, ckpt_dir): - if not self.enabled: - return - ckpt_dir = Path(ckpt_dir) - write_manifest(ckpt_dir, self.config) - - mode = self.config.get("mode", "deferred") - if mode == "online": - self._safe_upload(ckpt_dir) - elif mode == "auto": - if has_internet_connection(): - self._safe_upload(ckpt_dir) - else: - print(f"Model Hub config ready in: {ckpt_dir}") - elif mode == "deferred": - print(f"Model Hub can be run in: {ckpt_dir}") - - def _safe_upload(self, ckpt_dir: Path) -> None: - try: - self.backend.upload(ckpt_dir) - except Exception as e: - print(f"Model Hub upload failed for checkpoint at '{ckpt_dir}': {e}") - print(f"You can re-upload later with: itwinai upload-model-to-hub {ckpt_dir}") diff --git a/src/itwinai/torch/model_hub/utils.py b/src/itwinai/torch/model_hub/utils.py deleted file mode 100644 index 6b8b59430..000000000 --- a/src/itwinai/torch/model_hub/utils.py +++ /dev/null @@ -1,9 +0,0 @@ -def has_internet_connection(timeout: float = 3.0) -> bool: - """Checks for internet connectivity.""" - import socket - - try: - socket.create_connection(("1.1.1.1", 443), timeout=timeout) - return True - except OSError: - return False diff --git a/src/itwinai/torch/trainer.py b/src/itwinai/torch/trainer.py index 9852bdaa4..69e2df607 100644 --- a/src/itwinai/torch/trainer.py +++ b/src/itwinai/torch/trainer.py @@ -41,7 +41,7 @@ from torchmetrics import Metric from tqdm import tqdm -from itwinai.torch.model_hub.feature import ModelHubFeature +from itwinai.model_hub.feature import ModelHubFeature from itwinai.torch.monitoring.monitoring import measure_gpu_utilization from itwinai.torch.profiling.profiler import profile_torch_trainer diff --git a/tutorials/model-hub/torch-tutorial-model-hub/config.yaml b/tutorials/model-hub/torch-tutorial-model-hub/config.yaml index c916c59cb..6ae7178ad 100644 --- a/tutorials/model-hub/torch-tutorial-model-hub/config.yaml +++ b/tutorials/model-hub/torch-tutorial-model-hub/config.yaml @@ -55,7 +55,7 @@ inference_pipeline: model_hub: ${model_hub} strategy: ddp model: - _target_: itwinai.torch.inference.ModelHubModelLoader + _target_: itwinai.model_hub.feature.ModelHubModelLoader model_id: ${model_hub.manifest.id} # `model_class` needs to end up as the *class* itself, not an instance -- # `synthetic_data.sanity_check_model_class` is a plain function that returns From 7d56d1d0aafc020889fed9b30877010c14a2b663 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Wed, 9 Sep 2026 15:56:38 +0200 Subject: [PATCH 17/21] fix paths --- src/itwinai/model_hub/feature.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/itwinai/model_hub/feature.py b/src/itwinai/model_hub/feature.py index dcf4294d3..67d9978ee 100644 --- a/src/itwinai/model_hub/feature.py +++ b/src/itwinai/model_hub/feature.py @@ -1,12 +1,12 @@ from pathlib import Path import torch -from backends import get_backend -from download import discover_weights_file, download_file -from manifest import write_manifest from torch import nn from ..serialization import ModelLoader +from .backends import get_backend +from .download import discover_weights_file, download_file +from .manifest import write_manifest class ModelHubFeature: From 8b856f1396317ebb2e26e700a36d3f55c80f83e8 Mon Sep 17 00:00:00 2001 From: sarma1 Date: Wed, 9 Sep 2026 16:14:28 +0200 Subject: [PATCH 18/21] changing weights_only argument for two loaders --- src/itwinai/model_hub/feature.py | 2 +- src/itwinai/torch/inference.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/itwinai/model_hub/feature.py b/src/itwinai/model_hub/feature.py index 67d9978ee..283db4a8f 100644 --- a/src/itwinai/model_hub/feature.py +++ b/src/itwinai/model_hub/feature.py @@ -87,7 +87,7 @@ def __call__(self) -> nn.Module: ) ckpt_path = download_file(self.base_url, self.model_id, file_path, dst_dir) - checkpoint = torch.load(ckpt_path, weights_only=False) + checkpoint = torch.load(ckpt_path, weights_only=True) if self.model_class is None: raise ValueError( "model_class is required: Model Hub checkpoints store weights " diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index f212e8431..ab6e8fbd5 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -49,7 +49,7 @@ def __call__(self) -> nn.Module: """ if Path(self.model_uri).exists(): # Model is on local filesystem. - checkpoint = torch.load(self.model_uri, weights_only=True) + checkpoint = torch.load(self.model_uri, weights_only=False) if self.model_class is None: raise ValueError( "model_class required to instantiate model when checkpoint is dict." From 4fa8039ebb55c4e022708820affb7497ce7a70fe Mon Sep 17 00:00:00 2001 From: sarma1 Date: Thu, 10 Sep 2026 11:37:39 +0200 Subject: [PATCH 19/21] rolling back changes to model loader --- src/itwinai/torch/inference.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index ab6e8fbd5..6eacf8e7b 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -50,15 +50,16 @@ def __call__(self) -> nn.Module: if Path(self.model_uri).exists(): # Model is on local filesystem. checkpoint = torch.load(self.model_uri, weights_only=False) - if self.model_class is None: - raise ValueError( - "model_class required to instantiate model when checkpoint is dict." - ) - model = self.model_class() + if isinstance(checkpoint, dict) and "model_state_dict" in checkpoint: - model.load_state_dict(checkpoint["model_state_dict"], strict=True) + if self.model_class is None: + raise ValueError( + "model_class required to instantiate model when checkpoint is dict." + ) + model = self.model_class() + model.load_state_dict(checkpoint["model_state_dict"], strict=False) else: - model.load_state_dict(checkpoint, strict=True) + model = checkpoint return model.eval() From a5fe612a6e7d4671d93a8748da6bd8db6e6d845c Mon Sep 17 00:00:00 2001 From: sarma1 Date: Thu, 10 Sep 2026 12:28:59 +0200 Subject: [PATCH 20/21] debugging integration test failure --- src/itwinai/torch/inference.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/itwinai/torch/inference.py b/src/itwinai/torch/inference.py index 6eacf8e7b..b6767ca44 100644 --- a/src/itwinai/torch/inference.py +++ b/src/itwinai/torch/inference.py @@ -214,7 +214,7 @@ def execute( # Overrides existing "internal" model self.model = model elif isinstance(self.model, ModelLoader): - loader = self.model() + loader = self.model if self.strategy.is_main_worker: self.model = loader() self.strategy.barrier() From e9bb520dcb443602ac696a8f91e237672a39442b Mon Sep 17 00:00:00 2001 From: sarma1 Date: Thu, 10 Sep 2026 15:39:37 +0200 Subject: [PATCH 21/21] moving model-hub related functions from src cli --- src/itwinai/cli.py | 200 ++--------------------------------- src/itwinai/model_hub/cli.py | 198 ++++++++++++++++++++++++++++++++++ 2 files changed, 207 insertions(+), 191 deletions(-) create mode 100644 src/itwinai/model_hub/cli.py diff --git a/src/itwinai/cli.py b/src/itwinai/cli.py index fcb7a9283..5d4d900cf 100644 --- a/src/itwinai/cli.py +++ b/src/itwinai/cli.py @@ -996,197 +996,15 @@ def upload_model_to_hub( - manifest.yaml with model id and metadata - (optional) metadata.json with additional information """ - import subprocess - import tempfile - - import certifi - import requests - - def _check_internet_connection(timeout: float = 3.0) -> bool: - """Check if internet connection is available.""" - import socket - - try: - socket.create_connection(("1.1.1.1", 443), timeout=timeout) - return True - except OSError: - return False - - model_path = Path(model_dir).resolve() - - # Validate if model directory exists and is a directory - if not model_path.exists() or not model_path.is_dir(): - cli_logger.error( - f"Model directory '{model_path}' does not exist or is not a directory." - ) - raise typer.Exit(code=1) - - # Check if the file manifest.yaml exists - manifest_file = model_path / "manifest.yaml" - if not manifest_file.exists(): - cli_logger.error(f"No manifest.yaml found in '{model_path}'. ") - raise typer.Exit(code=1) - - # Load environment variables from .env file if specified and if file exists - env_vars = os.environ.copy() - - if env_file: - env_path = Path(env_file) - if not env_path.exists(): - cli_logger.error(f"Specified .env file '{env_path}' does not exist!") - raise typer.Exit(code=1) - _load_env_file(env_path, env_vars) - cli_logger.info(f"Loaded environment from {env_path}") - elif Path(".env").exists(): - _load_env_file(Path(".env"), env_vars) - cli_logger.info("Loaded environment from .env file in current directory") - - # Get credentials with priority: CLI args > env vars > .env file - final_hub_url = hub_url or env_vars.get("HYPHA_SERVER_URL") - final_api_token = api_token or env_vars.get("HYPHA_API_TOKEN") - - if not final_hub_url: - cli_logger.error( - "Model hub URL not provided. Set it via:\n" - " - --hub-url option\n" - " - HYPHA_SERVER_URL environment variable\n" - " - HYPHA_SERVER_URL in .env file" - ) - raise typer.Exit(code=1) - - if not final_api_token: - cli_logger.error( - "API token not provided. Set it via:\n" - " - --api-token option\n" - " - HYPHA_API_TOKEN environment variable\n" - " - HYPHA_API_TOKEN in .env file" - ) - raise typer.Exit(code=1) - - # Update environment variables for subprocess - env_vars["HYPHA_SERVER_URL"] = final_hub_url - env_vars["HYPHA_API_TOKEN"] = final_api_token - - # Get or download the upload script - upload_script_path = None - temp_dir = None - - if upload_script: - # User provided a path to the upload script - upload_script_path = Path(upload_script) - if not upload_script_path.exists(): - cli_logger.error(f"Upload script not found at: {upload_script_path}") - raise typer.Exit(code=1) - else: - # Check internet connectivity - if not _check_internet_connection(): - cli_logger.warning( - "No internet connection detected. " - "Automatic download of upload_model.py may fail" - ) - - # Download the script from GitHub - cli_logger.info("Downloading upload_model.py from GitHub...") - github_url = "https://raw.githubusercontent.com/RI-SCALE/ai-model-hub-example/main/upload_model.py" - - try: - temp_dir = tempfile.mkdtemp() - upload_script_path = Path(temp_dir) / "upload_model.py" - - response = requests.get( - github_url, - timeout=15, - verify=certifi.where(), - ) - response.raise_for_status() - upload_script_path.write_text(response.text, encoding="utf-8") - - cli_logger.info(f"Downloaded upload script to: {upload_script_path}") - - except Exception as e: - cli_logger.error( - "Failed to download upload script. " - "This is likely due to missing internet access." - ) - cli_logger.error(str(e)) - if temp_dir: - shutil.rmtree(temp_dir, ignore_errors=True) - raise typer.Exit(code=1) - - # Upload the model - cli_logger.info(f"Uploading model from '{model_path}' to {final_hub_url}") - - try: - # Build the "root/" layout that discover_weights_file expects, - # via a symlink - scratch_dir = Path(tempfile.mkdtemp()) - root_dir = scratch_dir / "root" - root_dir.mkdir(parents=True, exist_ok=True) - symlink_path = root_dir / model_path.name - if not symlink_path.exists(): - symlink_path.symlink_to(model_path, target_is_directory=True) - - relative_upload_arg = f"root/{model_path.name}" - - try: - # Call the upload script as subprocess - # The original usage is: python upload_model.py model_example1 - result = subprocess.run( - [sys.executable, str(upload_script_path), relative_upload_arg], - env=env_vars, - capture_output=True, - text=True, - cwd=str(scratch_dir), - check=False, - ) - finally: - shutil.rmtree(scratch_dir, ignore_errors=True) - - # Print stdout (even if there's an error, this may be useful for debugging) - if result.stdout: - cli_logger.info(result.stdout) - - if result.returncode != 0: - cli_logger.error(f"Upload failed with return code {result.returncode}") - if result.stderr: - cli_logger.error(f"Error output:\n{result.stderr}") - raise typer.Exit(code=1) - - cli_logger.info("Model uploaded!") - - except FileNotFoundError: - cli_logger.error(f"Python interpreter not found: {sys.executable}") - raise typer.Exit(code=1) - except Exception as e: - cli_logger.error(f"Failed to upload model: {e}") - py_logger.exception("Full error trace:") - raise typer.Exit(code=1) - finally: - # Clean up temporary directory - if temp_dir and Path(temp_dir).exists(): - shutil.rmtree(temp_dir, ignore_errors=True) - - -def _load_env_file(env_path: Path, env_dict: dict): - """Load environment variables from a .env file into the provided dictionary.""" - with open(env_path) as f: - for line in f: - line = line.strip() - # Skip empty lines and comments - if not line or line.startswith("#"): - continue - # Parse KEY=VALUE - if "=" in line: - key, value = line.split("=", 1) - key = key.strip() - value = value.strip() - # Remove quotes if present - if (value.startswith('"') and value.endswith('"')) or ( - value.startswith("'") and value.endswith("'") - ): - value = value[1:-1] - - env_dict[key] = value + from itwinai.model_hub.cli import upload_model_to_hub as _upload_model_to_hub + + _upload_model_to_hub( + model_dir=model_dir, + hub_url=hub_url, + api_token=api_token, + env_file=env_file, + upload_script=upload_script, + ) if __name__ == "__main__": diff --git a/src/itwinai/model_hub/cli.py b/src/itwinai/model_hub/cli.py new file mode 100644 index 000000000..0871f7f08 --- /dev/null +++ b/src/itwinai/model_hub/cli.py @@ -0,0 +1,198 @@ +import logging +import os +import shutil +import subprocess +import sys +import tempfile +from pathlib import Path + +import certifi +import requests +import typer + +from itwinai.model_hub.feature import has_internet_connection + +cli_logger = logging.getLogger("cli_logger") +py_logger = logging.getLogger(__name__) + + +def load_env_file(env_path: Path, env_dict: dict): + """Load environment variables from a .env file into the provided dictionary.""" + with open(env_path) as f: + for line in f: + line = line.strip() + # Skip empty lines and comments + if not line or line.startswith("#"): + continue + # Parse KEY=VALUE + if "=" in line: + key, value = line.split("=", 1) + key = key.strip() + value = value.strip() + # Remove quotes if present + if (value.startswith('"') and value.endswith('"')) or ( + value.startswith("'") and value.endswith("'") + ): + value = value[1:-1] + + env_dict[key] = value + + +def upload_model_to_hub( + model_dir: str, + hub_url: str | None = None, + api_token: str | None = None, + env_file: str | None = None, + upload_script: str | None = None, +) -> None: + """Upload a model checkpoint to the AI Model Hub. See the `upload_model_to_hub` Typer + command in `itwinai.cli` for the user-facing docstring. + """ + model_path = Path(model_dir).resolve() + + # Validate if model directory exists and is a directory + if not model_path.exists() or not model_path.is_dir(): + cli_logger.error( + f"Model directory '{model_path}' does not exist or is not a directory." + ) + raise typer.Exit(code=1) + + # Check if the file manifest.yaml exists + manifest_file = model_path / "manifest.yaml" + if not manifest_file.exists(): + cli_logger.error(f"No manifest.yaml found in '{model_path}'. ") + raise typer.Exit(code=1) + + # Load environment variables from .env file if specified and if file exists + env_vars = os.environ.copy() + + if env_file: + env_path = Path(env_file) + if not env_path.exists(): + cli_logger.error(f"Specified .env file '{env_path}' does not exist!") + raise typer.Exit(code=1) + load_env_file(env_path, env_vars) + cli_logger.info(f"Loaded environment from {env_path}") + elif Path(".env").exists(): + load_env_file(Path(".env"), env_vars) + cli_logger.info("Loaded environment from .env file in current directory") + + # Get credentials with priority: CLI args > env vars > .env file + final_hub_url = hub_url or env_vars.get("HYPHA_SERVER_URL") + final_api_token = api_token or env_vars.get("HYPHA_API_TOKEN") + + if not final_hub_url: + cli_logger.error( + "Model hub URL not provided. Set it via:\n" + " - --hub-url option\n" + " - HYPHA_SERVER_URL environment variable\n" + " - HYPHA_SERVER_URL in .env file" + ) + raise typer.Exit(code=1) + + if not final_api_token: + cli_logger.error( + "API token not provided. Set it via:\n" + " - --api-token option\n" + " - HYPHA_API_TOKEN environment variable\n" + " - HYPHA_API_TOKEN in .env file" + ) + raise typer.Exit(code=1) + + # Update environment variables for subprocess + env_vars["HYPHA_SERVER_URL"] = final_hub_url + env_vars["HYPHA_API_TOKEN"] = final_api_token + + # Get or download the upload script + upload_script_path = None + temp_dir = None + + if upload_script: + # User provided a path to the upload script + upload_script_path = Path(upload_script) + if not upload_script_path.exists(): + cli_logger.error(f"Upload script not found at: {upload_script_path}") + raise typer.Exit(code=1) + else: + # Check internet connectivity + if not has_internet_connection(): + cli_logger.warning( + "No internet connection detected. " + "Automatic download of upload_model.py may fail" + ) + + # Download the script from GitHub + cli_logger.info("Downloading upload_model.py from GitHub...") + github_url = "https://raw.githubusercontent.com/RI-SCALE/ai-model-hub-example/main/upload_model.py" + + try: + temp_dir = tempfile.mkdtemp() + upload_script_path = Path(temp_dir) / "upload_model.py" + + response = requests.get(github_url, timeout=15, verify=certifi.where()) + response.raise_for_status() + upload_script_path.write_text(response.text, encoding="utf-8") + + cli_logger.info(f"Downloaded upload script to: {upload_script_path}") + except Exception as e: + cli_logger.error( + "Failed to download upload script. " + "This is likely due to missing internet access." + ) + cli_logger.error(str(e)) + if temp_dir: + shutil.rmtree(temp_dir, ignore_errors=True) + raise typer.Exit(code=1) + + # Upload the model + cli_logger.info(f"Uploading model from '{model_path}' to {final_hub_url}") + + try: + # Build the "root/" layout that discover_weights_file expects, + # via a symlink + scratch_dir = Path(tempfile.mkdtemp()) + root_dir = scratch_dir / "root" + root_dir.mkdir(parents=True, exist_ok=True) + symlink_path = root_dir / model_path.name + if not symlink_path.exists(): + symlink_path.symlink_to(model_path, target_is_directory=True) + + relative_upload_arg = f"root/{model_path.name}" + + try: + # Call the upload script as subprocess + # The original usage is: python upload_model.py model_example1 + result = subprocess.run( + [sys.executable, str(upload_script_path), relative_upload_arg], + env=env_vars, + capture_output=True, + text=True, + cwd=str(scratch_dir), + check=False, + ) + finally: + shutil.rmtree(scratch_dir, ignore_errors=True) + + # Print stdout (even if there's an error, this may be useful for debugging) + if result.stdout: + cli_logger.info(result.stdout) + + if result.returncode != 0: + cli_logger.error(f"Upload failed with return code {result.returncode}") + if result.stderr: + cli_logger.error(f"Error output:\n{result.stderr}") + raise typer.Exit(code=1) + + cli_logger.info("Model uploaded!") + + except FileNotFoundError: + cli_logger.error(f"Python interpreter not found: {sys.executable}") + raise typer.Exit(code=1) + except Exception as e: + cli_logger.error(f"Failed to upload model: {e}") + py_logger.exception("Full error trace:") + raise typer.Exit(code=1) + finally: + # Clean up temporary directory + if temp_dir and Path(temp_dir).exists(): + shutil.rmtree(temp_dir, ignore_errors=True)