diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 757a5898ff..b8ca616844 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -28,7 +28,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: "3.10" cache: 'pip' - name: install deps run: | diff --git a/.github/workflows/hiredis-py-integration.yaml b/.github/workflows/hiredis-py-integration.yaml index 9b5220ab12..a780c4d32c 100644 --- a/.github/workflows/hiredis-py-integration.yaml +++ b/.github/workflows/hiredis-py-integration.yaml @@ -45,7 +45,7 @@ jobs: fail-fast: false matrix: redis-version: [ '${{ needs.redis_version.outputs.CURRENT }}' ] - python-version: [ '3.9', '3.14'] + python-version: [ '3.10', '3.14'] parser-backend: [ 'hiredis' ] hiredis-version: [ 'unstable' ] event-loop: [ 'asyncio' ] diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index 5adf7f41ac..e0ae2dd3a6 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -51,7 +51,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: "3.10" cache: 'pip' - name: run code linters run: | @@ -77,7 +77,7 @@ jobs: fail-fast: false matrix: redis-version: ['8.4-M01-pre', '${{ needs.redis_version.outputs.CURRENT }}', '8.0.2' ,'7.4.4', '7.2.9'] - python-version: ['3.9', '3.13'] + python-version: ['3.10', '3.14'] parser-backend: ['plain'] event-loop: ['asyncio'] env: @@ -101,7 +101,7 @@ jobs: fail-fast: false matrix: redis-version: [ '${{ needs.redis_version.outputs.CURRENT }}' ] - python-version: ['3.10', '3.11', '3.12', 'pypy-3.9', 'pypy-3.10'] + python-version: ['3.11', '3.12', '3.13', 'pypy-3.10', 'pypy-3.11'] parser-backend: [ 'plain' ] event-loop: [ 'asyncio' ] env: @@ -125,7 +125,7 @@ jobs: fail-fast: false matrix: redis-version: [ '${{ needs.redis_version.outputs.CURRENT }}' ] - python-version: [ '3.9', '3.13'] + python-version: [ '3.10', '3.14'] parser-backend: [ 'hiredis' ] hiredis-version: [ '>=3.2.0', '<3.0.0' ] event-loop: [ 'asyncio' ] @@ -151,7 +151,7 @@ jobs: fail-fast: false matrix: redis-version: [ '${{ needs.redis_version.outputs.CURRENT }}' ] - python-version: [ '3.9', '3.13' ] + python-version: [ '3.10', '3.14' ] parser-backend: [ 'plain' ] event-loop: [ 'uvloop' ] env: @@ -179,7 +179,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: "3.10" - name: Run installed unit tests env: CLIENT_LIBS_TEST_IMAGE_TAG: ${{ env.CURRENT_REDIS_VERSION }} @@ -193,7 +193,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.9', 'pypy-3.10'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14', 'pypy-3.10', 'pypy-3.11'] steps: - uses: actions/checkout@v5 - uses: actions/setup-python@v6 diff --git a/.github/workflows/pypi-publish.yaml b/.github/workflows/pypi-publish.yaml index 77bbfa9962..27e07ca901 100644 --- a/.github/workflows/pypi-publish.yaml +++ b/.github/workflows/pypi-publish.yaml @@ -17,7 +17,7 @@ jobs: - name: install python uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: "3.10" - run: pip install build twine - name: Build package diff --git a/.readthedocs.yml b/.readthedocs.yml index 17bfa9d47c..0600219e1c 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -9,7 +9,7 @@ python: build: os: ubuntu-20.04 tools: - python: "3.9" + python: "3.10" sphinx: configuration: docs/conf.py diff --git a/dev_requirements.txt b/dev_requirements.txt index 7758a1839e..f201098a14 100644 --- a/dev_requirements.txt +++ b/dev_requirements.txt @@ -1,30 +1,31 @@ build -build==1.2.2.post1 ; platform_python_implementation == "PyPy" or python_version < "3.10" +build==1.2.2.post1 ; platform_python_implementation == "PyPy" click==8.0.4 invoke==2.2.0 mock -mock==5.1.0 ; platform_python_implementation == "PyPy" or python_version < "3.10" +mock==5.1.0 ; platform_python_implementation == "PyPy" packaging>=20.4 -packaging==24.2 ; platform_python_implementation == "PyPy" or python_version < "3.10" +packaging==24.2 ; platform_python_implementation == "PyPy" pytest -pytest==8.3.4 ; platform_python_implementation == "PyPy" or python_version < "3.10" +pytest==8.3.4 ; platform_python_implementation == "PyPy" pytest-asyncio>=0.23.0 -pytest-asyncio==1.1.0 ; platform_python_implementation == "PyPy" or python_version < "3.10" +pytest-asyncio==1.1.0 ; platform_python_implementation == "PyPy" pytest-cov -pytest-cov==6.0.0 ; platform_python_implementation == "PyPy" or python_version < "3.10" -coverage==7.6.12 ; platform_python_implementation == "PyPy" or python_version < "3.10" +pytest-cov==6.0.0 ; platform_python_implementation == "PyPy" +coverage==7.6.12 ; platform_python_implementation == "PyPy" pytest-profiling==1.8.1 pytest-timeout -pytest-timeout==2.3.1 ; platform_python_implementation == "PyPy" or python_version < "3.10" +pytest-timeout==2.3.1 ; platform_python_implementation == "PyPy" ruff==0.9.6 ujson>=4.2.0 -uvloop<=0.21.0; platform_python_implementation == "CPython" +uvloop<=0.21.0; platform_python_implementation == "CPython" and python_version < "3.14" +uvloop>=0.22; platform_python_implementation == "CPython" and python_version >= "3.14" vulture>=2.3.0 numpy>=1.24.0 ; platform_python_implementation == "CPython" -numpy>=1.24.0,<2.0 ; platform_python_implementation == "PyPy" or python_version < "3.10" +numpy>=1.24.0,<2.0 ; platform_python_implementation == "PyPy" redis-entraid==1.0.0 pybreaker>=1.4.0 diff --git a/pyproject.toml b/pyproject.toml index 7888b5f70c..f1cedefead 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ dynamic = ["version"] description = "Python client for Redis database and key-value store" readme = "README.md" license = "MIT" -requires-python = ">=3.9" +requires-python = ">=3.10" authors = [{ name = "Redis Inc.", email = "oss@redis.com" }] keywords = ["Redis", "database", "key-value-store"] classifiers = [ @@ -20,11 +20,11 @@ classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.9", "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", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] @@ -91,7 +91,7 @@ log_level = "INFO" capture = "yes" [tool.ruff] -target-version = "py39" +target-version = "py310" line-length = 88 exclude = [ "*.egg-info", diff --git a/redis/__init__.py b/redis/__init__.py index 67f165d9fe..669779c6b9 100644 --- a/redis/__init__.py +++ b/redis/__init__.py @@ -46,7 +46,7 @@ def int_or_str(value): return value -__version__ = "6.2.0" +__version__ = "7.0.0" VERSION = tuple(map(int_or_str, __version__.split(".")))