# 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`](https://github.com/IIIF-Commons/parser), built for the substrate under viewers, search, harvesting, and conformance tooling. ```python 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-supported** — `AsyncClient` 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. ```{toctree} :maxdepth: 2 :caption: Getting started :hidden: installation quickstart ``` ```{toctree} :maxdepth: 2 :caption: Guide :hidden: guide/fetching guide/model guide/tolerance guide/images guide/search guide/content-state guide/auth guide/conformance guide/discovery guide/cli ``` ```{toctree} :maxdepth: 2 :caption: Reference :hidden: reference/api contributing changelog ```