{ "info": { "author": "Nicholas Bollweg", "author_email": "nick.bollweg@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: IPython", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing", "Topic :: Utilities" ], "description": "nosebook\n========\n\n|Build Status| |PyPI| |BSD|\n\na `nose `__ plugin for finding and running\nIPython 2/3 notebooks as nose tests.\n\nWhat it can't do in terms of ``setup`` and ``tearDown``, ``nosebook``\nmakes up for in simplicity: there is no ``%%nose`` magic, no metadata\nrequired: the notebook on disk is the \"gold master\".\n\nThis makes it ideal for decreasing the burden of keeping documentation\nup to date with tests by making a single set of notebooks into both\nrich, multi-format documentation and a simple part of your test suite.\n\n.. |Build Status| image:: https://travis-ci.org/bollwyvl/nosebook.svg?branch=master\n :target: https://travis-ci.org/bollwyvl/nosebook\n.. |PyPI| image:: https://pypip.in/version/nosebook/badge.svg?style=flat\n :target: https://pypi.python.org/pypi/nosebook\n.. |BSD| image:: https://pypip.in/license/nose-watcher/badge.svg\n :target: ./LICENSE\n\nHow does it work?\n-----------------\n\nEach notebook found according to\n```nosebook-match`` <#nosebook-match>`__ is started with a fresh kernel,\nbased on the kernel specified in the notebook. If the kernel is not\ninstalled, no tests will be run and the error will be logged.\n\nEach ``code`` cell that matches\n```nosebook-match-cell`` <#nosebook-match-cell>`__ will be executed\nagainst the kernel in the order in which it appears in the notebook:\nother cells e.g. ``markdown``, ``raw``, are ignored.\n\nThe number and content of outputs has to **match exactly**, with the\nfollowing parts of each output stripped:\n\n- execution/prompt numbers, i.e. ``[1]:``\n- tracebacks\n\nNon-deterministic output, such as with ``_repr_`` methods that include\nthe memory location of the instance, will obviously not match every\ntime. You can use ```nosebook-scrub`` <#nosebook-scrub>`__ to rewrite or\nremove offending content.\n\nRelated work\n------------\n\n- ```ipython_nose`` `__ allows\n you to use a notebook as a nose runner, with traditional\n ``test_whatever`` methods. You can sort of emulate this behavior with\n ```nosebook-match-cell`` <#nosebook-match-cel>`__... as long as you\n check in passing tests!\n\nConfiguring ``nosetests`` to use ``nosebook``\n---------------------------------------------\n\nThese options can be specified in your `nose config file <./.noserc>`__,\nor as long-form command line arguments, i.e. ``--with-nosebook``.\n\n``with-nosebook``\n^^^^^^^^^^^^^^^^^\n\n``nosetests`` will look for notebooks that seem like tests, as\nconfigured with ```nosebook-match`` <#nosebook-match>`__.\n\n*Default: False*\n\n.. code:: python\n\n # Basic usage\n !nosetests --with-nosebook\n\n``nosebook-match``\n^^^^^^^^^^^^^^^^^^\n\nA regular expression that tells nosebook what should be a testable\nnotebook.\n\n*Default: ``.*[Tt]est.*.ipynb$``*\n\n.. code:: python\n\n # Run against all notebooks... probably not a good idea, but maybe a great idea\n !nosetests --with-nosebook --nosebook-match .*.ipynb\n\n``nosebook-match-cell``\n^^^^^^^^^^^^^^^^^^^^^^^\n\nA regular expression that will be replaced throughout the expected\noutputs and generated outputs.\n\n*Default: None*\n\n.. code:: python\n\n # will run cells where tests are defined... but you should probably run them, too\n !nosetests --with-nosebook --nosebook-match .*Simple.* --nosebook-match-cell '(def|class).*[Tt]est'\n\n``nosebook-scrub``\n^^^^^^^^^^^^^^^^^^\n\nA regular expression that will be replaced throughout the expected\noutputs and generated outputs.\n\n*Default: None*\n\n.. code:: python\n\n # you can't fail if you don't try\n !nosetests --with-nosebook --nosebook-scrub .+\n\nFor multiple scrub values, you can pass a JSON-formatted list of regular\nexpressions or object of pattern-replacement pairs that will be\nreplaced. When passed in via the command line, you'll have to escape\nspecial characters: using a ``.noserc`` config file makes this easier.\n\n.. code:: python\n\n # there are only 10 kinds of tests...\n !nosetests --with-nosebook --nosebook-scrub='[\"0\", \"1\"]'\n\n.. code:: python\n\n # 0 is equally good\n !nosetests --with-nosebook --nosebook-scrub='{\"\\\\d+\": \"0\"}'\n\nContributing\n------------\n\n`Issues `__ and `pull\nrequests `__ welcome!\n\nLicense\n-------\n\n``nosebook`` is released as free software under the `BSD 3-Clause\nlicense <./LICENSE>`__.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/bollwyvl/nosebook", "keywords": "IPython nose", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "nosebook", "package_url": "https://pypi.org/project/nosebook/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/nosebook/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/bollwyvl/nosebook" }, "release_url": "https://pypi.org/project/nosebook/0.4.0/", "requires_dist": null, "requires_python": null, "summary": "a nose plugin for IPython notebooks", "version": "0.4.0" }, "last_serial": 1520500, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d364cfb23034d18675beedc3f0f07352", "sha256": "c679320a620e3b37b07f1631935282fe78965b131581c4b4315af24249af42b0" }, "downloads": -1, "filename": "nosebook-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d364cfb23034d18675beedc3f0f07352", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 5749, "upload_time": "2015-02-14T15:23:57", "url": "https://files.pythonhosted.org/packages/fb/55/ad70b283881ba1caeb3cbb9b40d7563d99e59be0fb6de89d80c1dfc1474f/nosebook-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0973e26f5e620532d40a36165f6a1b1e", "sha256": "3b1c63ba3c06cb3c30411ac2a89ee0a57f3e770ac6e206d47e3220927a30fe41" }, "downloads": -1, "filename": "nosebook-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0973e26f5e620532d40a36165f6a1b1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5643, "upload_time": "2015-02-14T15:23:43", "url": "https://files.pythonhosted.org/packages/59/58/fbdede6c28eaa37035d0a224c37d32bf99a98edb57979fe0d85780ae14a5/nosebook-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e2824e8f54c0e67a552783b4c02145d7", "sha256": "55a1100604ed471e2723539b12947c101f4c1aaf754bda9a421ae24690ded0b8" }, "downloads": -1, "filename": "nosebook-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2824e8f54c0e67a552783b4c02145d7", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 7643, "upload_time": "2015-02-14T22:33:40", "url": "https://files.pythonhosted.org/packages/e6/2b/01b4e1cef3a3fc6038ba2ba21db04bcaeea4a14dfdd48952152de9346a14/nosebook-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b615ab9b7e15d7aa0d386f5eac1c034", "sha256": "55528fc3a77d5430e587825bc72ced371dceb4202737af4bac646d05775c12b1" }, "downloads": -1, "filename": "nosebook-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1b615ab9b7e15d7aa0d386f5eac1c034", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7342, "upload_time": "2015-02-14T22:33:31", "url": "https://files.pythonhosted.org/packages/ed/15/ffbd0e2c74816e5e3ef4f69025e687101c582c1f60cfd73e9ef224efb907/nosebook-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "964ae6483e05d81cc1d1df675df0f27c", "sha256": "9000b5dc1988b72a4590bf3e78eec5a6169bcd83fa1406cb55c18e63a5cc19f0" }, "downloads": -1, "filename": "nosebook-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "964ae6483e05d81cc1d1df675df0f27c", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 8187, "upload_time": "2015-04-21T13:53:27", "url": "https://files.pythonhosted.org/packages/a2/62/ea936e8e736b9c7231573f8c8a0da0aa36acec22526ae855807e627fcf80/nosebook-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "055f4ec0fe8db3dac1e7c1f19489b1e9", "sha256": "acd5746218c5e805a8e5cf031d8e50820fc1f569855f5c72326526ec4077e704" }, "downloads": -1, "filename": "nosebook-0.3.0.tar.gz", "has_sig": false, "md5_digest": "055f4ec0fe8db3dac1e7c1f19489b1e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8460, "upload_time": "2015-04-21T13:53:17", "url": "https://files.pythonhosted.org/packages/26/47/8fa7958f3acf6aa2acaaaaa949d4f9d6d3029c16da60c9ec02d7e5e76a75/nosebook-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "f153313f5fddd9f0a4f9e5e4eb41287d", "sha256": "0dae949e62670425bbc477643afa6a80334521d90e8471b6eeced1c92dc35625" }, "downloads": -1, "filename": "nosebook-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f153313f5fddd9f0a4f9e5e4eb41287d", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 8979, "upload_time": "2015-04-25T04:59:43", "url": "https://files.pythonhosted.org/packages/d5/78/e45864e6a61ff83ecfa5b772a8b8836683a0a326da6cfc887b2c62434619/nosebook-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72fcb5546238816ecff6e19b2fd01de2", "sha256": "f1ceefe3eaae5c3c69ef4702a1318171b0a1d08ec8716f10306a0df6bc4876bd" }, "downloads": -1, "filename": "nosebook-0.4.0.tar.gz", "has_sig": false, "md5_digest": "72fcb5546238816ecff6e19b2fd01de2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9360, "upload_time": "2015-04-25T04:59:33", "url": "https://files.pythonhosted.org/packages/05/5c/cf0416989ecbb237319049268f2ea62499099d7d4ee7488ab854f1d25ca2/nosebook-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f153313f5fddd9f0a4f9e5e4eb41287d", "sha256": "0dae949e62670425bbc477643afa6a80334521d90e8471b6eeced1c92dc35625" }, "downloads": -1, "filename": "nosebook-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f153313f5fddd9f0a4f9e5e4eb41287d", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 8979, "upload_time": "2015-04-25T04:59:43", "url": "https://files.pythonhosted.org/packages/d5/78/e45864e6a61ff83ecfa5b772a8b8836683a0a326da6cfc887b2c62434619/nosebook-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72fcb5546238816ecff6e19b2fd01de2", "sha256": "f1ceefe3eaae5c3c69ef4702a1318171b0a1d08ec8716f10306a0df6bc4876bd" }, "downloads": -1, "filename": "nosebook-0.4.0.tar.gz", "has_sig": false, "md5_digest": "72fcb5546238816ecff6e19b2fd01de2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9360, "upload_time": "2015-04-25T04:59:33", "url": "https://files.pythonhosted.org/packages/05/5c/cf0416989ecbb237319049268f2ea62499099d7d4ee7488ab854f1d25ca2/nosebook-0.4.0.tar.gz" } ] }