{ "info": { "author": "Alessandro Amici", "author_email": "alexamici@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Pytest", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "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 :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Testing" ], "description": ".. This document is intended as the main entry point for new users,\n it serves as the landing page on GitHub and on PyPI and\n it is also used as Quickstart section of the docs.\n Its goal are:\n * inspire and raise interest in new users\n * present one complete end-to-end use case\n * warn users of risks and suggest mitigation strategies\n * direct interested users to the appropriate project resource\n * state license and open source nature\n * credit contributors\n Anything else should go into docs.\n\n.. NOTE: only the first couple of lines of the README are shown on GitHub mobile\n\npytest-nodev is a simple test-driven search engine for Python code,\nit finds classes and functions that match the behaviour specified by the given tests.\n\n**How does \"test-driven code search\" work?**\n\nTo be more precise pytest-nodev is a `pytest `_ plugin\nthat lets you execute a set of tests that specify the expected behaviour of a class or a function\non all objects in the Python standard library and in all the modules you have installed.\n\n**Show me how it works in practice.**\n**I need to write a** ``parse_bool`` **function that robustly parses a boolean value from a string.**\n**Here is the test I intend to use to validate my own implementation once I write it**:\n\n.. code-block:: python\n\n def test_parse_bool():\n assert not parse_bool('false')\n assert not parse_bool('FALSE')\n assert not parse_bool('0')\n\n assert parse_bool('true')\n assert parse_bool('TRUE')\n assert parse_bool('1')\n\nFirst, install the `latest version of pytest-nodev `_\nfrom the Python Package Index:\n\n.. code-block:: console\n\n $ pip install pytest-nodev\n\nThen copy your specification test to the ``test_parse_bool.py`` file and\ndecorate it with ``pytest.mark.candidate`` as follows:\n\n.. code-block:: python\n\n import pytest\n\n @pytest.mark.candidate('parse_bool')\n def test_parse_bool():\n assert not parse_bool('false')\n assert not parse_bool('FALSE')\n assert not parse_bool('0')\n\n assert parse_bool('true')\n assert parse_bool('TRUE')\n assert parse_bool('1')\n\nFinally, instruct pytest to run your test on all candidate callables in the Python standard library:\n\n.. code-block:: console\n\n $ py.test --candidates-from-stdlib test_parse_bool.py\n ======================= test session starts ==========================\n platform darwin -- Python 3.5.1, pytest-2.9.2, py-1.4.31, pluggy-0.3.1\n rootdir: /tmp, inifile: setup.cfg\n plugins: nodev-1.0.0, timeout-1.0.0\n collected 4000 items\n\n test_parse_bool.py xxxxxxxxxxxx[...]xxxxxxxxXxxxxxxxx[...]xxxxxxxxxxxx\n\n ====================== pytest_nodev: 1 passed ========================\n\n test_parse_bool.py::test_parse_bool[distutils.util:strtobool] PASSED\n\n === 3999 xfailed, 1 xpassed, 260 pytest-warnings in 75.38 seconds ====\n\nIn just over a minute pytest-nodev collected 4000 functions from the standard library,\nrun your specification test on all of them and\nreported that the `strtobool`_ function in the distutils.util module\nis the only candidate that passes your test.\n\nNow you can review it and if you like it you may use it in your code.\nNo need to write your own implementation!\n\n.. _`strtobool`: https://docs.python.org/3/distutils/apiref.html#distutils.util.strtobool\n\n**Wow! Does it work so well all the times?**\n\nTo be honest strtobool is a little known gem of the Python standard library that\nis just perfect for illustrating all the benefits of test-driven code search.\nHere are some of them in rough order of importance:\n\n- a function imported is a one less function coded---and tested, documented, debugged,\n ported, maintained...\n- it's battle tested code---lot's of old bugs have already been squashed\n- it's other people code---there's an upstream to report new bugs to\n- it gives you additional useful functionality---for free on top of that\n- it's in the Python standard library---no additional dependency required\n\n\nBIG FAT WARNING!\n----------------\n\nSearching code with pytest-nodev looks very much like running arbitrary callables with random arguments.\nA lot of functions called with the wrong set of arguments may have unexpected consequences ranging\nfrom slightly annoying, think ``os.mkdir('false')``,\nto **utterly catastrophic**, think ``shutil.rmtree('/', True)``.\nSerious use of pytest-nodev, in particular using ``--candidates-from-all``,\nrequire running the tests with operating-system level isolation,\ne.g. as a dedicated user or even better inside a dedicated container.\nThe `Starter kit `_\nguide documents how to run pytest-nodev safely and efficiently.\n\n\nProject resources\n-----------------\n\n============= ======================\nDocumentation http://pytest-nodev.readthedocs.io\nSupport https://stackoverflow.com/search?q=pytest-nodev\nDevelopment https://github.com/nodev-io/pytest-nodev\nDiscussion To be decided, see issue `#15 `_\nDownload https://pypi.python.org/pypi/pytest-nodev\nCode quality .. image:: https://api.travis-ci.org/nodev-io/pytest-nodev.svg?branch=master\n :target: https://travis-ci.org/nodev-io/pytest-nodev/branches\n :alt: Build Status on Travis CI\n .. image:: https://ci.appveyor.com/api/projects/status/github/nodev-io/pytest-nodev?branch=master\n :target: https://ci.appveyor.com/project/alexamici/pytest-nodev/branch/master\n :alt: Build Status on AppVeyor\n .. image:: https://coveralls.io/repos/nodev-io/pytest-nodev/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/nodev-io/pytest-nodev\n :alt: Coverage Status on Coveralls\n============= ======================\n\n\nContributing\n------------\n\nContributions are very welcome. Please see the `CONTRIBUTING`_ document for\nthe best way to help.\nIf you encounter any problems, please file an issue along with a detailed description.\n\n.. _`CONTRIBUTING`: https://github.com/nodev-io/pytest-nodev/blob/master/CONTRIBUTING.rst\n\nAuthors:\n\n- Alessandro Amici - `@alexamici `_\n\nContributors:\n\n- `@calmomau `_\n- `@kr1 `_\n\nSponsors:\n\n- .. image:: http://www.bopen.it/wp-content/uploads/2016/01/logo-no-back.png\n :target: http://bopen.eu/\n :alt: B-Open Solutions srl\n\n\nLicense\n-------\n\npytest-nodev is free and open source software\ndistributed under the terms of the `MIT `_ license.", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/nodev-io/pytest-nodev/archive/1.0.1.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pytest-nodev.readthedocs.io", "keywords": "test-driven source code search plugin pytest nodev", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pytest-nodev", "package_url": "https://pypi.org/project/pytest-nodev/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pytest-nodev/", "project_urls": { "Download": "https://github.com/nodev-io/pytest-nodev/archive/1.0.1.tar.gz", "Homepage": "http://pytest-nodev.readthedocs.io" }, "release_url": "https://pypi.org/project/pytest-nodev/1.0.1/", "requires_dist": [ "future", "pytest (>=2.8.1)", "pytest-timeout" ], "requires_python": "", "summary": "Test-driven source code search for Python.", "version": "1.0.1" }, "last_serial": 2236583, "releases": { "0.9.3": [ { "comment_text": "", "digests": { "md5": "638116077a3b40258f64dd2b1b57763e", "sha256": "9ac1fb06bc424b00e828cde6d53c8fd5d33e83aa740e4c816397355805cc1655" }, "downloads": -1, "filename": "pytest_nodev-0.9.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "638116077a3b40258f64dd2b1b57763e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15241, "upload_time": "2016-02-25T09:15:37", "url": "https://files.pythonhosted.org/packages/25/9c/e0daa8387fdc9d97f98f3302f6354ae7a8a00937a4c09fba5993425cd86f/pytest_nodev-0.9.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b6bccdc8e74d26124a12962da7c236f1", "sha256": "9dba36a96e0427d16bd5b39dc9bcec84ac7a63625636172b2d24b1bf73f57e65" }, "downloads": -1, "filename": "pytest-nodev-0.9.3.tar.gz", "has_sig": false, "md5_digest": "b6bccdc8e74d26124a12962da7c236f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21962, "upload_time": "2016-02-25T09:16:21", "url": "https://files.pythonhosted.org/packages/85/30/e1d58b910b5f15ef4482a4dd0037be8ba8e0031b2d04485ce8795339b84c/pytest-nodev-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "a6bcbc54f7ebdae98f5cdd4f7fe38925", "sha256": "8def37e89d0ae8258f13438352e771a399d421ccb618bfdb611406f501fc271c" }, "downloads": -1, "filename": "pytest_nodev-0.9.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a6bcbc54f7ebdae98f5cdd4f7fe38925", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15337, "upload_time": "2016-02-28T09:08:46", "url": "https://files.pythonhosted.org/packages/6a/ef/ae929d4b2b98e3b52a5aa925cf338f97e3460b2f848b692ef0a53dcc2f99/pytest_nodev-0.9.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ce182a17d9d7291fc367fa458764047", "sha256": "3d6138d23d14f62ba748de697e268b90e8acf1430936e2682eb85663780603ef" }, "downloads": -1, "filename": "pytest-nodev-0.9.4.tar.gz", "has_sig": false, "md5_digest": "0ce182a17d9d7291fc367fa458764047", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22272, "upload_time": "2016-02-28T09:08:53", "url": "https://files.pythonhosted.org/packages/6a/5d/93fb8da7ae4895b3a27a51ec2d5ffd0469edbcaa14374d06a3d605efa5c7/pytest-nodev-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "389e6691c6c2cd23243e358c5d697e84", "sha256": "a917459c32bb14598ffc15fb1dd4acd4fb3831cc2f1c73a69b7f6308175fa282" }, "downloads": -1, "filename": "pytest_nodev-0.9.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "389e6691c6c2cd23243e358c5d697e84", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15605, "upload_time": "2016-03-01T12:43:00", "url": "https://files.pythonhosted.org/packages/d8/87/2c1ac87906ddf3a47648c66154a31e84326acee5df06dba9eefe32cacd63/pytest_nodev-0.9.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62c6a8c30de5c9061485db9787b1fa3d", "sha256": "f146ab5093c387ff9609fcfa12a8aaa2593a5efcdfed5ab892ada40d032235f7" }, "downloads": -1, "filename": "pytest-nodev-0.9.5.tar.gz", "has_sig": false, "md5_digest": "62c6a8c30de5c9061485db9787b1fa3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22622, "upload_time": "2016-03-01T12:43:08", "url": "https://files.pythonhosted.org/packages/93/bb/346c1aef0e971057c4affa9313eb455d8d53d1c2742c9e8be7d9a91d0834/pytest-nodev-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "228b8643d5784a9a008b5522a8d77cfb", "sha256": "6b88c1f1441abce19a2dea6825fb016459801bebb9542870a814ea1d1115e168" }, "downloads": -1, "filename": "pytest_nodev-0.9.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "228b8643d5784a9a008b5522a8d77cfb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16069, "upload_time": "2016-03-06T17:54:52", "url": "https://files.pythonhosted.org/packages/53/d5/9461d3c2352e56225878a84c87aeb71488a0caba692f45d195ea8dc93c63/pytest_nodev-0.9.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7be1dc049ea92bd5ceaf8120864ff086", "sha256": "23d04df89822c7b9d8ba7929fd781d66766046f0e8fbc52db0fcc3e824c0dfa5" }, "downloads": -1, "filename": "pytest-nodev-0.9.6.tar.gz", "has_sig": false, "md5_digest": "7be1dc049ea92bd5ceaf8120864ff086", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23645, "upload_time": "2016-03-06T17:54:58", "url": "https://files.pythonhosted.org/packages/70/a7/18e7db8cb3e0137b82a1ccefe517d6bbe3a336514e4923dceb8c754fb886/pytest-nodev-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "6ce03e21f105270589564fd657f316c4", "sha256": "81a5edfd4cc9957e7b4beec1d5dd436f7f0f36efc88a06b0474f57f5575bfcfb" }, "downloads": -1, "filename": "pytest_nodev-0.9.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6ce03e21f105270589564fd657f316c4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16247, "upload_time": "2016-03-13T19:07:11", "url": "https://files.pythonhosted.org/packages/40/19/f66822f389cb5252eaae248093951a95341fa460b9d7b03c1da409e29108/pytest_nodev-0.9.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04d12fc48ead08e7b2227fa75c8ea3ff", "sha256": "02907d02f477b93a6ea38440f439f0b418a1eade280f13b15244dcaccba57e93" }, "downloads": -1, "filename": "pytest-nodev-0.9.7.tar.gz", "has_sig": false, "md5_digest": "04d12fc48ead08e7b2227fa75c8ea3ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24005, "upload_time": "2016-03-13T19:07:18", "url": "https://files.pythonhosted.org/packages/88/02/2b3b0283a4eec9c5f66b6ababe65ac275404a193fec06c31bec12c332b1c/pytest-nodev-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "d4659af2f8f3d7dcdfcbaa17774a6010", "sha256": "4fe0803976083da040e76ca1a620796bcf402e217401c9dbeecd1e6c7f8657f4" }, "downloads": -1, "filename": "pytest_nodev-0.9.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4659af2f8f3d7dcdfcbaa17774a6010", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16235, "upload_time": "2016-03-16T09:08:45", "url": "https://files.pythonhosted.org/packages/63/93/54a25472b9450e346cbab9c46ccd4c4040898292d76be156e2e88330e536/pytest_nodev-0.9.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a819cab856322f74cbf76302200d0b63", "sha256": "5173cb216fd513a417b6204ed07002cfccb1bd48a1ea855d6a5983e9e57ac6de" }, "downloads": -1, "filename": "pytest-nodev-0.9.8.tar.gz", "has_sig": false, "md5_digest": "a819cab856322f74cbf76302200d0b63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24212, "upload_time": "2016-03-16T09:09:15", "url": "https://files.pythonhosted.org/packages/49/06/3b0f2f8feb343f04801f1980a6fa693d4b07d95d51186b8605659970f2b7/pytest-nodev-0.9.8.tar.gz" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "21eea000f27c6a5ade8be581d9bc54af", "sha256": "8e897af623c1cf246aae6543903fe2fd167a9e0afe345a8a516403dfe97e9039" }, "downloads": -1, "filename": "pytest_nodev-0.9.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "21eea000f27c6a5ade8be581d9bc54af", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16444, "upload_time": "2016-07-16T13:15:06", "url": "https://files.pythonhosted.org/packages/d6/e6/04575cce068b13b3e3de0d244941bfb5128794e9e007b2a10d7ec94f62bf/pytest_nodev-0.9.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86bd2870d93be9ec1b7914ce396779d7", "sha256": "35fa9a559477b06c8eb817bf5df3cc793f7f83319a01a0c79815a78018ef972b" }, "downloads": -1, "filename": "pytest-nodev-0.9.9.tar.gz", "has_sig": false, "md5_digest": "86bd2870d93be9ec1b7914ce396779d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24970, "upload_time": "2016-07-16T13:15:10", "url": "https://files.pythonhosted.org/packages/39/92/32441c75b1e78220363738ba6306fbc69b6a0d3213b90d497c9216e38e91/pytest-nodev-0.9.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "46b22be8b686118964b1308ae3777752", "sha256": "48f505edca3d156e3f7b977bf87ec39b160b0975c0314eeedfae841fa6d94a57" }, "downloads": -1, "filename": "pytest_nodev-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "46b22be8b686118964b1308ae3777752", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16579, "upload_time": "2016-07-17T23:47:41", "url": "https://files.pythonhosted.org/packages/27/66/41e5a0df2d881881948c693f0b48752665c688903c3c7a8598b6f98ab013/pytest_nodev-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40ea65e44a44cdc3277fc6bb050c791f", "sha256": "6b9537f6474085227b115d7bc9151770a193352feda32e93058d6d371cdd3731" }, "downloads": -1, "filename": "pytest-nodev-1.0.0.tar.gz", "has_sig": false, "md5_digest": "40ea65e44a44cdc3277fc6bb050c791f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25766, "upload_time": "2016-07-17T23:47:44", "url": "https://files.pythonhosted.org/packages/4b/91/7a9e20e4a014b59d960978901e14eb20ba46e8a359d21537ff2e968c2170/pytest-nodev-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "0349c30d4805373084e1caca839aebae", "sha256": "43be610727055f11e77397de9bbca045561f01da713c166a4702121f048677a5" }, "downloads": -1, "filename": "pytest_nodev-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0349c30d4805373084e1caca839aebae", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16739, "upload_time": "2016-07-21T21:00:50", "url": "https://files.pythonhosted.org/packages/62/bc/5af87bc5436c0b0a5798264105065a9603d7e47552ad8caef4e9ed13290e/pytest_nodev-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdaa23849c72e4035fbd307b0e7c45b1", "sha256": "17d721a2c39a3b38f872979a727df3c5ca6391f9efd0273c23b2c9e46a4af8be" }, "downloads": -1, "filename": "pytest-nodev-1.0.1.tar.gz", "has_sig": false, "md5_digest": "cdaa23849c72e4035fbd307b0e7c45b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25948, "upload_time": "2016-07-21T21:00:52", "url": "https://files.pythonhosted.org/packages/fd/bf/88f62917fdd782992aed060e9cddd1c73372fefc0fd382a1eceddb256bc9/pytest-nodev-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0349c30d4805373084e1caca839aebae", "sha256": "43be610727055f11e77397de9bbca045561f01da713c166a4702121f048677a5" }, "downloads": -1, "filename": "pytest_nodev-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0349c30d4805373084e1caca839aebae", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16739, "upload_time": "2016-07-21T21:00:50", "url": "https://files.pythonhosted.org/packages/62/bc/5af87bc5436c0b0a5798264105065a9603d7e47552ad8caef4e9ed13290e/pytest_nodev-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdaa23849c72e4035fbd307b0e7c45b1", "sha256": "17d721a2c39a3b38f872979a727df3c5ca6391f9efd0273c23b2c9e46a4af8be" }, "downloads": -1, "filename": "pytest-nodev-1.0.1.tar.gz", "has_sig": false, "md5_digest": "cdaa23849c72e4035fbd307b0e7c45b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25948, "upload_time": "2016-07-21T21:00:52", "url": "https://files.pythonhosted.org/packages/fd/bf/88f62917fdd782992aed060e9cddd1c73372fefc0fd382a1eceddb256bc9/pytest-nodev-1.0.1.tar.gz" } ] }