[project] name = "ink-witch" version = "0.1.0" description = "Inkwitch — a doodle-judging game on Hugging Face ZeroGPU" readme = "README.md" # ZeroGPU runtimes only ship Python 3.12.12 and 3.10.13; pin to 3.12 so the # local venv matches the Space (README python_version: '3.12'). requires-python = ">=3.12,<3.13" dependencies = [ # gradio matches the Space's sdk_version in README.md frontmatter. The # [oauth,mcp] extras mirror what the HF Spaces builder injects # (`gradio[oauth,mcp]==`); declaring them here makes uv resolve # transitive pins (notably pydantic <=2.12.5, required by the mcp extra) # that are compatible with the Space's own install command. "gradio[oauth,mcp]==6.16.0", # ZeroGPU supports torch up to 2.11.0 (not 2.12+); torchvision 0.26.0 is the # matching sidecar for torch 2.11.x. "torch==2.11.0", "torchvision==0.26.0", "transformers>=5.10.1", "accelerate>=1.13.0", # SDXL-Flash + scribble ControlNet image-gen second stage (witch_wood/gen). "diffusers>=0.32.0", "pillow>=12.0.0", # Declared so uv co-resolves its transitive constraints (e.g. psutil). It is # provided by the ZeroGPU base image and excluded from the exported # requirements.txt — never pin `spaces` for the Space. "spaces>=0.42.1", ] [dependency-groups] dev = [ "pytest>=9.0.3", ] # On Windows, pull torch/torchvision from the PyTorch CUDA index so GPU support # is included. The HF ZeroGPU Space uses its own base image (Linux) and ignores # these sources — they only activate locally via `uv sync`. [tool.uv.sources] torch = [ { index = "pytorch-cuda", marker = "sys_platform == 'win32'" }, ] torchvision = [ { index = "pytorch-cuda", marker = "sys_platform == 'win32'" }, ] [[tool.uv.index]] name = "pytorch-cuda" url = "https://download.pytorch.org/whl/cu128" explicit = true [tool.pytest.ini_options] pythonpath = ["."] testpaths = ["tests"]