piffle


Namepiffle JSON
Version 0.6.1 PyPI version JSON
download
home_pageNone
SummaryPython library for working with IIIF Image and Presentation APIs
upload_time2025-01-27 18:08:55
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseApache License, Version 2.0
keywords iiif
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # piffle

Python library for generating and parsing [IIIF Image API](http://iiif.io/api/image/2.1/) URLs in an
object-oriented, pythonic fashion.

[![unit tests](https://github.com/Princeton-CDH/piffle/actions/workflows/unit_tests.yml/badge.svg)](https://github.com/Princeton-CDH/piffle/actions/workflows/unit_tests.yml)
[![codecov](https://codecov.io/gh/Princeton-CDH/piffle/branch/main/graph/badge.svg)](https://codecov.io/gh/Princeton-CDH/piffle)
[![Maintainability](https://api.codeclimate.com/v1/badges/d37850d90592f9d628df/maintainability)](https://codeclimate.com/github/Princeton-CDH/piffle/maintainability)


Piffle is tested on Python 3.8—3.12.

Piffle was originally developed by Rebecca Sutton Koeser at Emory University as a part of [Readux](https://github.com/ecds/readux) and forked as a separate project under [emory-lits-labs](https://github.com/emory-lits-labs/). It was later transferred to Rebecca Sutton Koeser at the Center for Digital Humanities at Princeton.

## Installation and example use:

`pip install piffle`

Example use for generating an IIIF image url:

```
>>> from piffle.image import IIIFImageClient
>>> myimg = IIIFImageClient('http://image.server/path/', 'myimgid')
>>> print myimg
http://image.server/path/myimgid/full/full/0/default.jpg
>>> print myimg.info()
http://image.server/path/myimgid/info.json"
>>> print myimg.size(width=120).format('png')
http://image.server/path/myimgid/full/120,/0/default.png
```

Example use for parsing an IIIF image url:

```
>>> from piffle.image import IIIFImageClient
>>> myimg = IIIFImageClient.init_from_url('http://www.example.org/image-service/abcd1234/full/full/0/default.jpg')
>>> print myimg
http://www.example.org/image-service/abcd1234/full/full/0/default.jpg
>>> print myimg.info()
http://www.example.org/image-service/abcd1234/info.json
>>> myimg.as_dict()['size']['full']
True
>>> myimg.as_dict()['size']['exact']
False
>>> myimg.as_dict()['rotation']['degrees']
0.0
```

Example use for reading a IIIF manifest:

```
>>> from piffle.image import IIIFImageClient
>>> from piffle.presentation import IIIFPresentation
>>>  manifest = IIIFPresentation.from_url('https://iiif.bodleian.ox.ac.uk/iiif/manifest/60834383-7146-41ab-bfe1-48ee97bc04be.json')
>>> manifest.label
'Bodleian Library MS. Bodl. 264'
>>> manifest.id
'https://iiif.bodleian.ox.ac.uk/iiif/manifest/60834383-7146-41ab-bfe1-48ee97bc04be.json'
>>> manifest.type
'sc:Manifest'
>>> for canvas in manifest.sequences[0].canvases[:5]:
...     image_id = canvas.images[0].resource.id
...     iiif_img = IIIFImageClient(*image_id.rsplit('/', 1))
...     print(str(iiif_img.size(height=250)))
...
https://iiif.bodleian.ox.ac.uk/iiif/image/90701d49-5e0c-4fb5-9c7d-45af96565468/full/,250/0/default.jpg
https://iiif.bodleian.ox.ac.uk/iiif/image/e878cc78-acd3-43ca-ba6e-90a392f15891/full/,250/0/default.jpg
https://iiif.bodleian.ox.ac.uk/iiif/image/0f1ed064-a972-4215-b884-d8d658acefc5/full/,250/0/default.jpg
https://iiif.bodleian.ox.ac.uk/iiif/image/6fe52b9a-5bb7-4b5b-bbcd-ad0489fcad2a/full/,250/0/default.jpg
https://iiif.bodleian.ox.ac.uk/iiif/image/483ff8ec-347d-4070-8442-dbc15bc7b4de/full/,250/0/default.jpg
```

## Development and Testing

This project uses [git-flow](https://github.com/nvie/gitflow) branching conventions.

Install locally for development (the use of a python virtualenv is recommended):

`pip install -e .`

Install test dependencies:

`pip install -e ".[dev]"`

Run unit tests: `py.test` or `python setup.py test`

### Install pre-commit hooks

Anyone who wants to contribute to this codebase should install the configured pre-commit hooks:

```
pre-commit install
```

This will configure a pre-commit hooks to automatically lint and format python code with [ruff](https://github.com/astral-sh/ruff) and [black](https://github.com/psf/black).

Pre-commit hooks and formatting conventions were added at version 0.5, so ``git blame`` may not reflect the true author of a given change. To make ``git blame`` more accurate, ignore formatting revisions:

```
git blame <FILE> --ignore-revs-file .git-blame-ignore-revs
```

Or configure your git to always ignore styling revision commits:
```
git config blame.ignoreRevsFile .git-blame-ignore-revs
```

## Publishing python packages

A new python package is automatically built and published to [PyPI](https://pypi.python.org/pypi) using a GitHub Actions workflow when a new release is created on GitHub.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "piffle",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "iiif",
    "author": null,
    "author_email": "The Center for Digital Humanities at Princeton <cdhdevteam@princeton.edu>",
    "download_url": "https://files.pythonhosted.org/packages/b5/34/58a278badf00a3ca587b3ddb3caa39e426a17f3ed27c6a84006b376144d0/piffle-0.6.1.tar.gz",
    "platform": null,
    "description": "# piffle\n\nPython library for generating and parsing [IIIF Image API](http://iiif.io/api/image/2.1/) URLs in an\nobject-oriented, pythonic fashion.\n\n[![unit tests](https://github.com/Princeton-CDH/piffle/actions/workflows/unit_tests.yml/badge.svg)](https://github.com/Princeton-CDH/piffle/actions/workflows/unit_tests.yml)\n[![codecov](https://codecov.io/gh/Princeton-CDH/piffle/branch/main/graph/badge.svg)](https://codecov.io/gh/Princeton-CDH/piffle)\n[![Maintainability](https://api.codeclimate.com/v1/badges/d37850d90592f9d628df/maintainability)](https://codeclimate.com/github/Princeton-CDH/piffle/maintainability)\n\n\nPiffle is tested on Python 3.8\u20143.12.\n\nPiffle was originally developed by Rebecca Sutton Koeser at Emory University as a part of [Readux](https://github.com/ecds/readux) and forked as a separate project under [emory-lits-labs](https://github.com/emory-lits-labs/). It was later transferred to Rebecca Sutton Koeser at the Center for Digital Humanities at Princeton.\n\n## Installation and example use:\n\n`pip install piffle`\n\nExample use for generating an IIIF image url:\n\n```\n>>> from piffle.image import IIIFImageClient\n>>> myimg = IIIFImageClient('http://image.server/path/', 'myimgid')\n>>> print myimg\nhttp://image.server/path/myimgid/full/full/0/default.jpg\n>>> print myimg.info()\nhttp://image.server/path/myimgid/info.json\"\n>>> print myimg.size(width=120).format('png')\nhttp://image.server/path/myimgid/full/120,/0/default.png\n```\n\nExample use for parsing an IIIF image url:\n\n```\n>>> from piffle.image import IIIFImageClient\n>>> myimg = IIIFImageClient.init_from_url('http://www.example.org/image-service/abcd1234/full/full/0/default.jpg')\n>>> print myimg\nhttp://www.example.org/image-service/abcd1234/full/full/0/default.jpg\n>>> print myimg.info()\nhttp://www.example.org/image-service/abcd1234/info.json\n>>> myimg.as_dict()['size']['full']\nTrue\n>>> myimg.as_dict()['size']['exact']\nFalse\n>>> myimg.as_dict()['rotation']['degrees']\n0.0\n```\n\nExample use for reading a IIIF manifest:\n\n```\n>>> from piffle.image import IIIFImageClient\n>>> from piffle.presentation import IIIFPresentation\n>>>  manifest = IIIFPresentation.from_url('https://iiif.bodleian.ox.ac.uk/iiif/manifest/60834383-7146-41ab-bfe1-48ee97bc04be.json')\n>>> manifest.label\n'Bodleian Library MS. Bodl. 264'\n>>> manifest.id\n'https://iiif.bodleian.ox.ac.uk/iiif/manifest/60834383-7146-41ab-bfe1-48ee97bc04be.json'\n>>> manifest.type\n'sc:Manifest'\n>>> for canvas in manifest.sequences[0].canvases[:5]:\n...     image_id = canvas.images[0].resource.id\n...     iiif_img = IIIFImageClient(*image_id.rsplit('/', 1))\n...     print(str(iiif_img.size(height=250)))\n...\nhttps://iiif.bodleian.ox.ac.uk/iiif/image/90701d49-5e0c-4fb5-9c7d-45af96565468/full/,250/0/default.jpg\nhttps://iiif.bodleian.ox.ac.uk/iiif/image/e878cc78-acd3-43ca-ba6e-90a392f15891/full/,250/0/default.jpg\nhttps://iiif.bodleian.ox.ac.uk/iiif/image/0f1ed064-a972-4215-b884-d8d658acefc5/full/,250/0/default.jpg\nhttps://iiif.bodleian.ox.ac.uk/iiif/image/6fe52b9a-5bb7-4b5b-bbcd-ad0489fcad2a/full/,250/0/default.jpg\nhttps://iiif.bodleian.ox.ac.uk/iiif/image/483ff8ec-347d-4070-8442-dbc15bc7b4de/full/,250/0/default.jpg\n```\n\n## Development and Testing\n\nThis project uses [git-flow](https://github.com/nvie/gitflow) branching conventions.\n\nInstall locally for development (the use of a python virtualenv is recommended):\n\n`pip install -e .`\n\nInstall test dependencies:\n\n`pip install -e \".[dev]\"`\n\nRun unit tests: `py.test` or `python setup.py test`\n\n### Install pre-commit hooks\n\nAnyone who wants to contribute to this codebase should install the configured pre-commit hooks:\n\n```\npre-commit install\n```\n\nThis will configure a pre-commit hooks to automatically lint and format python code with [ruff](https://github.com/astral-sh/ruff) and [black](https://github.com/psf/black).\n\nPre-commit hooks and formatting conventions were added at version 0.5, so ``git blame`` may not reflect the true author of a given change. To make ``git blame`` more accurate, ignore formatting revisions:\n\n```\ngit blame <FILE> --ignore-revs-file .git-blame-ignore-revs\n```\n\nOr configure your git to always ignore styling revision commits:\n```\ngit config blame.ignoreRevsFile .git-blame-ignore-revs\n```\n\n## Publishing python packages\n\nA new python package is automatically built and published to [PyPI](https://pypi.python.org/pypi) using a GitHub Actions workflow when a new release is created on GitHub.\n",
    "bugtrack_url": null,
    "license": "Apache License, Version 2.0",
    "summary": "Python library for working with IIIF Image and Presentation APIs",
    "version": "0.6.1",
    "project_urls": {
        "Changelog": "https://github.com/Princeton-CDH/piffle/blob/main/README.md",
        "Homepage": "https://github.com/princeton-cdh/piffle",
        "Repository": "https://github.com/princeton-cdh/piffle"
    },
    "split_keywords": [
        "iiif"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b9b0429f1c5380bcce690ca0461ab5de86f11c3a97cab28fafd4c7ec94814f1c",
                "md5": "c0b93c872763ce78b5c8db837006192f",
                "sha256": "07bda6bf6e60c3d111c184af5657e49276f6e1c690c3691f6f798a035d3e2bd0"
            },
            "downloads": -1,
            "filename": "piffle-0.6.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c0b93c872763ce78b5c8db837006192f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 15722,
            "upload_time": "2025-01-27T18:08:53",
            "upload_time_iso_8601": "2025-01-27T18:08:53.570061Z",
            "url": "https://files.pythonhosted.org/packages/b9/b0/429f1c5380bcce690ca0461ab5de86f11c3a97cab28fafd4c7ec94814f1c/piffle-0.6.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b53458a278badf00a3ca587b3ddb3caa39e426a17f3ed27c6a84006b376144d0",
                "md5": "dbd3d46585fefa8ca7182bd1a88ed74b",
                "sha256": "3973f3ecaec144b04aafedb6b42168fafdf8b2bd3877538a50dbd5475ad49816"
            },
            "downloads": -1,
            "filename": "piffle-0.6.1.tar.gz",
            "has_sig": false,
            "md5_digest": "dbd3d46585fefa8ca7182bd1a88ed74b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 26636,
            "upload_time": "2025-01-27T18:08:55",
            "upload_time_iso_8601": "2025-01-27T18:08:55.047509Z",
            "url": "https://files.pythonhosted.org/packages/b5/34/58a278badf00a3ca587b3ddb3caa39e426a17f3ed27c6a84006b376144d0/piffle-0.6.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-27 18:08:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Princeton-CDH",
    "github_project": "piffle",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "piffle"
}
        
Elapsed time: 0.44078s