Changelog¶
All notable changes to iiisight are documented here. The format follows Keep a Changelog, and the project aims to follow Semantic Versioning. The version is derived from the git tag by setuptools-scm; there is no hand-maintained version string.
Unreleased¶
0.4 - 2026-07-06¶
Added¶
Change Discovery (
client.fetch_changes/client.iter_activities,iiisight changes) — consume a repository’s Activity StreamsOrderedCollectionto discover changed resources.iter_activitieswalks the pages (newest-first by default, or oldest-first) and supports incremental harvesting viasince; eachActivity.referenceplugs intoclient.resolve. ExposesActivity,ActivityPage, andChangeCollection.
0.3 - 2026-07-06¶
Added¶
Image API conformance probe (
client.check_compliance,iiisight probe) — loadsinfo.json, issues the requests appropriate to the claimed compliance level, and verifies the returned image’s pixel dimensions (read from the JPEG/PNG/GIF header — no image-decoding dependency). Returns aConformanceReport; theprobeCLI command exits non-zero on non-conformance.iiisight.image_size(data)— read(width, height)from image bytes without decoding.Descriptive properties are now parsed onto every resource:
provider(Agent),thumbnail(ContentResource),homepage/rendering/seeAlso(Link),partOf(Reference), andrequiredStatement(MetadataEntry)..rawon every normalized resource — the source JSON it was built from, preserved for consumers that need the document verbatim.
Fixed¶
The JPEG header size reader missed an
SOFmarker ending exactly at the end of the buffer (off-by-one loop bound).
0.2 - 2026-07-06¶
Added¶
Command-line interface — installing the package now registers the
iiisightcommand (stdlib-only, no extra needed) withlint,info, andtilessubcommands. Each accepts a manifest/collection URL or a local JSON file;lintexits non-zero on errors (--strictalso on warnings);lint/infosupport--json.
0.1 - 2026-07-05¶
First public release. iiisight is a tolerant, async (and sync) Python client for consuming IIIF. This is a pre-1.0 line — the public API may still change before 1.0.
Added¶
Tolerant normalization of IIIF Presentation documents into a typed, frozen model (
normalize), with structuredDiagnostics for every repair — it never raises on spec-imperfect input.Presentation v2 → v3 upgrade run before parsing, so v2 and v3 documents normalize to one model.
Async and sync fetch clients (
AsyncClient/Client) overhttpx, withfetch/fetch_manifest/fetch_collection/resolve/expand, plus module-level convenience functions.Image API tile-aware retrieval:
parse_info(info.json →ImageService), andImageService.url/thumbnail_url/tile_grid/tile_pyramid, with the v2/v3full-vs-maxsize handling.client.load_info/fetch_region.Content Search (
client.search,find_search_service) returning hit annotations.Content State decode/encode (
iiisight.content_state).Authorization Flow 2.0 metadata + non-interactive probe/token exchange (
iiisight.auth,client.probe,client.access_token).Consumer lint over normalization diagnostics (
iiisight.lint).Generic
Servicemodel (with preservedrawJSON) parsed from resource-levelserviceblocks.