Spaces:
Running
Running
| [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"] | |