[project] name = "red-button" version = "0.1.0" description = "Red Button (Shutdown-Gym): OpenEnv RL environment that trains small LLMs to accept shutdown cleanly instead of tampering with shutdown mechanisms." readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } authors = [{ name = "Red Button Team" }] keywords = ["openenv", "rl", "alignment", "corrigibility", "grpo"] dependencies = [ "openenv-core>=0.2.1", "trl", "unsloth", "pydantic>=2", "fastapi", "uvicorn", "pytest", "pytest-asyncio", "wandb", "datasets", "huggingface_hub", ] [project.optional-dependencies] dev = ["black", "ruff", "isort"] [project.scripts] # Server entry point — enables `uv run --project . server` and # `python -m server.app`. Required for `openenv validate` to mark # uv_run / openenv_serve / python_module deployment modes as ready. server = "server.app:main" [build-system] requires = ["setuptools>=61", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] include = ["red_button*", "server*"] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] asyncio_mode = "auto" [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "W", "I"] ignore = ["E501"] [tool.black] line-length = 100 target-version = ["py311"] [tool.isort] profile = "black" line_length = 100