From 0bbc26ea91bef40cfba32b6044faa3011408ecd4 Mon Sep 17 00:00:00 2001 From: Roland Walker Date: Thu, 15 Oct 2026 05:41:55 -0400 Subject: [PATCH] Python 3.15 by default in CI and Dockerfile cleaning up a few other minor references such as test strings. --- .github/actions/typecheck/action.yml | 2 +- .github/workflows/ci.yml | 22 +++++++++---------- .github/workflows/publish.yml | 22 +++++++++---------- AGENTS.md | 2 +- changelog.md | 2 ++ docker/Dockerfile | 2 +- .../pytests/test_special_db_commands.py | 6 ++--- 7 files changed, 30 insertions(+), 28 deletions(-) diff --git a/.github/actions/typecheck/action.yml b/.github/actions/typecheck/action.yml index b563c812..2ec2a556 100644 --- a/.github/actions/typecheck/action.yml +++ b/.github/actions/typecheck/action.yml @@ -7,7 +7,7 @@ runs: - name: Set up Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.14' + python-version: '3.15' - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 with: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 339bd88d..4d265c59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.14"] + python-version: ["3.15"] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -111,7 +111,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.14'] + python-version: ['3.15'] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -144,7 +144,7 @@ jobs: uv run -- coverage report -m --sort=Miss --skip-covered --skip-empty tests-wsl: - name: Tests WSL (3.14) + name: Tests WSL (3.15) runs-on: windows-latest steps: @@ -175,14 +175,14 @@ jobs: shell: wsl-bash {0} run: | export PATH="$HOME/.local/bin:$PATH" - env PYTHONPATH=/usr/local/lib/python3.14/site-packages pip install --upgrade --break-system-packages --prefix=/usr uv + env PYTHONPATH=/usr/local/lib/python3.15/site-packages pip install --upgrade --break-system-packages --prefix=/usr uv - name: Install dependencies shell: wsl-bash {0} run: | export PATH="$HOME/.local/bin:$PATH" cd /root/mycli - uv sync --extra dev,llm,dataframe --python 3.14 + uv sync --extra dev,llm,dataframe --python 3.15 - name: Start MySQL in WSL shell: wsl-bash {0} @@ -210,11 +210,11 @@ jobs: run: | export PATH="$HOME/.local/bin:$PATH" cd /root/mycli - uv run --python 3.14 -- coverage run -m pytest - uv run --python 3.14 -- coverage report -m --sort=Miss --skip-covered --skip-empty + uv run --python 3.15 -- coverage run -m pytest + uv run --python 3.15 -- coverage report -m --sort=Miss --skip-covered --skip-empty test-no-extras: - name: Tests Without Extras (3.14) + name: Tests Without Extras (3.15) runs-on: ubuntu-26.04 steps: @@ -227,14 +227,14 @@ jobs: - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.14' + python-version: '3.15' - name: Start MySQL run: | sudo systemctl start mysql - name: Install dependencies - run: uv sync --extra dev -p python3.14 + run: uv sync --extra dev --python python3.15 - name: Wait for MySQL connection run: | @@ -248,7 +248,7 @@ jobs: PYTEST_HOST: 127.0.0.1 TERM: xterm run: | - ./.venv/bin/tox -e py3.14 + ./.venv/bin/tox -e py3.15 docker-x86-build: name: Build x86 Docker Image diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 240cdb8b..72ded60b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -65,7 +65,7 @@ jobs: sudo systemctl start mysql - name: Install dependencies - run: uv sync --extra dev,llm,dataframe -p ${{ matrix.python-version }} + run: uv sync --extra dev,llm,dataframe --python ${{ matrix.python-version }} - name: Wait for MySQL connection run: | @@ -88,7 +88,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.14"] + python-version: ["3.15"] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -111,7 +111,7 @@ jobs: brew services start mysql - name: Install dependencies - run: uv sync --extra dev,llm,dataframe -p ${{ matrix.python-version }} + run: uv sync --extra dev,llm,dataframe --python ${{ matrix.python-version }} - name: Wait for MySQL connection run: | @@ -139,7 +139,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.14'] + python-version: ['3.15'] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -155,7 +155,7 @@ jobs: - name: Install dependencies shell: cmd - run: uv sync --extra dev,llm,dataframe -p ${{ matrix.python-version }} + run: uv sync --extra dev,llm,dataframe --python ${{ matrix.python-version }} - name: Set up MySQL uses: shogo82148/actions-setup-mysql@1d4ebc60ba1227dd13fc7e6ba845bd3997928d75 # v1.54.2 @@ -204,14 +204,14 @@ jobs: shell: wsl-bash {0} run: | export PATH="$HOME/.local/bin:$PATH" - env PYTHONPATH=/usr/local/lib/python3.14/site-packages pip install --upgrade --break-system-packages --prefix=/usr uv + env PYTHONPATH=/usr/local/lib/python3.15/site-packages pip install --upgrade --break-system-packages --prefix=/usr uv - name: Install dependencies shell: wsl-bash {0} run: | export PATH="$HOME/.local/bin:$PATH" cd /root/mycli - uv sync --extra dev,llm,dataframe --python 3.14 + uv sync --extra dev,llm,dataframe --python 3.15 - name: Start MySQL in WSL shell: wsl-bash {0} @@ -239,8 +239,8 @@ jobs: run: | export PATH="$HOME/.local/bin:$PATH" cd /root/mycli - uv run --python 3.14 -- coverage run -m pytest - uv run --python 3.14 -- coverage report -m --sort=Miss --skip-covered --skip-empty + uv run --python 3.15 -- coverage run -m pytest + uv run --python 3.15 -- coverage report -m --sort=Miss --skip-covered --skip-empty build: runs-on: ubuntu-26.04 @@ -255,10 +255,10 @@ jobs: - name: Set up Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.14' + python-version: '3.15' - name: Install dependencies - run: uv sync --extra llm,dataframe -p 3.14 + run: uv sync --extra llm,dataframe --python 3.15 - name: Build run: uv build diff --git a/AGENTS.md b/AGENTS.md index 5d475458..56b966c6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -105,7 +105,7 @@ To run the full test suite, execute `env -u PYTHONPATH uv run -- tox`. #### Python Compatibility -Use Python features available from Python 3.11 through Python 3.14. +Use Python features available from Python 3.11 through Python 3.15. Compatibility with Python 3.9 is not needed. Compatibility with Python 3.10 is not needed. diff --git a/changelog.md b/changelog.md index dc7bd9de..c381f221 100644 --- a/changelog.md +++ b/changelog.md @@ -11,6 +11,8 @@ Internal * Remove temporary dependency settings in `pyproject.toml`. * Upgrade `sqlglot` to v30.23.0. * Add Python 3.15 to CI. +* Switch to Python 3.15 by default in CI. +* Switch to Python 3.15 in Dockerfile. v2.29.4 (2026/10/11) diff --git a/docker/Dockerfile b/docker/Dockerfile index bb6db476..1c91964b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.14 +FROM python:3.15 ENV DEBIAN_FRONTEND=noninteractive diff --git a/mycli_test/pytests/test_special_db_commands.py b/mycli_test/pytests/test_special_db_commands.py index 6040b574..c83bb601 100644 --- a/mycli_test/pytests/test_special_db_commands.py +++ b/mycli_test/pytests/test_special_db_commands.py @@ -228,7 +228,7 @@ def test_ping_command_registration() -> None: def test_status_uses_global_queries_decodes_bytes_and_formats_stats(monkeypatch) -> None: monkeypatch.setattr(db_commands, '__version__', '9.9.9') monkeypatch.setattr(db_commands.platform, 'python_implementation', lambda: 'CPython') - monkeypatch.setattr(db_commands.platform, 'python_version', lambda: '3.14.0') + monkeypatch.setattr(db_commands.platform, 'python_version', lambda: '3.15.0') monkeypatch.setattr(db_commands.io_commands, 'is_pager_enabled', lambda: True) monkeypatch.setattr(db_commands, 'get_ssl_cipher', lambda cur: 'TLS_AES_256_GCM_SHA384') monkeypatch.setattr(db_commands, 'get_ssl_version', lambda cur: 'TLSv1.3') @@ -273,7 +273,7 @@ def test_status_uses_global_queries_decodes_bytes_and_formats_stats(monkeypatch) result = status(cursor)[0] - assert 'mycli 9.9.9 running on CPython 3.14.0' in result.preamble + assert 'mycli 9.9.9 running on CPython 3.15.0' in result.preamble assert ('Connection id:', 42) in result.rows assert ('Current database:', 'test_db') in result.rows assert ('Current user:', 'test_user') in result.rows @@ -349,7 +349,7 @@ def test_status_uses_system_default_pager_when_enabled_without_env(monkeypatch) monkeypatch.setattr(db_commands.io_commands, 'is_pager_enabled', lambda: True) monkeypatch.setattr(db_commands, 'get_ssl_version', lambda cur: 'TLS') monkeypatch.setattr(db_commands.platform, 'python_implementation', lambda: 'CPython') - monkeypatch.setattr(db_commands.platform, 'python_version', lambda: '3.14.0') + monkeypatch.setattr(db_commands.platform, 'python_version', lambda: '3.15.0') monkeypatch.delenv('PAGER', raising=False) cursor = FakeCursor(