Skip to content

Require both siblings from the releases that now carry what this tree calls - #769

Merged
fametrano merged 1 commit into
mainfrom
pin-released-deps
Aug 13, 2026
Merged

Require both siblings from the releases that now carry what this tree calls#769
fametrano merged 1 commit into
mainfrom
pin-released-deps

Conversation

@fametrano

@fametrano fametrano commented Aug 13, 2026

Copy link
Copy Markdown
Member

btclib_secp256k1>=0.8.0.1 and bitcoin-core-rpc>=2026.8.13, where each
was a git+...@main direct reference: keys.PubkeyTweakChain (issue #685)
is published now, and so are assert_chain and the two magic lookups
network.py stopped carrying. Neither floor is an upgrade -- the bindings'
tag is the commit uv.lock pinned plus its release-notes commit, and
bitcoin-core-rpc's is the pinned commit plus a Windows CI fix, a README line
and the version bump -- so what moves is the shape of the pin, not the code
resolved.

The prose and the comments that described the reference follow it back:
CONTRIBUTING.md's dependency paragraph names the two floors again, test.yml's
matrix selects a published wheel per cell rather than compiling one, and
latest.yml's suite-bindings-latest upgrades to a release rather than to the
tip of a branch. RELEASING.md keeps the warning that made the reference worth
documenting, stated as a condition rather than as the arrangement: PyPI
refuses a direct reference in metadata and nothing before publish-pypi
catches one, so a floor is the only pin a release may carry.

The dist job's constraints are whole again. #767 dropped the two siblings
from the export with --no-emit-package because uv refuses a branch url
against the commit the lock resolved, once the branch has moved past it --
which cost that job its determinism, deliberately and for want of an
alternative. A floor resolves to a release and a release does not move, so
the exception goes and every package is pinned to the lock again; #767's
other half, the regex that lets tests/build_system_test.py collect on 3.10,
is untouched, and its CHANGELOG entry keeps that half alone.

Two names those comments had wrong are corrected while they are being
rewritten: the jobs are suite-latest and suite-bindings-latest, which
published.yml also misnamed, and test.yml cited a floor three releases old.

The gates: 26455 passed at 100.00% coverage, pre-commit clean, sphinx -W
clean.

🤖 Generated with Claude Code

Summary by Sourcery

Pin the btclib_secp256k1 and bitcoin-core-rpc dependencies to newly published sibling releases instead of git main references, and align CI workflows, locking behavior, and documentation with release-based pins while restoring deterministic constraints for the dist smoke test.

Bug Fixes:

  • Restore determinism to the dist wheel smoke test by applying uv.lock constraints to all runtime dependencies, including the btclib_secp256k1 and bitcoin-core-rpc siblings.

Enhancements:

  • Update dependency floors to btclib_secp256k1>=0.8.0.1 and bitcoin-core-rpc>=2026.8.13 to ensure the API features this tree relies on are provided by released versions.
  • Clarify and correct workflow job names and narrative around suite-latest and suite-bindings-latest, and how bindings upgrades are checked via latest.yml and release workflows.
  • Adjust documentation (CONTRIBUTING, RELEASING, HISTORY, CHANGELOG) to describe release-based floors instead of direct git references, and to explain how bindings releases are tested and pinned across workflows.

CI:

  • Update test.yml, latest.yml, release.yml, and published.yml so CI uses published wheels from PyPI, relies on uv.lock for deterministic constraints, and treats bindings upgrades as release-based rather than branch-based.

Documentation:

  • Revise CONTRIBUTING.md, RELEASING.md, HISTORY.md, and CHANGELOG.md to document the new dependency floors, the release-based pinning model, and the role of suite-bindings-latest in monitoring sibling releases.

Tests:

  • Keep the existing CHANGELOG entry for tests/build_system_test.py collecting on Python 3.10 while removing obsolete narrative about the temporary dist job workaround.

Chores:

  • Correct outdated references and misnamed jobs in comments (e.g., suite-latest vs suite-bindings-latest) and sync prose with the current workflow structure.

… calls

`btclib_secp256k1>=0.8.0.1` and `bitcoin-core-rpc>=2026.8.13`, where each
was a `git+...@main` direct reference: `keys.PubkeyTweakChain` (issue #685)
is published now, and so are `assert_chain` and the two magic lookups
`network.py` stopped carrying. Neither floor is an upgrade -- the bindings'
tag is the commit uv.lock pinned plus its release-notes commit, and
bitcoin-core-rpc's is the pinned commit plus a Windows CI fix, a README line
and the version bump -- so what moves is the shape of the pin, not the code
resolved.

The prose and the comments that described the reference follow it back:
CONTRIBUTING.md's dependency paragraph names the two floors again, test.yml's
matrix selects a published wheel per cell rather than compiling one, and
latest.yml's suite-bindings-latest upgrades to a release rather than to the
tip of a branch. RELEASING.md keeps the warning that made the reference worth
documenting, stated as a condition rather than as the arrangement: PyPI
refuses a direct reference in metadata and nothing before publish-pypi
catches one, so a floor is the only pin a release may carry.

The dist job's constraints are whole again. #767 dropped the two siblings
from the export with --no-emit-package because uv refuses a branch url
against the commit the lock resolved, once the branch has moved past it --
which cost that job its determinism, deliberately and for want of an
alternative. A floor resolves to a release and a release does not move, so
the exception goes and every package is pinned to the lock again; #767's
other half, the regex that lets tests/build_system_test.py collect on 3.10,
is untouched, and its CHANGELOG entry keeps that half alone.

Two names those comments had wrong are corrected while they are being
rewritten: the jobs are suite-latest and suite-bindings-latest, which
published.yml also misnamed, and test.yml cited a floor three releases old.

The gates: 26455 passed at 100.00% coverage, pre-commit clean, sphinx -W
clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @fametrano, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@sourcery-ai

sourcery-ai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Switches btclib’s two sibling dependencies from git@main direct references to pinned release floors, restores full constraints export in the dist smoke test, and updates CI/documentation to reflect release-based pins and correct job naming, while keeping the latest-bindings workflows focused on testing new releases rather than branch tips.

Sequence diagram for latest.yml upgrade workflows using released bindings

sequenceDiagram
  actor Maintainer
  participant GitHubActions as latest_workflow
  participant uv as uv_cli
  participant PyPI as pypi_registry

  Maintainer->>GitHubActions: trigger latest.yml

  GitHubActions->>uv: uv lock --upgrade
  uv->>PyPI: resolve all dependencies to newest releases
  PyPI-->>uv: release versions (including btclib_secp256k1)
  uv-->>GitHubActions: updated uv.lock
  GitHubActions->>GitHubActions: run pytest (suite-latest)

  GitHubActions->>uv: uv lock --upgrade-package btclib_secp256k1
  uv->>PyPI: resolve btclib_secp256k1 to newest release
  PyPI-->>uv: btclib_secp256k1>=0.8.0.1 or newer
  uv-->>GitHubActions: updated uv.lock
  GitHubActions->>GitHubActions: run pytest (suite-bindings-latest)
Loading

File-Level Changes

Change Details Files
Depend on released versions of btclib_secp256k1 and bitcoin-core-rpc instead of git+main direct references, and update lockfile and history accordingly.
  • Replace git+main direct references in pyproject.toml with floors btclib_secp256k1>=0.8.0.1 and bitcoin-core-rpc>=2026.8.13
  • Adjust CONTRIBUTING.md to describe the new floor-based dependency policy with no upper bounds
  • Update HISTORY.md to record the new btclib_secp256k1 floor version
  • Regenerate uv.lock to follow the new release pins
pyproject.toml
CONTRIBUTING.md
HISTORY.md
uv.lock
Restore deterministic constraints usage in the dist smoke test now that both siblings are pinned to releases.
  • Remove --no-emit-package exceptions for btclib-secp256k1 and bitcoin-core-rpc from uv export in the dist job
  • Clarify comments in test.yml about constraints binding versions for all packages, including the two siblings, so required checks remain deterministic
.github/workflows/test.yml
Update CI workflows to treat btclib_secp256k1 and bitcoin-core-rpc as release-pinned dependencies and refine the latest-bindings checks.
  • Change suite job comments in test.yml to describe selecting published wheels per matrix cell rather than building from source
  • Modify latest.yml to describe upgrading bindings to their newest release instead of the tip of main, and rename/clarify the bindings-only upgrade step
  • Adjust release.yml to smoke-test the wheel against newest published bindings from PyPI, updating step naming accordingly
  • Fix misnamed references to suite-bindings-latest in published.yml and other docs, and align wording around what latest.yml’s bindings job checks
.github/workflows/test.yml
.github/workflows/latest.yml
.github/workflows/release.yml
.github/workflows/published.yml
RELEASING.md
Tighten and clarify changelog and release-process documentation around the build_system_test fix and the sibling dependency policy.
  • Condense the CHANGELOG entry for tests/build_system_test.py’s regex-based pyproject parsing to focus on its 3.10 collection fix
  • Add a new CHANGELOG note that both sibling bounds now point at the August 13 releases that carry the required features
  • Rewrite RELEASING.md’s guidance on sibling pins to emphasize floors over direct references and the PyPI metadata constraint
CHANGELOG.md
RELEASING.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@fametrano
fametrano merged commit d690e51 into main Aug 13, 2026
43 checks passed
@fametrano
fametrano deleted the pin-released-deps branch August 13, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant