Releases: DazzleLib/dazzle-linklib
Release list
v0.2.2 - First Functional Release: Link-Record Core (P2)
dazzle-linklib v0.2.2
The DazzleLib stack's L2 layer: a content-addressable link-record library. A link record maps an identity to a typed list of locators plus metadata, and knows how to serialize, find, recreate, and resolve itself -- serving the dazzlelink CLI, preserve's manifest (L3), and the Relinker anti-link-rot resolver.
First functional release
0.1.0 was a name-reservation placeholder (version only). 0.2.2 is the first release with real content -- the link-record core extracted from the dazzlelink tool (stack phase P2), verified wire-compatible with the published dazzlelink 0.8.0 tool in both directions.
What's in it
The record model -- DazzleLinkData
The .dazzlelink schema v1 (verbatim, back-compatible with every existing file: nested JSON, legacy flat, and the polyglot embedded-script form, BOM-tolerant) plus additive L2 generalizations:
- a typed locator list (
get_locators/add_locator) -- path aliases today (path/relative/unc/drive), network/content locators tomorrow (url/ipfs/torrent/...); - an optional
content_id({algorithm, digest}); - inter-record
relations(the graph node+edge model).
Path-only records gain no new keys. Satisfies dazzle_lib.Serializable + DazzleDataMixin.
Discovery + rebase
find_dazzlelinks / scan / rebase over record files (not live OS symlinks -- that stays in the CLI / filekit). rebase reports a skipped bucket for executable records it won't rewrite.
Record-centric operations
export_link / import_link / create_link / recreate_link / apply_record_metadata -- complete operations that own the record policy (which path to link, which timestamps a strategy implies) and delegate OS mechanics (symlink creation, timestamp/attribute writes) to dazzle-filekit, so a consumer recreates a link from a record in one call.
Injectable resolver
resolve_target + the ReachabilityResolver Protocol + default_reachability -- the library owns the candidate walk; the checker judges reachability (filesystem default; Relinker injects a network checker).
Fixed
- Requires
dazzle-filekit>=0.3.1: filekit 0.3.0 corrupted a symlink target's timestamps when applying a record's timestamps to the link; the 0.3.1 fix makes them land on the link. - The timestamp adapter backfills missing created/accessed so filekit never receives a partial/None timestamp dict.
Installation
pip install dazzle-linklibVersion History (0.2.x)
| Version | Key Change |
|---|---|
| v0.2.2 | Current -- first functional release: record model + discovery + operations + resolver (P2); requires filekit >=0.3.1 |
| v0.1.0 | Name-reservation placeholder (version only) |
Requirements
- Python 3.9+
dazzle-lib>=0.1.0(bedrock contracts),dazzle-filekit>=0.3.1(OS mechanics)
Tests
70 passed -- record / discovery / resolver / operations / cross-tool wire-compat + the no-upstream-import and locked-surface canaries.
v0.1.0 - Name-Reservation Placeholder
dazzle-linklib v0.1.0 -- name-reservation placeholder
dazzle-linklib is L2 of the DazzleLib stack: the content-addressable link-record library. A link record maps an identity to a typed list of locators plus metadata, and knows how to serialize, find, and resolve itself -- one model serving the dazzlelink filesystem CLI, preserve's content-hash manifest, and the Relinker anti-link-rot resolver.
What 0.1.0 is
This is a name-reservation placeholder. It claims the PyPI name and stands up the project, but exposes only its version -- there is no functional content yet. Installing it gives you a clean, importable package and nothing more.
What shipped
- MIT-licensed
dazzle_linklibpackage with the L2 charter (what this layer owns vs. delegates down todazzle-filekitL1 andunctoolsL0). - Day-one stability guards:
docs/api-stability.md(the locked-surface policy) + atests/test_import_stability.pycanary. - Release automation keyed off the GitHub Release published event (not tag push), so publishing fires once, after the notes exist.
What's next
The real content -- extracting DazzleLinkData, the JSON I/O, the typed locator list + content_id, and the injectable resolver from the dazzlelink tool -- is stack phase P2 and lands in a later release. Track it on the Roadmap.
Installation
pip install dazzle-linklibRequires Python 3.9+.