From e56b5f103589ee2d18085ce547eed40891306881 Mon Sep 17 00:00:00 2001 From: Justin Kim Date: Fri, 31 Jul 2026 11:51:08 +0900 Subject: [PATCH] Release 1.0.4: pin wirelog to v0.53.0 Move the bundled and validated wirelog ref from v0.52.0 to v0.53.0 at peeled SHA 668f82ad69c2bbfc8e8111839302adf1360f55da and bump PyreWire to 1.0.4. Keep the runtime minimum at 0.52.0 because the public C headers and SONAME are unchanged. --- .github/workflows/ci.yml | 4 ++-- CHANGELOG.md | 13 ++++++++++++- docs/support.md | 4 ++-- docs/versioning.md | 1 + pyproject.toml | 10 +++++----- src/pyrewire/__init__.py | 2 +- tests/docs/test_support_matrix.py | 4 ++-- tests/docs/test_versioning_contract.py | 15 +++++++++++++-- tests/test_changelog_format.py | 6 +++++- tests/test_ci_workflow.py | 2 +- tests/test_release_metadata.py | 6 +++--- 11 files changed, 47 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89d54f0..a85d647 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,10 +54,10 @@ jobs: python: ["3.11", "3.12", "3.13", "3.14"] env: # WIRELOG_VERSION here is the exact wirelog ref CI builds against. - # The default is pinned to the wirelog v0.52.0 release commit; + # The default is pinned to the wirelog v0.53.0 release commit; # override the repository variable to test another ref before # updating this fallback. - WIRELOG_VERSION: ${{ vars.WIRELOG_VERSION || 'da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba' }} + WIRELOG_VERSION: ${{ vars.WIRELOG_VERSION || '668f82ad69c2bbfc8e8111839302adf1360f55da' }} # `runner.temp` is NOT available in job-level `env:` (only in # step-level contexts) — using it here caused the whole workflow # to fail at startup (#114). `github.workspace` IS resolvable at diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fd48eb..6868796 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,16 @@ wirelog floor and a validated wirelog ref (see ## [Unreleased] +## [1.0.4] - 2026-07-31 + +### Changed +- The bundled and validated wirelog ref moves from `v0.52.0` to + `v0.53.0` at peeled SHA + `668f82ad69c2bbfc8e8111839302adf1360f55da`. +- The minimum compatible runtime wirelog version remains `0.52.0`; + wirelog 0.53.0 does not change the public C headers or library SONAME. + The PyreWire public API is unchanged. + ## [1.0.3] - 2026-06-28 ### Changed @@ -174,7 +184,8 @@ runtime wirelog version remaining `0.44.0`. wirelog#852. They are available in the later [1.0.0] line, whose validated wirelog ref is v0.50.0. Tracked in wirelog#859. -[Unreleased]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.3...HEAD +[Unreleased]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.4...HEAD +[1.0.4]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.3...v1.0.4 [1.0.3]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.2...v1.0.3 [1.0.2]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.1...v1.0.2 [1.0.1]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.0...v1.0.1 diff --git a/docs/support.md b/docs/support.md index c3075cf..21f8911 100644 --- a/docs/support.md +++ b/docs/support.md @@ -19,8 +19,8 @@ not need to install wirelog separately. | macOS | `arm64` | `macos-15` | Apple Silicon only for v1.0; no macOS Intel or universal2 wheel is produced. | | Windows | `win_amd64` / `AMD64` | `windows-2025-vs2026` | Built with MSVC and repaired with delvewheel. | -The bundled library is built from wirelog v0.52.0, using peeled SHA -`da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba`. +The bundled library is built from wirelog v0.53.0, using peeled SHA +`668f82ad69c2bbfc8e8111839302adf1360f55da`. ## Source Distributions diff --git a/docs/versioning.md b/docs/versioning.md index 0bb9c6d..c288e62 100644 --- a/docs/versioning.md +++ b/docs/versioning.md @@ -58,6 +58,7 @@ release to publish; it is **not** tied to the wirelog change. | `1.0.1` | `0.44.0` | `0c6e0cdaee7db069be5d8d896bb59bdcb15673e9` | Validated against wirelog `v0.51.0` (peeled tag SHA); runtime minimum remains `0.44.0`. Bundled engine bumped to pick up the wirelog#914 single-body-rule derivation fix (#165). | | `1.0.2` | `0.44.0` | `0c6e0cdaee7db069be5d8d896bb59bdcb15673e9` | Validated against wirelog `v0.51.0` (peeled tag SHA); runtime minimum remains `0.44.0`. PyreWire-only maintenance release (CI action bumps, SPDX headers, docs); no engine change. | | `1.0.3` | `0.52.0` | `da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba` | Validated against wirelog `v0.52.0` (peeled tag SHA); runtime minimum raised to `0.52.0`. Bundled engine bumped to v0.52.0 and the loader floor moved up to match. | +| `1.0.4` | `0.52.0` | `668f82ad69c2bbfc8e8111839302adf1360f55da` | Validated against wirelog `v0.53.0` (peeled tag SHA); runtime minimum remains `0.52.0`. Bundled engine bumped to v0.53.0 with no public C header or SONAME change. | The table grows with every release; the source of truth is the [CHANGELOG](https://github.com/semantic-reasoning/PyreWire/blob/main/CHANGELOG.md). diff --git a/pyproject.toml b/pyproject.toml index 0a5895e..42ce70d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pyrewire" -version = "1.0.3" +version = "1.0.4" description = "Python wrapper for wirelog - declarative dataflow analysis" readme = "README.md" requires-python = ">=3.11" @@ -74,7 +74,7 @@ test-requires = ["pytest", "pytest-cov"] before-build = "python {project}/scripts/bundle_libwirelog.py" # Pin the wirelog source ref here too so the environment matches the # `WIRELOG_VERSION` used by the test-matrix workflow. -environment = { WIRELOG_VERSION = "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba" } +environment = { WIRELOG_VERSION = "668f82ad69c2bbfc8e8111839302adf1360f55da" } [tool.cibuildwheel.linux] manylinux-x86_64-image = "manylinux_2_28" @@ -83,7 +83,7 @@ before-all = """ pip install meson && \ WIRELOG_PREFIX=/wirelog-install bash {project}/scripts/build_wirelog.sh """ -environment = { WIRELOG_VERSION = "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba", WIRELOG_PREFIX = "/wirelog-install", WIRELOG_LIB = "/wirelog-install/lib/libwirelog.so.1", LD_LIBRARY_PATH = "/wirelog-install/lib" } +environment = { WIRELOG_VERSION = "668f82ad69c2bbfc8e8111839302adf1360f55da", WIRELOG_PREFIX = "/wirelog-install", WIRELOG_LIB = "/wirelog-install/lib/libwirelog.so.1", LD_LIBRARY_PATH = "/wirelog-install/lib" } # `auditwheel` bundles libwirelog.so.1 into the wheel and patches the # RPATH (#31). Without this every wheel would ship as a manylinux # wheel that immediately fails at import time on systems without the @@ -96,7 +96,7 @@ before-all = """ brew install ninja meson pkg-config && \ WIRELOG_PREFIX=$HOME/wirelog-install bash {project}/scripts/build_wirelog.sh """ -environment = { WIRELOG_VERSION = "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba", WIRELOG_PREFIX = "$HOME/wirelog-install", WIRELOG_LIB = "$HOME/wirelog-install/lib/libwirelog.1.dylib", DYLD_LIBRARY_PATH = "$HOME/wirelog-install/lib" } +environment = { WIRELOG_VERSION = "668f82ad69c2bbfc8e8111839302adf1360f55da", WIRELOG_PREFIX = "$HOME/wirelog-install", WIRELOG_LIB = "$HOME/wirelog-install/lib/libwirelog.1.dylib", DYLD_LIBRARY_PATH = "$HOME/wirelog-install/lib" } # `delocate` is macOS's auditwheel equivalent — copies the dylib into # the wheel and rewrites install names so the bundled copy wins. repair-wheel-command = "DYLD_LIBRARY_PATH=$HOME/wirelog-install/lib delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}" @@ -104,7 +104,7 @@ repair-wheel-command = "DYLD_LIBRARY_PATH=$HOME/wirelog-install/lib delocate-whe [tool.cibuildwheel.windows] archs = ["AMD64"] before-all = "powershell {project}\\scripts\\build_wirelog.ps1" -environment = { WIRELOG_VERSION = "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba", WIRELOG_PREFIX = "C:/wirelog-install", WIRELOG_LIB = "C:/wirelog-install/bin/wirelog-1.dll" } +environment = { WIRELOG_VERSION = "668f82ad69c2bbfc8e8111839302adf1360f55da", WIRELOG_PREFIX = "C:/wirelog-install", WIRELOG_LIB = "C:/wirelog-install/bin/wirelog-1.dll" } # `delvewheel` is the Windows analogue. The bundled DLL ends up in # `pyrewire/_lib/` and the loader (#2) finds it ahead of system paths. repair-wheel-command = "pip install delvewheel && delvewheel repair -w {dest_dir} --no-mangle-all --add-path C:/wirelog-install/bin {wheel}" diff --git a/src/pyrewire/__init__.py b/src/pyrewire/__init__.py index be98cda..dcf6ee4 100644 --- a/src/pyrewire/__init__.py +++ b/src/pyrewire/__init__.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later """PyreWire - Python wrapper for wirelog declarative dataflow analysis.""" -__version__ = "1.0.3" +__version__ = "1.0.4" __author__ = "PyreWire Contributors" __license__ = "Apache-2.0 OR GPL-3.0-or-later" diff --git a/tests/docs/test_support_matrix.py b/tests/docs/test_support_matrix.py index a61eaa4..3d97165 100644 --- a/tests/docs/test_support_matrix.py +++ b/tests/docs/test_support_matrix.py @@ -12,7 +12,7 @@ yaml = pytest.importorskip("yaml") -PINNED_WIRELOG_SHA = "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba" +PINNED_WIRELOG_SHA = "668f82ad69c2bbfc8e8111839302adf1360f55da" SUPPORTED_PYTHONS = ["3.11", "3.12", "3.13", "3.14"] SUPPORTED_CP_TAGS = ["cp311", "cp312", "cp313", "cp314"] SUPPORTED_RUNNERS = ["ubuntu-24.04", "macos-15", "windows-2025-vs2026"] @@ -122,7 +122,7 @@ def test_support_wirelog_bundle_contract_matches_config_and_versioning(): assert cibw["macos"]["environment"]["WIRELOG_VERSION"] == PINNED_WIRELOG_SHA assert cibw["windows"]["environment"]["WIRELOG_VERSION"] == PINNED_WIRELOG_SHA - assert "wirelog v0.52.0" in support + assert "wirelog v0.53.0" in support assert PINNED_WIRELOG_SHA in support assert "peeled SHA" in support assert "Wheels bundle" in versioning diff --git a/tests/docs/test_versioning_contract.py b/tests/docs/test_versioning_contract.py index 00ddd21..2c2f467 100644 --- a/tests/docs/test_versioning_contract.py +++ b/tests/docs/test_versioning_contract.py @@ -12,12 +12,13 @@ yaml = pytest.importorskip("yaml") # The wirelog ref the current release bundles and validates against. -PINNED_WIRELOG_SHA = "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba" +PINNED_WIRELOG_SHA = "668f82ad69c2bbfc8e8111839302adf1360f55da" # Historical pins kept frozen in the compatibility table, one per release. WIRELOG_SHA_100 = "272edf3a24b25676f12c4b843d55510f5048dd2f" WIRELOG_SHA_101 = "0c6e0cdaee7db069be5d8d896bb59bdcb15673e9" WIRELOG_SHA_102 = WIRELOG_SHA_101 -WIRELOG_SHA_103 = PINNED_WIRELOG_SHA +WIRELOG_SHA_103 = "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba" +WIRELOG_SHA_104 = PINNED_WIRELOG_SHA def _repo_root() -> Path: @@ -65,6 +66,16 @@ def test_versioning_documents_103_wirelog_pin_and_runtime_floor(): assert "peeled tag SHA" in notes +def test_versioning_documents_104_wirelog_pin_and_runtime_floor(): + minimum, validated_ref, notes = _versioning_row("1.0.4") + + assert minimum == "`0.52.0`" + assert validated_ref == f"`{WIRELOG_SHA_104}`" + assert "v0.53.0" in notes + assert "runtime minimum remains `0.52.0`" in notes + assert "peeled tag SHA" in notes + + def test_versioning_explains_sdist_and_wheel_wirelog_behavior(): text = _read("docs/versioning.md") diff --git a/tests/test_changelog_format.py b/tests/test_changelog_format.py index 3a11cd4..965dfcc 100644 --- a/tests/test_changelog_format.py +++ b/tests/test_changelog_format.py @@ -168,7 +168,11 @@ def test_release_compare_links_are_tag_to_tag(): changelog = (_repo_root() / "CHANGELOG.md").read_text(encoding="utf-8") assert ( - "[Unreleased]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.3...HEAD" + "[Unreleased]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.4...HEAD" + in changelog + ) + assert ( + "[1.0.4]: https://github.com/semantic-reasoning/PyreWire/compare/v1.0.3...v1.0.4" in changelog ) assert ( diff --git a/tests/test_ci_workflow.py b/tests/test_ci_workflow.py index 8750076..67c4b3f 100644 --- a/tests/test_ci_workflow.py +++ b/tests/test_ci_workflow.py @@ -24,7 +24,7 @@ def _workflow() -> dict[str, Any]: def test_ci_default_wirelog_version_is_exact_sha(): env = _workflow()["jobs"]["test"]["env"] default = str(env["WIRELOG_VERSION"]) - assert "da82a14a7e1472e33aa6ed753b3bc3dfe28a68ba" in default + assert "668f82ad69c2bbfc8e8111839302adf1360f55da" in default def test_ci_matrix_drops_python_310(): diff --git a/tests/test_release_metadata.py b/tests/test_release_metadata.py index 933dbd4..571e1df 100644 --- a/tests/test_release_metadata.py +++ b/tests/test_release_metadata.py @@ -28,9 +28,9 @@ def _runtime_version_literal() -> str: return match.group(1) -def test_project_and_runtime_versions_are_103(): - assert _pyproject()["project"]["version"] == "1.0.3" - assert _runtime_version_literal() == "1.0.3" +def test_project_and_runtime_versions_are_104(): + assert _pyproject()["project"]["version"] == "1.0.4" + assert _runtime_version_literal() == "1.0.4" def test_project_classifiers_mark_stable_python_311_through_314():