mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
8457533c69
* Replace Pydantic Settings with TypedDict + load_settings() - Remove pydantic-settings dependency, add python-dotenv - Delete _pydantic.py (AFBaseSettings, HTTPsUrl) - Add _settings.py with generic load_settings() function, SecretString, type coercion, and Required field validation (SettingNotFoundError) - Convert all 13 settings classes from AFBaseSettings subclasses to TypedDict definitions with load_settings() calls - Update all consumers from attribute access to dict access - Add 20 unit tests for load_settings() covering basic loading, dotenv, SecretString, type coercion, and required field validation - Update all existing tests for new settings patterns * Fix mypy type errors from settings conversion - Fix str | None attribute access in responses_client (walrus operator) - Fix SecretString | None narrowing in bedrock (type: ignore after guard) - Convert _context_provider.py attribute access to dict access (missed file) - Fix endpoint type narrowing in search_provider and context_provider - Fix purview: str | None .rstrip(), int | None defaults, urlparse bytes * Address PR review: required_fields param, type validation, fixes - Move required field validation from TypedDict annotations (Required) to a required_fields parameter on load_settings(), enabling runtime decisions about which fields are required - Remove Required imports and restore from __future__ import annotations in ollama and foundry_local - Add _check_override_type() for deterministic ServiceInitializationError on invalid override types (e.g. dict passed for str field) - Fix all multi-exception test catches back to single exception type - Fix Ollama host=None: use .get() so None is passed through to SDK default - Fix Purview processor: use explicit is-None checks instead of or operator - Remove unused BaseModel import from openai/_shared.py - Add 4 new tests (24 total): required_fields param, type validation * Fix type validation: allow int for float fields _check_override_type now permits int values for float-typed fields, matching Python's standard numeric promotion behavior. * fix: wrap urlparse arg with str() to fix mypy bytes endswith error
133 lines
3.6 KiB
TOML
133 lines
3.6 KiB
TOML
[project]
|
|
name = "agent-framework-core"
|
|
description = "Microsoft Agent Framework for building AI Agents with Python. This is the core package that has all the core abstractions and implementations."
|
|
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
version = "1.0.0b260210"
|
|
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",
|
|
"Typing :: Typed",
|
|
]
|
|
dependencies = [
|
|
# utilities
|
|
"typing-extensions",
|
|
"pydantic>=2,<3",
|
|
"python-dotenv>=1,<2",
|
|
# telemetry
|
|
"opentelemetry-api>=1.39.0",
|
|
"opentelemetry-sdk>=1.39.0",
|
|
"opentelemetry-semantic-conventions-ai>=0.4.13",
|
|
# connectors and functions
|
|
"openai>=1.99.0",
|
|
"azure-identity>=1,<2",
|
|
"azure-ai-projects >= 2.0.0b3",
|
|
"mcp[ws]>=1.24.0,<2",
|
|
"packaging>=24.1",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
all = [
|
|
"agent-framework-a2a",
|
|
"agent-framework-ag-ui",
|
|
"agent-framework-azure-ai-search",
|
|
"agent-framework-anthropic",
|
|
"agent-framework-azure-ai",
|
|
"agent-framework-azurefunctions",
|
|
"agent-framework-chatkit",
|
|
"agent-framework-copilotstudio",
|
|
"agent-framework-declarative",
|
|
"agent-framework-devui",
|
|
"agent-framework-durabletask",
|
|
"agent-framework-github-copilot",
|
|
"agent-framework-lab",
|
|
"agent-framework-mem0",
|
|
"agent-framework-ollama",
|
|
"agent-framework-orchestrations",
|
|
"agent-framework-purview",
|
|
"agent-framework-redis",
|
|
]
|
|
|
|
[tool.uv]
|
|
prerelease = "if-necessary-or-explicit"
|
|
environments = [
|
|
"sys_platform == 'darwin'",
|
|
"sys_platform == 'linux'",
|
|
"sys_platform == 'win32'"
|
|
]
|
|
|
|
[tool.uv-dynamic-versioning]
|
|
fallback-version = "0.0.0"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = [
|
|
'tests',
|
|
'packages/core/tests',
|
|
'packages/a2a/tests',
|
|
'packages/azure-ai/tests',
|
|
'packages/copilotstudio/tests',
|
|
'packages/mem0/tests',
|
|
'packages/runtime/tests'
|
|
]
|
|
addopts = "-ra -q -r fEX"
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "function"
|
|
filterwarnings = []
|
|
timeout = 120
|
|
|
|
[tool.coverage.run]
|
|
omit = [
|
|
"**/__init__.py"
|
|
]
|
|
|
|
[tool.ruff]
|
|
extend = "../../pyproject.toml"
|
|
|
|
[tool.pyright]
|
|
extends = "../../pyproject.toml"
|
|
|
|
[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"]
|
|
exclude_dirs = ["tests"]
|
|
|
|
[tool.poe]
|
|
executor.type = "uv"
|
|
include = "../../shared_tasks.toml"
|
|
[tool.poe.tasks]
|
|
mypy = "mypy --config-file $POE_ROOT/pyproject.toml agent_framework"
|
|
test = "pytest --cov=agent_framework --cov-report=term-missing:skip-covered tests"
|
|
|
|
[tool.flit.module]
|
|
name = "agent_framework"
|
|
|
|
[build-system]
|
|
requires = ["flit-core >= 3.11,<4.0"]
|
|
build-backend = "flit_core.buildapi"
|