[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.0b260521" 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.6.0,<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", ]