{ "info": { "author": "pyviz contributors", "author_email": "dev@pyviz.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Pytest", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing" ], "description": ".. image:: https://travis-ci.org/pyviz/nbsmoke.svg?branch=master\n :target: https://travis-ci.org/pyviz/nbsmoke\n :alt: See Build Status on Travis CI\n\n.. image:: https://ci.appveyor.com/api/projects/status/p93ot2kmae55pw3o/branch/master?svg=true\n :target: https://ci.appveyor.com/project/pyviz/nbsmoke/branch/master\n :alt: See Build Status on AppVeyor\n\n\n=======\nnbsmoke\n=======\n\nBasic notebook smoke tests: Do they run ok? Do they contain lint?\n\n**WARNING: early stage proof of concept; work in progress. Use at your\nown risk.**\n\nIn particular, this extension is supposed to handle ipython magics as\nfar as possible, but has not yet been widely tested.\n\n----\n\nThis `Pytest`_ plugin was generated with `Cookiecutter`_ along with `@hackebrot`_'s `Cookiecutter-pytest-plugin`_ template.\n\n\n\nInstallation\n------------\n\nYou can install nbsmoke via `pip`_ from `PyPI`_::\n\n $ pip install nbsmoke\n\nOr you can install nbsmoke via `conda`_ from `anaconda.org`_::\n\n $ conda install -c pyviz/label/dev -c conda-forge nbsmoke\n\n\nUsage\n-----\n\nCheck all notebooks run without errors::\n\n $ pytest --nbsmoke-run\n\nCheck all notebooks run without errors, and store html to look at\nafterwards::\n\n $ pytest --nbsmoke-run --store-html=/scratch\n\nLint check notebooks::\n\n $ pytest --nbsmoke-lint\n\nInstead of all files in a directory, you can specify a list e.g.::\n\n $ pytest --nbsmoke-run notebooks/Untitled*.ipynb\n\nIf you want to restrict pytest to running only your notebook tests, use `-k`, e.g.::\n\n $ pytest --nbsmoke-run -k \".ipynb\"\n\nAdditional options are available by standard pytest 'ini'\nconfiguration in setup.cfg, pytest.ini, or tox.ini::\n\n [pytest]\n # when running, seconds allowed per cell (see nbconvert timeout)\n nbsmoke_cell_timeout = 600\n\n # notebooks to skip running; one case insensitive re to match per line\n nbsmoke_skip_run = ^.*skipme\\.ipynb$\n ^.*skipmetoo.*$\n\n # case insensitive re to match for file to be considered notebook;\n # defaults to ``^.*\\.ipynb``\n it_is_nb_file = ^.*\\.something$\n\nnbsmoke supports ``# noqa`` comments to mark that something\nshould be ignored during lint checking.\n\nThe ``nbsmoke_skip_run`` list in a project's config can be ignored by\npassing ``--ignore-nbsmoke-skip-run`` (useful if sometimes you want to\nrun all notebooks).\n\n\nWhat's the point?\n-----------------\n\nAlthough more sophisticated testing of notebooks is possible (e.g. see\nnbval), just checking that notebooks run from start to finish without\nerror in a fresh kernel (or on a neutral CI service) can be useful\nduring development. Practical experience of working on several\nprojects with notebooks confirms this, but that's all the evidence I\nhave.\n\nChecking notebooks for lint might seem trivial/pointless, but it\nfrequently uncovers unused names (typically unused imports). It's also\nquite common to find python 2 vs 3 problems, and sometimes undefined\nnames - in a way that's faster than running the notebook (over\nmultiple versions of python).\n\nUnused imports/names themselves might seem trivial, but they can\nhinder understanding of a notebook by readers, or add dependencies\nthat are not required.\n\nUsing ``# noqa: explanation`` in a notebook might seem like overkill,\nbut the intention is to at least force 'mysterious imports' to be\nclarified (if they are necessary at all, which ideally they shouldn't\nbe). E.g. if you're importing something for its side effects, it's\nvery helpful to inform the reader of that, and the ugly/strange ``#\nnoqa`` should help remind you to fix the underlying problem...\n\nPyflakes is used as the underlying linter because \"Pyflakes makes a\nsimple promise: it will never complain about style, and it will try\nvery, very hard to never emit false positives.\"\n\n\nContributing\n------------\n\nFirst, install using ``pip install -e .``. Then run the tests using\n``tox`` or ``pytest -v tests/``.\n\nNew release to PyPI and anaconda.org: ``git tag -a vX.Y.Z -m\n\"Something about release\" && git push --tags``.\n\n\nLicense\n-------\n\nDistributed under the terms of the `BSD-3`_ license, \"nbsmoke\"\nis free and open source software.\n\n\nIssues\n------\n\nIf you encounter any problems, please `file an issue`_ (ideally\nincluding a copy of any problematic notebook).\n\n.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter\n.. _`@hackebrot`: https://github.com/hackebrot\n.. _`BSD-3`: http://opensource.org/licenses/BSD-3-Clause\n.. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin\n.. _`file an issue`: https://github.com/pyviz/nbsmoke/issues\n.. _`pytest`: https://github.com/pytest-dev/pytest\n.. _`tox`: https://tox.readthedocs.io/en/latest/\n.. _`pip`: https://pypi.python.org/pypi/pip/\n.. _`PyPI`: https://pypi.python.org/pypi\n.. _`conda`: https://conda.io/\n.. _`anaconda.org`: https://anaconda.org/\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pyviz/nbsmoke", "keywords": "", "license": "BSD-3", "maintainer": "", "maintainer_email": "", "name": "nbsmoke", "package_url": "https://pypi.org/project/nbsmoke/", "platform": "", "project_url": "https://pypi.org/project/nbsmoke/", "project_urls": { "Homepage": "https://github.com/pyviz/nbsmoke" }, "release_url": "https://pypi.org/project/nbsmoke/0.2.8/", "requires_dist": [ "pytest (>=3.1.1)", "jupyter-client", "ipykernel", "nbformat", "nbconvert", "pyflakes", "requests", "beautifulsoup4" ], "requires_python": ">=2.7", "summary": "Basic notebook checks. Do they run? Do they contain lint?", "version": "0.2.8" }, "last_serial": 5213516, "releases": { "0.1.9": [ { "comment_text": "", "digests": { "md5": "c2303e9a4a6659b116f63436a9b67ddd", "sha256": "01b55b0631a33ec178833a65d79e39aca46a2fe4dd78ae93d0ae63ea48943105" }, "downloads": -1, "filename": "nbsmoke-0.1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c2303e9a4a6659b116f63436a9b67ddd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 8139, "upload_time": "2018-02-16T11:15:06", "url": "https://files.pythonhosted.org/packages/a0/db/a9c265e034d0329faad50603f2cea18761b08021fdeadd161ea4b1bf5dbb/nbsmoke-0.1.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a25e51733b032a1bdddc8492db00d73b", "sha256": "6bba1db488561501464bff2a774f1b47df08eb2dec86dc02d1c474672945e386" }, "downloads": -1, "filename": "nbsmoke-0.1.9.tar.gz", "has_sig": false, "md5_digest": "a25e51733b032a1bdddc8492db00d73b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 28740, "upload_time": "2018-02-16T11:15:07", "url": "https://files.pythonhosted.org/packages/27/28/1bb3fa08911ef15941696104ccc87e3426686bc001f2ca46e28f8d291f96/nbsmoke-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "4f1e17d24c33b8358ed5cae5e150de0c", "sha256": "d8c65eed5299a91d8c9165b63fe59fe9d6fc13d9759b6b61e1314d7ce98c9469" }, "downloads": -1, "filename": "nbsmoke-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f1e17d24c33b8358ed5cae5e150de0c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 14288, "upload_time": "2018-03-19T11:22:55", "url": "https://files.pythonhosted.org/packages/5b/29/b9593c18693bb71391dd6d27fe41c2bb109e22c2f9100ddc5fecb661283b/nbsmoke-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a02a54c48136dc1c29536dee2ceb218b", "sha256": "07d87f4d604f5e04f67d41a9ba6e1567ceccd37d2292457deffb61ca165a54b6" }, "downloads": -1, "filename": "nbsmoke-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a02a54c48136dc1c29536dee2ceb218b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 29640, "upload_time": "2018-03-19T11:22:57", "url": "https://files.pythonhosted.org/packages/fd/36/d84e8ebfb9bef8f85a858778ca2de63ee6ae0632506ebd8c8013e8825399/nbsmoke-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "77d79a615eaa18d488cdfbda9c1adda5", "sha256": "1b7e836996597ee78ac957432cf098404b0aa7e3e6476b4c9f166fac9acdf9a6" }, "downloads": -1, "filename": "nbsmoke-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "77d79a615eaa18d488cdfbda9c1adda5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 15628, "upload_time": "2018-03-25T13:31:29", "url": "https://files.pythonhosted.org/packages/25/32/c119bf80991eae95057b8f60ca629b9f51f906440ea5c9bcbb28467a02f1/nbsmoke-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d06ee80c4e96fd09456d372ed0f01b98", "sha256": "6988edd2f2313c74fab5ad880e540d5a005a7a5c5f9c6577e7c8257c2adfbc5e" }, "downloads": -1, "filename": "nbsmoke-0.2.1.tar.gz", "has_sig": false, "md5_digest": "d06ee80c4e96fd09456d372ed0f01b98", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 31054, "upload_time": "2018-03-25T13:31:30", "url": "https://files.pythonhosted.org/packages/d5/5a/d02cd7fdf89dbba9c8c1e0c44d3933eaa96723195f0cc7cb4b9ba371b01f/nbsmoke-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "d3bf8fde93cc895c5dde5aab36962247", "sha256": "eafbbad32ccbb12dd45951ed5d2b7e0a8a5e816be5170a1a69eadc2c7550b9b9" }, "downloads": -1, "filename": "nbsmoke-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d3bf8fde93cc895c5dde5aab36962247", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 12645, "upload_time": "2018-04-16T20:54:38", "url": "https://files.pythonhosted.org/packages/97/7e/e723a212246a5eb51211723d56dde38c2483a9e994fc12f2f5defa9c9aff/nbsmoke-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68a5fae8d6ebb2e260b5016bc060909f", "sha256": "7b453243182038739eb12bb5a7ca3ac2bde5c9a3fcb79c9e4dc79df66d593247" }, "downloads": -1, "filename": "nbsmoke-0.2.2.tar.gz", "has_sig": false, "md5_digest": "68a5fae8d6ebb2e260b5016bc060909f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 31051, "upload_time": "2018-04-16T20:54:39", "url": "https://files.pythonhosted.org/packages/5b/7e/7f6e4cbb30172c05b8a75119e0fc63e13a5d1ff130a9b8e36c4a1e13f2cc/nbsmoke-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "d652977edfad71c1d166eb8f6d1ef2be", "sha256": "05fbda8f63fc48f9c729a03381349ba20e6c0f1dc48ae481baa2ca32c0611427" }, "downloads": -1, "filename": "nbsmoke-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d652977edfad71c1d166eb8f6d1ef2be", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 7796, "upload_time": "2018-05-03T11:52:52", "url": "https://files.pythonhosted.org/packages/a1/5a/6bdbcd14564672407ac5fe8d166404dc140e465229928981a17cde0ee1cb/nbsmoke-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfa7e9c11bf25363e934cf9962e0e5d0", "sha256": "9b0a0e26dadd114ce92241615b12cd74ed3b22e2c8eae4fc49cf7fb84802f7ab" }, "downloads": -1, "filename": "nbsmoke-0.2.3.tar.gz", "has_sig": false, "md5_digest": "cfa7e9c11bf25363e934cf9962e0e5d0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 15025, "upload_time": "2018-05-03T11:52:53", "url": "https://files.pythonhosted.org/packages/f4/d1/6160aa35e09075a0e51a16bff7095957fe02e4416fc6147015d4d45d7d43/nbsmoke-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "3fec656a972c1e92de7e277ad4f82892", "sha256": "c82b750e73735fd838492bfd28a3893eb91acfef03e19ab5c88dc635928cf37f" }, "downloads": -1, "filename": "nbsmoke-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3fec656a972c1e92de7e277ad4f82892", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 7809, "upload_time": "2018-05-04T19:06:41", "url": "https://files.pythonhosted.org/packages/1a/43/6cefcc9686a3ed40b19782b0ec10c69aa4eb90358b91d6514bd5048d3f39/nbsmoke-0.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a38ee5f5c945124956578205c70b183b", "sha256": "74d002f8954e0133a84d1ae63e2c87cd9b823e7c050c626ef16b74205e2e87c4" }, "downloads": -1, "filename": "nbsmoke-0.2.4.tar.gz", "has_sig": false, "md5_digest": "a38ee5f5c945124956578205c70b183b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 15042, "upload_time": "2018-05-04T19:06:42", "url": "https://files.pythonhosted.org/packages/4d/fb/52f7885fa8759681a595c11fa6c2112355626a7b31f83cbec9a7bfc3a5a6/nbsmoke-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "5b034a49db3ebdaebe3ee2c556392198", "sha256": "9f9993ea44bb60379c401718a1545a4250c4c2e4ed00e643bc915da95944e19a" }, "downloads": -1, "filename": "nbsmoke-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b034a49db3ebdaebe3ee2c556392198", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 8988, "upload_time": "2018-05-07T14:03:35", "url": "https://files.pythonhosted.org/packages/d3/54/a21fc25eda5e6b8d9a64e157c3c748df44825c19ce19fa027d384fd474ca/nbsmoke-0.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c168b7ccddde7f36303bd4164ae3518", "sha256": "7cb7b4eef6e96ab0ecf996160e26d75eb19447c171b23b34b6a4d20d81ff5df1" }, "downloads": -1, "filename": "nbsmoke-0.2.5.tar.gz", "has_sig": false, "md5_digest": "7c168b7ccddde7f36303bd4164ae3518", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 16203, "upload_time": "2018-05-07T14:03:36", "url": "https://files.pythonhosted.org/packages/c8/f5/c6c54c5d6c4c0d6d8ffc30220cf8eb796495636b083c7fc26bc08996bd29/nbsmoke-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "30a218adec01c7b366c9bd7f7930c7d5", "sha256": "b9344d024442a4cd25e51847dc9ac86b18021c1503b3796569ef71a7beb8b2f0" }, "downloads": -1, "filename": "nbsmoke-0.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "30a218adec01c7b366c9bd7f7930c7d5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 8971, "upload_time": "2018-05-08T09:20:42", "url": "https://files.pythonhosted.org/packages/0b/84/d8bc722bb34d2b0e5ff0cac49bfc7fc495a1395038e1075f7cba6089940d/nbsmoke-0.2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "070faecc087f5c98bbe0523466b4dae2", "sha256": "dc396a9f798bd89b2b4b50976f127f44e53bfbe806a8603acc824d5fd07e2ebe" }, "downloads": -1, "filename": "nbsmoke-0.2.6.tar.gz", "has_sig": false, "md5_digest": "070faecc087f5c98bbe0523466b4dae2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 16182, "upload_time": "2018-05-08T09:20:43", "url": "https://files.pythonhosted.org/packages/19/53/8406b261c5f57d331e225d50bd36ddb5578fd1cc66e893be0e7adb0092d6/nbsmoke-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "e6127a330fc4432dd87f2441aec76c89", "sha256": "f89f64a31b72450e9263a750d00e1a294263f5bfdb379089abebec97e0cdce12" }, "downloads": -1, "filename": "nbsmoke-0.2.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e6127a330fc4432dd87f2441aec76c89", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 8973, "upload_time": "2018-06-01T14:37:51", "url": "https://files.pythonhosted.org/packages/36/be/1a91e27aa140a859322182d56787c0e55e0d417537cb1ec9c781a772f9c5/nbsmoke-0.2.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16ad1035ba59937622a46c5fc7a1e498", "sha256": "40891e556dc9e252da2a649028cacb949fc8efb81062ada7d9a87a01b08bb454" }, "downloads": -1, "filename": "nbsmoke-0.2.7.tar.gz", "has_sig": false, "md5_digest": "16ad1035ba59937622a46c5fc7a1e498", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 17093, "upload_time": "2018-06-01T14:37:51", "url": "https://files.pythonhosted.org/packages/9f/66/69f03cba2ab1886a3ed1f6b111f3bf4e306a961d3338e6c419d256a85d4c/nbsmoke-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "1d9c758d19e5c13962571d8cce7427ab", "sha256": "06a639ad4fad80e40dc7b91376e5cfbcd395e42c2c98a70e4c10a5592f1ffedf" }, "downloads": -1, "filename": "nbsmoke-0.2.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1d9c758d19e5c13962571d8cce7427ab", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 10447, "upload_time": "2019-05-01T18:01:44", "url": "https://files.pythonhosted.org/packages/e7/c6/b2e0c2200a3c0e1337694e0218e76e180bafcaef8be78ee1e23ebf70684e/nbsmoke-0.2.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5eece9006b00905bacdc739cd63315a9", "sha256": "eeda6c59b61130b9116a3d935e7c80ec5f617d7db8918d23289b2426efa229eb" }, "downloads": -1, "filename": "nbsmoke-0.2.8.tar.gz", "has_sig": false, "md5_digest": "5eece9006b00905bacdc739cd63315a9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 19098, "upload_time": "2019-05-01T18:01:45", "url": "https://files.pythonhosted.org/packages/fe/87/56a024f2fab9811a04b8d9666f2291131c0c71c931afb230bdbce54f1f91/nbsmoke-0.2.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1d9c758d19e5c13962571d8cce7427ab", "sha256": "06a639ad4fad80e40dc7b91376e5cfbcd395e42c2c98a70e4c10a5592f1ffedf" }, "downloads": -1, "filename": "nbsmoke-0.2.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1d9c758d19e5c13962571d8cce7427ab", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 10447, "upload_time": "2019-05-01T18:01:44", "url": "https://files.pythonhosted.org/packages/e7/c6/b2e0c2200a3c0e1337694e0218e76e180bafcaef8be78ee1e23ebf70684e/nbsmoke-0.2.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5eece9006b00905bacdc739cd63315a9", "sha256": "eeda6c59b61130b9116a3d935e7c80ec5f617d7db8918d23289b2426efa229eb" }, "downloads": -1, "filename": "nbsmoke-0.2.8.tar.gz", "has_sig": false, "md5_digest": "5eece9006b00905bacdc739cd63315a9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 19098, "upload_time": "2019-05-01T18:01:45", "url": "https://files.pythonhosted.org/packages/fe/87/56a024f2fab9811a04b8d9666f2291131c0c71c931afb230bdbce54f1f91/nbsmoke-0.2.8.tar.gz" } ] }