{"id":18508674,"url":"https://github.com/noteable-io/papermill-origami","last_synced_at":"2025-08-22T10:42:40.232Z","repository":{"id":53547590,"uuid":"494311562","full_name":"noteable-io/papermill-origami","owner":"noteable-io","description":"A papermill engine for running Noteable notebooks","archived":false,"fork":false,"pushed_at":"2023-09-29T18:59:12.000Z","size":1713,"stargazers_count":7,"open_issues_count":28,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T22:42:24.262Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://papermill-origami.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/noteable-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-20T03:48:37.000Z","updated_at":"2024-09-29T22:03:31.000Z","dependencies_parsed_at":"2023-02-14T02:16:08.471Z","dependency_job_id":null,"html_url":"https://github.com/noteable-io/papermill-origami","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteable-io%2Fpapermill-origami","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteable-io%2Fpapermill-origami/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteable-io%2Fpapermill-origami/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noteable-io%2Fpapermill-origami/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noteable-io","download_url":"https://codeload.github.com/noteable-io/papermill-origami/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247973876,"owners_count":21026735,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T15:15:03.439Z","updated_at":"2025-04-09T03:32:10.289Z","avatar_url":"https://github.com/noteable-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# papermill-origami\n    A papermill engine for running Noteable notebooks\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/noteable-io/papermill-origami/actions/workflows/ci.yaml\"\u003e\n    \u003cimg src=\"https://github.com/noteable-io/papermill-origami/actions/workflows/ci.yaml/badge.svg\" alt=\"CI\" /\u003e\n\u003c/a\u003e\n\u003cimg alt=\"PyPI - License\" src=\"https://img.shields.io/pypi/l/papermill-origami\" /\u003e\n\u003cimg alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/papermill-origami\" /\u003e\n\u003cimg alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/papermill-origami\"\u003e\n\u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\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\u003c!-- --8\u003c-- [start:intro] --\u003e\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\u003c!-- --8\u003c-- [end:intro] --\u003e\n\n\u003c!-- --8\u003c-- [start:requirements] --\u003e\n## Requirements\n\nPython 3.8+\n\u003c!-- --8\u003c-- [end:requirements] --\u003e\n\n\u003c!-- --8\u003c-- [start:install] --\u003e\n## Installation\n\n### Poetry\n\n```shell\npoetry add papermill-origami\n```\n\n### Pip\n```shell\npip install papermill-origami\n```\n\u003c!-- --8\u003c-- [end:install] --\u003e\n\n\u003c!-- --8\u003c-- [start:start] --\u003e\n## Getting Started\n\n### API Token\n\nGet your access token from your User Settings -\u003e 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\u003c!-- --8\u003c-- [end:start] --\u003e\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n-------\n\n\u003cp align=\"center\"\u003eOpen sourced with ❤️ by \u003ca href=\"https://noteable.io\"\u003eNoteable\u003c/a\u003e for the community.\u003c/p\u003e\n\n\u003cimg 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\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoteable-io%2Fpapermill-origami","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoteable-io%2Fpapermill-origami","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoteable-io%2Fpapermill-origami/lists"}