Skip to content

Release - #554

Merged
leoschwarz merged 27 commits into
releasefrom
rel-20260715-rc2
Jul 15, 2026
Merged

leoschwarz merged 27 commits into
releasefrom
rel-20260715-rc2

Conversation

@leoschwarz

@leoschwarz leoschwarz commented Jul 15, 2026 •

Copy link
Copy Markdown
Contributor

Release candidates for end to end testing.

leoschwarz and others added 27 commits June 23, 2026 11:06
authlib's OAuth2Client.ensure_active_token() prefers the refresh-token
grant whenever the token dict carries a "refresh_token" key, regardless
of grant type (it checks refresh_token before the client_credentials
branch). Some B-Fabric token endpoints return a refresh_token alongside
a client_credentials access token. Honoring it means that once the
refresh token expires (it has its own, shorter lifetime) every call
fails with invalid_grant and the session never falls back to re-fetching
with the client secret, wedging the provider until the process restarts.

For client_credentials providers, strip any refresh_token from the
session token (after the initial fetch and before each expiry check) so
authlib always re-fetches a brand-new token on expiry. The refresh_token
grant path is unaffected.
Maps B-Fabric objects onto the generic movers from the layer below.

- `UploadRestClient`: the `/rest/upload/*` calls (check-duplicates, create-resources, initiate) over the client's OAuth access token, plus `tus_sink_for_resource`
- `resource_sources` / `ssh_source` / `http_source`: Resource → download source
- `token_provider` and the fail-fast scope pre-checks (`check_upload_scope` / `check_download_scope`)

`transfer/__init__.py` now re-exports both halves as one namespace. Reuses the existing `bfabric._oauth` (already on main).
…536)

Adds the end-to-end file-upload feature on top of the transfer layer.

- `operations.workunit.upload_files`: create-or-reuse workunit → dedup → create resources → mint tus token → transfer each file, with the operations-module failure-cleanup contract (mark failed, never delete)
- `operations.workunit.create_workunit`: the small base64-over-SOAP create
- `bfabric-cli workunit upload`: CLI front-end with a live progress bar
Migrate `bfabric_app_runner` onto the new `bfabric.transfer` layer and remove code which was extracted to there.

- `inputs/prepare/` and `output_registration/` now delegate byte transfers to `bfabric.transfer` (`fetch_to_path`, `send_to_sink`, `md5_checksum`, `token_provider`, scope checks); `inputs/resolve/_common.py` source construction moved into the core binding.
- Deletes app_runner's own `util/scp.py` and `util/checksum.py`, now provided by the library.
Bump bfabric-asgi-auth's direct starlette pin to >=1.0.1,<2 and
bfabric-rest-proxy's fastapi floor to >=0.134.0 so its transitive
starlette resolves to >=1.0.1.

Closes #505
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Release Preview

The following packages will be released when this PR is merged:

Package Current (PyPI) New Version
bfabric 1.19.0 1.20.0rc2
bfabric_scripts 1.15.0 1.16.0rc2
bfabric_app_runner 0.6.1 0.7.0rc1

This comment is automatically updated when the PR changes.

@github-actions

Copy link
Copy Markdown
Contributor

✅ Release Distribution Testing

Packages to release: bfabric, bfabric_scripts, bfabric_app_runner

Test Results:

  • Python 3.11 (highest): ✅ passed
  • Python 3.11 (lowest-direct): ✅ passed
  • Python 3.13 (highest): ✅ passed

Status: All tests passed with built distributions. The packages are ready for release.

Last updated: 2026-07-15T07:45:18.318Z

@leoschwarz
leoschwarz merged commit 73c6ee3 into release Jul 15, 2026
14 checks passed
@leoschwarz
leoschwarz deleted the rel-20260715-rc2 branch July 15, 2026 07:45
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