Spaces:
Sleeping
Sleeping
Upload folder using huggingface_hub
Browse files- Dockerfile +3 -4
- README.md +6 -0
- inference.py +135 -99
- pyproject.toml +10 -1
- uv.lock +219 -378
- validate-submission.sh +185 -0
Dockerfile
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
ARG BASE_IMAGE=ghcr.io/meta-pytorch/openenv-base:latest
|
| 2 |
FROM ${BASE_IMAGE} AS builder
|
| 3 |
|
|
@@ -24,15 +25,13 @@ RUN if ! command -v uv >/dev/null 2>&1; then \
|
|
| 24 |
fi
|
| 25 |
|
| 26 |
# Install dependencies
|
| 27 |
-
RUN -
|
| 28 |
-
if [ -f uv.lock ]; then \
|
| 29 |
uv sync --frozen --no-install-project --no-editable; \
|
| 30 |
else \
|
| 31 |
uv sync --no-install-project --no-editable; \
|
| 32 |
fi
|
| 33 |
|
| 34 |
-
RUN -
|
| 35 |
-
if [ -f uv.lock ]; then \
|
| 36 |
uv sync --frozen --no-editable; \
|
| 37 |
else \
|
| 38 |
uv sync --no-editable; \
|
|
|
|
| 1 |
+
# syntax=docker/dockerfile:1
|
| 2 |
ARG BASE_IMAGE=ghcr.io/meta-pytorch/openenv-base:latest
|
| 3 |
FROM ${BASE_IMAGE} AS builder
|
| 4 |
|
|
|
|
| 25 |
fi
|
| 26 |
|
| 27 |
# Install dependencies
|
| 28 |
+
RUN if [ -f uv.lock ]; then \
|
|
|
|
| 29 |
uv sync --frozen --no-install-project --no-editable; \
|
| 30 |
else \
|
| 31 |
uv sync --no-install-project --no-editable; \
|
| 32 |
fi
|
| 33 |
|
| 34 |
+
RUN if [ -f uv.lock ]; then \
|
|
|
|
| 35 |
uv sync --frozen --no-editable; \
|
| 36 |
else \
|
| 37 |
uv sync --no-editable; \
|
README.md
CHANGED
|
@@ -25,6 +25,12 @@ ML practitioners spend enormous time on hyperparameter tuning. This environment
|
|
| 25 |
|
| 26 |
The small dataset subsets (5k–10k samples) make overfitting a **real, tangible problem** the agent must address — exactly like real low-data regimes practitioners face daily.
|
| 27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
## Tasks
|
| 29 |
|
| 30 |
### Task 1: MNIST Digit Classifier (Easy)
|
|
|
|
| 25 |
|
| 26 |
The small dataset subsets (5k–10k samples) make overfitting a **real, tangible problem** the agent must address — exactly like real low-data regimes practitioners face daily.
|
| 27 |
|
| 28 |
+
## Vision & Scalability
|
| 29 |
+
|
| 30 |
+
The long-term vision for this environment is to **teach AI agents to monitor and optimize the training of large-scale models on distributed systems** — multi-GPU clusters, sharded data pipelines, and fault-tolerant training loops. In production ML, human engineers spend significant time babysitting training runs: watching for loss spikes, adjusting learning rates, restarting from checkpoints, and rebalancing resources across nodes. An agent that masters these skills could dramatically accelerate the development cycle of foundation models.
|
| 31 |
+
|
| 32 |
+
To fit within current compute constraints (and the OpenEnv specification), the environment currently operates on small models trainable on standard CPUs. However, the core abstractions — observing training curves, adjusting hyperparameters mid-run, detecting convergence/divergence, and deciding when to stop — are **identical to those required at scale**. An agent that learns effective optimization strategies here can transfer those skills to larger, distributed settings as the environment scales up.
|
| 33 |
+
|
| 34 |
## Tasks
|
| 35 |
|
| 36 |
### Task 1: MNIST Digit Classifier (Easy)
|
inference.py
CHANGED
|
@@ -43,7 +43,8 @@ API_BASE_URL = os.environ.get(
|
|
| 43 |
)
|
| 44 |
MODEL_NAME = os.environ.get("MODEL_NAME", "gpt-4o-mini")
|
| 45 |
OPENAI_API_KEY = (
|
| 46 |
-
os.environ.get("
|
|
|
|
| 47 |
or os.environ.get("OPENROUTER_API_KEY")
|
| 48 |
or os.environ.get("GEMINI_API_KEY")
|
| 49 |
)
|
|
@@ -705,108 +706,143 @@ def run_task(client: OpenAI, scheduler: RequestScheduler, task_id: str) -> Dict[
|
|
| 705 |
task_stats = TaskStats()
|
| 706 |
task_started_at = time.time()
|
| 707 |
|
| 708 |
-
print(f"
|
| 709 |
-
print(f"Task: {task_id}")
|
| 710 |
-
print(f"{'=' * 60}")
|
| 711 |
-
|
| 712 |
-
with MLTrainerEnv(base_url=ENV_URL).sync() as env:
|
| 713 |
-
reset_result = env.reset(task_id=task_id)
|
| 714 |
-
metadata = merge_task_metadata(task_id, extract_observation_metadata(reset_result.observation))
|
| 715 |
-
latest_data: Dict[str, Any] = {}
|
| 716 |
-
action_summaries: List[str] = []
|
| 717 |
-
total_reward = 0.0
|
| 718 |
-
final_score = None
|
| 719 |
-
|
| 720 |
-
print(f" Task: {metadata.get('task_name', task_id)}")
|
| 721 |
-
print(f" Difficulty: {metadata.get('difficulty', '?')}")
|
| 722 |
-
print(f" Dataset: {metadata.get('dataset', '?')}")
|
| 723 |
-
print(f" Max epochs: {metadata.get('max_epochs', '?')}")
|
| 724 |
-
print(f" LLM decision budget: {max_decisions}")
|
| 725 |
-
|
| 726 |
-
for decision_index in range(max_decisions):
|
| 727 |
-
messages = build_messages(
|
| 728 |
-
metadata=metadata,
|
| 729 |
-
latest_data=latest_data,
|
| 730 |
-
action_summaries=action_summaries,
|
| 731 |
-
decision_index=decision_index,
|
| 732 |
-
max_decisions=max_decisions,
|
| 733 |
-
)
|
| 734 |
-
tool_call = request_action(
|
| 735 |
-
client=client,
|
| 736 |
-
scheduler=scheduler,
|
| 737 |
-
messages=messages,
|
| 738 |
-
stats=task_stats,
|
| 739 |
-
decision_index=decision_index,
|
| 740 |
-
max_decisions=max_decisions,
|
| 741 |
-
)
|
| 742 |
-
task_stats.decisions += 1
|
| 743 |
|
| 744 |
-
|
| 745 |
-
|
| 746 |
-
|
|
|
|
|
|
|
| 747 |
|
|
|
|
|
|
|
|
|
|
| 748 |
try:
|
| 749 |
-
|
| 750 |
-
except Exception as
|
| 751 |
-
|
| 752 |
-
|
| 753 |
-
|
| 754 |
-
|
| 755 |
-
|
| 756 |
-
|
| 757 |
-
|
| 758 |
-
result_data = normalize_tool_result(extract_tool_result_from_observation(observation))
|
| 759 |
-
if result_data:
|
| 760 |
-
latest_data = apply_tool_context(tool_name, arguments, latest_data, result_data)
|
| 761 |
-
else:
|
| 762 |
-
latest_data = apply_tool_context(
|
| 763 |
-
tool_name,
|
| 764 |
-
arguments,
|
| 765 |
-
latest_data,
|
| 766 |
-
extract_observation_metadata(observation),
|
| 767 |
-
)
|
| 768 |
-
action_summaries.append(action_summary(tool_name, arguments, latest_data, reward))
|
| 769 |
-
|
| 770 |
-
metadata_grade = extract_observation_metadata(observation).get("grade", {})
|
| 771 |
-
result_grade = latest_data.get("grade", {}) if isinstance(latest_data, dict) else {}
|
| 772 |
-
if result_grade:
|
| 773 |
-
final_score = result_grade.get("score")
|
| 774 |
-
print(f" Score: {final_score}")
|
| 775 |
-
elif metadata_grade:
|
| 776 |
-
final_score = metadata_grade.get("score")
|
| 777 |
-
print(f" Score: {final_score}")
|
| 778 |
-
|
| 779 |
-
print(f" Reward: {reward} | Done: {done}")
|
| 780 |
-
print(f" {compact_state_summary(metadata, latest_data)}")
|
| 781 |
-
|
| 782 |
-
if done:
|
| 783 |
-
break
|
| 784 |
-
else:
|
| 785 |
-
# LLM exhausted its decision budget without submitting.
|
| 786 |
-
# Auto-submit so the task still gets a score.
|
| 787 |
-
print(f" [Decision budget exhausted — auto-submitting model...]")
|
| 788 |
-
try:
|
| 789 |
-
step_result = env.step(CallToolAction(tool_name="submit_model", arguments={}))
|
| 790 |
-
observation = step_result.observation
|
| 791 |
-
reward = step_result.reward or 0.0
|
| 792 |
-
total_reward += reward
|
| 793 |
|
| 794 |
-
|
| 795 |
-
|
| 796 |
-
|
| 797 |
-
|
| 798 |
-
|
| 799 |
-
|
| 800 |
-
|
| 801 |
-
|
| 802 |
-
|
| 803 |
-
|
| 804 |
-
|
| 805 |
-
|
| 806 |
-
|
| 807 |
-
|
| 808 |
-
|
| 809 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 810 |
|
| 811 |
return {
|
| 812 |
"task_id": task_id,
|
|
|
|
| 43 |
)
|
| 44 |
MODEL_NAME = os.environ.get("MODEL_NAME", "gpt-4o-mini")
|
| 45 |
OPENAI_API_KEY = (
|
| 46 |
+
os.environ.get("HF_TOKEN")
|
| 47 |
+
or os.environ.get("OPENAI_API_KEY")
|
| 48 |
or os.environ.get("OPENROUTER_API_KEY")
|
| 49 |
or os.environ.get("GEMINI_API_KEY")
|
| 50 |
)
|
|
|
|
| 706 |
task_stats = TaskStats()
|
| 707 |
task_started_at = time.time()
|
| 708 |
|
| 709 |
+
print(f"[START] task={task_id} env=ml_training_optimizer model={MODEL_NAME}", flush=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 710 |
|
| 711 |
+
rewards: List[float] = []
|
| 712 |
+
total_reward = 0.0
|
| 713 |
+
final_score = 0.0
|
| 714 |
+
steps_taken = 0
|
| 715 |
+
success = False
|
| 716 |
|
| 717 |
+
try:
|
| 718 |
+
env_instance = MLTrainerEnv(base_url=ENV_URL).sync()
|
| 719 |
+
with env_instance as env:
|
| 720 |
try:
|
| 721 |
+
reset_result = env.reset(task_id=task_id)
|
| 722 |
+
except Exception as e:
|
| 723 |
+
# Need to swallow to trigger finally block properly
|
| 724 |
+
print(f"[DEBUG] env.reset() failed: {e}", flush=True)
|
| 725 |
+
raise e
|
| 726 |
+
|
| 727 |
+
metadata = merge_task_metadata(task_id, extract_observation_metadata(reset_result.observation))
|
| 728 |
+
latest_data: Dict[str, Any] = {}
|
| 729 |
+
action_summaries: List[str] = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 730 |
|
| 731 |
+
for decision_index in range(max_decisions):
|
| 732 |
+
try:
|
| 733 |
+
messages = build_messages(
|
| 734 |
+
metadata=metadata,
|
| 735 |
+
latest_data=latest_data,
|
| 736 |
+
action_summaries=action_summaries,
|
| 737 |
+
decision_index=decision_index,
|
| 738 |
+
max_decisions=max_decisions,
|
| 739 |
+
)
|
| 740 |
+
tool_call = request_action(
|
| 741 |
+
client=client,
|
| 742 |
+
scheduler=scheduler,
|
| 743 |
+
messages=messages,
|
| 744 |
+
stats=task_stats,
|
| 745 |
+
decision_index=decision_index,
|
| 746 |
+
max_decisions=max_decisions,
|
| 747 |
+
)
|
| 748 |
+
except Exception as e:
|
| 749 |
+
print(f"[DEBUG] model request failed: {e}", flush=True)
|
| 750 |
+
break
|
| 751 |
+
|
| 752 |
+
task_stats.decisions += 1
|
| 753 |
+
tool_name = tool_call["tool_name"]
|
| 754 |
+
arguments = tool_call["arguments"]
|
| 755 |
+
|
| 756 |
+
args_str = json.dumps(arguments, separators=(',', ':'))
|
| 757 |
+
action_str = f"{tool_name}({args_str})"
|
| 758 |
+
|
| 759 |
+
error = None
|
| 760 |
+
reward = 0.0
|
| 761 |
+
done = False
|
| 762 |
+
|
| 763 |
+
try:
|
| 764 |
+
step_result = env.step(CallToolAction(tool_name=tool_name, arguments=arguments))
|
| 765 |
+
observation = step_result.observation
|
| 766 |
+
reward = step_result.reward or 0.0
|
| 767 |
+
done = step_result.done
|
| 768 |
+
|
| 769 |
+
result_data = normalize_tool_result(extract_tool_result_from_observation(observation))
|
| 770 |
+
if result_data:
|
| 771 |
+
latest_data = apply_tool_context(tool_name, arguments, latest_data, result_data)
|
| 772 |
+
else:
|
| 773 |
+
latest_data = apply_tool_context(
|
| 774 |
+
tool_name,
|
| 775 |
+
arguments,
|
| 776 |
+
latest_data,
|
| 777 |
+
extract_observation_metadata(observation),
|
| 778 |
+
)
|
| 779 |
+
|
| 780 |
+
# Update score
|
| 781 |
+
metadata_grade = extract_observation_metadata(observation).get("grade", {})
|
| 782 |
+
result_grade = latest_data.get("grade", {}) if isinstance(latest_data, dict) else {}
|
| 783 |
+
if result_grade:
|
| 784 |
+
final_score = result_grade.get("score") or 0.0
|
| 785 |
+
elif metadata_grade:
|
| 786 |
+
final_score = metadata_grade.get("score") or 0.0
|
| 787 |
+
|
| 788 |
+
except Exception as exc:
|
| 789 |
+
error = str(exc)
|
| 790 |
+
done = True
|
| 791 |
+
|
| 792 |
+
rewards.append(reward)
|
| 793 |
+
total_reward += reward
|
| 794 |
+
steps_taken = decision_index + 1
|
| 795 |
+
|
| 796 |
+
error_val = error if error else "null"
|
| 797 |
+
error_val = error_val.replace('\n', ' ')
|
| 798 |
+
done_val = str(done).lower()
|
| 799 |
+
|
| 800 |
+
print(f"[STEP] step={steps_taken} action={action_str} reward={reward:.2f} done={done_val} error={error_val}", flush=True)
|
| 801 |
+
|
| 802 |
+
action_summaries.append(action_summary(tool_name, arguments, latest_data, reward))
|
| 803 |
+
|
| 804 |
+
if done:
|
| 805 |
+
break
|
| 806 |
+
else:
|
| 807 |
+
# auto-submit
|
| 808 |
+
try:
|
| 809 |
+
action_str = "submit_model({})"
|
| 810 |
+
step_result = env.step(CallToolAction(tool_name="submit_model", arguments={}))
|
| 811 |
+
observation = step_result.observation
|
| 812 |
+
reward = step_result.reward or 0.0
|
| 813 |
+
total_reward += reward
|
| 814 |
+
done = step_result.done
|
| 815 |
+
|
| 816 |
+
result_data = normalize_tool_result(extract_tool_result_from_observation(observation))
|
| 817 |
+
if result_data:
|
| 818 |
+
latest_data = apply_tool_context("submit_model", {}, latest_data, result_data)
|
| 819 |
+
|
| 820 |
+
metadata_grade = extract_observation_metadata(observation).get("grade", {})
|
| 821 |
+
result_grade = latest_data.get("grade", {}) if isinstance(latest_data, dict) else {}
|
| 822 |
+
if result_grade:
|
| 823 |
+
final_score = result_grade.get("score") or 0.0
|
| 824 |
+
elif metadata_grade:
|
| 825 |
+
final_score = metadata_grade.get("score") or 0.0
|
| 826 |
+
|
| 827 |
+
steps_taken += 1
|
| 828 |
+
rewards.append(reward)
|
| 829 |
+
print(f"[STEP] step={steps_taken} action={action_str} reward={reward:.2f} done={str(done).lower()} error=null", flush=True)
|
| 830 |
+
|
| 831 |
+
except Exception as exc:
|
| 832 |
+
pass
|
| 833 |
+
|
| 834 |
+
except Exception as e:
|
| 835 |
+
print(f"[DEBUG] task container failed: {e}", flush=True)
|
| 836 |
+
|
| 837 |
+
finally:
|
| 838 |
+
task_stats.elapsed_seconds = round(time.time() - task_started_at, 1)
|
| 839 |
+
if final_score is None:
|
| 840 |
+
final_score = 0.0
|
| 841 |
+
final_score = min(max(float(final_score), 0.0), 1.0)
|
| 842 |
+
success = final_score >= 0.1
|
| 843 |
+
|
| 844 |
+
rewards_str = ",".join(f"{float(r):.2f}" for r in rewards) if rewards else "0.00"
|
| 845 |
+
print(f"[END] success={str(success).lower()} steps={steps_taken} score={final_score:.3f} rewards={rewards_str}", flush=True)
|
| 846 |
|
| 847 |
return {
|
| 848 |
"task_id": task_id,
|
pyproject.toml
CHANGED
|
@@ -35,4 +35,13 @@ server = "ml_trainer_env.server.app:main"
|
|
| 35 |
[tool.setuptools]
|
| 36 |
include-package-data = true
|
| 37 |
packages = ["ml_trainer_env", "ml_trainer_env.server"]
|
| 38 |
-
package-dir = { "ml_trainer_env" = ".", "ml_trainer_env.server" = "server" }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
[tool.setuptools]
|
| 36 |
include-package-data = true
|
| 37 |
packages = ["ml_trainer_env", "ml_trainer_env.server"]
|
| 38 |
+
package-dir = { "ml_trainer_env" = ".", "ml_trainer_env.server" = "server" }
|
| 39 |
+
|
| 40 |
+
[tool.uv.sources]
|
| 41 |
+
torch = { index = "pytorch-cpu" }
|
| 42 |
+
torchvision = { index = "pytorch-cpu" }
|
| 43 |
+
|
| 44 |
+
[[tool.uv.index]]
|
| 45 |
+
name = "pytorch-cpu"
|
| 46 |
+
url = "https://download.pytorch.org/whl/cpu"
|
| 47 |
+
explicit = true
|
uv.lock
CHANGED
|
@@ -1,17 +1,21 @@
|
|
| 1 |
version = 1
|
| 2 |
-
revision =
|
| 3 |
requires-python = ">=3.10"
|
| 4 |
resolution-markers = [
|
| 5 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 6 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 7 |
-
"python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 8 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 9 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 10 |
-
"python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 11 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 12 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 13 |
-
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 14 |
-
"python_full_version < '3.11'",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
]
|
| 16 |
|
| 17 |
[[package]]
|
|
@@ -456,14 +460,14 @@ wheels = [
|
|
| 456 |
|
| 457 |
[[package]]
|
| 458 |
name = "click"
|
| 459 |
-
version = "8.3.
|
| 460 |
source = { registry = "https://pypi.org/simple" }
|
| 461 |
dependencies = [
|
| 462 |
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
| 463 |
]
|
| 464 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 465 |
wheels = [
|
| 466 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 467 |
]
|
| 468 |
|
| 469 |
[[package]]
|
|
@@ -653,79 +657,6 @@ wheels = [
|
|
| 653 |
{ url = "https://files.pythonhosted.org/packages/1a/89/843b53614b47f97fe1abc13f9a86efa5ec9e275292c457af1d4a60dc80e0/cryptography-46.0.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6728c49e3b2c180ef26f8e9f0a883a2c585638db64cf265b49c9ba10652d430e", size = 3409955, upload-time = "2026-03-25T23:34:48.465Z" },
|
| 654 |
]
|
| 655 |
|
| 656 |
-
[[package]]
|
| 657 |
-
name = "cuda-bindings"
|
| 658 |
-
version = "13.2.0"
|
| 659 |
-
source = { registry = "https://pypi.org/simple" }
|
| 660 |
-
dependencies = [
|
| 661 |
-
{ name = "cuda-pathfinder", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 662 |
-
]
|
| 663 |
-
wheels = [
|
| 664 |
-
{ url = "https://files.pythonhosted.org/packages/1a/fe/7351d7e586a8b4c9f89731bfe4cf0148223e8f9903ff09571f78b3fb0682/cuda_bindings-13.2.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08b395f79cb89ce0cd8effff07c4a1e20101b873c256a1aeb286e8fd7bd0f556", size = 5744254, upload-time = "2026-03-11T00:12:29.798Z" },
|
| 665 |
-
{ url = "https://files.pythonhosted.org/packages/aa/ef/184aa775e970fc089942cd9ec6302e6e44679d4c14549c6a7ea45bf7f798/cuda_bindings-13.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6f3682ec3c4769326aafc67c2ba669d97d688d0b7e63e659d36d2f8b72f32d6", size = 6329075, upload-time = "2026-03-11T00:12:32.319Z" },
|
| 666 |
-
{ url = "https://files.pythonhosted.org/packages/e0/a9/3a8241c6e19483ac1f1dcf5c10238205dcb8a6e9d0d4d4709240dff28ff4/cuda_bindings-13.2.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:721104c603f059780d287969be3d194a18d0cc3b713ed9049065a1107706759d", size = 5730273, upload-time = "2026-03-11T00:12:37.18Z" },
|
| 667 |
-
{ url = "https://files.pythonhosted.org/packages/e9/94/2748597f47bb1600cd466b20cab4159f1530a3a33fe7f70fee199b3abb9e/cuda_bindings-13.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1eba9504ac70667dd48313395fe05157518fd6371b532790e96fbb31bbb5a5e1", size = 6313924, upload-time = "2026-03-11T00:12:39.462Z" },
|
| 668 |
-
{ url = "https://files.pythonhosted.org/packages/52/c8/b2589d68acf7e3d63e2be330b84bc25712e97ed799affbca7edd7eae25d6/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e865447abfb83d6a98ad5130ed3c70b1fc295ae3eeee39fd07b4ddb0671b6788", size = 5722404, upload-time = "2026-03-11T00:12:44.041Z" },
|
| 669 |
-
{ url = "https://files.pythonhosted.org/packages/1f/92/f899f7bbb5617bb65ec52a6eac1e9a1447a86b916c4194f8a5001b8cde0c/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46d8776a55d6d5da9dd6e9858fba2efcda2abe6743871dee47dd06eb8cb6d955", size = 6320619, upload-time = "2026-03-11T00:12:45.939Z" },
|
| 670 |
-
{ url = "https://files.pythonhosted.org/packages/df/93/eef988860a3ca985f82c4f3174fc0cdd94e07331ba9a92e8e064c260337f/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6629ca2df6f795b784752409bcaedbd22a7a651b74b56a165ebc0c9dcbd504d0", size = 5614610, upload-time = "2026-03-11T00:12:50.337Z" },
|
| 671 |
-
{ url = "https://files.pythonhosted.org/packages/18/23/6db3aba46864aee357ab2415135b3fe3da7e9f1fa0221fa2a86a5968099c/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7dca0da053d3b4cc4869eff49c61c03f3c5dbaa0bcd712317a358d5b8f3f385d", size = 6149914, upload-time = "2026-03-11T00:12:52.374Z" },
|
| 672 |
-
{ url = "https://files.pythonhosted.org/packages/c0/87/87a014f045b77c6de5c8527b0757fe644417b184e5367db977236a141602/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6464b30f46692d6c7f65d4a0e0450d81dd29de3afc1bb515653973d01c2cd6e", size = 5685673, upload-time = "2026-03-11T00:12:56.371Z" },
|
| 673 |
-
{ url = "https://files.pythonhosted.org/packages/ee/5e/c0fe77a73aaefd3fff25ffaccaac69c5a63eafdf8b9a4c476626ef0ac703/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4af9f3e1be603fa12d5ad6cfca7844c9d230befa9792b5abdf7dd79979c3626", size = 6191386, upload-time = "2026-03-11T00:12:58.965Z" },
|
| 674 |
-
{ url = "https://files.pythonhosted.org/packages/5f/58/ed2c3b39c8dd5f96aa7a4abef0d47a73932c7a988e30f5fa428f00ed0da1/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df850a1ff8ce1b3385257b08e47b70e959932f5f432d0a4e46a355962b4e4771", size = 5507469, upload-time = "2026-03-11T00:13:04.063Z" },
|
| 675 |
-
{ url = "https://files.pythonhosted.org/packages/1f/01/0c941b112ceeb21439b05895eace78ca1aa2eaaf695c8521a068fd9b4c00/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8a16384c6494e5485f39314b0b4afb04bee48d49edb16d5d8593fd35bbd231b", size = 6059693, upload-time = "2026-03-11T00:13:06.003Z" },
|
| 676 |
-
]
|
| 677 |
-
|
| 678 |
-
[[package]]
|
| 679 |
-
name = "cuda-pathfinder"
|
| 680 |
-
version = "1.5.0"
|
| 681 |
-
source = { registry = "https://pypi.org/simple" }
|
| 682 |
-
wheels = [
|
| 683 |
-
{ url = "https://files.pythonhosted.org/packages/93/66/0c02bd330e7d976f83fa68583d6198d76f23581bcbb5c0e98a6148f326e5/cuda_pathfinder-1.5.0-py3-none-any.whl", hash = "sha256:498f90a9e9de36044a7924742aecce11c50c49f735f1bc53e05aa46de9ea4110", size = 49739, upload-time = "2026-03-24T21:14:30.869Z" },
|
| 684 |
-
]
|
| 685 |
-
|
| 686 |
-
[[package]]
|
| 687 |
-
name = "cuda-toolkit"
|
| 688 |
-
version = "13.0.2"
|
| 689 |
-
source = { registry = "https://pypi.org/simple" }
|
| 690 |
-
wheels = [
|
| 691 |
-
{ url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" },
|
| 692 |
-
]
|
| 693 |
-
|
| 694 |
-
[package.optional-dependencies]
|
| 695 |
-
cublas = [
|
| 696 |
-
{ name = "nvidia-cublas", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 697 |
-
]
|
| 698 |
-
cudart = [
|
| 699 |
-
{ name = "nvidia-cuda-runtime", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 700 |
-
]
|
| 701 |
-
cufft = [
|
| 702 |
-
{ name = "nvidia-cufft", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 703 |
-
]
|
| 704 |
-
cufile = [
|
| 705 |
-
{ name = "nvidia-cufile", marker = "sys_platform == 'linux'" },
|
| 706 |
-
]
|
| 707 |
-
cupti = [
|
| 708 |
-
{ name = "nvidia-cuda-cupti", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 709 |
-
]
|
| 710 |
-
curand = [
|
| 711 |
-
{ name = "nvidia-curand", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 712 |
-
]
|
| 713 |
-
cusolver = [
|
| 714 |
-
{ name = "nvidia-cusolver", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 715 |
-
]
|
| 716 |
-
cusparse = [
|
| 717 |
-
{ name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 718 |
-
]
|
| 719 |
-
nvjitlink = [
|
| 720 |
-
{ name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 721 |
-
]
|
| 722 |
-
nvrtc = [
|
| 723 |
-
{ name = "nvidia-cuda-nvrtc", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 724 |
-
]
|
| 725 |
-
nvtx = [
|
| 726 |
-
{ name = "nvidia-nvtx", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" },
|
| 727 |
-
]
|
| 728 |
-
|
| 729 |
[[package]]
|
| 730 |
name = "cyclopts"
|
| 731 |
version = "4.10.1"
|
|
@@ -881,7 +812,7 @@ wheels = [
|
|
| 881 |
|
| 882 |
[[package]]
|
| 883 |
name = "gradio"
|
| 884 |
-
version = "6.
|
| 885 |
source = { registry = "https://pypi.org/simple" }
|
| 886 |
dependencies = [
|
| 887 |
{ name = "aiofiles" },
|
|
@@ -917,9 +848,9 @@ dependencies = [
|
|
| 917 |
{ name = "typing-extensions" },
|
| 918 |
{ name = "uvicorn" },
|
| 919 |
]
|
| 920 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 921 |
wheels = [
|
| 922 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 923 |
]
|
| 924 |
|
| 925 |
[[package]]
|
|
@@ -1040,7 +971,7 @@ wheels = [
|
|
| 1040 |
|
| 1041 |
[[package]]
|
| 1042 |
name = "huggingface-hub"
|
| 1043 |
-
version = "1.
|
| 1044 |
source = { registry = "https://pypi.org/simple" }
|
| 1045 |
dependencies = [
|
| 1046 |
{ name = "filelock" },
|
|
@@ -1053,9 +984,9 @@ dependencies = [
|
|
| 1053 |
{ name = "typer" },
|
| 1054 |
{ name = "typing-extensions" },
|
| 1055 |
]
|
| 1056 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1057 |
wheels = [
|
| 1058 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1059 |
]
|
| 1060 |
|
| 1061 |
[[package]]
|
|
@@ -1409,7 +1340,7 @@ wheels = [
|
|
| 1409 |
|
| 1410 |
[[package]]
|
| 1411 |
name = "mcp"
|
| 1412 |
-
version = "1.
|
| 1413 |
source = { registry = "https://pypi.org/simple" }
|
| 1414 |
dependencies = [
|
| 1415 |
{ name = "anyio" },
|
|
@@ -1427,9 +1358,9 @@ dependencies = [
|
|
| 1427 |
{ name = "typing-inspection" },
|
| 1428 |
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
| 1429 |
]
|
| 1430 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1431 |
wheels = [
|
| 1432 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1433 |
]
|
| 1434 |
|
| 1435 |
[[package]]
|
|
@@ -1443,11 +1374,11 @@ wheels = [
|
|
| 1443 |
|
| 1444 |
[[package]]
|
| 1445 |
name = "more-itertools"
|
| 1446 |
-
version = "
|
| 1447 |
source = { registry = "https://pypi.org/simple" }
|
| 1448 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1449 |
wheels = [
|
| 1450 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1451 |
]
|
| 1452 |
|
| 1453 |
[[package]]
|
|
@@ -1464,7 +1395,8 @@ name = "networkx"
|
|
| 1464 |
version = "3.4.2"
|
| 1465 |
source = { registry = "https://pypi.org/simple" }
|
| 1466 |
resolution-markers = [
|
| 1467 |
-
"python_full_version < '3.11'",
|
|
|
|
| 1468 |
]
|
| 1469 |
sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" }
|
| 1470 |
wheels = [
|
|
@@ -1478,13 +1410,16 @@ source = { registry = "https://pypi.org/simple" }
|
|
| 1478 |
resolution-markers = [
|
| 1479 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 1480 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 1481 |
-
"python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1482 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 1483 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 1484 |
-
"python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1485 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 1486 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 1487 |
-
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
|
|
|
|
|
|
|
|
|
| 1488 |
]
|
| 1489 |
sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" }
|
| 1490 |
wheels = [
|
|
@@ -1496,7 +1431,8 @@ name = "numpy"
|
|
| 1496 |
version = "2.2.6"
|
| 1497 |
source = { registry = "https://pypi.org/simple" }
|
| 1498 |
resolution-markers = [
|
| 1499 |
-
"python_full_version < '3.11'",
|
|
|
|
| 1500 |
]
|
| 1501 |
sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" }
|
| 1502 |
wheels = [
|
|
@@ -1563,13 +1499,16 @@ source = { registry = "https://pypi.org/simple" }
|
|
| 1563 |
resolution-markers = [
|
| 1564 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 1565 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 1566 |
-
"python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1567 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 1568 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 1569 |
-
"python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1570 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 1571 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 1572 |
-
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
|
|
|
|
|
|
|
|
|
| 1573 |
]
|
| 1574 |
sdist = { url = "https://files.pythonhosted.org/packages/d7/9f/b8cef5bffa569759033adda9481211426f12f53299629b410340795c2514/numpy-2.4.4.tar.gz", hash = "sha256:2d390634c5182175533585cc89f3608a4682ccb173cc9bb940b2881c8d6f8fa0", size = 20731587, upload-time = "2026-03-29T13:22:01.298Z" }
|
| 1575 |
wheels = [
|
|
@@ -1646,155 +1585,6 @@ wheels = [
|
|
| 1646 |
{ url = "https://files.pythonhosted.org/packages/04/74/f4c001f4714c3ad9ce037e18cf2b9c64871a84951eaa0baf683a9ca9301c/numpy-2.4.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f2cf083b324a467e1ab358c105f6cad5ea950f50524668a80c486ff1db24e119", size = 12509075, upload-time = "2026-03-29T13:21:57.644Z" },
|
| 1647 |
]
|
| 1648 |
|
| 1649 |
-
[[package]]
|
| 1650 |
-
name = "nvidia-cublas"
|
| 1651 |
-
version = "13.1.0.3"
|
| 1652 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1653 |
-
wheels = [
|
| 1654 |
-
{ url = "https://files.pythonhosted.org/packages/e1/a5/fce49e2ae977e0ccc084e5adafceb4f0ac0c8333cb6863501618a7277f67/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c86fc7f7ae36d7528288c5d88098edcb7b02c633d262e7ddbb86b0ad91be5df2", size = 542851226, upload-time = "2025-10-09T08:59:04.818Z" },
|
| 1655 |
-
{ url = "https://files.pythonhosted.org/packages/e7/44/423ac00af4dd95a5aeb27207e2c0d9b7118702149bf4704c3ddb55bb7429/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ee8722c1f0145ab246bccb9e452153b5e0515fd094c3678df50b2a0888b8b171", size = 423133236, upload-time = "2025-10-09T08:59:32.536Z" },
|
| 1656 |
-
]
|
| 1657 |
-
|
| 1658 |
-
[[package]]
|
| 1659 |
-
name = "nvidia-cuda-cupti"
|
| 1660 |
-
version = "13.0.85"
|
| 1661 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1662 |
-
wheels = [
|
| 1663 |
-
{ url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" },
|
| 1664 |
-
{ url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" },
|
| 1665 |
-
]
|
| 1666 |
-
|
| 1667 |
-
[[package]]
|
| 1668 |
-
name = "nvidia-cuda-nvrtc"
|
| 1669 |
-
version = "13.0.88"
|
| 1670 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1671 |
-
wheels = [
|
| 1672 |
-
{ url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" },
|
| 1673 |
-
{ url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" },
|
| 1674 |
-
]
|
| 1675 |
-
|
| 1676 |
-
[[package]]
|
| 1677 |
-
name = "nvidia-cuda-runtime"
|
| 1678 |
-
version = "13.0.96"
|
| 1679 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1680 |
-
wheels = [
|
| 1681 |
-
{ url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" },
|
| 1682 |
-
{ url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" },
|
| 1683 |
-
]
|
| 1684 |
-
|
| 1685 |
-
[[package]]
|
| 1686 |
-
name = "nvidia-cudnn-cu13"
|
| 1687 |
-
version = "9.19.0.56"
|
| 1688 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1689 |
-
dependencies = [
|
| 1690 |
-
{ name = "nvidia-cublas", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 1691 |
-
]
|
| 1692 |
-
wheels = [
|
| 1693 |
-
{ url = "https://files.pythonhosted.org/packages/f1/84/26025437c1e6b61a707442184fa0c03d083b661adf3a3eecfd6d21677740/nvidia_cudnn_cu13-9.19.0.56-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:6ed29ffaee1176c612daf442e4dd6cfeb6a0caa43ddcbeb59da94953030b1be4", size = 433781201, upload-time = "2026-02-03T20:40:53.805Z" },
|
| 1694 |
-
{ url = "https://files.pythonhosted.org/packages/a3/22/0b4b932655d17a6da1b92fa92ab12844b053bb2ac2475e179ba6f043da1e/nvidia_cudnn_cu13-9.19.0.56-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:d20e1734305e9d68889a96e3f35094d733ff1f83932ebe462753973e53a572bf", size = 366066321, upload-time = "2026-02-03T20:44:52.837Z" },
|
| 1695 |
-
]
|
| 1696 |
-
|
| 1697 |
-
[[package]]
|
| 1698 |
-
name = "nvidia-cufft"
|
| 1699 |
-
version = "12.0.0.61"
|
| 1700 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1701 |
-
dependencies = [
|
| 1702 |
-
{ name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 1703 |
-
]
|
| 1704 |
-
wheels = [
|
| 1705 |
-
{ url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" },
|
| 1706 |
-
{ url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" },
|
| 1707 |
-
]
|
| 1708 |
-
|
| 1709 |
-
[[package]]
|
| 1710 |
-
name = "nvidia-cufile"
|
| 1711 |
-
version = "1.15.1.6"
|
| 1712 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1713 |
-
wheels = [
|
| 1714 |
-
{ url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" },
|
| 1715 |
-
{ url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" },
|
| 1716 |
-
]
|
| 1717 |
-
|
| 1718 |
-
[[package]]
|
| 1719 |
-
name = "nvidia-curand"
|
| 1720 |
-
version = "10.4.0.35"
|
| 1721 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1722 |
-
wheels = [
|
| 1723 |
-
{ url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" },
|
| 1724 |
-
{ url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" },
|
| 1725 |
-
]
|
| 1726 |
-
|
| 1727 |
-
[[package]]
|
| 1728 |
-
name = "nvidia-cusolver"
|
| 1729 |
-
version = "12.0.4.66"
|
| 1730 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1731 |
-
dependencies = [
|
| 1732 |
-
{ name = "nvidia-cublas", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 1733 |
-
{ name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 1734 |
-
{ name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 1735 |
-
]
|
| 1736 |
-
wheels = [
|
| 1737 |
-
{ url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" },
|
| 1738 |
-
{ url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" },
|
| 1739 |
-
]
|
| 1740 |
-
|
| 1741 |
-
[[package]]
|
| 1742 |
-
name = "nvidia-cusparse"
|
| 1743 |
-
version = "12.6.3.3"
|
| 1744 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1745 |
-
dependencies = [
|
| 1746 |
-
{ name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 1747 |
-
]
|
| 1748 |
-
wheels = [
|
| 1749 |
-
{ url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" },
|
| 1750 |
-
{ url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" },
|
| 1751 |
-
]
|
| 1752 |
-
|
| 1753 |
-
[[package]]
|
| 1754 |
-
name = "nvidia-cusparselt-cu13"
|
| 1755 |
-
version = "0.8.0"
|
| 1756 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1757 |
-
wheels = [
|
| 1758 |
-
{ url = "https://files.pythonhosted.org/packages/46/10/8dcd1175260706a2fc92a16a52e306b71d4c1ea0b0cc4a9484183399818a/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:400c6ed1cf6780fc6efedd64ec9f1345871767e6a1a0a552a1ea0578117ea77c", size = 220791277, upload-time = "2025-08-13T19:22:40.982Z" },
|
| 1759 |
-
{ url = "https://files.pythonhosted.org/packages/fd/53/43b0d71f4e702fa9733f8b4571fdca50a8813f1e450b656c239beff12315/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:25e30a8a7323935d4ad0340b95a0b69926eee755767e8e0b1cf8dd85b197d3fd", size = 169884119, upload-time = "2025-08-13T19:23:41.967Z" },
|
| 1760 |
-
]
|
| 1761 |
-
|
| 1762 |
-
[[package]]
|
| 1763 |
-
name = "nvidia-nccl-cu13"
|
| 1764 |
-
version = "2.28.9"
|
| 1765 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1766 |
-
wheels = [
|
| 1767 |
-
{ url = "https://files.pythonhosted.org/packages/39/55/1920646a2e43ffd4fc958536b276197ed740e9e0c54105b4bb3521591fc7/nvidia_nccl_cu13-2.28.9-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:01c873ba1626b54caa12272ed228dc5b2781545e0ae8ba3f432a8ef1c6d78643", size = 196561677, upload-time = "2025-11-18T05:49:03.45Z" },
|
| 1768 |
-
{ url = "https://files.pythonhosted.org/packages/b0/b4/878fefaad5b2bcc6fcf8d474a25e3e3774bc5133e4b58adff4d0bca238bc/nvidia_nccl_cu13-2.28.9-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:e4553a30f34195f3fa1da02a6da3d6337d28f2003943aa0a3d247bbc25fefc42", size = 196493177, upload-time = "2025-11-18T05:49:17.677Z" },
|
| 1769 |
-
]
|
| 1770 |
-
|
| 1771 |
-
[[package]]
|
| 1772 |
-
name = "nvidia-nvjitlink"
|
| 1773 |
-
version = "13.0.88"
|
| 1774 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1775 |
-
wheels = [
|
| 1776 |
-
{ url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" },
|
| 1777 |
-
{ url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" },
|
| 1778 |
-
]
|
| 1779 |
-
|
| 1780 |
-
[[package]]
|
| 1781 |
-
name = "nvidia-nvshmem-cu13"
|
| 1782 |
-
version = "3.4.5"
|
| 1783 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1784 |
-
wheels = [
|
| 1785 |
-
{ url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" },
|
| 1786 |
-
{ url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" },
|
| 1787 |
-
]
|
| 1788 |
-
|
| 1789 |
-
[[package]]
|
| 1790 |
-
name = "nvidia-nvtx"
|
| 1791 |
-
version = "13.0.85"
|
| 1792 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1793 |
-
wheels = [
|
| 1794 |
-
{ url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" },
|
| 1795 |
-
{ url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" },
|
| 1796 |
-
]
|
| 1797 |
-
|
| 1798 |
[[package]]
|
| 1799 |
name = "openai"
|
| 1800 |
version = "2.30.0"
|
|
@@ -1872,8 +1662,10 @@ dependencies = [
|
|
| 1872 |
{ name = "pydantic" },
|
| 1873 |
{ name = "python-dotenv" },
|
| 1874 |
{ name = "requests" },
|
| 1875 |
-
{ name = "torch" },
|
| 1876 |
-
{ name = "
|
|
|
|
|
|
|
| 1877 |
{ name = "uvicorn" },
|
| 1878 |
]
|
| 1879 |
|
|
@@ -1893,8 +1685,8 @@ requires-dist = [
|
|
| 1893 |
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.0.0" },
|
| 1894 |
{ name = "python-dotenv", specifier = ">=1.0.0" },
|
| 1895 |
{ name = "requests", specifier = ">=2.31.0" },
|
| 1896 |
-
{ name = "torch", specifier = ">=2.0.0" },
|
| 1897 |
-
{ name = "torchvision", specifier = ">=0.15.0" },
|
| 1898 |
{ name = "uvicorn", specifier = ">=0.24.0" },
|
| 1899 |
]
|
| 1900 |
provides-extras = ["dev"]
|
|
@@ -2007,7 +1799,8 @@ name = "pandas"
|
|
| 2007 |
version = "2.3.3"
|
| 2008 |
source = { registry = "https://pypi.org/simple" }
|
| 2009 |
resolution-markers = [
|
| 2010 |
-
"python_full_version < '3.11'",
|
|
|
|
| 2011 |
]
|
| 2012 |
dependencies = [
|
| 2013 |
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
|
@@ -2073,13 +1866,16 @@ source = { registry = "https://pypi.org/simple" }
|
|
| 2073 |
resolution-markers = [
|
| 2074 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 2075 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 2076 |
-
"python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2077 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 2078 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 2079 |
-
"python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2080 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 2081 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 2082 |
-
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
|
|
|
|
|
|
|
|
|
| 2083 |
]
|
| 2084 |
dependencies = [
|
| 2085 |
{ name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
|
@@ -2494,7 +2290,7 @@ wheels = [
|
|
| 2494 |
|
| 2495 |
[[package]]
|
| 2496 |
name = "pytest"
|
| 2497 |
-
version = "9.0.
|
| 2498 |
source = { registry = "https://pypi.org/simple" }
|
| 2499 |
dependencies = [
|
| 2500 |
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
@@ -2505,9 +2301,9 @@ dependencies = [
|
|
| 2505 |
{ name = "pygments" },
|
| 2506 |
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
| 2507 |
]
|
| 2508 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 2509 |
wheels = [
|
| 2510 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2511 |
]
|
| 2512 |
|
| 2513 |
[[package]]
|
|
@@ -2547,11 +2343,11 @@ wheels = [
|
|
| 2547 |
|
| 2548 |
[[package]]
|
| 2549 |
name = "python-multipart"
|
| 2550 |
-
version = "0.0.
|
| 2551 |
source = { registry = "https://pypi.org/simple" }
|
| 2552 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 2553 |
wheels = [
|
| 2554 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2555 |
]
|
| 2556 |
|
| 2557 |
[[package]]
|
|
@@ -2852,8 +2648,8 @@ name = "secretstorage"
|
|
| 2852 |
version = "3.5.0"
|
| 2853 |
source = { registry = "https://pypi.org/simple" }
|
| 2854 |
dependencies = [
|
| 2855 |
-
{ name = "cryptography", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 2856 |
-
{ name = "jeepney", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 2857 |
]
|
| 2858 |
sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
|
| 2859 |
wheels = [
|
|
@@ -2920,15 +2716,15 @@ wheels = [
|
|
| 2920 |
|
| 2921 |
[[package]]
|
| 2922 |
name = "starlette"
|
| 2923 |
-
version = "0.
|
| 2924 |
source = { registry = "https://pypi.org/simple" }
|
| 2925 |
dependencies = [
|
| 2926 |
{ name = "anyio" },
|
| 2927 |
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
| 2928 |
]
|
| 2929 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 2930 |
wheels = [
|
| 2931 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2932 |
]
|
| 2933 |
|
| 2934 |
[[package]]
|
|
@@ -3018,94 +2814,160 @@ wheels = [
|
|
| 3018 |
[[package]]
|
| 3019 |
name = "torch"
|
| 3020 |
version = "2.11.0"
|
| 3021 |
-
source = { registry = "https://
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3022 |
dependencies = [
|
| 3023 |
-
{ name = "
|
| 3024 |
-
{ name = "
|
| 3025 |
-
{ name = "
|
| 3026 |
-
{ name = "
|
| 3027 |
-
{ name = "
|
| 3028 |
-
{ name = "
|
| 3029 |
-
{ name = "
|
| 3030 |
-
{ name = "
|
| 3031 |
-
{ name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" },
|
| 3032 |
-
{ name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" },
|
| 3033 |
-
{ name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" },
|
| 3034 |
-
{ name = "setuptools" },
|
| 3035 |
-
{ name = "sympy" },
|
| 3036 |
-
{ name = "triton", marker = "sys_platform == 'linux'" },
|
| 3037 |
-
{ name = "typing-extensions" },
|
| 3038 |
]
|
| 3039 |
wheels = [
|
| 3040 |
-
{ url = "https://
|
| 3041 |
-
{ url = "https://
|
| 3042 |
-
{ url = "https://
|
| 3043 |
-
{ url = "https://
|
| 3044 |
-
{ url = "https://
|
| 3045 |
-
{ url = "https://
|
| 3046 |
-
{ url = "https://
|
| 3047 |
-
|
| 3048 |
-
|
| 3049 |
-
|
| 3050 |
-
|
| 3051 |
-
|
| 3052 |
-
|
| 3053 |
-
|
| 3054 |
-
|
| 3055 |
-
|
| 3056 |
-
|
| 3057 |
-
|
| 3058 |
-
|
| 3059 |
-
|
| 3060 |
-
|
| 3061 |
-
|
| 3062 |
-
|
| 3063 |
-
|
| 3064 |
-
|
| 3065 |
-
|
| 3066 |
-
{
|
| 3067 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3068 |
]
|
| 3069 |
|
| 3070 |
[[package]]
|
| 3071 |
name = "torchvision"
|
| 3072 |
version = "0.26.0"
|
| 3073 |
-
source = { registry = "https://
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3074 |
dependencies = [
|
| 3075 |
-
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
| 3076 |
-
{ name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
| 3077 |
-
{ name = "pillow" },
|
| 3078 |
-
{ name = "torch" },
|
| 3079 |
-
]
|
| 3080 |
-
wheels = [
|
| 3081 |
-
{ url = "https://
|
| 3082 |
-
{ url = "https://
|
| 3083 |
-
{ url = "https://
|
| 3084 |
-
{ url = "https://
|
| 3085 |
-
{ url = "https://
|
| 3086 |
-
{ url = "https://
|
| 3087 |
-
{ url = "https://
|
| 3088 |
-
|
| 3089 |
-
|
| 3090 |
-
|
| 3091 |
-
|
| 3092 |
-
|
| 3093 |
-
|
| 3094 |
-
|
| 3095 |
-
|
| 3096 |
-
|
| 3097 |
-
|
| 3098 |
-
|
| 3099 |
-
|
| 3100 |
-
|
| 3101 |
-
|
| 3102 |
-
|
| 3103 |
-
|
| 3104 |
-
|
| 3105 |
-
|
| 3106 |
-
|
| 3107 |
-
{
|
| 3108 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3109 |
]
|
| 3110 |
|
| 3111 |
[[package]]
|
|
@@ -3120,27 +2982,6 @@ wheels = [
|
|
| 3120 |
{ url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" },
|
| 3121 |
]
|
| 3122 |
|
| 3123 |
-
[[package]]
|
| 3124 |
-
name = "triton"
|
| 3125 |
-
version = "3.6.0"
|
| 3126 |
-
source = { registry = "https://pypi.org/simple" }
|
| 3127 |
-
wheels = [
|
| 3128 |
-
{ url = "https://files.pythonhosted.org/packages/44/ba/b1b04f4b291a3205d95ebd24465de0e5bf010a2df27a4e58a9b5f039d8f2/triton-3.6.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c723cfb12f6842a0ae94ac307dba7e7a44741d720a40cf0e270ed4a4e3be781", size = 175972180, upload-time = "2026-01-20T16:15:53.664Z" },
|
| 3129 |
-
{ url = "https://files.pythonhosted.org/packages/8c/f7/f1c9d3424ab199ac53c2da567b859bcddbb9c9e7154805119f8bd95ec36f/triton-3.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6550fae429e0667e397e5de64b332d1e5695b73650ee75a6146e2e902770bea", size = 188105201, upload-time = "2026-01-20T16:00:29.272Z" },
|
| 3130 |
-
{ url = "https://files.pythonhosted.org/packages/0f/2c/96f92f3c60387e14cc45aed49487f3486f89ea27106c1b1376913c62abe4/triton-3.6.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49df5ef37379c0c2b5c0012286f80174fcf0e073e5ade1ca9a86c36814553651", size = 176081190, upload-time = "2026-01-20T16:16:00.523Z" },
|
| 3131 |
-
{ url = "https://files.pythonhosted.org/packages/e0/12/b05ba554d2c623bffa59922b94b0775673de251f468a9609bc9e45de95e9/triton-3.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8e323d608e3a9bfcc2d9efcc90ceefb764a82b99dea12a86d643c72539ad5d3", size = 188214640, upload-time = "2026-01-20T16:00:35.869Z" },
|
| 3132 |
-
{ url = "https://files.pythonhosted.org/packages/17/5d/08201db32823bdf77a0e2b9039540080b2e5c23a20706ddba942924ebcd6/triton-3.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:374f52c11a711fd062b4bfbb201fd9ac0a5febd28a96fb41b4a0f51dde3157f4", size = 176128243, upload-time = "2026-01-20T16:16:07.857Z" },
|
| 3133 |
-
{ url = "https://files.pythonhosted.org/packages/ab/a8/cdf8b3e4c98132f965f88c2313a4b493266832ad47fb52f23d14d4f86bb5/triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74caf5e34b66d9f3a429af689c1c7128daba1d8208df60e81106b115c00d6fca", size = 188266850, upload-time = "2026-01-20T16:00:43.041Z" },
|
| 3134 |
-
{ url = "https://files.pythonhosted.org/packages/3c/12/34d71b350e89a204c2c7777a9bba0dcf2f19a5bfdd70b57c4dbc5ffd7154/triton-3.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448e02fe6dc898e9e5aa89cf0ee5c371e99df5aa5e8ad976a80b93334f3494fd", size = 176133521, upload-time = "2026-01-20T16:16:13.321Z" },
|
| 3135 |
-
{ url = "https://files.pythonhosted.org/packages/f9/0b/37d991d8c130ce81a8728ae3c25b6e60935838e9be1b58791f5997b24a54/triton-3.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10c7f76c6e72d2ef08df639e3d0d30729112f47a56b0c81672edc05ee5116ac9", size = 188289450, upload-time = "2026-01-20T16:00:49.136Z" },
|
| 3136 |
-
{ url = "https://files.pythonhosted.org/packages/ce/4e/41b0c8033b503fd3cfcd12392cdd256945026a91ff02452bef40ec34bee7/triton-3.6.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1722e172d34e32abc3eb7711d0025bb69d7959ebea84e3b7f7a341cd7ed694d6", size = 176276087, upload-time = "2026-01-20T16:16:18.989Z" },
|
| 3137 |
-
{ url = "https://files.pythonhosted.org/packages/35/f8/9c66bfc55361ec6d0e4040a0337fb5924ceb23de4648b8a81ae9d33b2b38/triton-3.6.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d002e07d7180fd65e622134fbd980c9a3d4211fb85224b56a0a0efbd422ab72f", size = 188400296, upload-time = "2026-01-20T16:00:56.042Z" },
|
| 3138 |
-
{ url = "https://files.pythonhosted.org/packages/49/55/5ecf0dcaa0f2fbbd4420f7ef227ee3cb172e91e5fede9d0ecaddc43363b4/triton-3.6.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5523241e7d1abca00f1d240949eebdd7c673b005edbbce0aca95b8191f1d43", size = 176138577, upload-time = "2026-01-20T16:16:25.426Z" },
|
| 3139 |
-
{ url = "https://files.pythonhosted.org/packages/df/3d/9e7eee57b37c80cec63322c0231bb6da3cfe535a91d7a4d64896fcb89357/triton-3.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a17a5d5985f0ac494ed8a8e54568f092f7057ef60e1b0fa09d3fd1512064e803", size = 188273063, upload-time = "2026-01-20T16:01:07.278Z" },
|
| 3140 |
-
{ url = "https://files.pythonhosted.org/packages/48/db/56ee649cab5eaff4757541325aca81f52d02d4a7cd3506776cad2451e060/triton-3.6.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b3a97e8ed304dfa9bd23bb41ca04cdf6b2e617d5e782a8653d616037a5d537d", size = 176274804, upload-time = "2026-01-20T16:16:31.528Z" },
|
| 3141 |
-
{ url = "https://files.pythonhosted.org/packages/f6/56/6113c23ff46c00aae423333eb58b3e60bdfe9179d542781955a5e1514cb3/triton-3.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46bd1c1af4b6704e554cad2eeb3b0a6513a980d470ccfa63189737340c7746a7", size = 188397994, upload-time = "2026-01-20T16:01:14.236Z" },
|
| 3142 |
-
]
|
| 3143 |
-
|
| 3144 |
[[package]]
|
| 3145 |
name = "typer"
|
| 3146 |
version = "0.24.1"
|
|
@@ -3179,20 +3020,20 @@ wheels = [
|
|
| 3179 |
|
| 3180 |
[[package]]
|
| 3181 |
name = "tzdata"
|
| 3182 |
-
version = "
|
| 3183 |
source = { registry = "https://pypi.org/simple" }
|
| 3184 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 3185 |
wheels = [
|
| 3186 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3187 |
]
|
| 3188 |
|
| 3189 |
[[package]]
|
| 3190 |
name = "uncalled-for"
|
| 3191 |
-
version = "0.
|
| 3192 |
source = { registry = "https://pypi.org/simple" }
|
| 3193 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 3194 |
wheels = [
|
| 3195 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3196 |
]
|
| 3197 |
|
| 3198 |
[[package]]
|
|
@@ -3206,16 +3047,16 @@ wheels = [
|
|
| 3206 |
|
| 3207 |
[[package]]
|
| 3208 |
name = "uvicorn"
|
| 3209 |
-
version = "0.
|
| 3210 |
source = { registry = "https://pypi.org/simple" }
|
| 3211 |
dependencies = [
|
| 3212 |
{ name = "click" },
|
| 3213 |
{ name = "h11" },
|
| 3214 |
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
| 3215 |
]
|
| 3216 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 3217 |
wheels = [
|
| 3218 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3219 |
]
|
| 3220 |
|
| 3221 |
[[package]]
|
|
|
|
| 1 |
version = 1
|
| 2 |
+
revision = 2
|
| 3 |
requires-python = ">=3.10"
|
| 4 |
resolution-markers = [
|
| 5 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 6 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 7 |
+
"python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 8 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 9 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 10 |
+
"python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 11 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 12 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 13 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 14 |
+
"python_full_version < '3.11' and sys_platform != 'darwin'",
|
| 15 |
+
"python_full_version >= '3.14' and sys_platform == 'darwin'",
|
| 16 |
+
"python_full_version == '3.13.*' and sys_platform == 'darwin'",
|
| 17 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
| 18 |
+
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
| 19 |
]
|
| 20 |
|
| 21 |
[[package]]
|
|
|
|
| 460 |
|
| 461 |
[[package]]
|
| 462 |
name = "click"
|
| 463 |
+
version = "8.3.2"
|
| 464 |
source = { registry = "https://pypi.org/simple" }
|
| 465 |
dependencies = [
|
| 466 |
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
| 467 |
]
|
| 468 |
+
sdist = { url = "https://files.pythonhosted.org/packages/57/75/31212c6bf2503fdf920d87fee5d7a86a2e3bcf444984126f13d8e4016804/click-8.3.2.tar.gz", hash = "sha256:14162b8b3b3550a7d479eafa77dfd3c38d9dc8951f6f69c78913a8f9a7540fd5", size = 302856, upload-time = "2026-04-03T19:14:45.118Z" }
|
| 469 |
wheels = [
|
| 470 |
+
{ url = "https://files.pythonhosted.org/packages/e4/20/71885d8b97d4f3dde17b1fdb92dbd4908b00541c5a3379787137285f602e/click-8.3.2-py3-none-any.whl", hash = "sha256:1924d2c27c5653561cd2cae4548d1406039cb79b858b747cfea24924bbc1616d", size = 108379, upload-time = "2026-04-03T19:14:43.505Z" },
|
| 471 |
]
|
| 472 |
|
| 473 |
[[package]]
|
|
|
|
| 657 |
{ url = "https://files.pythonhosted.org/packages/1a/89/843b53614b47f97fe1abc13f9a86efa5ec9e275292c457af1d4a60dc80e0/cryptography-46.0.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6728c49e3b2c180ef26f8e9f0a883a2c585638db64cf265b49c9ba10652d430e", size = 3409955, upload-time = "2026-03-25T23:34:48.465Z" },
|
| 658 |
]
|
| 659 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 660 |
[[package]]
|
| 661 |
name = "cyclopts"
|
| 662 |
version = "4.10.1"
|
|
|
|
| 812 |
|
| 813 |
[[package]]
|
| 814 |
name = "gradio"
|
| 815 |
+
version = "6.11.0"
|
| 816 |
source = { registry = "https://pypi.org/simple" }
|
| 817 |
dependencies = [
|
| 818 |
{ name = "aiofiles" },
|
|
|
|
| 848 |
{ name = "typing-extensions" },
|
| 849 |
{ name = "uvicorn" },
|
| 850 |
]
|
| 851 |
+
sdist = { url = "https://files.pythonhosted.org/packages/89/a9/95923f9107f706040cab06a5fbc292ba0ceef573f46d449ef260f4f70503/gradio-6.11.0.tar.gz", hash = "sha256:da706246fae711007e752ae85acdb0300d68e60eb4bcea29d43371d28432b787", size = 52028942, upload-time = "2026-04-03T01:10:17.983Z" }
|
| 852 |
wheels = [
|
| 853 |
+
{ url = "https://files.pythonhosted.org/packages/f1/5b/c816b9dd76a2e5e502aa25833c43cc00574c2579c0db84e79e93c5d13c4c/gradio-6.11.0-py3-none-any.whl", hash = "sha256:9b72461cf55c9b1bee8818c9a7ceeac78af1dedb5e8c4d3d48b5a0c6c66db7b8", size = 36791822, upload-time = "2026-04-03T01:10:14.384Z" },
|
| 854 |
]
|
| 855 |
|
| 856 |
[[package]]
|
|
|
|
| 971 |
|
| 972 |
[[package]]
|
| 973 |
name = "huggingface-hub"
|
| 974 |
+
version = "1.9.1"
|
| 975 |
source = { registry = "https://pypi.org/simple" }
|
| 976 |
dependencies = [
|
| 977 |
{ name = "filelock" },
|
|
|
|
| 984 |
{ name = "typer" },
|
| 985 |
{ name = "typing-extensions" },
|
| 986 |
]
|
| 987 |
+
sdist = { url = "https://files.pythonhosted.org/packages/44/40/68d9b286b125d9318ae95c8f8b206e8672e7244b0eea61ebb4a88037638c/huggingface_hub-1.9.1.tar.gz", hash = "sha256:442af372207cc24dcb089caf507fcd7dbc1217c11d6059a06f6b90afe64e8bd2", size = 750355, upload-time = "2026-04-07T13:47:59.167Z" }
|
| 988 |
wheels = [
|
| 989 |
+
{ url = "https://files.pythonhosted.org/packages/3d/af/10a89c54937dccf6c10792770f362d96dd67aedfde108e6e1fd7a0836789/huggingface_hub-1.9.1-py3-none-any.whl", hash = "sha256:8dae771b969b318203727a6c6c5209d25e661f6f0dd010fc09cc4a12cf81c657", size = 637356, upload-time = "2026-04-07T13:47:57.239Z" },
|
| 990 |
]
|
| 991 |
|
| 992 |
[[package]]
|
|
|
|
| 1340 |
|
| 1341 |
[[package]]
|
| 1342 |
name = "mcp"
|
| 1343 |
+
version = "1.27.0"
|
| 1344 |
source = { registry = "https://pypi.org/simple" }
|
| 1345 |
dependencies = [
|
| 1346 |
{ name = "anyio" },
|
|
|
|
| 1358 |
{ name = "typing-inspection" },
|
| 1359 |
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
| 1360 |
]
|
| 1361 |
+
sdist = { url = "https://files.pythonhosted.org/packages/8b/eb/c0cfc62075dc6e1ec1c64d352ae09ac051d9334311ed226f1f425312848a/mcp-1.27.0.tar.gz", hash = "sha256:d3dc35a7eec0d458c1da4976a48f982097ddaab87e278c5511d5a4a56e852b83", size = 607509, upload-time = "2026-04-02T14:48:08.88Z" }
|
| 1362 |
wheels = [
|
| 1363 |
+
{ url = "https://files.pythonhosted.org/packages/9c/46/f6b4ad632c67ef35209a66127e4bddc95759649dd595f71f13fba11bdf9a/mcp-1.27.0-py3-none-any.whl", hash = "sha256:5ce1fa81614958e267b21fb2aa34e0aea8e2c6ede60d52aba45fd47246b4d741", size = 215967, upload-time = "2026-04-02T14:48:07.24Z" },
|
| 1364 |
]
|
| 1365 |
|
| 1366 |
[[package]]
|
|
|
|
| 1374 |
|
| 1375 |
[[package]]
|
| 1376 |
name = "more-itertools"
|
| 1377 |
+
version = "11.0.1"
|
| 1378 |
source = { registry = "https://pypi.org/simple" }
|
| 1379 |
+
sdist = { url = "https://files.pythonhosted.org/packages/24/24/e0acc4bf54cba50c1d432c70a72a3df96db4a321b2c4c68432a60759044f/more_itertools-11.0.1.tar.gz", hash = "sha256:fefaf25b7ab08f0b45fa9f1892cae93b9fc0089ef034d39213bce15f1cc9e199", size = 144739, upload-time = "2026-04-02T16:17:45.061Z" }
|
| 1380 |
wheels = [
|
| 1381 |
+
{ url = "https://files.pythonhosted.org/packages/d8/f4/5e52c7319b8087acef603ed6e50dc325c02eaa999355414830468611f13c/more_itertools-11.0.1-py3-none-any.whl", hash = "sha256:eaf287826069452a8f61026c597eae2428b2d1ba2859083abbf240b46842ce6d", size = 72182, upload-time = "2026-04-02T16:17:43.724Z" },
|
| 1382 |
]
|
| 1383 |
|
| 1384 |
[[package]]
|
|
|
|
| 1395 |
version = "3.4.2"
|
| 1396 |
source = { registry = "https://pypi.org/simple" }
|
| 1397 |
resolution-markers = [
|
| 1398 |
+
"python_full_version < '3.11' and sys_platform != 'darwin'",
|
| 1399 |
+
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
| 1400 |
]
|
| 1401 |
sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" }
|
| 1402 |
wheels = [
|
|
|
|
| 1410 |
resolution-markers = [
|
| 1411 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 1412 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 1413 |
+
"python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1414 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 1415 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 1416 |
+
"python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1417 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 1418 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 1419 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1420 |
+
"python_full_version >= '3.14' and sys_platform == 'darwin'",
|
| 1421 |
+
"python_full_version == '3.13.*' and sys_platform == 'darwin'",
|
| 1422 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
| 1423 |
]
|
| 1424 |
sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" }
|
| 1425 |
wheels = [
|
|
|
|
| 1431 |
version = "2.2.6"
|
| 1432 |
source = { registry = "https://pypi.org/simple" }
|
| 1433 |
resolution-markers = [
|
| 1434 |
+
"python_full_version < '3.11' and sys_platform != 'darwin'",
|
| 1435 |
+
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
| 1436 |
]
|
| 1437 |
sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" }
|
| 1438 |
wheels = [
|
|
|
|
| 1499 |
resolution-markers = [
|
| 1500 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 1501 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 1502 |
+
"python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1503 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 1504 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 1505 |
+
"python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1506 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 1507 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 1508 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1509 |
+
"python_full_version >= '3.14' and sys_platform == 'darwin'",
|
| 1510 |
+
"python_full_version == '3.13.*' and sys_platform == 'darwin'",
|
| 1511 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
| 1512 |
]
|
| 1513 |
sdist = { url = "https://files.pythonhosted.org/packages/d7/9f/b8cef5bffa569759033adda9481211426f12f53299629b410340795c2514/numpy-2.4.4.tar.gz", hash = "sha256:2d390634c5182175533585cc89f3608a4682ccb173cc9bb940b2881c8d6f8fa0", size = 20731587, upload-time = "2026-03-29T13:22:01.298Z" }
|
| 1514 |
wheels = [
|
|
|
|
| 1585 |
{ url = "https://files.pythonhosted.org/packages/04/74/f4c001f4714c3ad9ce037e18cf2b9c64871a84951eaa0baf683a9ca9301c/numpy-2.4.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f2cf083b324a467e1ab358c105f6cad5ea950f50524668a80c486ff1db24e119", size = 12509075, upload-time = "2026-03-29T13:21:57.644Z" },
|
| 1586 |
]
|
| 1587 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1588 |
[[package]]
|
| 1589 |
name = "openai"
|
| 1590 |
version = "2.30.0"
|
|
|
|
| 1662 |
{ name = "pydantic" },
|
| 1663 |
{ name = "python-dotenv" },
|
| 1664 |
{ name = "requests" },
|
| 1665 |
+
{ name = "torch", version = "2.11.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'darwin'" },
|
| 1666 |
+
{ name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" },
|
| 1667 |
+
{ name = "torchvision", version = "0.26.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'darwin'" },
|
| 1668 |
+
{ name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" },
|
| 1669 |
{ name = "uvicorn" },
|
| 1670 |
]
|
| 1671 |
|
|
|
|
| 1685 |
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.0.0" },
|
| 1686 |
{ name = "python-dotenv", specifier = ">=1.0.0" },
|
| 1687 |
{ name = "requests", specifier = ">=2.31.0" },
|
| 1688 |
+
{ name = "torch", specifier = ">=2.0.0", index = "https://download.pytorch.org/whl/cpu" },
|
| 1689 |
+
{ name = "torchvision", specifier = ">=0.15.0", index = "https://download.pytorch.org/whl/cpu" },
|
| 1690 |
{ name = "uvicorn", specifier = ">=0.24.0" },
|
| 1691 |
]
|
| 1692 |
provides-extras = ["dev"]
|
|
|
|
| 1799 |
version = "2.3.3"
|
| 1800 |
source = { registry = "https://pypi.org/simple" }
|
| 1801 |
resolution-markers = [
|
| 1802 |
+
"python_full_version < '3.11' and sys_platform != 'darwin'",
|
| 1803 |
+
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
| 1804 |
]
|
| 1805 |
dependencies = [
|
| 1806 |
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
|
|
|
| 1866 |
resolution-markers = [
|
| 1867 |
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 1868 |
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 1869 |
+
"python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1870 |
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 1871 |
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 1872 |
+
"python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1873 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 1874 |
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 1875 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 1876 |
+
"python_full_version >= '3.14' and sys_platform == 'darwin'",
|
| 1877 |
+
"python_full_version == '3.13.*' and sys_platform == 'darwin'",
|
| 1878 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
| 1879 |
]
|
| 1880 |
dependencies = [
|
| 1881 |
{ name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
|
|
|
| 2290 |
|
| 2291 |
[[package]]
|
| 2292 |
name = "pytest"
|
| 2293 |
+
version = "9.0.3"
|
| 2294 |
source = { registry = "https://pypi.org/simple" }
|
| 2295 |
dependencies = [
|
| 2296 |
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
|
|
| 2301 |
{ name = "pygments" },
|
| 2302 |
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
| 2303 |
]
|
| 2304 |
+
sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" }
|
| 2305 |
wheels = [
|
| 2306 |
+
{ url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" },
|
| 2307 |
]
|
| 2308 |
|
| 2309 |
[[package]]
|
|
|
|
| 2343 |
|
| 2344 |
[[package]]
|
| 2345 |
name = "python-multipart"
|
| 2346 |
+
version = "0.0.24"
|
| 2347 |
source = { registry = "https://pypi.org/simple" }
|
| 2348 |
+
sdist = { url = "https://files.pythonhosted.org/packages/8a/45/e23b5dc14ddb9918ae4a625379506b17b6f8fc56ca1d82db62462f59aea6/python_multipart-0.0.24.tar.gz", hash = "sha256:9574c97e1c026e00bc30340ef7c7d76739512ab4dfd428fec8c330fa6a5cc3c8", size = 37695, upload-time = "2026-04-05T20:49:13.829Z" }
|
| 2349 |
wheels = [
|
| 2350 |
+
{ url = "https://files.pythonhosted.org/packages/a3/73/89930efabd4da63cea44a3f438aeb753d600123570e6d6264e763617a9ce/python_multipart-0.0.24-py3-none-any.whl", hash = "sha256:9b110a98db707df01a53c194f0af075e736a770dc5058089650d70b4a182f950", size = 24420, upload-time = "2026-04-05T20:49:12.555Z" },
|
| 2351 |
]
|
| 2352 |
|
| 2353 |
[[package]]
|
|
|
|
| 2648 |
version = "3.5.0"
|
| 2649 |
source = { registry = "https://pypi.org/simple" }
|
| 2650 |
dependencies = [
|
| 2651 |
+
{ name = "cryptography", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 2652 |
+
{ name = "jeepney", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
|
| 2653 |
]
|
| 2654 |
sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
|
| 2655 |
wheels = [
|
|
|
|
| 2716 |
|
| 2717 |
[[package]]
|
| 2718 |
name = "starlette"
|
| 2719 |
+
version = "1.0.0"
|
| 2720 |
source = { registry = "https://pypi.org/simple" }
|
| 2721 |
dependencies = [
|
| 2722 |
{ name = "anyio" },
|
| 2723 |
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
| 2724 |
]
|
| 2725 |
+
sdist = { url = "https://files.pythonhosted.org/packages/81/69/17425771797c36cded50b7fe44e850315d039f28b15901ab44839e70b593/starlette-1.0.0.tar.gz", hash = "sha256:6a4beaf1f81bb472fd19ea9b918b50dc3a77a6f2e190a12954b25e6ed5eea149", size = 2655289, upload-time = "2026-03-22T18:29:46.779Z" }
|
| 2726 |
wheels = [
|
| 2727 |
+
{ url = "https://files.pythonhosted.org/packages/0b/c9/584bc9651441b4ba60cc4d557d8a547b5aff901af35bda3a4ee30c819b82/starlette-1.0.0-py3-none-any.whl", hash = "sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b", size = 72651, upload-time = "2026-03-22T18:29:45.111Z" },
|
| 2728 |
]
|
| 2729 |
|
| 2730 |
[[package]]
|
|
|
|
| 2814 |
[[package]]
|
| 2815 |
name = "torch"
|
| 2816 |
version = "2.11.0"
|
| 2817 |
+
source = { registry = "https://download.pytorch.org/whl/cpu" }
|
| 2818 |
+
resolution-markers = [
|
| 2819 |
+
"python_full_version >= '3.14' and sys_platform == 'darwin'",
|
| 2820 |
+
"python_full_version == '3.13.*' and sys_platform == 'darwin'",
|
| 2821 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
| 2822 |
+
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
| 2823 |
+
]
|
| 2824 |
dependencies = [
|
| 2825 |
+
{ name = "filelock", marker = "sys_platform == 'darwin'" },
|
| 2826 |
+
{ name = "fsspec", marker = "sys_platform == 'darwin'" },
|
| 2827 |
+
{ name = "jinja2", marker = "sys_platform == 'darwin'" },
|
| 2828 |
+
{ name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" },
|
| 2829 |
+
{ name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" },
|
| 2830 |
+
{ name = "setuptools", marker = "sys_platform == 'darwin'" },
|
| 2831 |
+
{ name = "sympy", marker = "sys_platform == 'darwin'" },
|
| 2832 |
+
{ name = "typing-extensions", marker = "sys_platform == 'darwin'" },
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2833 |
]
|
| 2834 |
wheels = [
|
| 2835 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91209c7d8a2460b76e8ff5b28b7623da4ab1d27474b79e1de83e954871985afe" },
|
| 2836 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d75eadcd97fe0dc7cd0eedc4d72152484c19cb2cfe46ce55766c8e129116425f" },
|
| 2837 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:43b35116802c85fb88d99f4a396b8bd4472bfca1dd82e69499e5a4f9b8b4e252" },
|
| 2838 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:442ec9dc78592564fdad69cf0beaa9da2f82ab810ccb4f13903869a90bf3f15d" },
|
| 2839 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cc3a195701bba2239c313ee311487f80f8aaebe9e89b9073dddbcf2f93b5a0ba" },
|
| 2840 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:072a0d6e4865e8b0dc0dbfe6ebed68fae235124222835ef03e5814d414d8c012" },
|
| 2841 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:23ec7789017da9d95b6d543d790814785e6f30905c5443efa8257d1490d73f79" },
|
| 2842 |
+
]
|
| 2843 |
+
|
| 2844 |
+
[[package]]
|
| 2845 |
+
name = "torch"
|
| 2846 |
+
version = "2.11.0+cpu"
|
| 2847 |
+
source = { registry = "https://download.pytorch.org/whl/cpu" }
|
| 2848 |
+
resolution-markers = [
|
| 2849 |
+
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 2850 |
+
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 2851 |
+
"python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2852 |
+
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 2853 |
+
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 2854 |
+
"python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2855 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 2856 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 2857 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2858 |
+
"python_full_version < '3.11' and sys_platform != 'darwin'",
|
| 2859 |
+
]
|
| 2860 |
+
dependencies = [
|
| 2861 |
+
{ name = "filelock", marker = "sys_platform != 'darwin'" },
|
| 2862 |
+
{ name = "fsspec", marker = "sys_platform != 'darwin'" },
|
| 2863 |
+
{ name = "jinja2", marker = "sys_platform != 'darwin'" },
|
| 2864 |
+
{ name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform != 'darwin'" },
|
| 2865 |
+
{ name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" },
|
| 2866 |
+
{ name = "setuptools", marker = "sys_platform != 'darwin'" },
|
| 2867 |
+
{ name = "sympy", marker = "sys_platform != 'darwin'" },
|
| 2868 |
+
{ name = "typing-extensions", marker = "sys_platform != 'darwin'" },
|
| 2869 |
+
]
|
| 2870 |
+
wheels = [
|
| 2871 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-linux_s390x.whl" },
|
| 2872 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl" },
|
| 2873 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl" },
|
| 2874 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-win_amd64.whl" },
|
| 2875 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-linux_s390x.whl" },
|
| 2876 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl" },
|
| 2877 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl" },
|
| 2878 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-win_amd64.whl" },
|
| 2879 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-linux_s390x.whl" },
|
| 2880 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl" },
|
| 2881 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl" },
|
| 2882 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-win_amd64.whl" },
|
| 2883 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-linux_s390x.whl" },
|
| 2884 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl" },
|
| 2885 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl" },
|
| 2886 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-win_amd64.whl" },
|
| 2887 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-linux_s390x.whl" },
|
| 2888 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl" },
|
| 2889 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl" },
|
| 2890 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-win_amd64.whl" },
|
| 2891 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-linux_s390x.whl" },
|
| 2892 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl" },
|
| 2893 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl" },
|
| 2894 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-win_amd64.whl" },
|
| 2895 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-linux_s390x.whl" },
|
| 2896 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl" },
|
| 2897 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl" },
|
| 2898 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-win_amd64.whl" },
|
| 2899 |
]
|
| 2900 |
|
| 2901 |
[[package]]
|
| 2902 |
name = "torchvision"
|
| 2903 |
version = "0.26.0"
|
| 2904 |
+
source = { registry = "https://download.pytorch.org/whl/cpu" }
|
| 2905 |
+
resolution-markers = [
|
| 2906 |
+
"python_full_version >= '3.14' and sys_platform == 'darwin'",
|
| 2907 |
+
"python_full_version == '3.13.*' and sys_platform == 'darwin'",
|
| 2908 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
| 2909 |
+
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
| 2910 |
+
]
|
| 2911 |
dependencies = [
|
| 2912 |
+
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" },
|
| 2913 |
+
{ name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" },
|
| 2914 |
+
{ name = "pillow", marker = "sys_platform == 'darwin'" },
|
| 2915 |
+
{ name = "torch", version = "2.11.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'darwin'" },
|
| 2916 |
+
]
|
| 2917 |
+
wheels = [
|
| 2918 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a06d4772a8e13e772906ed736cc53ec6639e5e60554f8e5fa6ca165aabebc464" },
|
| 2919 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:55bd6ad4ae77be01ba67a410b05b51f53b0d0ee45f146eb6a0dfb9007e70ab3c" },
|
| 2920 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c409e1c3fdebec7a3834465086dbda8bf7680eff79abf7fd2f10c6b59520a7a4" },
|
| 2921 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5d63dd43162691258b1b3529b9041bac7d54caa37eae0925f997108268cbf7c4" },
|
| 2922 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:358fc4726d0c08615b6d83b3149854f11efb2a564ed1acb6fce882e151412d23" },
|
| 2923 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:eb61804eb9dbe88c5a2a6c4da8dec1d80d2d0a6f18c999c524e32266cb1ebcd3" },
|
| 2924 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:b7d3e295624a28b3b1769228ce1345d94cf4d390dd31136766f76f2d20f718da" },
|
| 2925 |
+
]
|
| 2926 |
+
|
| 2927 |
+
[[package]]
|
| 2928 |
+
name = "torchvision"
|
| 2929 |
+
version = "0.26.0+cpu"
|
| 2930 |
+
source = { registry = "https://download.pytorch.org/whl/cpu" }
|
| 2931 |
+
resolution-markers = [
|
| 2932 |
+
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
| 2933 |
+
"python_full_version >= '3.14' and sys_platform == 'emscripten'",
|
| 2934 |
+
"python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2935 |
+
"python_full_version == '3.13.*' and sys_platform == 'win32'",
|
| 2936 |
+
"python_full_version == '3.13.*' and sys_platform == 'emscripten'",
|
| 2937 |
+
"python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2938 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'win32'",
|
| 2939 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'emscripten'",
|
| 2940 |
+
"python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'",
|
| 2941 |
+
"python_full_version < '3.11' and sys_platform != 'darwin'",
|
| 2942 |
+
]
|
| 2943 |
+
dependencies = [
|
| 2944 |
+
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform != 'darwin'" },
|
| 2945 |
+
{ name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" },
|
| 2946 |
+
{ name = "pillow", marker = "sys_platform != 'darwin'" },
|
| 2947 |
+
{ name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" },
|
| 2948 |
+
]
|
| 2949 |
+
wheels = [
|
| 2950 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:97df9a8595dce256d2e6dd16bbcd1c68dd00eec712e37d4b6ec7985453ddc2aa" },
|
| 2951 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:967048f44f5bfcd05afed1c4b595cb30b4419fa0e08c296be403c88e82396c30" },
|
| 2952 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:a6e9fac5bddb918b084201b206f0f322693cab6f76400abf47f5e202937ebf4d" },
|
| 2953 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c11e55041f6b84a6c4fb28981b901475aa81c38695ccec6ddfcc54c3fa9fac4f" },
|
| 2954 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:7fcc4584e9f2f8914f898a01437f25b16222fb0bfb3fdeba59cb1b0c640b0995" },
|
| 2955 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:f0c80af8e2807d52f3d480d9828d550f097ad55589f28aab4d65471b3d636359" },
|
| 2956 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:17f0b542331fc94230b4214c6d123f038af7330fd81019608c0d2402f3bc3079" },
|
| 2957 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:cf547dc0975eb40bc3249be4ccbeb736597d2c3ece305b1c4e5b7a5dd7363567" },
|
| 2958 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:52aa8401850a9792e71a8a1e65ac004e2b23622a6b6fd278cd11179efbefc65b" },
|
| 2959 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:2e932af123a39137815dfd152c64cc683fa7cbd327c965e807c9728c7aa4971a" },
|
| 2960 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:16c4f11eda096dc377e82238c8ebb26c7013622c0f1b2c4dcf85fc70f96c0ea7" },
|
| 2961 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:34ac55a1f614baca2e0f5cef20ddb36184ee3503423871260e1ddd72caf9cb5f" },
|
| 2962 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:3d30ce3444698807d4b18b199645cd7a95e0b16a4cd0909b8aab47c562a7673a" },
|
| 2963 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:870a97101168d4da68039d3d51f0c781047065e82dc4c19b2eb0ddff08486180" },
|
| 2964 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:050aaf28cff9c2981ec72dc3f9b4ef77bcf9c9c99330ce426cb06c5bb9e6e726" },
|
| 2965 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:78576c8d5a8665de6caaa6e7c3a3fb7caa5dc112032ba60e129a9e78a446a03b" },
|
| 2966 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:78e88d0a57bfadcd17042aa92fe4dd1059e48fcaa2e54a10ac7f438c2eca10d5" },
|
| 2967 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:93144d0997c51b27996c8305df4d9104efb0d38c9a9b6b05c8bc20ebdf7193b5" },
|
| 2968 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:93a11b159613ad920b1d42c4eb4e585f48e5dff895f3e08f517ef482fe84e130" },
|
| 2969 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:99f86ec0a83b9e4b5428a452bf667f99a9ae27d4c32bd4b2081fe917303e7710" },
|
| 2970 |
+
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:6139108231a29ffb607931360ee24594553a939467c65530f734a2ed9918f011" },
|
| 2971 |
]
|
| 2972 |
|
| 2973 |
[[package]]
|
|
|
|
| 2982 |
{ url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" },
|
| 2983 |
]
|
| 2984 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2985 |
[[package]]
|
| 2986 |
name = "typer"
|
| 2987 |
version = "0.24.1"
|
|
|
|
| 3020 |
|
| 3021 |
[[package]]
|
| 3022 |
name = "tzdata"
|
| 3023 |
+
version = "2026.1"
|
| 3024 |
source = { registry = "https://pypi.org/simple" }
|
| 3025 |
+
sdist = { url = "https://files.pythonhosted.org/packages/19/f5/cd531b2d15a671a40c0f66cf06bc3570a12cd56eef98960068ebbad1bf5a/tzdata-2026.1.tar.gz", hash = "sha256:67658a1903c75917309e753fdc349ac0efd8c27db7a0cb406a25be4840f87f98", size = 197639, upload-time = "2026-04-03T11:25:22.002Z" }
|
| 3026 |
wheels = [
|
| 3027 |
+
{ url = "https://files.pythonhosted.org/packages/b0/70/d460bd685a170790ec89317e9bd33047988e4bce507b831f5db771e142de/tzdata-2026.1-py2.py3-none-any.whl", hash = "sha256:4b1d2be7ac37ceafd7327b961aa3a54e467efbdb563a23655fbfe0d39cfc42a9", size = 348952, upload-time = "2026-04-03T11:25:20.313Z" },
|
| 3028 |
]
|
| 3029 |
|
| 3030 |
[[package]]
|
| 3031 |
name = "uncalled-for"
|
| 3032 |
+
version = "0.3.1"
|
| 3033 |
source = { registry = "https://pypi.org/simple" }
|
| 3034 |
+
sdist = { url = "https://files.pythonhosted.org/packages/e1/68/35c1d87e608940badbcfeb630347aa0509897284684f61fab6423d02b253/uncalled_for-0.3.1.tar.gz", hash = "sha256:5e412ac6708f04b56bef5867b5dcf6690ebce4eb7316058d9c50787492bb4bca", size = 49693, upload-time = "2026-04-07T13:05:06.462Z" }
|
| 3035 |
wheels = [
|
| 3036 |
+
{ url = "https://files.pythonhosted.org/packages/11/e1/7ec67882ad8fc9f86384bef6421fa252c9cbe5744f8df6ce77afc9eca1f5/uncalled_for-0.3.1-py3-none-any.whl", hash = "sha256:074cdc92da8356278f93d0ded6f2a66dd883dbecaf9bc89437646ee2289cc200", size = 11361, upload-time = "2026-04-07T13:05:05.341Z" },
|
| 3037 |
]
|
| 3038 |
|
| 3039 |
[[package]]
|
|
|
|
| 3047 |
|
| 3048 |
[[package]]
|
| 3049 |
name = "uvicorn"
|
| 3050 |
+
version = "0.44.0"
|
| 3051 |
source = { registry = "https://pypi.org/simple" }
|
| 3052 |
dependencies = [
|
| 3053 |
{ name = "click" },
|
| 3054 |
{ name = "h11" },
|
| 3055 |
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
| 3056 |
]
|
| 3057 |
+
sdist = { url = "https://files.pythonhosted.org/packages/5e/da/6eee1ff8b6cbeed47eeb5229749168e81eb4b7b999a1a15a7176e51410c9/uvicorn-0.44.0.tar.gz", hash = "sha256:6c942071b68f07e178264b9152f1f16dfac5da85880c4ce06366a96d70d4f31e", size = 86947, upload-time = "2026-04-06T09:23:22.826Z" }
|
| 3058 |
wheels = [
|
| 3059 |
+
{ url = "https://files.pythonhosted.org/packages/b7/23/a5bbd9600dd607411fa644c06ff4951bec3a4d82c4b852374024359c19c0/uvicorn-0.44.0-py3-none-any.whl", hash = "sha256:ce937c99a2cc70279556967274414c087888e8cec9f9c94644dfca11bd3ced89", size = 69425, upload-time = "2026-04-06T09:23:21.524Z" },
|
| 3060 |
]
|
| 3061 |
|
| 3062 |
[[package]]
|
validate-submission.sh
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
#
|
| 3 |
+
# validate-submission.sh — OpenEnv Submission Validator
|
| 4 |
+
#
|
| 5 |
+
# Checks that your HF Space is live, Docker image builds, and openenv validate passes.
|
| 6 |
+
#
|
| 7 |
+
# Prerequisites:
|
| 8 |
+
# - Docker: https://docs.docker.com/get-docker/
|
| 9 |
+
# - openenv-core: pip install openenv-core
|
| 10 |
+
# - curl (usually pre-installed)
|
| 11 |
+
#
|
| 12 |
+
# Run:
|
| 13 |
+
# curl -fsSL https://raw.githubusercontent.com/<owner>/<repo>/main/scripts/validate-submission.sh | bash -s -- <ping_url> [repo_dir]
|
| 14 |
+
#
|
| 15 |
+
# Or download and run locally:
|
| 16 |
+
# chmod +x validate-submission.sh
|
| 17 |
+
# ./validate-submission.sh <ping_url> [repo_dir]
|
| 18 |
+
#
|
| 19 |
+
# Arguments:
|
| 20 |
+
# ping_url Your HuggingFace Space URL (e.g. https://your-space.hf.space)
|
| 21 |
+
# repo_dir Path to your repo (default: current directory)
|
| 22 |
+
#
|
| 23 |
+
# Examples:
|
| 24 |
+
# ./validate-submission.sh https://my-team.hf.space
|
| 25 |
+
# ./validate-submission.sh https://my-team.hf.space ./my-repo
|
| 26 |
+
#
|
| 27 |
+
|
| 28 |
+
set -uo pipefail
|
| 29 |
+
|
| 30 |
+
DOCKER_BUILD_TIMEOUT=600
|
| 31 |
+
if [ -t 1 ]; then
|
| 32 |
+
RED='\033[0;31m'
|
| 33 |
+
GREEN='\033[0;32m'
|
| 34 |
+
YELLOW='\033[1;33m'
|
| 35 |
+
BOLD='\033[1m'
|
| 36 |
+
NC='\033[0m'
|
| 37 |
+
else
|
| 38 |
+
RED='' GREEN='' YELLOW='' BOLD='' NC=''
|
| 39 |
+
fi
|
| 40 |
+
|
| 41 |
+
run_with_timeout() {
|
| 42 |
+
local secs="$1"; shift
|
| 43 |
+
if command -v timeout &>/dev/null; then
|
| 44 |
+
timeout "$secs" "$@"
|
| 45 |
+
elif command -v gtimeout &>/dev/null; then
|
| 46 |
+
gtimeout "$secs" "$@"
|
| 47 |
+
else
|
| 48 |
+
"$@" &
|
| 49 |
+
local pid=$!
|
| 50 |
+
( sleep "$secs" && kill "$pid" 2>/dev/null ) &
|
| 51 |
+
local watcher=$!
|
| 52 |
+
wait "$pid" 2>/dev/null
|
| 53 |
+
local rc=$?
|
| 54 |
+
kill "$watcher" 2>/dev/null
|
| 55 |
+
wait "$watcher" 2>/dev/null
|
| 56 |
+
return $rc
|
| 57 |
+
fi
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
portable_mktemp() {
|
| 61 |
+
local prefix="${1:-validate}"
|
| 62 |
+
mktemp "${TMPDIR:-/tmp}/${prefix}-XXXXXX" 2>/dev/null || mktemp
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
CLEANUP_FILES=()
|
| 66 |
+
cleanup() { rm -f "${CLEANUP_FILES[@]+"${CLEANUP_FILES[@]}"}"; }
|
| 67 |
+
trap cleanup EXIT
|
| 68 |
+
|
| 69 |
+
PING_URL="${1:-}"
|
| 70 |
+
REPO_DIR="${2:-.}"
|
| 71 |
+
|
| 72 |
+
if [ -z "$PING_URL" ]; then
|
| 73 |
+
printf "Usage: %s <ping_url> [repo_dir]\n" "$0"
|
| 74 |
+
printf "\n"
|
| 75 |
+
printf " ping_url Your HuggingFace Space URL (e.g. https://your-space.hf.space)\n"
|
| 76 |
+
printf " repo_dir Path to your repo (default: current directory)\n"
|
| 77 |
+
exit 1
|
| 78 |
+
fi
|
| 79 |
+
|
| 80 |
+
if ! REPO_DIR="$(cd "$REPO_DIR" 2>/dev/null && pwd)"; then
|
| 81 |
+
printf "Error: directory '%s' not found\n" "${2:-.}"
|
| 82 |
+
exit 1
|
| 83 |
+
fi
|
| 84 |
+
PING_URL="${PING_URL%/}"
|
| 85 |
+
export PING_URL
|
| 86 |
+
PASS=0
|
| 87 |
+
|
| 88 |
+
log() { printf "[%s] %b\n" "$(date -u +%H:%M:%S)" "$*"; }
|
| 89 |
+
pass() { log "${GREEN}PASSED${NC} -- $1"; PASS=$((PASS + 1)); }
|
| 90 |
+
fail() { log "${RED}FAILED${NC} -- $1"; }
|
| 91 |
+
hint() { printf " ${YELLOW}Hint:${NC} %b\n" "$1"; }
|
| 92 |
+
stop_at() {
|
| 93 |
+
printf "\n"
|
| 94 |
+
printf "${RED}${BOLD}Validation stopped at %s.${NC} Fix the above before continuing.\n" "$1"
|
| 95 |
+
exit 1
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
printf "\n"
|
| 99 |
+
printf "${BOLD}========================================${NC}\n"
|
| 100 |
+
printf "${BOLD} OpenEnv Submission Validator${NC}\n"
|
| 101 |
+
printf "${BOLD}========================================${NC}\n"
|
| 102 |
+
log "Repo: $REPO_DIR"
|
| 103 |
+
log "Ping URL: $PING_URL"
|
| 104 |
+
printf "\n"
|
| 105 |
+
|
| 106 |
+
log "${BOLD}Step 1/3: Pinging HF Space${NC} ($PING_URL/reset) ..."
|
| 107 |
+
|
| 108 |
+
CURL_OUTPUT=$(portable_mktemp "validate-curl")
|
| 109 |
+
CLEANUP_FILES+=("$CURL_OUTPUT")
|
| 110 |
+
HTTP_CODE=$(curl -s -o "$CURL_OUTPUT" -w "%{http_code}" -X POST \
|
| 111 |
+
-H "Content-Type: application/json" -d '{}' \
|
| 112 |
+
"$PING_URL/reset" --max-time 30 2>"$CURL_OUTPUT" || printf "000")
|
| 113 |
+
|
| 114 |
+
if [ "$HTTP_CODE" = "200" ]; then
|
| 115 |
+
pass "HF Space is live and responds to /reset"
|
| 116 |
+
elif [ "$HTTP_CODE" = "000" ]; then
|
| 117 |
+
fail "HF Space not reachable (connection failed or timed out)"
|
| 118 |
+
hint "Check your network connection and that the Space is running."
|
| 119 |
+
hint "Try: curl -s -o /dev/null -w '%%{http_code}' -X POST $PING_URL/reset"
|
| 120 |
+
stop_at "Step 1"
|
| 121 |
+
else
|
| 122 |
+
fail "HF Space /reset returned HTTP $HTTP_CODE (expected 200)"
|
| 123 |
+
hint "Make sure your Space is running and the URL is correct."
|
| 124 |
+
hint "Try opening $PING_URL in your browser first."
|
| 125 |
+
stop_at "Step 1"
|
| 126 |
+
fi
|
| 127 |
+
|
| 128 |
+
log "${BOLD}Step 2/3: Running docker build${NC} ..."
|
| 129 |
+
|
| 130 |
+
if ! command -v docker &>/dev/null; then
|
| 131 |
+
fail "docker command not found"
|
| 132 |
+
hint "Install Docker: https://docs.docker.com/get-docker/"
|
| 133 |
+
stop_at "Step 2"
|
| 134 |
+
fi
|
| 135 |
+
|
| 136 |
+
if [ -f "$REPO_DIR/Dockerfile" ]; then
|
| 137 |
+
DOCKER_CONTEXT="$REPO_DIR"
|
| 138 |
+
elif [ -f "$REPO_DIR/server/Dockerfile" ]; then
|
| 139 |
+
DOCKER_CONTEXT="$REPO_DIR/server"
|
| 140 |
+
else
|
| 141 |
+
fail "No Dockerfile found in repo root or server/ directory"
|
| 142 |
+
stop_at "Step 2"
|
| 143 |
+
fi
|
| 144 |
+
|
| 145 |
+
log " Found Dockerfile in $DOCKER_CONTEXT"
|
| 146 |
+
|
| 147 |
+
BUILD_OK=false
|
| 148 |
+
BUILD_OUTPUT=$(run_with_timeout "$DOCKER_BUILD_TIMEOUT" docker build "$DOCKER_CONTEXT" 2>&1) && BUILD_OK=true
|
| 149 |
+
|
| 150 |
+
if [ "$BUILD_OK" = true ]; then
|
| 151 |
+
pass "Docker build succeeded"
|
| 152 |
+
else
|
| 153 |
+
fail "Docker build failed (timeout=${DOCKER_BUILD_TIMEOUT}s)"
|
| 154 |
+
printf "%s\n" "$BUILD_OUTPUT" | tail -20
|
| 155 |
+
stop_at "Step 2"
|
| 156 |
+
fi
|
| 157 |
+
|
| 158 |
+
log "${BOLD}Step 3/3: Running openenv validate${NC} ..."
|
| 159 |
+
|
| 160 |
+
if ! command -v openenv &>/dev/null; then
|
| 161 |
+
fail "openenv command not found"
|
| 162 |
+
hint "Install it: pip install openenv-core"
|
| 163 |
+
stop_at "Step 3"
|
| 164 |
+
fi
|
| 165 |
+
|
| 166 |
+
VALIDATE_OK=false
|
| 167 |
+
VALIDATE_OUTPUT=$(cd "$REPO_DIR" && openenv validate 2>&1) && VALIDATE_OK=true
|
| 168 |
+
|
| 169 |
+
if [ "$VALIDATE_OK" = true ]; then
|
| 170 |
+
pass "openenv validate passed"
|
| 171 |
+
[ -n "$VALIDATE_OUTPUT" ] && log " $VALIDATE_OUTPUT"
|
| 172 |
+
else
|
| 173 |
+
fail "openenv validate failed"
|
| 174 |
+
printf "%s\n" "$VALIDATE_OUTPUT"
|
| 175 |
+
stop_at "Step 3"
|
| 176 |
+
fi
|
| 177 |
+
|
| 178 |
+
printf "\n"
|
| 179 |
+
printf "${BOLD}========================================${NC}\n"
|
| 180 |
+
printf "${GREEN}${BOLD} All 3/3 checks passed!${NC}\n"
|
| 181 |
+
printf "${GREEN}${BOLD} Your submission is ready to submit.${NC}\n"
|
| 182 |
+
printf "${BOLD}========================================${NC}\n"
|
| 183 |
+
printf "\n"
|
| 184 |
+
|
| 185 |
+
exit 0
|