chat_env / pyproject.toml
burtenshaw's picture
burtenshaw HF Staff
Upload folder using huggingface_hub
25bcc11 verified
[build-system]
requires = ["setuptools>=45", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "openenv-core"
version = "0.2.2.dev0"
description = "A unified framework for reinforcement learning environments"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
# Core shared dependencies - minimal set required for all environments
# Heavy dependencies (torch, numpy, smolagents, etc.) should be in
# individual environment pyproject.toml files
"fastapi>=0.104.0",
"pydantic>=2.0.0",
"uvicorn>=0.24.0",
"requests>=2.25.0",
# CLI dependencies
"typer>=0.9.0",
"rich>=13.0.0",
"pyyaml>=6.0",
"huggingface_hub>=0.20.0",
"openai>=2.7.2",
"tomli>=2.3.0",
"tomli-w>=1.2.0",
"websockets>=15.0.1",
# MCP support
"fastmcp>=3.0.0",
# Web UI dependencies
"gradio>=4.0.0",
]
[project.optional-dependencies]
core = [
"fastapi>=0.104.0",
"pydantic>=2.0.0",
"uvicorn>=0.24.0",
"requests>=2.25.0",
"websockets>=15.0.1",
]
cli = [
"typer>=0.9.0",
"rich>=13.0.0",
"pyyaml>=6.0",
"huggingface_hub>=0.20.0",
"openai>=2.7.2",
"tomli>=2.3.0",
"tomli-w>=1.2.0",
]
docs = [
"sphinx==7.2.6",
"pytorch-sphinx-theme2",
"sphinxcontrib.katex==0.9.10",
"docutils>=0.18.1,<0.21",
"sphinx-design==0.6.1",
"sphinxcontrib-mermaid==1.0.0",
"myst-parser",
"sphinxext-opengraph",
"sphinx-sitemap==2.7.1",
"sphinx-gallery>=0.14.0",
"matplotlib",
"nest-asyncio",
"smolagents",
]
all = [
"openenv-core[core] @ git+https://github.com/meta-pytorch/OpenEnv.git@main",
"openenv-core[cli]",
]
daytona = [
"daytona>=0.136.0",
"pyyaml>=6.0",
]
inspect = [
"inspect-ai>=0.3.0",
]
[project.scripts]
openenv = "openenv.cli.__main__:main"
[tool.setuptools]
package-dir = {"" = "src"}
include-package-data = true
[tool.setuptools.package-data]
"openenv.cli" = ["templates/**/*"]
[tool.setuptools.packages.find]
where = ["src"]
[tool.coverage.run]
omit = [
"openenv/cli/templates/**",
"**/templates/**",
"openenv/cli/__main__.py",
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise AssertionError",
"raise NotImplementedError",
"if __name__ == .__main__.:",
"if TYPE_CHECKING:",
]
[tool.pytest.ini_options]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
markers = [
"docker: Tests that require Docker to be running",
"network: Tests that require network access (HuggingFace, etc.)",
"integration: Integration tests with external resources",
]
[dependency-groups]
dev = [
"ruff>=0.14.0",
"usort>=1.1.0",
"pytest>=7.0",
"pytest-asyncio>=0.21",
]
[tool.usort]
# Disable first_party auto-detection so all non-stdlib imports land in
# the same "third_party" bucket (the default_category). This matches
# pyfmt's usort behavior inside arc f, which groups openenv.* and env
# package imports together without blank-line separators.
first_party_detection = false
[tool.ruff]
line-length = 88
[tool.ruff.lint]
select = ["E", "F", "W"]
ignore = [
"E402", # Module level import not at top of file (needed for pytest.importorskip patterns)
"E501", # Line too long (not enforced previously, would require large refactor)
]
[tool.ruff.lint.per-file-ignores]
# Context manager variables that are intentionally unused
"tests/envs/test_websockets.py" = ["F841"]
"tests/test_cli/test_push.py" = ["F841"]
# Compatibility shim module
"src/openenv_core/__init__.py" = ["F401"]