Release v0.12.0 - #45
Merged
Merged
Conversation
`download_artifacts` now names each saved file after the field it fills, following the rule `pipelex-sdk-js` states in its `docs/artifact-download.md`, and every verdict item carries `found_at` on both arms. The new `locate_artifacts` returns each reference with every path it sits at, and `artifact_filename` now takes that location, so a verdict item predicts its own saved name. A cross-SDK run of one corpus through both implementations found no difference in the paths or the names. Closes L-260924-27d936 Advances L-260924-ec45a1 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01KAUFtFH3dukuR2CkwoH9wv <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic `download_artifacts` now names each saved file after the field it fills, matching the rule `pipelex-sdk-js` documents, and every verdict item carries `found_at` on both arms. A new `locate_artifacts` returns each `pipelex-storage://` reference together with every `$`-rooted path it sits at, in the same discovery order as `collect_artifacts`, so a consumer can predict a saved filename before downloading. A cross-SDK run of one corpus through both implementations found no difference in the paths or the names. `artifact_filename` now takes an `ArtifactLocation` and scope instead of a URI and index, and files are named from the first path at which their reference sits (for example, `$.rooms[3].staged_photo.url` is saved as `rooms-3-staged_photo.png`). **Breaking changes** - `artifact_filename(location, content_type, scope)` replaces the old URI-based signature and raises `ArtifactOperationError` for anything that is not a valid location. - `DownloadedArtifact` now extends `ArtifactLocation` and requires `found_at`; code that builds verdict items, such as test fakes, must supply it. Closes L-260924-27d936. Advances L-260924-ec45a1. <sup>Written for commit 8068c41. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-sdk-python/pull/43?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. --> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ved its reason (#44) Moves the exact `mthds` pin from 0.14.0 to 0.15.0. `pipelex` has pinned `mthds==0.15.0` exactly since 0.60.0, so the two packages could not be installed together; this restores that. Nothing in the client changed with the move, and the local method-files codec stays beside `mthds.protocol.method_files` until `PipelineRequestError`'s base class is settled upstream, which `docs/architecture.md` now records. Closes L-260922-5f7eeb 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Moves the exact `mthds` pin from 0.14.0 to 0.15.0 so `pipelex` and `pipelex-sdk` can be installed together again: `pipelex` has pinned `mthds==0.15.0` exactly since 0.60.0, and two exact pins on different versions left the pair unresolvable. Nothing in the client changed with the move. **Breaking changes in 0.15.0** — none of them affect this SDK: - The one breaking cut (`ConceptAbstract` reduced to a name, `StuffAbstract` dumping its concept as the ref string) sits in protocol models this SDK does not build on. - The base client's run-source guard now rejects a protocol arg smuggled through `extra` before building the body, which this client's own guard already did. - The canonical method-files pair ships as `mthds.protocol.method_files`; this package keeps its own `parse_method_files` / `serialize_method_files` until `PipelineRequestError`'s base class is settled upstream, and `docs/architecture.md` now records the reason. Closes L-260922-5f7eeb. <sup>Written for commit 261b296. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-sdk-python/pull/44?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. --> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.12.0
Bumps version from
0.11.0to0.12.0. Promotesdev→main.Changelog
Added
locate_artifactsandArtifactLocation:pipelex_sdk.artifacts.locate_artifacts(value)is the artifact walk with its paths — everypipelex-storage://reference in a JSON value, deduplicated in discovery order exactly ascollect_artifactsreturns them, each as anArtifactLocationwhosefound_atlists every$-rooted path at which it sits ($.rooms[3].staged_photo.url,$.items[0].url,$["a key"].url), written the way@pipelex/sdk'slocateArtifactswrites them.Changed
download_artifactsnames each file after the field it fills, andartifact_filenametakes a location (Breaking): a saved file is named after the first path at which its reference sits —$.rooms[3].staged_photo.urlis saved asrooms-3-staged_photo.png, and an output that is one image asmain_stuff.png— instead of after the last segment of its storage key, which now supplies only the extension, so the same run saves under the same names from either SDK.artifact_filename(location, content_type, scope)replacesartifact_filename(uri, content_type, index)and raisesArtifactOperationErrorfor anything but anArtifactLocationwhose first path is in the walk's notation; a field whose name Windows reserves for a device (aux,nul,com1and the like) is saved with a trailing_(aux_.png); the full rule is ondocs/artifact-download.md.DownloadedArtifactcarries a requiredfound_at(Breaking): every item of adownload_artifactsverdict carries its reference'sfound_at, on the saved arm and the error arm alike, so a file that was not saved still says which field it would have filled.DownloadedArtifactis now anArtifactLocation, soartifact_filenametakes a verdict item as it is, and code that buildsDownloadedArtifactvalues — a test fake standing in fordownload_artifacts— must now supply the field.mthds0.15.0 (Breaking): the exact pin moves from 0.14.0, sopipelex-sdkcan again be installed besidepipelex, which has pinnedmthds==0.15.0exactly since its 0.60.0. Nothing in this client's own surface changes: the release's breaking cut toConceptAbstractandStuffAbstractsits in protocol models this SDK does not build on, andparse_method_files/serialize_method_filesstay beside the canonicalmthds.protocol.method_filesfor the reasondocs/architecture.mdgives.Closes L-260924-a14bbb
🤖 Generated with Claude Code
Summary by cubic
Bumps the version from
0.11.0to0.12.0and promotesdevtomain. The release changes how downloaded artifact files are named and moves the exactmthdspin.New Features
locate_artifactswalks a JSON value and returns everypipelex-storage://reference with every$-rooted path where it sits ($.rooms[3].staged_photo.url), in discovery order matchingcollect_artifacts.Migrations
download_artifactsnow names each saved file after the field its reference fills (first path) instead of the storage key's last segment, which now only supplies the extension.artifact_filename(location, content_type, scope)replaces the URI-based signature and raisesArtifactOperationErrorfor invalid input.DownloadedArtifactnow extendsArtifactLocationand requiresfound_at, so test fakes standing in fordownload_artifactsmust supply it.mthdspin from0.14.0to0.15.0sopipelex-sdkinstalls besidepipelexagain; nothing in the client surface changes.Written for commit 8c9fcd5. Summary will update on new commits.