| [project] | |
| name = "ml-intern" | |
| version = "0.1.0" | |
| description = "Add your description here" | |
| readme = "README.md" | |
| requires-python = ">=3.11" | |
| dependencies = [ | |
| # Core dependencies | |
| "datasets>=4.4.1", | |
| "pydantic>=2.12.3", | |
| "python-dotenv>=1.2.1", | |
| # Agent runtime dependencies | |
| "requests>=2.33.0", | |
| "litellm>=1.83.0", | |
| "boto3>=1.35.0", | |
| "huggingface-hub>=1.12.0", | |
| "fastmcp>=3.2.0", | |
| "prompt-toolkit>=3.0.0", | |
| "thefuzz>=0.22.1", | |
| "rich>=13.0.0", | |
| "nbconvert>=7.16.6", | |
| "nbformat>=5.10.4", | |
| "whoosh>=2.7.4", | |
| # Web backend dependencies | |
| "fastapi>=0.115.0", | |
| "uvicorn[standard]>=0.32.0", | |
| "httpx>=0.27.0", | |
| "websockets>=13.0", | |
| "apscheduler>=3.10,<4", | |
| "pymongo>=4.17.0", | |
| "python-multipart>=0.0.20", | |
| ] | |
| [project.optional-dependencies] | |
| # Evaluation/benchmarking dependencies | |
| eval = [ | |
| "inspect-ai>=0.3.149", | |
| "pandas>=2.3.3", | |
| "datasets>=4.3.0", | |
| "tenacity>=8.0.0", | |
| ] | |
| # Development and testing dependencies | |
| dev = [ | |
| "pytest>=9.0.2", | |
| "pytest-asyncio>=1.2.0", | |
| "ruff>=0.15.12", | |
| ] | |
| # All dependencies (eval + dev) | |
| all = [ | |
| "ml-intern[eval,dev]", | |
| ] | |
| [project.scripts] | |
| ml-intern = "agent.main:cli" | |
| [build-system] | |
| requires = ["setuptools>=64"] | |
| build-backend = "setuptools.build_meta" | |
| [tool.setuptools.packages.find] | |
| # `configs` ships the JSON files loaded by agent.main.CLI_CONFIG_PATH at | |
| # runtime (resolves to <site-packages>/configs/cli_agent_config.json). | |
| # Without it, `uv tool install` / `pip install` produce a broken install | |
| # that imports fine but crashes at startup with FileNotFoundError. | |
| include = ["agent*", "configs"] | |
| [tool.setuptools.package-data] | |
| configs = ["*.json"] | |
| # Agent data files: system prompts loaded by ContextManager._load_system_prompt | |
| # at runtime (`<site-packages>/agent/prompts/system_prompt_v3.yaml`), plus the | |
| # package README. Without these, headless_main hangs forever — submission_loop | |
| # crashes with FileNotFoundError but headless_main doesn't check agent_task.done() | |
| # and just keeps awaiting the "ready" event_queue item that will never come. | |
| agent = ["README.md", "prompts/*.yaml"] | |
| [tool.uv] | |
| package = true | |
| [tool.pytest.ini_options] | |
| asyncio_mode = "auto" | |