{ "info": { "author": "S\u00e9bastien Boisg\u00e9rault", "author_email": "Sebastien.Boisgerault@mines-paristech.fr", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Testing", "Topic :: System :: Benchmark" ], "description": "Docbench is a framework based on\n`doctest `__ to benchmark\nPython code. If you already are familiar with doctest, you should be\nable to use docbench in minutes. And if you find that doctest is\nconvenient -- or Pythonic -- hopefully you will feel the same about\ndocbench !\n\n--------------\n\nWe will walk you through the use of docbench with a simple use case: a\nmodule that computes prime numbers.\n\nCreate a ``primes.py`` file and define the ``primes`` function:\n\n::\n\n def primes(n):\n p = []\n for i in range(2, n+1):\n for j in range(2, i):\n if (i % j == 0):\n break\n else:\n p.append(i)\n return p\n\nThe function returns an ordered list of primes numbers up to the number\n``n``. Its implementation is simple but the execution takes a lot of\ntime when ``n`` grows. The following ``sieve`` function should return\nthe same result, but performs less computations and therefore should be\nfaster.\n\n::\n\n def sieve(n):\n p = []\n for i in range(2, n+1):\n prime = True\n for j in p:\n if j * j > i:\n break\n if (i % j == 0):\n prime = False\n break\n if prime:\n p.append(i)\n return p\n\nDoctest -- Does it Work ?\n-------------------------\n\n**If you already know doctest, you may skip this section.**\n\nTesting this module with doctest is pretty straightforward: create a\n``test.py`` file with a function ``test_primes`` with no implementation\nbut a doctest for the ``primes`` function:\n\n::\n\n def test_primes():\n \"\"\"\n >>> from primes import primes\n >>> n = 50\n >>> primes(n)\n [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]\n \"\"\"\n\nYou are pretty confident that if ``test_primes`` doctest works as\nadvertised in this doctest, the ``primes`` function behaves correctly.\nTherefore, you may now test ``sieve`` against ``primes``:\n\n::\n\n def test_sieve():\n \"\"\"\n >>> from primes import primes, sieve\n >>> n = 10000\n >>> primes(n) == sieve(n)\n True\n \"\"\"\n\nFinally, add the following boilerplate a the end of your file:\n\n::\n\n if __name__ == \"__main__\":\n import doctest\n doctest.testmod()\n\nYou are ready to execute this test suite with:\n\n::\n\n $ python test.py\n\nNo error displayed ? The ``primes`` module has successfully passed all\ntests !\n\nDocbench -- Is is Fast ?\n------------------------\n\nCreate a new file name ``benchmark.py``. Add functions that act as\ndocbench holders for the function ``primes`` and ``sieve``. We rely on\nthe convention that only the time spent in the last statement of any\ndocbench will be measured, the previous ones are considered setup code.\n\n::\n\n def benchmark_primes():\n \"\"\"\n >>> from primes import primes\n >>> n = 10000\n >>> primes(n)\n \"\"\"\n\n def benchmark_sieve():\n \"\"\"\n >>> from primes import sieve\n >>> n = 10000\n >>> sieve(n)\n \"\"\"\n\nAdd the following boilerplate at the end of your file:\n\n::\n\n if __name__ == \"__main__\":\n import docbench\n docbench.benchmod()\n\nRun your benchmark with:\n\n::\n\n $ python benchmark.py\n\nYou should end up with an output similar too:\n\n::\n\n Benchmark Time \n ------------------------- ----------------\n __main__.benchmark_primes 1.03 \n __main__.benchmark_sieve 0.00876\n\nIndeed, ``sieve`` is quite faster than ``primes`` !", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/boisgera/docbench", "keywords": null, "license": "MIT License", "maintainer": null, "maintainer_email": null, "name": "docbench", "package_url": "https://pypi.org/project/docbench/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/docbench/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/boisgera/docbench" }, "release_url": "https://pypi.org/project/docbench/1.0.0-alpha.6/", "requires_dist": null, "requires_python": null, "summary": "Docbench -- Benchmark with Doctest", "version": "1.0.0-alpha.6" }, "last_serial": 1183175, "releases": { "1.0.0-alpha.1": [ { "comment_text": "", "digests": { "md5": "1fed84a851a18aabb907581d70778d68", "sha256": "8578d5a71a6bbcee8fcbd1ca0419ae0dca9dc6c35f4da694cb20fcf470d20e45" }, "downloads": -1, "filename": "docbench-1.0.0-alpha.1.tar.gz", "has_sig": false, "md5_digest": "1fed84a851a18aabb907581d70778d68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3678, "upload_time": "2013-09-10T14:49:29", "url": "https://files.pythonhosted.org/packages/12/02/09b0aafa351e367cfb83de97f45651f4a460eb12bdd90569d30a26bb909b/docbench-1.0.0-alpha.1.tar.gz" } ], "1.0.0-alpha.2": [ { "comment_text": "", "digests": { "md5": "dbccc2d6372e180544bb9047568e6c39", "sha256": "451492742ae861a89fa87ee2d2a7f8092541a77cd3d192d9eccef264c3542abb" }, "downloads": -1, "filename": "docbench-1.0.0-alpha.2.tar.gz", "has_sig": false, "md5_digest": "dbccc2d6372e180544bb9047568e6c39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3395, "upload_time": "2013-11-16T10:32:51", "url": "https://files.pythonhosted.org/packages/aa/a6/9a8cbb32e8b39f5a656cf2166906c94cec7d2feb8c6ad166cfa9af92d163/docbench-1.0.0-alpha.2.tar.gz" } ], "1.0.0-alpha.4": [ { "comment_text": "", "digests": { "md5": "4a7af9032821ed4dd3eb186ef428c65e", "sha256": "46712b5ada6bd85fe7e255ca085b4fd4105aba3cbe25f8508b130347c30e5475" }, "downloads": -1, "filename": "docbench-1.0.0-alpha.4.tar.gz", "has_sig": false, "md5_digest": "4a7af9032821ed4dd3eb186ef428c65e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3514, "upload_time": "2013-12-05T15:05:08", "url": "https://files.pythonhosted.org/packages/45/25/31af65fa6f3f9f0db2d65fe7e359817d8bd9daabf3e365fb4240276dae2d/docbench-1.0.0-alpha.4.tar.gz" } ], "1.0.0-alpha.5": [ { "comment_text": "", "digests": { "md5": "41bd369f5bfab037b0af10feeed33bad", "sha256": "e6d86df1636370b0dad34ae6bacb4129e579d1bbbad411fb67840e75c168758b" }, "downloads": -1, "filename": "docbench-1.0.0-alpha.5.tar.gz", "has_sig": false, "md5_digest": "41bd369f5bfab037b0af10feeed33bad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37427, "upload_time": "2014-08-07T18:06:54", "url": "https://files.pythonhosted.org/packages/88/7d/5e74e60d8343bace05ba5785de96b69976d793114b70c9c61eb27f1504aa/docbench-1.0.0-alpha.5.tar.gz" } ], "1.0.0-alpha.6": [ { "comment_text": "", "digests": { "md5": "295c77c20aef642a4268e1ef5029faa5", "sha256": "9e8b231a0c283fb10043ef5ed0311a299e58b4dc7c243f97f6ca10c679618217" }, "downloads": -1, "filename": "docbench-1.0.0-alpha.6.tar.gz", "has_sig": false, "md5_digest": "295c77c20aef642a4268e1ef5029faa5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37438, "upload_time": "2014-08-07T18:18:04", "url": "https://files.pythonhosted.org/packages/b5/0f/856ba25db6279b436b6f44abacd81fd693063b43d2b876280c81af0b305b/docbench-1.0.0-alpha.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "295c77c20aef642a4268e1ef5029faa5", "sha256": "9e8b231a0c283fb10043ef5ed0311a299e58b4dc7c243f97f6ca10c679618217" }, "downloads": -1, "filename": "docbench-1.0.0-alpha.6.tar.gz", "has_sig": false, "md5_digest": "295c77c20aef642a4268e1ef5029faa5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37438, "upload_time": "2014-08-07T18:18:04", "url": "https://files.pythonhosted.org/packages/b5/0f/856ba25db6279b436b6f44abacd81fd693063b43d2b876280c81af0b305b/docbench-1.0.0-alpha.6.tar.gz" } ] }