mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
3a463b8bf6
* Python: bump package versions for 1.2.1 release PATCH bump (1.2.0 -> 1.2.1) for the released cohort. The release window covers two PRs, no new public APIs: - agent-framework-core: prevent inner_exception from being lost in AgentFrameworkException (#5167) - samples: add requirements.txt and .env.example to the a2a/ hosting sample for pip-based setup (#5510) Per lockstep convention, all 21 beta packages stamp 1.0.0b260428 and all 3 alpha packages stamp 1.0.0a260428, regardless of per-package code churn. Every non-core package floor on agent-framework-core is raised to >=1.2.1 to keep cohort signaling consistent. Date stamp reflects the local (Asia) cut date 2026-04-28. * Python: silence pyright unknown-type warnings in hosted-env detection `azure.ai.agentserver.core` is probed at runtime via `importlib.util.find_spec` and is not a declared dependency. The existing `# pyright: ignore[reportMissingImports]` suppresses the missing-import warning, but at `lowest-direct` resolution pyright still reports the imported symbol (`AgentConfig`) and its members (`from_env`, `is_hosted`) as unknown, breaking `validate-dependency-bounds-test` for `packages/core`. Extend the existing ignore to cover `reportUnknownVariableType` on the import and `reportUnknownMemberType` on the call site so the bounds check returns to green. Behavior is unchanged. Latent since #5455 (shipped in 1.2.0). * Python: raise agent-framework-gemini lower bound to google-genai>=1.65.0 The Gemini chat client references several `google.genai.types` symbols (`FileSearch`, `ThinkingLevel`, `SearchTypes`, `McpServer`, `StreamableHttpTransport`, plus call-site keyword args `mcp_servers` and `search_types`) that are not present at the lower bound of `google-genai>=1.0.0`. At `lowest-direct` resolution this caused `validate-dependency-bounds-test` to fail for `packages/gemini` with eleven `reportAttributeAccessIssue` / `reportUnknownVariableType` errors. Walking the upstream `google.genai.types` API: - `GoogleMaps`, `AuthConfig`: present from 1.40.0 - `FileSearch`: introduced in 1.49.0 - `ThinkingLevel`: introduced in 1.55.0 - `SearchTypes`, `McpServer`, `StreamableHttpTransport`: introduced in 1.65.0 Bump the lower bound to 1.65.0 — the minimum version that exposes every symbol the package actually uses. Keep the `<2.0.0` upper cap unchanged. With this bump `validate-dependency-bounds-test` passes for both lower and upper resolution scenarios across all 27 workspace packages. Latent since #4847 (Gemini package introduction in 1.1.0); aggravated by subsequent feature additions that pulled in newer `types.*` symbols. * Python: add dependabot bumps to 1.2.1 CHANGELOG Catalog the 15 dependabot dependency updates that merged on `upstream/main` between python-1.2.0 and the 1.2.1 cut window under a new Changed section: - Workspace dev/runtime deps: `rich`, `prek`, `python-multipart`, `pyasn1`, `pytest` (ag-ui, devui, lab), `uv` (lab) - Frontend deps: `vite` (devui, chatkit), `postcss` (devui, chatkit, handoff), `picomatch` (devui, handoff) CHANGELOG-only — no source or pyproject.toml changes. PRs themselves merged upstream independently of this release branch and will be brought in via the PR merge.
200 lines
6.2 KiB
TOML
200 lines
6.2 KiB
TOML
[project]
|
|
name = "agent-framework-lab"
|
|
description = "Experimental modules for Microsoft Agent Framework"
|
|
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
version = "1.0.0b260428"
|
|
license-files = ["LICENSE"]
|
|
urls.homepage = "https://aka.ms/agent-framework"
|
|
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
|
|
urls.release_notes = "https://github.com/microsoft/agent-framework/releases?q=tag%3Apython-1&expanded=true"
|
|
urls.issues = "https://github.com/microsoft/agent-framework/issues"
|
|
classifiers = [
|
|
"License :: OSI Approved :: MIT License",
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Python :: 3.14",
|
|
]
|
|
dependencies = [
|
|
"agent-framework-core>=1.2.1,<2",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
# GAIA benchmark module dependencies
|
|
gaia = [
|
|
"pydantic>=2.0.0",
|
|
"opentelemetry-api>=1.39.0",
|
|
"opentelemetry-sdk>=1.39.0,<2",
|
|
"tqdm>=4.60.0",
|
|
"huggingface-hub>=0.20.0",
|
|
"orjson>=3.10.7,<4",
|
|
"pyarrow>=18.0.0", # For reading parquet files
|
|
]
|
|
|
|
# Lightning RL training module dependencies
|
|
lightning = [
|
|
"agentlightning>=0.2.0,<0.3.0",
|
|
]
|
|
|
|
# TAU2 benchmark module dependencies
|
|
tau2 = [
|
|
"pydantic>=2.0.0",
|
|
"tiktoken>=0.11.0",
|
|
"loguru>=0.7.3",
|
|
"numpy",
|
|
]
|
|
|
|
# Dependencies for math-related training
|
|
math = [
|
|
"sympy>=1.13.0",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"uv==0.11.6",
|
|
"ruff==0.15.8",
|
|
"pytest==9.0.3",
|
|
"mypy==1.20.0",
|
|
"pyright==1.1.408",
|
|
#tasks
|
|
"poethepoet==0.42.1",
|
|
"rich>=13.7.1,<15.0.0",
|
|
"tomli==2.4.1",
|
|
"tomli-w==1.2.0",
|
|
# tau2 from source (not available on PyPI)
|
|
"tau2@ git+https://github.com/sierra-research/tau2-bench@5ba9e3e56db57c5e4114bf7f901291f09b2c5619",
|
|
"prek==0.3.9",
|
|
]
|
|
|
|
[project.scripts]
|
|
gaia_viewer = "agent_framework_lab_gaia:viewer_main"
|
|
lightning = "agent_framework_lab_lightning:main"
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=64", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools]
|
|
packages = [
|
|
"agent_framework_lab_gaia",
|
|
"agent_framework_lab_lightning",
|
|
"agent_framework_lab_tau2",
|
|
"agent_framework.lab.gaia",
|
|
"agent_framework.lab.lightning",
|
|
"agent_framework.lab.tau2",
|
|
]
|
|
|
|
[tool.setuptools.package-dir]
|
|
"agent_framework_lab_gaia" = "gaia/agent_framework_lab_gaia"
|
|
"agent_framework_lab_lightning" = "lightning/agent_framework_lab_lightning"
|
|
"agent_framework_lab_tau2" = "tau2/agent_framework_lab_tau2"
|
|
"agent_framework.lab.gaia" = "namespace/agent_framework/lab/gaia"
|
|
"agent_framework.lab.lightning" = "namespace/agent_framework/lab/lightning"
|
|
"agent_framework.lab.tau2" = "namespace/agent_framework/lab/tau2"
|
|
|
|
[tool.setuptools.package-data]
|
|
agent_framework_lab_gaia = ["py.typed"]
|
|
agent_framework_lab_lightning = ["py.typed"]
|
|
agent_framework_lab_tau2 = ["py.typed"]
|
|
|
|
[tool.ruff]
|
|
extend = "../../pyproject.toml"
|
|
extend-exclude = ["**/data/**"]
|
|
|
|
[tool.ruff.lint]
|
|
ignore = [
|
|
"T201", # Allow print statements in experimental/lab code for debugging purposes.
|
|
"ASYNC230", # Allow 'await' outside of async functions in test and experimental code.
|
|
"INP001", # Ignore missing __init__.py in namespace packages.
|
|
"RUF029", # Allow use of 'assert' statements; assertions are used for internal checks in experimental code.
|
|
"ASYNC240", # Allow 'async for' outside of async functions in test and experimental code.
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
omit = [
|
|
"**/__init__.py"
|
|
]
|
|
|
|
[tool.pyright]
|
|
extends = "../../pyproject.toml"
|
|
include = ["gaia/agent_framework_lab_gaia", "lightning/agent_framework_lab_lightning", "tau2/agent_framework_lab_tau2"]
|
|
exclude = ['gaia/tests', 'lightning/tests', 'tau2/tests', 'namespace', '**/samples']
|
|
|
|
[tool.mypy]
|
|
plugins = ['pydantic.mypy']
|
|
strict = true
|
|
python_version = "3.10"
|
|
ignore_missing_imports = true
|
|
disallow_untyped_defs = true
|
|
no_implicit_optional = true
|
|
check_untyped_defs = true
|
|
warn_return_any = true
|
|
show_error_codes = true
|
|
warn_unused_ignores = false
|
|
disallow_incomplete_defs = true
|
|
disallow_untyped_decorators = true
|
|
|
|
[tool.bandit]
|
|
targets = ["agent_framework_lab_gaia", "agent_framework_lab_lightning", "agent_framework_lab_tau2"]
|
|
exclude_dirs = ["gaia/tests", "lightning/tests", "tau2/tests"]
|
|
|
|
[tool.poe]
|
|
include = "../../shared_tasks.toml"
|
|
|
|
[tool.poe.tasks.mypy-gaia]
|
|
help = "Run MyPy for the lab GAIA package."
|
|
cmd = "mypy --config-file $POE_ROOT/pyproject.toml gaia/agent_framework_lab_gaia"
|
|
|
|
[tool.poe.tasks.mypy-lightning]
|
|
help = "Run MyPy for the lab Lightning package."
|
|
cmd = "mypy --config-file $POE_ROOT/pyproject.toml lightning/agent_framework_lab_lightning"
|
|
|
|
[tool.poe.tasks.mypy-tau2]
|
|
help = "Run MyPy for the lab Tau2 package."
|
|
cmd = "mypy --config-file $POE_ROOT/pyproject.toml tau2/agent_framework_lab_tau2"
|
|
|
|
[tool.poe.tasks.mypy]
|
|
help = "Run MyPy across all lab subpackages."
|
|
sequence = ["mypy-gaia", "mypy-lightning", "mypy-tau2"]
|
|
|
|
[tool.poe.tasks.test]
|
|
help = "Run the default lab unit test suite."
|
|
cmd = 'pytest -m "not integration and not resource_intensive" --cov-report=term-missing:skip-covered --junitxml=test-results.xml'
|
|
|
|
[tool.poe.tasks.test-gaia]
|
|
help = "Run the GAIA lab test suite."
|
|
cmd = "pytest gaia/tests --cov=agent_framework_lab_gaia --cov-report=term-missing:skip-covered"
|
|
|
|
[tool.poe.tasks.test-lightning]
|
|
help = "Run the Lightning lab test suite."
|
|
cmd = "pytest lightning/tests --cov=agent_framework_lab_lightning --cov-report=term-missing:skip-covered"
|
|
|
|
[tool.poe.tasks.test-tau2]
|
|
help = "Run the Tau2 lab test suite."
|
|
cmd = "pytest tau2/tests --cov=agent_framework_lab_tau2 --cov-report=term-missing:skip-covered"
|
|
|
|
[tool.poe.tasks.build]
|
|
help = "Skip build for the lab package."
|
|
cmd = "echo 'Skipping build'"
|
|
|
|
[tool.poe.tasks.publish]
|
|
help = "Skip publish for the lab package."
|
|
cmd = "echo 'Skipping publish'"
|
|
|
|
[tool.pytest.ini_options]
|
|
pythonpath = ["."]
|
|
addopts = "--strict-markers --strict-config"
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "function"
|
|
markers = [
|
|
"unit: marks tests as unit tests",
|
|
"integration: marks tests as integration tests",
|
|
"resource_intensive: marks tests that are expensive and excluded from default package test runs",
|
|
]
|