[build-system] requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta" [project] name = "openenv-core" version = "0.2.0" 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>=2.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", ] all = [ "openenv-core[core]", "openenv-core[cli]", ] daytona = [ "daytona>=0.136.0", "pyyaml>=6.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", ] [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"]