Draft
Conversation
❌ Jit Scanner failed - Our team is investigatingJit Scanner failed - Our team has been notified and is working to resolve the issue. Please contact support if you have any questions. 💡 Need to bypass this check? Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR drops Python 3.9 support from RedisVL and makes Python 3.10 the project minimum. That change is carried through package metadata, the lockfile, CI configuration, repo-owned documentation, and the codebase’s type annotations so the stated support policy and the implementation match.
Motivation
Supporting Python 3.9 was already imposing ongoing cost in a few different ways. It required extra compatibility handling, kept the project split between core-package and MCP-specific runtime messaging, and forced older annotation syntax across large parts of the repository. Python 3.9 is also past its official end-of-life, so continuing to carry support for it no longer has a strong maintenance or ecosystem justification. The project already targets newer runtimes in practice, which makes keeping 3.9 mostly maintenance overhead.
Changes
The support-floor change starts in packaging and CI.
pyproject.toml,uv.lock, and the GitHub Actions workflows now treat Python 3.10 as the minimum supported version, while preserving current newer-runtime coverage, including Python 3.14 in lint and test configuration. This aligns the declared support policy with the environments the project is expected to run and validate against.The library code has also been updated to use Python 3.10-native typing syntax throughout repo-owned Python sources. Legacy
typingcontainer aliases andOptional/Unionforms were replaced with built-in generics and|unions where valid, while runtime-sensitive sites were adjusted manually so forward references, type checks, and schema/type-introspection behavior remain valid without addingfrom __future__ import annotations.Additional follow-up changes include:
Annotatedimports to the standard library where supportedtyping_extensions.Selfin place where it is still required for Python 3.10 compatibilityNote for Reviewers
The docs build still reports existing Sphinx warnings that are unrelated to this PR.
Testing
The following checks were run during development:
make check-sort-importsmake check-formatmake check-typesuv run python -m tests.test_imports redisvluv run python -m pytest tests/unit/test_validation.py tests/unit/test_index_schema_type_issue.py tests/unit/test_base_vectorizer.py tests/unit/test_cli_utils.py tests/unit/test_hybrid_types.py tests/unit/test_mcp/test_search_tool_unit.py tests/unit/test_mcp/test_upsert_tool_unit.py tests/integration/test_mcp/test_server_startup.py tests/integration/test_mcp/test_upsert_tool.py -qmake docs-build