Release v0.23.0
Merged
LC
21d ago+2332+2332+0123456789012345678901234567890123456789-275-275-012345678901234567890123456789
Release v0.23.0
Bumps version from 0.22.0 to 0.23.0. Promotes dev ā main.
Changelog
Added
- Sending a method by hash:
MthdsAPIClient.missing_blobsandupload_blobcall the protocol's optional blob routes, typed byBlobRef,MissingBlobsRequest,MissingBlobsResult,MissingBlobandUploadTarget, andprepare_filesandprepare_files_from_contentsbuild a request'sfilesfrom a listed tree or from bytes at hand: inline when the map, written as compact JSON in UTF-8 so that Base64 counts as its encoded text, is at mostDEFAULT_INLINE_TREE_MAX_BYTES(256 KiB), or when the runner keeps no blob store, and otherwise uploading only the blobs the runner lacks and sending every file by hash. Files are read and hashed off the event loop, an upload carries exactly its target's headers and never the API key, and a refused one raisesBlobUploadError, whose URL keeps no userinfo, query or fragment. VersionInfo.blob_store: theversion()handshake reads whether the runner keeps a blob store, false when the runner does not say.EmptyMethodTreeError:list_method_treeandlist_method_tree_at_rootrefuse a directory whose own tree is empty with thisMethodTreeRefusedError, which also carries the listing'sroot,excluded_files,excluded_directoriesandraw_paths, so a caller that lists a directory to find the packages and repositories nested in it learns them even when the directory holds nothing but nested packages. The refusal's code staysempty_treeand its record stays the conformance corpus's, so a caller catchingMethodTreeRefusedErroris unaffected; its message now says when the root is itself a virtual environment.- Resolving a file reference over a set of tree paths:
resolve_reference_in_pathsruns the standard's resolution steps, the same implementationresolve_referenceruns, in a set of tree paths rather than aMethodTree, for a runtime that holds only a tree's listing; withholder=Noneit resolves from the root a reference written in no file of the tree,is_one_file_treegives the one-file tree's refusal, and a refusal as not in the tree names no membership rule, which a set of paths does not record. Steps 1 and 3 in URL context are public asurl_path_ofandpercent_decode_url_path, which refuses asreference_invalid, naming the path, what step 3 refuses, andlexical_jointakesholder=Noneto join from the root.
Changed
- A method travels as
files(Breaking):MthdsAPIClient.execute,startandvalidate, theMTHDSProtocolinterface andPipelexRunnertake the method asfiles, a map from tree path to file entry typedMethodFiles, in place ofmthds_contents, and the protected_post_validateseam takesfilestoo; an empty map is refused before any request. A runner that still accepts inlinemthds_contentsreceives it throughextra, andPipelexRunnerwrites the map out as a directory forpipelex run bundleandpipelex validate bundle, refusing a hash entry. - Typed file entries (Breaking):
encode_file_entryandencode_file_mapreturnFileEntryvalues, astr, aBase64FileEntryor aHashFileEntry, instead of plain dictionaries, andpydantic_core.to_jsonwrites them in their wire form.
š¤ Generated with Claude Code
Summary by cubic
Promotes mthds to v0.23.0, the breaking release in which a method travels as a files map of typed file entries instead of inline mthds_contents, and the API client can send a tree by hash through the protocol's optional blob routes.
Breaking changes
execute,start,validate,MTHDSProtocol, andPipelexRunnernow take the method asfiles; inlinemthds_contentsis only passed throughextra.encode_file_entryandencode_file_mapreturn typedFileEntryvalues instead of plain dictionaries.
Added
prepare_filessends a tree inline when its compact JSON is at most 256 KiB or the runner keeps no blob store, otherwise uploading only the blobs the runner lacks and referencing each file by hash.VersionInfo.blob_storereports runner blob-store support; uploads never send the API key, and a refused upload raisesBlobUploadError.EmptyMethodTreeErrorcarries the root and what the listing kept out.resolve_reference_in_pathsresolves a reference over a set of tree paths, withurl_path_ofandpercent_decode_url_pathpublic.