[project] name = "agent-framework-tools" description = "Built-in tools for the Microsoft Agent Framework (local shell, and more)." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" version = "1.0.0a260424" 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 :: 3 - Alpha", "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", "Typing :: Typed", ] dependencies = [ "agent-framework-core>=1.2.2,<2", # psutil powers cross-OS process-tree termination on timeout. It's a # mandatory dep because it's the difference between "child processes # may survive timeout on Windows" and "they don't" — a security-relevant # property, not an optional one. "psutil>=5.9", ] [tool.uv] prerelease = "if-necessary-or-explicit" [tool.uv-dynamic-versioning] fallback-version = "0.0.0" [tool.pytest.ini_options] testpaths = 'tests' addopts = "-ra -q -r fEX" asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" filterwarnings = [] timeout = 120 markers = [ "integration: marks tests as integration tests that require external services", ] [tool.ruff] extend = "../../pyproject.toml" [tool.ruff.lint.per-file-ignores] # A local shell tool fundamentally launches user commands; S-rules and asserts # on pre-validated internal state are intentional. "agent_framework_tools/shell/**" = ["S101", "S110", "SIM105"] "tests/**" = ["D", "INP", "TD", "ERA001", "RUF", "S", "ASYNC240"] [tool.coverage.run] omit = [ "**/__init__.py" ] [tool.pyright] extends = "../../pyproject.toml" include = ["agent_framework_tools"] exclude = ['tests'] [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_tools"] exclude_dirs = ["tests", "samples"] [tool.poe] executor.type = "uv" include = "../../shared_tasks.toml" [tool.poe.tasks.mypy] help = "Run MyPy for this package." cmd = "mypy --config-file $POE_ROOT/pyproject.toml agent_framework_tools" [tool.poe.tasks.test] help = "Run the default unit test suite for this package." cmd = 'pytest -m "not integration" --cov=agent_framework_tools --cov-report=term-missing:skip-covered tests' [build-system] requires = ["flit-core >= 3.11,<4.0"] build-backend = "flit_core.buildapi"