[project] name = "small-cuts" version = "0.1.0" description = "An omniscient cinematic narrator for moments of your life, powered by small open models (Build Small Hackathon)" readme = "README.md" requires-python = ">=3.10" dependencies = [ "gradio>=5.0", "itsdangerous>=2.2", "pillow>=10.0", "pillow-heif>=0.18", "av>=12.0", "huggingface-hub>=1.19", "sentry-sdk>=2.0", # core viewer dep: decodes seed durations + writes generated voice-overs (viewer.py), # imported at module scope — must be in the base install (and CI), not just the tts extra. "soundfile>=0.12", ] [project.optional-dependencies] local = [ "transformers>=4.49", "torch>=2.4", "torchvision>=0.19", "accelerate>=1.0", ] tts = [ "kokoro>=0.9", "soundfile>=0.12", ] llama = [ "llama-cpp-python>=0.3", ] engine = [ "fastapi>=0.110", "uvicorn>=0.30", "websockets>=12", "jsonschema>=4.21", "soundfile>=0.12", "httpx>=0.27", ] dev = [ "pytest>=8.0", "ruff>=0.8", "jsonschema>=4.21", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/small_cuts"] [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q" [tool.ruff] line-length = 100 src = ["src", "tests"] [tool.ruff.lint] select = ["E", "F", "W", "I", "UP", "B", "SIM"]