diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 02d4fde..3547bd4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,21 +12,20 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t", "3.15.0-alpha.1"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t", "3.15.0-alpha.2"] os: ["ubuntu-latest", "windows-latest", "macos-latest"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - # uv doc: https://docs.astral.sh/uv/guides/integration/github/ - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v7 with: - version: "0.9.3" + version: "0.9.11" - name: Run ruff run: | uvx ruff check diff --git a/README.md b/README.md index fc56134..b745109 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![OS Independant](https://img.shields.io/badge/OS_Independant-%E2%9C%93-blue) -[![python versions](https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12%20|%203.13%20|%203.14%20|%203.15.0a1-blue)](https://devguide.python.org/versions/) +[![python versions](https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12%20|%203.13%20|%203.14%20|%203.15.0a2-blue)](https://devguide.python.org/versions/) [![license MIT](https://img.shields.io/github/license/eliegoudout/paramclasses)](https://opensource.org/licenses/MIT) [![pypi](https://img.shields.io/pypi/v/paramclasses)](https://pypi.org/project/paramclasses/) [![pipeline status](https://github.com/eliegoudout/paramclasses/actions/workflows/ci.yml/badge.svg)](https://github.com/eliegoudout/paramclasses/actions) diff --git a/test/paramclasses/test_signature.py b/test/paramclasses/test_signature.py index 9608f19..9a0a579 100644 --- a/test/paramclasses/test_signature.py +++ b/test/paramclasses/test_signature.py @@ -156,22 +156,18 @@ def test_signature_call_non_unpackable( # Non-unpackable ``args`` if accepts_args: - msg = ( - f"{ParamWithPostInit.__name__}.__post_init__() argument after * must be an" - " iterable, not NoneType" - ) + # >=3.15.0a2-compatible message (python/cpython/pull/136395) + msg = " after * must be an iterable, not NoneType" args_kwargs = [None, {}] if accepts_kwargs else [None] - with pytest.raises(TypeError, match=f"^{re.escape(msg)}$"): + with pytest.raises(TypeError, match=f"{re.escape(msg)}$"): ParamWithPostInit(*args_kwargs) # Non-unpackable ``kwargs`` if accepts_kwargs: - msg = ( - f"{ParamWithPostInit.__name__}.__post_init__() argument after ** must be a" - " mapping, not NoneType" - ) + # >=3.15.0a2-compatible message (python/cpython/pull/136395) + msg = " after ** must be a mapping, not NoneType" args_kwargs = [[], None] if accepts_args else [None] - with pytest.raises(TypeError, match=f"^{re.escape(msg)}$"): + with pytest.raises(TypeError, match=f"{re.escape(msg)}$"): ParamWithPostInit(*args_kwargs)