diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 780e84c..5d30b87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14.0-rc.2"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] os: ["ubuntu-latest", "windows-latest", "macos-latest"] @@ -26,7 +26,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 with: - version: "0.8.12" + version: "0.9.0" - name: Run ruff run: | uvx ruff check @@ -39,12 +39,12 @@ jobs: uv build - name: Installing run: | - uv pip install dist/paramclasses-0.4.2.dev0-py3-none-any.whl + uv pip install dist/paramclasses-0.4.2-py3-none-any.whl - name: Run pytest with coverage run: | uv run pytest --cov-report=xml - - name: Upload coverage report to Codecov (Ubuntu, python3.13) - if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13' + - name: Upload coverage report to Codecov (Ubuntu, python3.14) + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.14' uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/README.md b/README.md index 423b0c4..7749451 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.0rc2-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-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/pyproject.toml b/pyproject.toml index 1a98eb2..1a96ee6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "paramclasses" -version = "0.4.2.dev0" +version = "0.4.2" description = "Parameter-holding classes with robust subclassing protection" readme = "README.md" requires-python = ">=3.10, <3.15" diff --git a/test/paramclasses/conftest.py b/test/paramclasses/conftest.py index 00fd919..538fbb3 100644 --- a/test/paramclasses/conftest.py +++ b/test/paramclasses/conftest.py @@ -420,10 +420,7 @@ def _make( # noqa: C901, PLR0912 # Prefer complexity over modularization here continue # `target` is an instance - target_base, _fill, _ = target.partition("_fill") instance = cls() - - # `target` requires filling `vars(instance)` if target_is_fill: for attr in attrs: vars(instance)[attr] = fill diff --git a/test/paramclasses/test_getsetdel_behaviour.py b/test/paramclasses/test_getsetdel_behaviour.py index 2b810fc..1c43cb5 100644 --- a/test/paramclasses/test_getsetdel_behaviour.py +++ b/test/paramclasses/test_getsetdel_behaviour.py @@ -287,8 +287,6 @@ def test_delete_behaviour_unprotected_parameter_class_level(attr, kind, make): @parametrize_attr_kind("unprotected", "parameter") def test_delete_behaviour_unprotected_parameter_instance_level(attr, kind, make): """Always bypasses descriptors.""" - param, param_fill = make("param, param_fill", kind) - # Empty instance for obj in make("param, paramchild", kind): with pytest.raises(AttributeError, match=f"^{attr}$"): diff --git a/uv.lock b/uv.lock index d3e3bf9..81c3cc1 100644 --- a/uv.lock +++ b/uv.lock @@ -160,7 +160,7 @@ wheels = [ [[package]] name = "paramclasses" -version = "0.4.2.dev0" +version = "0.4.2" source = { editable = "." } [package.dev-dependencies]