[project] name = "portfolio-optimiser" version = "0.1.0" description = "Generic framework on Microsoft Agent Framework for per-project cost-savings optimization" readme = "README.md" requires-python = ">=3.10" dependencies = [ # MAF — GA-pakker, IKKE meta-pakken `agent-framework`. Metaen drar `agent-framework-core[all]`, # og `[all]` trekker inn de fortsatt-beta integrasjonene (azure-ai-search/cosmos/ollama/…) som # tvinger pre-releases og drar med en ALPHA pydantic. Offisiell guide: installer kun det du trenger. # Beta-integrasjoner legges til per-fase (med snevert pre-release-scope) når de faktisk trengs. "agent-framework-core>=1.9.0", # kjerne (GA) "agent-framework-foundry>=1.8.2", # Azure/Foundry-profil: FoundryChatClient (GA) "agent-framework-openai>=1.8.2", # OpenAI + OpenAI-kompatible lokale endpoints (GA) → lokal profil # Promotert dev→core i Fase 2 (MVP-runtime, ikke lenger spike-only): "agent-framework-orchestrations>=1.0.0", # GA orchestration builders (GroupChat/Concurrent/Magentic); resolves med core 1.9.0 "pulp>=2.8", # deterministisk validator-solver; PuLP bundler CBC i wheelen (R2). Installert 3.3.2. # PuLP 4.0 vil kreve `pip install pulp[cbc]` + COIN_CMD (Fase-migrasjonsnotat). "mcp>=1.28.0", # tynn lokal-mappe MCP-server (Step 7) — GA (resolverte 1.28.0) per Step 1-beslutning "pydantic>=2.11,<3", # IR/validering (B1) — eksplisitt pin til STABIL 2.x, aldri alpha ] # Dev tooling as a PEP 735 dependency-group (uv includes it by default in `uv sync`/`uv run`), # so the documented bare `uv sync` + `uv run pytest` workflow installs it without `--extra`. [dependency-groups] dev = [ "pytest>=8", "ruff>=0.6", "mypy>=1.11", "pytest-asyncio>=0.24", # MAF orchestrations are async (await workflow.run(...)) — test-only ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/portfolio_optimiser"] [tool.ruff] line-length = 100 src = ["src", "tests", "spikes"] [tool.pytest.ini_options] pythonpath = ["src", "."] testpaths = ["tests"] asyncio_mode = "auto"