diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index ad0ea628192..9e78705b569 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -89,8 +89,8 @@ jobs: with: python-version: ${{ matrix.python-version }} os: ${{ runner.os }} - # Foundry Local requires Python 3.11-3.14; RedisVL still declares Python <3.15. - exclude-packages: ${{ matrix.python-version == '3.15' && 'agent-framework-redis agent-framework-foundry-local' || '' }} + # Foundry Local requires Python 3.11-3.14. + exclude-packages: ${{ matrix.python-version == '3.15' && 'agent-framework-foundry-local' || '' }} env: # Configure a constant location for the uv cache UV_CACHE_DIR: /tmp/.uv-cache diff --git a/python/DEV_SETUP.md b/python/DEV_SETUP.md index 1278e1adc01..6d06fb025a0 100644 --- a/python/DEV_SETUP.md +++ b/python/DEV_SETUP.md @@ -66,7 +66,7 @@ You can then run the following commands manually: ```bash # Install every Python version covered by CI uv python install 3.11 3.12 3.13 3.14 3.15 -# Use Python 3.11 through 3.14 for a normal full-workspace development environment +# Use Python 3.11 through 3.14 for a full-workspace development environment PYTHON_VERSION="3.13" uv venv --python $PYTHON_VERSION # Install AF and all workspace dependencies @@ -78,13 +78,10 @@ uv run poe prek-install Python 3.11 or later is required. Use Python 3.11–3.15 for supported development environments, subject to the workspace and integration-specific limits below. -The checked-in root workspace lock supports the common Python 3.11–3.14 -development range. CI validates the Python 3.15 boundary by temporarily -excluding workspace packages whose own Python constraints do not cover that -version; see `.github/actions/python-setup/action.yml`. For local work -specifically targeting Python 3.15, use an isolated package-scoped environment -or the corresponding CI lane rather than expecting the frozen full-workspace -install above to resolve unchanged. +The checked-in root workspace lock supports Python 3.11–3.14. CI validates +Python 3.15 with integration-specific workspace exclusions. For local Python +3.15 work, use an isolated package-scoped environment or the corresponding CI +lane rather than a frozen full-workspace install. Alternatively, you can reinstall the venv, packages, dependencies and prek hooks with a single command. Poe is part of the cross-version development diff --git a/python/README.md b/python/README.md index 4b7c2b1aa5e..57f2a843eec 100644 --- a/python/README.md +++ b/python/README.md @@ -53,7 +53,6 @@ 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. | ## 1. Setup API Keys diff --git a/python/packages/core/pyproject.toml b/python/packages/core/pyproject.toml index 63abed4cafd..d4c2c814d59 100644 --- a/python/packages/core/pyproject.toml +++ b/python/packages/core/pyproject.toml @@ -63,7 +63,7 @@ all = [ "agent-framework-openai>=1.18.0,<2", "agent-framework-orchestrations>=1.4.1,<2", "agent-framework-purview>=1.0.0b261030,<2", - "agent-framework-redis>=1.0.0b261030,<2; python_version < '3.15'", + "agent-framework-redis>=1.0.0b261030,<2", "agent-framework-tools>=1.0.0b261030,<2", ] diff --git a/python/packages/redis/README.md b/python/packages/redis/README.md index 4f826b89625..d20247f3a07 100644 --- a/python/packages/redis/README.md +++ b/python/packages/redis/README.md @@ -18,8 +18,8 @@ records. Import them from `agent_framework.redis` or `agent_framework_redis`. ## Install -Supports Python 3.11–3.14. RedisVL currently declares `Requires-Python <3.15`, -so pip cannot install this connector on Python 3.15 yet: +Supports Python 3.11–3.15. Python 3.15 requires RedisVL 0.31; earlier Python +versions can use older compatible RedisVL releases: ```bash pip install agent-framework-redis --pre diff --git a/python/packages/redis/pyproject.toml b/python/packages/redis/pyproject.toml index f6226871b4a..d10faab076d 100644 --- a/python/packages/redis/pyproject.toml +++ b/python/packages/redis/pyproject.toml @@ -3,7 +3,7 @@ name = "agent-framework-redis" description = "Redis integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" -requires-python = ">=3.11,<3.15" +requires-python = ">=3.11" version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" @@ -19,12 +19,13 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Typing :: Typed", ] dependencies = [ "agent-framework-core>=1.19.0,<2", "redis>=6.4.0,<7.2.1", - "redisvl>=0.11.0,<0.16", + "redisvl>=0.11.0,<0.32", "numpy>=2.2.6,<3" ] diff --git a/python/uv.lock b/python/uv.lock index 1c38dce631e..3ee4848c659 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -3,16 +3,16 @@ revision = 5 requires-python = ">=3.11, <3.15" resolution-markers = [ "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and sys_platform == 'linux'", - "python_full_version >= '3.14' and sys_platform == 'win32'", "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", "python_full_version < '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'win32'", "python_full_version < '3.12' and sys_platform == 'win32'", ] supported-markers = [ @@ -541,7 +541,7 @@ requires-dist = [ { name = "agent-framework-openai", marker = "extra == 'all'", editable = "packages/openai" }, { name = "agent-framework-orchestrations", marker = "extra == 'all'", editable = "packages/orchestrations" }, { name = "agent-framework-purview", marker = "extra == 'all'", editable = "packages/purview" }, - { name = "agent-framework-redis", marker = "python_full_version < '3.15' and extra == 'all'", editable = "packages/redis" }, + { name = "agent-framework-redis", marker = "extra == 'all'", editable = "packages/redis" }, { name = "agent-framework-tools", marker = "extra == 'all'", editable = "packages/tools" }, { name = "mcp", marker = "extra == 'all'", specifier = ">=2.2.0,<3" }, { name = "msgspec", specifier = ">=0.20.0,<0.23" }, @@ -1129,7 +1129,7 @@ requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, { name = "numpy", specifier = ">=2.2.6,<3" }, { name = "redis", specifier = ">=6.4.0,<7.2.1" }, - { name = "redisvl", specifier = ">=0.11.0,<0.16" }, + { name = "redisvl", specifier = ">=0.11.0,<0.32" }, ] [[package]] @@ -3675,13 +3675,13 @@ version = "2.5.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and sys_platform == 'linux'", - "python_full_version >= '3.14' and sys_platform == 'win32'", "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'win32'", "python_full_version == '3.12.*' and sys_platform == 'win32'", ] sdist = { url = "https://files.pythonhosted.org/packages/95/b0/c7453d0b6e2073c3264468b106ee1563750cecc910965e67357e3698c83e/numpy-2.5.4.tar.gz", hash = "sha256:9a94cf751c9ad8ebaa835bcd3d40dacf8534ad086b88c38029b65123c7999d2a", size = 20866315, upload-time = "2026-10-10T20:05:31.422Z" } @@ -5251,7 +5251,7 @@ wheels = [ [[package]] name = "redisvl" -version = "0.15.0" +version = "0.31.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonpath-ng" }, @@ -5264,9 +5264,9 @@ dependencies = [ { name = "redis" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/1a/f1f0ff963622c34a9e9a9f2a0c6ad82bfbd05c082ecc89e38e092e3e9069/redisvl-0.15.0.tar.gz", hash = "sha256:0e382e9b6cd8378dfe1515b18f92d125cfba905f6f3c5fe9b8904b3ca840d1ca", size = 861480, upload-time = "2026-02-27T14:02:33.366Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/83/34f856484eb79ec90e6e323cb0d23cedcc222d26c6b504591a6e1b4a2215/redisvl-0.31.0.tar.gz", hash = "sha256:6a69e8ba12b27caad212234c25ea54ff1848a58503989a68f9595bdeaa2926e4", size = 1526140, upload-time = "2026-11-06T09:07:03.91Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/23/5c5263a3cfc66957fa3bb154ef9441fbbcfb2f4eae910eb18e316db168b1/redisvl-0.15.0-py3-none-any.whl", hash = "sha256:aff716b9a9c4aef9c81de9a12d9939a0170ff3b3a1fe9d4164e94b131a754290", size = 197935, upload-time = "2026-02-27T14:02:31.262Z" }, + { url = "https://files.pythonhosted.org/packages/16/86/049516467c514183478ecdeb0e2f24ea688a32ef2d9a6668b528368c5951/redisvl-0.31.0-py3-none-any.whl", hash = "sha256:fb20dc06f02a99bbc3d61512bb5e8261b5630e70e744e2cd8046c0e86df3490e", size = 456685, upload-time = "2026-11-06T09:07:01.946Z" }, ] [[package]]