Name | piffle JSON |
Version |
0.6.1
JSON |
| download |
home_page | None |
Summary | Python library for working with IIIF Image and Presentation APIs |
upload_time | 2025-01-27 18:08:55 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | Apache 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"
}