Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/python-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ runs:
using: "composite"
steps:
- name: Set up uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version-file: "python/pyproject.toml"
enable-cache: true
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/devflow-fix-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,9 @@ jobs:
with:
python-version: '3.13'
- if: ${{ steps.team.outputs.permitted == 'true' }}
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version: '0.11.x'
version: '0.13.1'
enable-cache: false
- name: Install trusted controller dependencies
if: ${{ steps.team.outputs.permitted == 'true' }}
Expand Down Expand Up @@ -229,9 +229,9 @@ jobs:
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: '3.13'
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version: '0.11.x'
version: '0.13.1'
enable-cache: false
- name: Install trusted controller dependencies
run: uv sync --frozen --directory "$DEVFLOW_PATH"
Expand Down Expand Up @@ -405,9 +405,9 @@ jobs:
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: '3.13'
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version: '0.11.x'
version: '0.13.1'
enable-cache: false
- name: Install trusted controller dependencies
run: uv sync --frozen --directory "$DEVFLOW_PATH"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/devflow-pr-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,9 @@ jobs:
python-version: "3.13"

- name: Set up uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version: "0.11.x"
version: "0.13.1"
enable-cache: auto

- name: Install DevFlow dependencies
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/github-automation-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ jobs:

- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.11"
python-version: "3.13"

- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version: "0.12.23"
version-file: "python/pyproject.toml"

- name: Run JavaScript tests
run: node --test .github/tests/*.js
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/issue-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,9 @@ jobs:
python-version: "3.13"

- name: Set up uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version: "0.11.x"
version: "0.13.1"
enable-cache: true

- name: Install DevFlow dependencies
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/python-api-compatibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,11 @@ jobs:
persist-credentials: false

- name: Set up uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
enable-cache: false
version: "0.12.23"
version-file: "python/pyproject.toml"
python-version: "3.13"

- name: Compare public API with the PR base
working-directory: ${{ runner.temp }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-lab-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Set up uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version-file: "python/packages/lab/pyproject.toml"
python-version: ${{ matrix.python-version }}
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/python-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ jobs:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
# todo: add macos-latest when problems are resolved
os: [ubuntu-latest, windows-latest]
# Full workspace setup still builds excluded native packages slowly on 3.15.
# The dedicated meta-package job below covers the reported Windows 3.14 install path.
# Full workspace setup still builds native packages slowly on Windows 3.15.
# The dedicated meta-package job below covers Windows installability on 3.14 and 3.15.
exclude:
- python-version: "3.15"
os: windows-latest
Expand All @@ -44,8 +44,8 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
os: ${{ runner.os }}
# DuckDB has no Python 3.15 wheels yet; source builds dominate setup time.
exclude-packages: ${{ matrix.python-version == '3.10' && 'agent-framework-github-copilot agent-framework-azure-cosmos-memory' || matrix.python-version == '3.15' && 'agent-framework-sql-server agent-framework-duckdb agent-framework-redis' || '' }}
# DuckDB has no Python 3.15 wheels yet, and RedisVL declares Python <3.15.
exclude-packages: ${{ matrix.python-version == '3.10' && 'agent-framework-github-copilot agent-framework-azure-cosmos-memory' || matrix.python-version == '3.15' && 'agent-framework-duckdb agent-framework-redis' || '' }}
Comment thread
eavanvalkenburg marked this conversation as resolved.
env:
# Configure a constant location for the uv cache
UV_CACHE_DIR: /tmp/.uv-cache
Expand All @@ -72,11 +72,11 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.14"]
python-version: ["3.14", "3.15"]
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
with:
version-file: "python/pyproject.toml"
enable-cache: true
Expand Down
2 changes: 1 addition & 1 deletion python/.pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ repos:
additional_dependencies: ["bandit[toml]"]
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.12.23
rev: 0.13.1
hooks:
# Update the uv lockfile
- id: uv-lock
Expand Down
20 changes: 16 additions & 4 deletions python/DEV_SETUP.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,29 @@ version does not match.
You can then run the following commands manually:

```bash
# Install Python 3.10, 3.11, 3.12, and 3.13
uv python install 3.10 3.11 3.12 3.13
# Create a virtual environment with Python 3.10 (you can change this to 3.11, 3.12 or 3.13)
PYTHON_VERSION="3.10"
# Install every Python version covered by package or CI compatibility checks
uv python install 3.10 3.11 3.12 3.13 3.14 3.15
# Use Python 3.11 through 3.14 for a normal full-workspace development environment
PYTHON_VERSION="3.13"
uv venv --python $PYTHON_VERSION
# Install AF and all workspace dependencies
uv run poe install
# Install prek hooks
uv run poe prek-install
```

Python 3.10 remains supported and tested for this release, but it is deprecated
because upstream Python 3.10 has reached end of life. Prefer Python 3.11 or
later for new development environments.

The checked-in root workspace lock supports the common Python 3.11–3.14
development range. CI validates the Python 3.10 and 3.15 boundaries by
temporarily excluding workspace packages whose own Python constraints do not
cover those versions; see `.github/actions/python-setup/action.yml`. For local
work specifically targeting a boundary version, use an isolated
package-scoped environment or the corresponding CI lane rather than expecting
the frozen full-workspace install above to resolve unchanged.

Alternatively, you can reinstall the venv, packages, dependencies and prek
hooks with a single command. Poe is part of the cross-version development
environment:
Expand Down
20 changes: 19 additions & 1 deletion python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,27 @@ This selective approach is useful when you know which integrations you need, and

Supported Platforms:

- Python: 3.10+
- Python: 3.10–3.15
Comment thread
eavanvalkenburg marked this conversation as resolved.
Comment thread
eavanvalkenburg marked this conversation as resolved.
- OS: Windows, macOS, Linux

Python 3.10 remains supported and tested for this release, but it is deprecated
because upstream Python 3.10 has reached end of life. New environments should
use Python 3.11 or later. A future Agent Framework release will raise the
minimum version separately; this release does not remove Python 3.10 from
package metadata or CI.

### Python 3.15 limitations

`pip install agent-framework` resolves and imports on Python 3.15, but it does
not provide exactly the same feature set as Python 3.14:

| Area | Python 3.15 impact |
| --- | --- |
| Declarative Power Fx | `agent-framework-declarative` is installed, but its `powerfx` dependency is not. YAML values beginning with `=` produce a warning and remain unchanged instead of being evaluated. Declarative agents or workflows that rely on expressions may therefore use invalid literal values or fail later. |
| Redis | `agent-framework-redis` is omitted from the standard install because RedisVL declares `Requires-Python <3.15`. Redis imports and Redis-backed history, context, and vector storage are unavailable. |
| Hyperlight | `agent-framework-hyperlight` is omitted because no compatible Python 3.15 sandbox backend wheel is published. Hyperlight CodeAct and its `execute_code` tool are unavailable. |
| AG-UI A2UI | The base `agent-framework-ag-ui` package works, but pip cannot install its optional `a2ui` extra because `ag-ui-a2ui-toolkit` declares `Requires-Python <3.15`. |

## 1. Setup API Keys

Set as environment variables, or create a .env file at your project root:
Expand Down
1 change: 1 addition & 0 deletions python/packages/a2a/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
8 changes: 8 additions & 0 deletions python/packages/ag-ui/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@ AG-UI protocol integration for Agent Framework, enabling seamless integration wi
pip install agent-framework-ag-ui
```

The base package supports Python 3.10–3.15. The optional A2UI integration
currently supports Python 3.10–3.14 because `ag-ui-a2ui-toolkit` declares
`Requires-Python <3.15`:

```bash
pip install "agent-framework-ag-ui[a2ui]"
```

## Quick Start

### Server (Host an AI Agent)
Expand Down
2 changes: 2 additions & 0 deletions python/packages/ag-ui/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/anthropic/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/azure-ai-search/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/azure-cosmos-memory/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/azure-cosmos/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/azure-documentdb/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/bedrock/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
2 changes: 2 additions & 0 deletions python/packages/chatkit/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/claude/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
1 change: 1 addition & 0 deletions python/packages/copilotstudio/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
7 changes: 6 additions & 1 deletion python/packages/core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,14 @@ pip install agent-framework-openai

Supported Platforms:

- Python: 3.10+
- Python: 3.10–3.15
- OS: Windows, macOS, Linux

Python 3.10 remains supported and tested for this release, but it is deprecated
because upstream Python 3.10 has reached end of life. New environments should
use Python 3.11 or later. Removing Python 3.10 support will be handled in a
future release rather than by this compatibility update.

## 1. Setup API Keys

Depending on the client you want to use, there are various environment variables you can set to configure the chat clients. This can be done in the environment itself, or with a `.env` file in your project root, some examples of environment variables include:
Expand Down
1 change: 1 addition & 0 deletions python/packages/core/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Typing :: Typed",
]
dependencies = [
Expand Down
6 changes: 3 additions & 3 deletions python/packages/core/tests/core/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -298,16 +298,16 @@ class MockAgentSession(AgentSession):
# Mock Agent implementation for testing
class MockAgent(SupportsAgentRun):
@property
def id(self) -> str: # type: ignore[override] # pyrefly: ignore[bad-override]
def id(self) -> str: # type: ignore[override] # pyrefly: ignore[bad-override] # ty: ignore[invalid-property-type-override]
return str(uuid4())

@property
def name(self) -> str | None: # type: ignore[override] # pyrefly: ignore[bad-override]
def name(self) -> str | None: # type: ignore[override] # pyrefly: ignore[bad-override] # ty: ignore[invalid-property-type-override]
"""Returns the name of the agent."""
return "Name"

@property
def description(self) -> str | None: # type: ignore[override] # pyrefly: ignore[bad-override]
def description(self) -> str | None: # type: ignore[override] # pyrefly: ignore[bad-override] # ty: ignore[invalid-property-type-override]
return "Description"

def run( # type: ignore[override] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
Expand Down
5 changes: 5 additions & 0 deletions python/packages/declarative/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ Please install this package via pip:
pip install agent-framework-declarative
```

The package currently advertises Python 3.10–3.13 support. Python 3.14 and
3.15 can install the package, but Power Fx expressions are unavailable because
the `powerfx` dependency requires a `pythonnet` build that does not support
those Python versions.

## Release stage

This package ships at two different stability levels:
Expand Down
Loading
Loading