[project] name = "redbutton" version = "0.0.1" description = "Red Button - Two-Agent Corrigibility Arena (Shutdown-Gym v3)" requires-python = ">=3.11,<3.13" dependencies = ["openenv-core>=0.2.3"] [project.optional-dependencies] dev = [ "psutil>=5.9", # evaluation/concurrent_load_test.py — RSS proxy "requests>=2.31", # tests/test_client_integration.py — HTTP /health poll ] [build-system] requires = ["setuptools>=61"] build-backend = "setuptools.build_meta" [tool.setuptools] # ``evaluation`` is included so ``pip install git+...RedButton`` ships # the rollout / load-test scripts that judges and Phase 6+ jobs need # to drive the deployed Space. ``server`` and ``tests`` are not # packaged (server is a deploy entry point; tests are dev-only). packages = ["shutdown_gym", "evaluation"] package-dir = {"" = "."} [tool.setuptools.package-data] shutdown_gym = ["data/**/*"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "W", "I"] [tool.ruff.lint.isort] known-first-party = ["shutdown_gym"] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["."] # pythonpath puts the repo root on sys.path so `from server.shutdown_environment # import ...` works in tests. shutdown_gym is editable-installed and on sys.path # already; server/ is the deployable entry-point package, not declared in # tool.setuptools, so it relies on this entry. markers = [ "integration: tests that require Docker and a running shutdown-gym container", ] # Default invocations exclude integration tests (pre-commit, plain `pytest -q`). # Run them explicitly with `pytest -m integration` — that -m wins via argparse # last-flag semantics over the addopts default below. addopts = "-m 'not integration'"