{ "info": { "author": "Tim Paine", "author_email": "timothy.k.paine@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# paperboy\n![Status](https://img.shields.io/badge/Status-BETA%201-yellow.svg?&longCache=true&style=for-the-badge)\n\nA web frontend for scheduling Jupyter Notebooks as reports\n\n\n# Overview\n\n[![Build Status](https://travis-ci.org/timkpaine/paperboy.svg?branch=master)](https://travis-ci.org/timkpaine/paperboy)\n![https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva?svg=true](https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva?svg=true)\n[![Coverage](https://codecov.io/gh/timkpaine/paperboy/branch/master/graph/badge.svg)](https://codecov.io/gh/timkpaine/paperboy)\n[![Docs](https://img.shields.io/readthedocs/paperboy.svg)](https://paperboy.readthedocs.io)\n[![Site](https://img.shields.io/badge/Site--grey.svg?colorB=FFFFFF)](https://paperboy-jp.herokuapp.com/)\n\nPaperboy is a production-grade application for scheduling reports. It has a flexible architecture and extensible APIs, and can integrate into a wide variety of deployments. It is composed of various industrial-strength technologies from the open source world.\n\n- [Jupyter Notebooks](https://jupyter.org/documentation) for the reports themselves\n - Jupyter notebooks are an ideal report template, and with [NBConvert](https://github.com/jupyter/nbconvert) support a wide variety of output types, including PDFs, HTML, Emails, etc\n- [Papermill](https://github.com/nteract/papermill) to parameterize notebooks\n- [SQLAlchemy](https://www.sqlalchemy.org) for Storage (default)\n- [Apache Airflow](https://airflow.apache.org) for Scheduling (default)\n - [Dask](https://dask.org) for [Airflow Workers](https://airflow.readthedocs.io/en/stable/howto/executor/use-dask.html)\n - [Luigi](https://luigi.readthedocs.io/en/stable/) as a scheduling alternative for `Airflow` (relies on `cron`) \n- [PhosphorJS](https://phosphorjs.github.io) for the frontend\n- Support for Python [Virtualenvs](https://virtualenv.pypa.io/en/stable/) via `requirements.txt` or custom [Docker](https://www.docker.com) images via `Dockerfile`s on a per-notebook level\n- Traitlets parameterization of storage and scheduler classes for easy integration with custom storage backends and custom schedulers\n- Single click notebook deployment with [Voila](https://github.com/QuantStack/voila) and [Dokku](https://github.com/dokku/dokku)\n\n\n\n![](https://raw.githubusercontent.com/timkpaine/paperboy/master/docs/img/ss.png)\n\n\n## Process Flow\n- Upload notebook\n- Configure job\n - start time\n - interval\n - papermill parameters to autoconfigure reports\n - if autoconfiguring reports from papermill:\n - run or publish\n - output\n - notebook\n - pdf\n - html\n - email\n - script\n - strip or keep code\n- To edit or create additional reports on a job, configure reports\n - run or publish\n - output\n - notebook\n - pdf\n - html\n - email\n - script\n - strip or keep code\n\n# Installation from source\n\nPaperboy requires Python and [Node.js](https://nodejs.org), which can be installed from `conda-forge` if `conda` is available.\n\nClone the repository and run following commands to install and launch the\napplication:\n\n- npm install\n- npm run build\n- pip install -e .\n- python -m paperboy\n\nVisit http://0.0.0.0:8080 in a browser to view the application.\n\nThe default authentication backend requires the registration of a username that\ncan be used on subsequent launches.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/timkpaine/paperboy/archive/v0.1.2.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/timkpaine/paperboy", "keywords": "juyter notebooks jupyterlab analytics", "license": "BSD 3 Clause", "maintainer": "", "maintainer_email": "", "name": "jupyter-paperboy", "package_url": "https://pypi.org/project/jupyter-paperboy/", "platform": "", "project_url": "https://pypi.org/project/jupyter-paperboy/", "project_urls": { "Download": "https://github.com/timkpaine/paperboy/archive/v0.1.2.tar.gz", "Homepage": "https://github.com/timkpaine/paperboy" }, "release_url": "https://pypi.org/project/jupyter-paperboy/0.1.2/", "requires_dist": [ "falcon (==1.4.1)", "gunicorn (>=19.9.0)", "gitpython (>=2.1.11)", "Jinja2 (>=2.8.1)", "nbconvert (>=5.4.0)", "nbformat (>=4.4.0)", "nbstripout (>=0.3.3)", "papermill (>=0.16.2)", "python-crontab (>=2.3.8)", "PyJWT (>=1.6.4)", "traitlets (>=4.3.2)", "voila (>=0.0.6)", "waitress", "falcon (==1.4.1) ; extra == 'dev'", "gunicorn (>=19.9.0) ; extra == 'dev'", "gitpython (>=2.1.11) ; extra == 'dev'", "Jinja2 (>=2.8.1) ; extra == 'dev'", "nbconvert (>=5.4.0) ; extra == 'dev'", "nbformat (>=4.4.0) ; extra == 'dev'", "nbstripout (>=0.3.3) ; extra == 'dev'", "papermill (>=0.16.2) ; extra == 'dev'", "python-crontab (>=2.3.8) ; extra == 'dev'", "PyJWT (>=1.6.4) ; extra == 'dev'", "traitlets (>=4.3.2) ; extra == 'dev'", "voila (>=0.0.6) ; extra == 'dev'", "waitress ; extra == 'dev'", "pytest ; extra == 'dev'", "pytest-cov ; extra == 'dev'", "pytest-falcon ; extra == 'dev'", "pylint ; extra == 'dev'", "flake8 ; extra == 'dev'" ], "requires_python": "", "summary": "Jupyter notebooks", "version": "0.1.2" }, "last_serial": 5627910, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "60c7affe5f3e147efaa8863491324b53", "sha256": "4c98f6cd9b266bd1819a504518567569fe694ab3315cc3cbf0e38a4264a32700" }, "downloads": -1, "filename": "jupyter_paperboy-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "60c7affe5f3e147efaa8863491324b53", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1519201, "upload_time": "2019-07-17T21:10:35", "url": "https://files.pythonhosted.org/packages/bf/a1/831a4edeef8541fbbde6537de982448163156c1d6980f52696ab4cb1bde4/jupyter_paperboy-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "243dac5f47b3bff64cec906b8c0008aa", "sha256": "991751e3e0d8f41e0b57ec8d2f4f9d4bdc7bb73f663da07ce89699c01cb21f56" }, "downloads": -1, "filename": "jupyter_paperboy-0.0.3.tar.gz", "has_sig": false, "md5_digest": "243dac5f47b3bff64cec906b8c0008aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1462135, "upload_time": "2019-07-17T21:10:38", "url": "https://files.pythonhosted.org/packages/97/f2/74ddd8b33a5afd70403a216c1b27f749f9eef03db1727b191e0f703fbe21/jupyter_paperboy-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "7a1c2fed22a15b101512990b371c9e98", "sha256": "d0a999f71483fc9cd27acf86a92ea8bf1aa64f88304a7e483326cae9952523bc" }, "downloads": -1, "filename": "jupyter_paperboy-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a1c2fed22a15b101512990b371c9e98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1527725, "upload_time": "2019-07-19T02:01:05", "url": "https://files.pythonhosted.org/packages/0d/6a/bbe8f2e2a2a60b66324f86eb0ced91804242a44b5262539febadc70e8964/jupyter_paperboy-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f3575bfde0891355e48972f8b0d4a29c", "sha256": "c243047160c4ecb3e3369d48b9c3fb9d647b0569b733ffc73afeae10cfab7421" }, "downloads": -1, "filename": "jupyter_paperboy-0.0.4.tar.gz", "has_sig": false, "md5_digest": "f3575bfde0891355e48972f8b0d4a29c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1466400, "upload_time": "2019-07-19T02:01:09", "url": "https://files.pythonhosted.org/packages/ce/5d/9dbeda741dd2def424ff06179e2351cc9c668aa2db7b0038b6a3905269df/jupyter_paperboy-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "4727f962098ab5290bba76d5474fb457", "sha256": "80f500f5af81f90a5ebaba4c7a78fc31542c41fc96953c4165c524a24d22c8db" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4727f962098ab5290bba76d5474fb457", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1527741, "upload_time": "2019-07-19T02:13:10", "url": "https://files.pythonhosted.org/packages/6a/d3/517c0ffd78cfa2d94f38f3d93f72b1c357d642896d0e6b683e6be8b86d56/jupyter_paperboy-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "279605bfb3945e3e3ccba29ed262e5af", "sha256": "d1b635fa32e71cbd9c9132fcb6eeeedcdaecea5b059e81b459782c147997c27a" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "279605bfb3945e3e3ccba29ed262e5af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1466447, "upload_time": "2019-07-19T02:13:14", "url": "https://files.pythonhosted.org/packages/3f/0f/ee80b9a879be0139999fc3a217d4b3bd034e93ff8c2fac220f58424537f7/jupyter_paperboy-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4e573fac0cfe2a5a3e05e2edd0668231", "sha256": "9137fb8069f6c3276b6029a7ac85da6b2d597e94432efff52cb989cb7d25e74d" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4e573fac0cfe2a5a3e05e2edd0668231", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1527740, "upload_time": "2019-07-19T02:23:44", "url": "https://files.pythonhosted.org/packages/ca/0f/3e74cee361aeef55b7572f29bb7ef5d63d257a5129d15dbf62bdb9272691/jupyter_paperboy-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c12c72e655bf8a93e5dea8be660eb1b2", "sha256": "32f9b5605190e3e1d622f6852c673a030bdc1abf82ef951ef965c302c8d60692" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c12c72e655bf8a93e5dea8be660eb1b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1470726, "upload_time": "2019-07-19T02:23:48", "url": "https://files.pythonhosted.org/packages/f7/17/009d0539a8d709ae2d92ac4831c54a0742afb363bb3ee8e9a1abf70bca01/jupyter_paperboy-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "7bb2ff6858b66a7d781b35a07d3823ff", "sha256": "50212fa50653a123a1b0f5ba89531e2cd79f618816d0b5a2dee132689f4e9845" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7bb2ff6858b66a7d781b35a07d3823ff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1545312, "upload_time": "2019-08-03T10:47:52", "url": "https://files.pythonhosted.org/packages/bd/46/a780829a9bc4c7ef7ca5392a45bf83ca5b91340bc7c8cfe2ab3f2ae11db8/jupyter_paperboy-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b4d876326b543a647976c1e607e70b2", "sha256": "d0387457121152b2f793890852364d5c871731cf45ae90c6383e19eda7d9326c" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0b4d876326b543a647976c1e607e70b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1486051, "upload_time": "2019-08-03T10:47:55", "url": "https://files.pythonhosted.org/packages/00/6e/cec0ae58fd178980fd13c59503af425d45bb640193a1abcad9081dd0db51/jupyter_paperboy-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7bb2ff6858b66a7d781b35a07d3823ff", "sha256": "50212fa50653a123a1b0f5ba89531e2cd79f618816d0b5a2dee132689f4e9845" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7bb2ff6858b66a7d781b35a07d3823ff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1545312, "upload_time": "2019-08-03T10:47:52", "url": "https://files.pythonhosted.org/packages/bd/46/a780829a9bc4c7ef7ca5392a45bf83ca5b91340bc7c8cfe2ab3f2ae11db8/jupyter_paperboy-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b4d876326b543a647976c1e607e70b2", "sha256": "d0387457121152b2f793890852364d5c871731cf45ae90c6383e19eda7d9326c" }, "downloads": -1, "filename": "jupyter_paperboy-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0b4d876326b543a647976c1e607e70b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1486051, "upload_time": "2019-08-03T10:47:55", "url": "https://files.pythonhosted.org/packages/00/6e/cec0ae58fd178980fd13c59503af425d45bb640193a1abcad9081dd0db51/jupyter_paperboy-0.1.2.tar.gz" } ] }