[project] name = "hackathon-ia-visualnovel" version = "0.1.0" description = "An AI-improvised, voice-or-text anime visual novel — Build Small Hackathon (Thousand Token Wood)." readme = "README.md" license = { text = "Apache-2.0" } # 3.14 is pinned in .python-version. We allow >=3.11 so the project still installs if a heavy # ML wheel (torch / llama-cpp-python / ctranslate2) doesn't yet ship a 3.14 build — just # `uv python pin 3.12` and re-sync. The package itself is 3.11+ clean. requires-python = ">=3.11" dependencies = [ "gradio>=5.0", "pydantic>=2.7", "pillow>=10.0", "huggingface-hub>=1.17.0", "python-dotenv>=1.0", "psutil>=5.9", ] [project.optional-dependencies] # Heavy backends are OPTIONAL so the mock loop installs in seconds. Add per platform — see README. # uv sync --extra llamacpp # llama.cpp LLM (local; the Llama-Champion bonus) # uv sync --extra transformers # HF transformers LLM (the ZeroGPU Space fallback) # uv sync --extra image # SDXL-Turbo via diffusers # uv sync --extra stt # faster-whisper microphone input llamacpp = ["llama-cpp-python>=0.3.0"] transformers = ["transformers>=4.44", "accelerate>=0.33", "torch>=2.3"] image = ["diffusers>=0.38.0", "transformers>=4.44", "accelerate>=0.33", "torch>=2.3", "safetensors>=0.4", "rembg>=2.0", "peft>=0.11"] stt = ["faster-whisper>=1.0", "sounddevice>=0.5.5"] tts = ["kokoro-onnx>=0.3", "soundfile>=0.12"] matting = ["transformers>=4.44", "torch>=2.3"] # BiRefNet for transparent sprites (Phase 2) spaces = ["spaces>=0.30"] # ZeroGPU decorator on HF Spaces modal = ["modal>=1.0"] # cloud GPU via Modal (LLM + painter) dev = ["ruff>=0.6", "pytest>=8.0", "matplotlib>=3.9"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] ignore = ["E501", "E402"] # E501: long prompt/doc lines; E402: mode bootstrap before visualnovel imports [tool.pytest.ini_options] addopts = "-q" testpaths = ["tests"] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [dependency-groups] dev = [ "pytest>=9.0.3", "ruff>=0.15.15", ] [tool.hatch.build.targets.wheel] packages = ["visualnovel"]