Skip to content

v1.4.0: humanize IDv1 explain, modernize CI, add Python 3.14 wheels - #138

Merged
titusz merged 23 commits into
mainfrom
v1.4.0
Sep 24, 2026
Merged

titusz merged 23 commits into
mainfrom
v1.4.0

Conversation

@titusz

@titusz titusz commented Sep 24, 2026

Copy link
Copy Markdown
Member

Summary

  • iscc_explain renders ISCC-IDv1 with an ISO 8601 UTC timestamp and a labeled HUB_<id> field, e.g. ID-REALM_0-V1-64-2024-04-30T18:52:03.456789Z-HUB_42
  • Fixed the pytest 10 deprecation warning in conformance test parametrization
  • Python 3.14 wheels added to the cibuildwheel build list
  • GitHub Actions updated to current versions (checkout v7, setup-python v7, upload-artifact v7, download-artifact v8, codecov v7, cibuildwheel v4.2, setup-uv v10.2.0)
  • Wheel build and verification split into a reusable build.yml that can be dispatched on any branch without publishing; release.yml now chains tests, build and publish on v* tags
  • Tests workflow no longer runs twice on tag pushes
  • Dependencies updated

Verification

  • poe all passes locally with 100% coverage and no warnings
  • Tests workflow green on all 18 matrix jobs
  • This PR is the first run of the new Build workflow (wheels for CPython 3.9 to 3.14 on Linux x86_64, macOS arm64 and Windows AMD64, plus sdist, each installed and verified on a clean interpreter)

Still open before tagging: bump version strings in pyproject.toml and iscc_core/__init__.py to 1.4.0.

titusz added 15 commits April 30, 2026 11:04
Render the 52-bit timestamp as ISO 8601 UTC with microsecond precision
and label the 12-bit field as HUB_<id>, matching the REALM_<id>
convention in the same string and aligning with the IsccDeclaration
timestamp format defined by the ISCC-HUB API.
Fixes 18 deprecation warnings on the Tests workflow.
Bumps actions/checkout v4→v6, astral-sh/setup-uv v4→v8, and
codecov/codecov-action v4→v6 in tests.yml and release.yml. None of the
intervening breaking changes affect this repo's usage.
The astral-sh/setup-uv action only publishes floating major tags up to
v7; v8 only exists as full version tags. v7 already runs on Node 24 so
the original deprecation fix is preserved.
setup-uv@v7 caches by default and keys on the system python rather than
the matrix python-version, causing parallel matrix jobs on the same OS
to race for the same cache key. Adds cache-suffix to give each matrix
entry its own cache.
Updates actions/checkout v3->v6 and github/codeql-action {init,autobuild,analyze}
v2->v4. Both prior versions ran on Node 16/20 and were deprecated.
Retarget the unreleased changelog section from 1.3.1 to 1.4.0 since the
next release will be 1.4.0.
pytest 9.1 deprecates non-Collection iterables in parametrize and
pytest 10 will reject them.
checkout v7, setup-python v7, upload-artifact v7, download-artifact v8,
codecov-action v7, cibuildwheel v4.2 and setup-uv v10.2.0. setup-uv and
cibuildwheel publish no floating major tags, so they are pinned exactly.
build.yml runs cibuildwheel, builds the sdist and verifies both across
the full Python matrix. It has no publish step or PyPI permissions and
can be dispatched manually on any branch. release.yml now only chains
tests, build and publish on v* tags. The Tests push trigger is limited
to branches so a tag push no longer runs the test matrix twice.
…eel builds

minhash.pxd already types bits via cython.locals; Cython 3.3 rejects
the PEP 526 annotation in the .py source as a redeclaration.
Builds and verifies on ubuntu-24.04-arm alongside the existing
platforms. Linux archs is set to native so each runner builds its own
architecture.
…s: at runtime

The stream: and bytes: prefixes were removed with str.lstrip, which
strips a character set and corrupts hex payloads starting with a or e.
The runtime loader also lacked bytes: support that the generator had.
Both now share one decoder in iscc_core.conformance.
@titusz titusz mentioned this pull request Sep 24, 2026
1 task
Functions that return bytes can now have conformance vectors: build_test_data.py
serializes bytes results as `bytes:<hex>` and conformance_testdata() decodes
outputs with the same prefix rules as inputs.
Add encode_seq, decode_seq and read_unit as strict byte-level helpers for
ISCC-UNIT sequences, plus the SEQ_MAINTYPES constant. decode_seq implements
the IEP-0020 decoding rules: canonical header check, MainType 0-4 only,
Length field 0-7, no truncated units or trailing bytes; unknown SubType and
Version values are preserved. Conformance vectors cover IEP-0020 Test
Vectors 1 and 2. The iscc_decompose docstring now states which strings it
accepts and points to decode_seq for strict decoding.
log2(0) raised a math domain error and avg_size 1 produced a float mask that
failed later with a TypeError. Sizes of 2 and above chunk correctly, so the
guard raises a ValueError below that bound.

Closes #134
Adds CHANGELOG.md to the format-md task and runs it before the docs copy step
so the docs mirror never lags one run behind the formatted source.
Bump version to 1.4.0, set the release date in the changelog and refresh the lock file and conformance data generator string.
@titusz
titusz merged commit 406e383 into main Sep 24, 2026
69 checks passed
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