Skip to content

Releases: DazzleLib/dazzle-lib

v0.8.2 — the bedrock nucleus, subtypes, and rank addressing

Choose a tag to compare

@djdarcy djdarcy released this 19 Jul 21:50
v0.8.2
5856bb2

dazzle-lib v0.8.2

Bedrock primitives for the DazzleLib stack: the Unified ↔ Groupable ↔ Continuum ↔ ContinuumSpace value ladder, protocols, and the rank/axis machinery every higher layer builds on.

What's New in v0.8.2 (the 0.8.1 + 0.8.2 pair)

The nucleus and framing — every ladder type knows its invariant seat

nucleus() returns the conserved center (the 0-seat's meaning); framing() names the perspective a continuum is read under. The {-1, 0, +1} thesis lands in code: a Groupable is {minus, plus, meaning}, and the meaning seat is addressable.

Continuum subtypes — the struct declares its shape

subtype ∈ {full | monopole | list} with sign-structure validation: full requires reaches on both sides of 0, monopole exactly one, list is the sanctioned home of truthful ordinals (a numeric NAME must equal its rank — the truth guard).

Continuum("visibility", ranks={"visible": 0, "silenced": -1, "hidden": -2}, subtype="monopole")

Rank addressability

level_at(rank, nearest=) and rank_name(rank) — positions answer by number; anonymous rungs self-name by their rank spelling ("5/2"), and rename_level christens them later without moving anything.

Insertion without renumbering — or with it, side-aware

densify_between gains integer mediants and optional naming; shift_from(rank, by) renumbers one side only (the pivot's sign selects the side; the invariant seat is unmovable). Named collisions raise loudly; from_groupable declares subtype="full".

Test hardening (pre-tag additions)

PEP 440 .devN tails accepted without a phase marker; the densified-rank serialization seam documented as a repro (densify_between promotes whole-number mediants to Fraction, breaking JSON downstream — fix scheduled with the countable-christening work); the nucleus/rank-addressing human checklist ships in tests/checklists/.

Installation

pip install dazzle-lib

Version History (0.8.x)

Version Key Change
v0.8.2 Current — nucleus/subtypes/rank addressing + tester-findings fixes
v0.8.1 nucleus()/framing(), level_at, the subtype field, side-aware shift_from (no standalone release)
v0.8.0 The bedrock CONTRACT protocols — "bedrock declares, consumer adheres" (no standalone release)

Earlier lines: v0.6.7 (the SH base-object redesign) · v0.1.0 (protocols, payload schemas, exception root).

Platform Support

Platform Status
Windows Tested
Linux / macOS / BSD Expected to work (pure Python, no platform calls)

Requirements

Python 3.10+. Zero runtime dependencies.

137 tests passing at the tag.

v0.6.7 -- SH base-object redesign

Choose a tag to compare

@djdarcy djdarcy released this 20 Jun 17:48
96d4875

The 0.6.x line completes the Scarcity-Hypothesis-grounded base-object redesign: the recursive ladder Unified → Groupable → Continuum → ContinuumSpace, closed under composition, with the four-quadrant wheel and the state/transition machinery built on top. The bedrock now ships the bones every dazzle-* library and aggregator composes on — pure, stdlib-only, side-effect-free by charter.

Highlights

  • ContinuumSpace is closed under composition (0.6.0) — a dimension may be a Continuum or a ContinuumSpace; compose() yields a space and normal_form() folds nesting to the flat leaf product. {Continuum, ContinuumSpace, compose} is complete the way {+, ×, ^} is. Alignment became a property, not a requirement: an aligned space carries one merged presence spectrum; a product space holds independent, differently-scaled axes and refuses cross-axis navigation by design (scale-safety). is_aligned reports which.
  • The ladder floor (0.6.1) — Groupable (the {minus, plus} dual that is an axis's bounds) + Unified (the 0_ag pre-cut form, implicitly a Groupable). Invertibility is the floor; nothing is one-way.
  • Continuum bridges (0.6.2) — poles(), densify_between() (insert a named rung at the mediant Fraction), Continuum.from_groupable(), and the RungValue alias. Method-additive; un-densified continua stay byte-identical.
  • The four-quadrant wheel (0.6.3) — ContinuumSpace.quadrants(a1, a2) → QuadrantView: the SH-cycle four-phase wheel as a pairwise view over any two axes of the N-ary space (never a structural 2-axis limit). quadrants() / hidden_at() / agreement_diagonal() / disagreement_diagonal() / tau_steps().
  • Transition.kind (0.6.4, fixed 0.6.6) — the lateral / generative / one-way / refused vocabulary bridge over the existing Reversibility, with a completeness guard so a new member can't go unmapped.
  • Serialization floor (0.6.5) — to_dict/from_dict + SCHEMA_VERSION on Groupable + Unified (lossless round-trip).
  • The inward/outward symmetry (0.6.7) — Continuum.fibers (a per-rung INWARD sub-structure) + the unified children() / walk() / fold(): one child-relation, total over the ladder (a space's children are its axes OUTWARD, a continuum's are its fibers INWARD, a Groupable/Unified is a leaf). The recursive core, finalized.

Compatibility

  • Backward-compatible — the aligned-spectrum path and existing primitives are byte-identical; new capabilities are method/field-additive (empty defaults).
  • Charter-pure — stdlib-only, no I/O, no effects (enforced by tests/test_charter.py).

Docs

  • docs/the-ladder.md — the base-object model (Unified/Groupable/Continuum/ContinuumSpace, aligned vs product, the signed invariant-bearing zero, fibers).
  • docs/the-quadrant-wheel.mdQuadrantView + the polar/quadrant geometry it projects.

Full changelog: see CHANGELOG.md (0.6.0 → 0.6.7).

v0.1.0 - The Bedrock: Protocols, Payload Schemas, Exception Root

Choose a tag to compare

@djdarcy djdarcy released this 11 Jun 20:28
v0.1.0
f5f92c1

dazzle-lib v0.1.0

The DazzleLib stack's bedrock: shared Protocols, TypedDict payload schemas, and the exception root. Types only -- by charter this package contains no I/O, no path handling, no platform probing, and no behavior, forever.

This is Phase F of the DazzleLib stack plan under the frozen architecture contract.

What's in v0.1.0

  • Protocols -- Viewable (summary()/__str__) and Serializable (to_dict/from_dict/to_json, SCHEMA_VERSION): structural, runtime_checkable, nothing is forced to subclass. "The dict is the interface; objects know how to become dicts."
  • Payload schemas -- FileMetadataDict, TimestampsDict, WindowsMetadataDict, UnixMetadataDict, LinkTargetDict, HashResultDict: the cross-layer TypedDict shapes, mirroring what dazzle-filekit actually produces.
  • Exception bedrock -- DazzleError root + PathIdentityError / FileOperationError / LinkError / PreserveError domain bases: one catchable root for the whole stack.
  • DazzleDataMixin -- derives to_json/summary/__str__ from your to_dict.
  • Day-one guards -- api-stability.md with the locked surface, an import-stability canary, and the charter test that fails on any behavior-bearing or non-stdlib import (red-green verified).

Installation

pip install dazzle-lib

Requirements

Python 3.9+ · zero dependencies · all platforms (platform support)

What adopts it next

dazzle-filekit 0.3.0 (#15) and dazzle-unctools 0.2.0 (UNCtools#3) in the stack's P1 "foundations refresh", then the dazzle-linklib and dazzle-preservelib extractions.