pyproject.toml
Rama main · réplica de lectura del repositorio original.
[build-system]
requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta"
[project]
name = "stuntd"
version = "0.2.1"
description = "Local proxy that learns your app's typed LLM decisions and answers them with a Laya head. Jev, OpenAI Decisions and OpenAI compatible."
readme = "README.md"
requires-python = ">=3.10"
license = "Apache-2.0"
authors = [{ name = "bladedevoff" }]
keywords = ["llm", "llm-proxy", "jev", "typesafe", "system-one", "laya", "typed-decisions", "distillation", "openai-compatible", "local-inference", "self-hosted", "claude-code"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
dependencies = [
"anyio>=4",
"starlette>=0.40",
"uvicorn>=0.30",
"httpx>=0.27",
"tomli>=2.0; python_version < '3.11'",
]
[project.optional-dependencies]
dev = ["pytest>=8", "anyio>=4", "ruff>=0.6", "mypy>=1.10", "hypothesis>=6.100", "mutmut>=3", "pyright>=1.1.380", "typesafe-sdk>=0.7", "anthropic>=0.40"]
train = ["laya>=0.3.4,<0.5"]
jev = ["typesafe-sdk>=0.7"]
[project.urls]
Homepage = "https://github.com/bladedevoff/stuntd"
Repository = "https://github.com/bladedevoff/stuntd"
Issues = "https://github.com/bladedevoff/stuntd/issues"
[project.scripts]
stuntd = "stuntd.cli:main"
[tool.setuptools]
packages = ["stuntd", "stuntd.proxy", "stuntd.decisions", "stuntd.jev", "stuntd.oai", "stuntd.serve", "stuntd.store", "stuntd.train"]
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["."]
addopts = "-rXs --strict-config --strict-markers"
markers = ["slow: real training on a local Laya checkpoint named by STUNTD_LAYA_MODEL or a stock encoder in the Hugging Face cache"]
xfail_strict = true
filterwarnings = [
"error",
# laya 0.4 warns that the base checkpoint ships temperatures out of range; the tests use it as shipped.
"ignore:laya. this checkpoint ships invalid temperatures:RuntimeWarning",
]
[tool.ruff]
line-length = 100
target-version = "py310"
[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "UP", "ASYNC", "PIE", "SIM", "C4", "RUF100"]
ignore = ["B904", "E501"]
[tool.ruff.lint.isort]
combine-as-imports = true
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["B018"]
[tool.mypy]
strict = true
[[tool.mypy.overrides]]
module = "tests.*"
disallow_untyped_defs = false
[[tool.mypy.overrides]]
module = ["laya", "laya.*", "torch", "torch.*", "safetensors", "safetensors.*", "transformers", "transformers.*", "huggingface_hub", "huggingface_hub.*"]
ignore_missing_imports = true
# strict mode surfaces ~90 reportUnknown* findings outside the modules this task covers,
# almost all from untyped dict access in decisions/proxy/settings and from laya/torch having no
# type stubs; standard mode is the profile until those call sites carry their own annotations.
[tool.pyright]
include = ["stuntd"]
typeCheckingMode = "standard"
reportMissingImports = false
reportMissingModuleSource = false
[tool.mutmut]
source_paths = ["stuntd/train/metrics.py", "stuntd/train/dataset.py", "stuntd/serve/monitor.py"]
also_copy = ["stuntd", "tests"]