iiisight

A tolerant, async (and sync) Python client for consuming IIIF.

iiisight fetches a IIIF manifest or collection, normalizes Presentation v2 → v3 so you work against one model, walks canvases / ranges / annotations, and pulls tile-aware image regions — behind a single typed interface. It is the read/consume counterpart to the JavaScript ecosystem’s @iiif/parser, built for the substrate under viewers, search, harvesting, and conformance tooling.

import iiisight

async with iiisight.AsyncClient() as client:
    manifest = await client.fetch_manifest("https://example.org/manifest.json")
    print(str(manifest.label))
    service = await client.load_info(manifest.canvases[0])
    for tile in service.tile_grid(scale_factor=4):
        print(tile.url)

Why iiisight

  • Tolerant — accepts real-world, spec-imperfect documents and repairs them, recording each fix as a diagnostic instead of raising. Validated against live manifests from Wellcome, the Bodleian, and the IIIF Cookbook.

  • One model for v2 and v3 — v2 documents are upgraded under the hood.

  • Async-first, sync-supportedAsyncClient and Client mirror httpx.

  • Tile-aware — computes correct Image API region/size/tile requests from info.json, handling the v2/v3 full-vs-max differences for you.

  • More than Presentation — Content Search, Content State, Auth Flow 2.0 (metadata + non-interactive), and a consumer lint, all read-shaped.