# papermill-origami
A papermill engine for running Noteable notebooks
<p align="center">
<a href="https://github.com/noteable-io/papermill-origami/actions/workflows/ci.yaml">
<img src="https://github.com/noteable-io/papermill-origami/actions/workflows/ci.yaml/badge.svg" alt="CI" />
</a>
<img alt="PyPI - License" src="https://img.shields.io/pypi/l/papermill-origami" />
<img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/papermill-origami" />
<img alt="PyPI" src="https://img.shields.io/pypi/v/papermill-origami">
<a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
</p>
---------
[Install](#installation) | [Getting Started](#getting-started) | [Documentation](https://papermill-origami.readthedocs.io/) | [License](./LICENSE) | [Code of Conduct](./CODE_OF_CONDUCT.md) | [Contributing](./CONTRIBUTING.md)
<!-- --8<-- [start:intro] -->
## Intro to Papermill-Origami
Papermill-Origami is the bridge library between the [Origami Noteable SDK](https://noteable-origami.readthedocs.io/en/latest/) and [Papermill](https://papermill.readthedocs.io/en/latest/). The papermill engine can talk to Noteable APIs to run Notebooks.
<!-- --8<-- [end:intro] -->
<!-- --8<-- [start:requirements] -->
## Requirements
Python 3.8+
<!-- --8<-- [end:requirements] -->
<!-- --8<-- [start:install] -->
## Installation
### Poetry
```shell
poetry add papermill-origami
```
### Pip
```shell
pip install papermill-origami
```
<!-- --8<-- [end:install] -->
<!-- --8<-- [start:start] -->
## Getting Started
### API Token
Get your access token from your User Settings -> API Tokens
or alternatively you can generate a post request to generate a new token
```
curl -X 'POST' \
'https://app.noteable.io/gate/api/v1/tokens' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"ttl": 31536000,
"name": "my_token"
}'
```
### Engine Registration
The `noteable` engine keyword will use the following environment variables by default:
```bash
NOTEABLE_DOMAIN = app.noteable.io
NOTEABLE_TOKEN = MY_TOKEN_VALUE_HERE
```
Then the engine is enabled by running papermill as normal. But now you have access to
the `noteable://` scheme as well as the ability to tell papermill to use Noteable as
the execution location for your notebook.
```python
import papermill as pm
file_id = '...'
pm.execute_notebook(
f'noteable://{file_id}',
None, # Set no particular output notebook, but a log of the resulting exeuction link still prints
# This turns on the Noteable API interface
engine_name='noteable', # exclude this kwarg to run the Notebook locally
)
```
#### Advanced Setup
For more advanced control or reuse of a NoteableClient SDK object you can use
the async await pattern around a client constructor. This reuses the connection
throughout the life cycle of the context block.
```python
import papermill as pm
from papermill.iorw import papermill_io
from papermill_origami import ClientConfig, NoteableClient, NoteableHandler
domain = 'app.noteable.io'
token = MY_TOKEN_VALUE_HERE
file_id = '...'
async with NoteableClient(token, config=ClientConfig(domain=domain)) as client:
file = await client.get_notebook(file_id)
papermill_io.register("noteable://", NoteableHandler(client))
pm.execute_notebook(
f'noteable://{file_id}',
None,
engine_name='noteable',
# Noteable-specific kwargs
file=file,
client=client,
)
```
<!-- --8<-- [end:start] -->
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md).
-------
<p align="center">Open sourced with ❤️ by <a href="https://noteable.io">Noteable</a> for the community.</p>
<img href="https://pages.noteable.io/private-beta-access" src="https://assets.noteable.io/github/2022-07-29/noteable.png" alt="Boost Data Collaboration with Notebooks">
Raw data
{
"_id": null,
"home_page": "https://github.com/noteable-io/papermill-origami",
"name": "papermill-origami",
"maintainer": "Matt Seal",
"docs_url": null,
"requires_python": ">=3.8,<4.0",
"maintainer_email": "matt@noteable.io",
"keywords": "notebook,api,noteable",
"author": "Matt Seal",
"author_email": "matt@noteable.io",
"download_url": "https://files.pythonhosted.org/packages/62/12/393c94bdcd8cd23d9b82207f2a24b676dfa928245f67d6deab36030f716e/papermill_origami-0.0.29.tar.gz",
"platform": null,
"description": "# papermill-origami\n A papermill engine for running Noteable notebooks\n\n<p align=\"center\">\n<a href=\"https://github.com/noteable-io/papermill-origami/actions/workflows/ci.yaml\">\n <img src=\"https://github.com/noteable-io/papermill-origami/actions/workflows/ci.yaml/badge.svg\" alt=\"CI\" />\n</a>\n<img alt=\"PyPI - License\" src=\"https://img.shields.io/pypi/l/papermill-origami\" />\n<img alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/papermill-origami\" />\n<img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/papermill-origami\">\n<a href=\"https://github.com/psf/black\"><img alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"></a>\n</p>\n\n---------\n\n[Install](#installation) | [Getting Started](#getting-started) | [Documentation](https://papermill-origami.readthedocs.io/) | [License](./LICENSE) | [Code of Conduct](./CODE_OF_CONDUCT.md) | [Contributing](./CONTRIBUTING.md)\n\n<!-- --8<-- [start:intro] -->\n## Intro to Papermill-Origami\n\nPapermill-Origami is the bridge library between the [Origami Noteable SDK](https://noteable-origami.readthedocs.io/en/latest/) and [Papermill](https://papermill.readthedocs.io/en/latest/). The papermill engine can talk to Noteable APIs to run Notebooks. \n<!-- --8<-- [end:intro] -->\n\n<!-- --8<-- [start:requirements] -->\n## Requirements\n\nPython 3.8+\n<!-- --8<-- [end:requirements] -->\n\n<!-- --8<-- [start:install] -->\n## Installation\n\n### Poetry\n\n```shell\npoetry add papermill-origami\n```\n\n### Pip\n```shell\npip install papermill-origami\n```\n<!-- --8<-- [end:install] -->\n\n<!-- --8<-- [start:start] -->\n## Getting Started\n\n### API Token\n\nGet your access token from your User Settings -> API Tokens\n\nor alternatively you can generate a post request to generate a new token\n\n```\ncurl -X 'POST' \\\n 'https://app.noteable.io/gate/api/v1/tokens' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"ttl\": 31536000,\n \"name\": \"my_token\"\n}'\n```\n\n### Engine Registration\n\nThe `noteable` engine keyword will use the following environment variables by default:\n\n```bash\nNOTEABLE_DOMAIN = app.noteable.io\nNOTEABLE_TOKEN = MY_TOKEN_VALUE_HERE\n```\n\nThen the engine is enabled by running papermill as normal. But now you have access to\nthe `noteable://` scheme as well as the ability to tell papermill to use Noteable as\nthe execution location for your notebook.\n\n```python\nimport papermill as pm\n\nfile_id = '...'\n\npm.execute_notebook(\n f'noteable://{file_id}',\n None, # Set no particular output notebook, but a log of the resulting exeuction link still prints\n # This turns on the Noteable API interface\n engine_name='noteable', # exclude this kwarg to run the Notebook locally\n)\n```\n\n#### Advanced Setup\n\nFor more advanced control or reuse of a NoteableClient SDK object you can use\nthe async await pattern around a client constructor. This reuses the connection\nthroughout the life cycle of the context block.\n\n```python\nimport papermill as pm\nfrom papermill.iorw import papermill_io\nfrom papermill_origami import ClientConfig, NoteableClient, NoteableHandler \n\n\ndomain = 'app.noteable.io'\ntoken = MY_TOKEN_VALUE_HERE\nfile_id = '...'\n\nasync with NoteableClient(token, config=ClientConfig(domain=domain)) as client:\n file = await client.get_notebook(file_id)\n papermill_io.register(\"noteable://\", NoteableHandler(client))\n pm.execute_notebook(\n f'noteable://{file_id}',\n None,\n engine_name='noteable',\n # Noteable-specific kwargs\n file=file,\n client=client,\n )\n```\n<!-- --8<-- [end:start] -->\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n-------\n\n<p align=\"center\">Open sourced with \u2764\ufe0f by <a href=\"https://noteable.io\">Noteable</a> for the community.</p>\n\n<img href=\"https://pages.noteable.io/private-beta-access\" src=\"https://assets.noteable.io/github/2022-07-29/noteable.png\" alt=\"Boost Data Collaboration with Notebooks\">\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "The noteable API interface",
"version": "0.0.29",
"project_urls": {
"Homepage": "https://github.com/noteable-io/papermill-origami",
"Repository": "https://github.com/noteable-io/papermill-origami"
},
"split_keywords": [
"notebook",
"api",
"noteable"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "648a2e58e7ceabb229bd805f0c4ff55f11d7b30d0b2b040d3219d2cc2422f704",
"md5": "48010622d9441410c2900a2dd3f29994",
"sha256": "c314782f60b9ee80ae15b0d4212741e53b427f27d68136ada6ea3de10195b9da"
},
"downloads": -1,
"filename": "papermill_origami-0.0.29-py3-none-any.whl",
"has_sig": false,
"md5_digest": "48010622d9441410c2900a2dd3f29994",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<4.0",
"size": 35845,
"upload_time": "2023-07-20T21:18:32",
"upload_time_iso_8601": "2023-07-20T21:18:32.385238Z",
"url": "https://files.pythonhosted.org/packages/64/8a/2e58e7ceabb229bd805f0c4ff55f11d7b30d0b2b040d3219d2cc2422f704/papermill_origami-0.0.29-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6212393c94bdcd8cd23d9b82207f2a24b676dfa928245f67d6deab36030f716e",
"md5": "5b57fb19d14538b346b0fe12911b963e",
"sha256": "a70cee2b07abad804c13216e0fc70e6c0cda90148292e8e512f707c7fbbcd6e4"
},
"downloads": -1,
"filename": "papermill_origami-0.0.29.tar.gz",
"has_sig": false,
"md5_digest": "5b57fb19d14538b346b0fe12911b963e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<4.0",
"size": 28502,
"upload_time": "2023-07-20T21:18:33",
"upload_time_iso_8601": "2023-07-20T21:18:33.419677Z",
"url": "https://files.pythonhosted.org/packages/62/12/393c94bdcd8cd23d9b82207f2a24b676dfa928245f67d6deab36030f716e/papermill_origami-0.0.29.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-20 21:18:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "noteable-io",
"github_project": "papermill-origami",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "papermill-origami"
}