{"id":13427049,"url":"https://github.com/adtech-labs/nbconflux","last_synced_at":"2025-05-03T03:31:11.692Z","repository":{"id":45263600,"uuid":"120956562","full_name":"adtech-labs/nbconflux","owner":"adtech-labs","description":"nbconflux converts Jupyter Notebooks to Atlassian Confluence pages","archived":false,"fork":false,"pushed_at":"2024-06-07T16:59:12.000Z","size":553,"stargazers_count":126,"open_issues_count":27,"forks_count":33,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-27T08:21:09.360Z","etag":null,"topics":["confluence","jupyter","nbconvert","notebook","team-platform"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/adtech-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-09T21:16:40.000Z","updated_at":"2025-04-10T00:00:21.000Z","dependencies_parsed_at":"2024-11-12T21:25:59.589Z","dependency_job_id":"ec8538aa-af2f-446b-9e5b-397aee03fc56","html_url":"https://github.com/adtech-labs/nbconflux","commit_stats":null,"previous_names":["valassis-digital-media/nbconflux","adtech-labs/nbconflux","vericast/nbconflux"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adtech-labs%2Fnbconflux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adtech-labs%2Fnbconflux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adtech-labs%2Fnbconflux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adtech-labs%2Fnbconflux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adtech-labs","download_url":"https://codeload.github.com/adtech-labs/nbconflux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252137539,"owners_count":21700235,"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":["confluence","jupyter","nbconvert","notebook","team-platform"],"created_at":"2024-07-31T00:01:52.168Z","updated_at":"2025-05-03T03:31:11.325Z","avatar_url":"https://github.com/adtech-labs.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook"],"sub_categories":[],"readme":"[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n\n\n# nbconflux\n\nnbconflux converts Jupyter Notebooks to [Atlassian Confluence](https://www.atlassian.com/software/confluence)\npages using\n[nbconvert](https://github.com/jupyter/nbconvert).\n\n![Screenshot of a notebook converted to a Confluence page](etc/screenshot.png)\n\n## Why?\n\nnbconflux is useful when:\n\n* You use Jupyter notebooks to author computational narratives\n* Your organization uses Confluence to store institutional knowledge\n* You want an easy way to publish your work in that knowledge base\n\n## Features\n\n* Converts most cell inputs and outputs to valid [Confluence storage format](https://confluence.atlassian.com/doc/confluence-storage-format-790796544.html)\n* Attaches image outputs (e.g., matplotlib PNGs) to a page, shows them inline,\n  and maintains the page-image association in the version history\n* Attaches the source notebook to a page, links to it from the page footer, and\n  maintains the page-notebook association in the version history\n* Supports sweep-select Confluence comments over most input and output content\n* Excludes input, output, or entire cells based on notebook cell tags `noinput`,\n  `nooutput`, or `nocell`\n* Labels pages with `nbconflux` to identify content that originated as notebooks\n* Inserts a table of contents macro at the top of the page based on notebook\n  headings\n* Applies the NBViewer stylesheet to pages to blend Confluence styling with\n  Jupyter notebook styling (requires the CSS macro)\n* Enables MathJax rendering (requires the [HTML macro](https://confluence.atlassian.com/doc/html-macro-38273085.html))\n* Supports raw-cell passthrough of Confluence storage format markup (e.g., to\n  include Confluence macros)\n* Compatible with Confluence Cloud and Confluence Server\n\n## Installation\n\nThe nbconflux library requires Python 3 to run and `pip` to install.\nOnce you've satisfied these prerequisites, run:\n\n```bash\npip install nbconflux\n```\n\n(A conda package is coming soon.)\n\n\n## Usage\n\n1. Create or visit a page on your Confluence site.\n2. Copy the URL for the page.\n3. Run one of the following:\n    * In a shell:\n        ```bash\n        nbconflux /path/to/a.ipynb https://your/page/url\n        ```\n    * In a Python script, Jupyter Notebook, etc.:\n        ```python\n        import nbconflux\n        html, resources = nbconflux.notebook_to_page(nb_path, url)\n        ```\n4. Enter your Confluence username and password when prompted.\n5. Visit the page to see your updates.\n\nIf you receive an error, see the project issues for known limitations on what\nyou can post.\n\nRun `nbconflux -h` at the command line for additional options and help.\n\n```\nusage: nbconflux [-h] [--exclude-toc] [--exclude-ipynb] [--exclude-style]\n                 [--include-mathjax]\n                 notebook url\n\nConverts Jupyter Notebooks to Atlassian Confluence pages using nbconvert\n\npositional arguments:\n  notebook           Path to local notebook (ipynb)\n  url                URL of Confluence page to update\n\noptional arguments:\n  -h, --help         show this help message and exit\n  --exclude-toc      Do not generate a table of contents\n  --exclude-ipynb    Do not attach the notebook to the page\n  --exclude-style    Do not include the Jupyter base stylesheet\n  --include-mathjax  Enable MathJax on the page\n  --extra-labels EXTRA_LABELS [EXTRA_LABELS ...]\n                     Additional labels to add to the page\n\nCollects credentials from the following locations:\n1. CONFLUENCE_USERNAME and CONFLUENCE_PASSWORD environment variables\n2. ~/.nbconflux file in the format username:password\n3. User prompts\n```\n\n## Contributing\n\nWe welcome issues and pull requests that help improve the variety of notebook\ncontent and Confluence installations nbconflux supports, its usability for\nhumans, and its reusability within other tools.\n\nWe recommend creating a Python development environment using `conda` or\n`virtualenv`, running `make dev-env` to install the runtime and development\nrequirements, and running `make test` to execute the unit test suite on your\nlocal machine.\n\n## FAQ\n\nQ: Why not call it nbconfluence?\n\nA: https://atlassian.com/legal/trademark\n\nQ: Why do I have to create a page on the site first?\n\nA: To avoid introducing the complexity of specifying a space, parent page, and\n   title into the package.\n\nQ: How do I use nbconflux if my organization has enabled two-factor\n   authentication (2FA) for our Confluence Cloud instance?\n\nA: You can login with an Atlassian API Token in place of your password as\n   described in the [API tokens](https://confluence.atlassian.com/cloud/api-tokens-938839638.html)\n   documentation.\n\n   1. Sign into https://id.atlassian.com.\n   2. Under *Security* go to *API Tokens* then *Create API Token*.\n   3. Give the token a meaningful label so that access can be revoked later.\n   4. The token will be copied to the clipboard.\n   5. Use the token in place of your account password with any of the nbconflux\n      supported auth methods (e.g., environment variable, password prompt).\n\n## License\n\nCopyright (c) 2018 Valassis Digital under the terms of the BSD 3-Clause license\n\n## Development\n\nTo run the tests:\n\n```\nmake dev-env\nmake test\n```\n\n## Maintenance\n\nTo make a release:\n\n1. Meet all the requirements described in\n   https://dustingram.com/articles/2018/03/16/markdown-descriptions-on-pypi\n   to support pushing the Markdown README as the long description on PyPI.\n2. `git commit -m 'REL: 0.6.0' --allow-empty`\n3. `git tag -a 0.6.0 -m 'REL: 0.6.0'`\n4. `git push origin master` and `git push origin master --tags` or use a PR\n5. Run `make release`.\n6. Enter your PyPI creds when prompted.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadtech-labs%2Fnbconflux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadtech-labs%2Fnbconflux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadtech-labs%2Fnbconflux/lists"}