{ "info": { "author": "Marius Gedminas", "author_email": "marius@gedmin.as", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "profilehooks\n============\n\n.. image:: https://travis-ci.org/mgedmin/profilehooks.svg?branch=master\n :target: https://travis-ci.org/mgedmin/profilehooks\n\n.. image:: https://ci.appveyor.com/api/projects/status/github/mgedmin/profilehooks?branch=master&svg=true\n :target: https://ci.appveyor.com/project/mgedmin/profilehooks\n\n.. image:: https://coveralls.io/repos/mgedmin/profilehooks/badge.svg?branch=master\n :target: https://coveralls.io/r/mgedmin/profilehooks\n\n\nIt's a collection of decorators for profiling functions. E.g. to profile a\nsingle function::\n\n from profilehooks import profile\n\n @profile\n def my_function(args, etc):\n pass\n\nThe results will be printed when the program exits (or you can use\n``@profile(immediate=True)``).\n\nIf you're interested in coarse timings and don't want to pay for the overhead\nof profiling, use ::\n\n from profilehooks import timecall\n\n @timecall # or @timecall(immediate=True)\n def my_function(args, etc):\n pass\n\nFinally, you may be interested in seeing line coverage for a single function ::\n\n from profilehooks import coverage\n\n @coverage\n def my_function(args, etc):\n pass\n\nAlso functions can be available in Python console or module if run it with -m arg ::\n\n $ python -m profilehooks\n >>> profile\n \n\n $ python -m profilehooks yourmodule\n\nFull documentation is available through ``pydoc profilehooks`` after\ninstallation.\n\nThe home page for this module is https://mg.pov.lt/profilehooks. It has\nscreensho, uh, that is, more examples.\n\n\nChangelog\n=========\n\n1.11.0 (2019-04-23)\n-------------------\n\n- New options: ``@timecall(log_name='logger', log_level=DEBUG)``.\n https://github.com/mgedmin/profilehooks/pull/20.\n\n- Add Python 3.7 support.\n\n- Drop Python 3.3 and 3.4 support.\n\n\n1.10.0 (2017-12-09)\n-------------------\n\n- ``@timecall()`` now defaults to the highest-precision timer\n (``timeit.default_timer()``) instead of ``time.time()``:\n https://github.com/mgedmin/profilehooks/pull/11\n\n\n1.9.0 (2017-01-02)\n------------------\n\n- Drop claim of Python 3.2 compatibility. Everything still works, except I'm\n no longer running automated tests on 3.2, so things might regress.\n\n- Drop Python 2.6 compatibility.\n\n- Add Python 3.6 compatibility.\n\n\n1.8.1 (2015-11-21)\n------------------\n\n- Include PID in temporary filenames:\n https://github.com/mgedmin/profilehooks/issues/6.\n\n- Claim Python 3.5 compatibility.\n\n\n1.8.0 (2015-03-25)\n------------------\n\n- New option: ``@profile(stdout=False)`` to suppress output to sys.stdout.\n\n\n1.7.1 (2014-12-02)\n------------------\n\n- Make ``@profile(profiler='hotshot')`` work again. This was probably broken\n in 1.0 or 1.1, but nobody complained.\n\n- Fix missing space in the output of ``@profile(skip=N)``.\n\n- Make ``@coverage_with_hotshot`` output match ``@coverage`` output precisely.\n\n- 100% test coverage.\n\n- Claim Python 3.4 and PyPy compatibility.\n\n\n1.7 (2013-10-16)\n----------------\n\n- Explicitly claim Python 3.3 compatibility.\n\n- Fix Python 3.x bug with @coverage (stop using sys.maxint):\n https://github.com/mgedmin/profilehooks/issues/2.\n\n\n1.6 (2012-06-05)\n----------------\n\n- Added Python 3.2 compatibility, dropped Python 2.3, 2.4 and 2.5 compatibility.\n\n- Migrated the source repository to https://github.com/mgedmin/profilehooks\n\n- Added a changelog.\n\n\n1.5 (2010-08-13)\n----------------\n\n- New argument to @timecall: timer (defaults to time.time).\n Example: @timecall(timer=time.clock)\n\n- Better documentation.\n\n\n1.4 (2009-03-31)\n----------------\n\n- Added support for cProfile, make it the default profiler when available.\n Previously profilehooks supported profile and hotshot only.\n\n\n1.3 (2008-06-10)\n----------------\n\n- Store profile results (when you pass filename to @profile) in pstats format\n instead of pickles. Contributed by Florian Schulze.\n\n\n1.2 (2008-03-07)\n----------------\n\n- New argument to: @timecall: immediate (defaults to False).\n\n- Added a test suite.\n\n\n1.1 (2007-11-07)\n----------------\n\n- First release to PyPI, with a setup.py and everything.\n\n- New arguments to @profile: dirs, sort, entries. Contributed by Hanno\n Schlichting.\n\n- Preserve function attributes such as __doc__ and __module__ when decorating\n them.\n\n- Pydoc-friendly docstring wrapping and other docstring improvements.\n\n\n1.0 (2006-12-06)\n----------------\n\n- Changed licence from GPL to MIT.\n\n- New decorator: @timecall\n\n- New arguments to @profile: skip, filename, immediate.\n\n- Added support for profile, after becoming convinced hotshot was unreliable.\n Made it the default profiler.\n\n\n0.1 (2004-12-30)\n----------------\n\n- First public release (it didn't actually have a version number), announced on\n my blog: https://mg.pov.lt/blog/profiling.html\n\n- @profile and @coverage decorators that didn't accept any arguments.\n\n- hotshot was the only profiler supported for @profile, while @coverage used\n trace.py\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://mg.pov.lt/profilehooks/", "keywords": "profile coverage decorators", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "profilehooks", "package_url": "https://pypi.org/project/profilehooks/", "platform": "", "project_url": "https://pypi.org/project/profilehooks/", "project_urls": { "Homepage": "https://mg.pov.lt/profilehooks/" }, "release_url": "https://pypi.org/project/profilehooks/1.11.0/", "requires_dist": null, "requires_python": "", "summary": "Decorators for profiling/timing/tracing individual functions", "version": "1.11.0" }, "last_serial": 5178563, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "ec9ed44f97c08e1ad052238739a763ed", "sha256": "17c23419c7ea1a16234de8320b94cbe62d1a68db20617e49055ea3d790b6bdf9" }, "downloads": -1, "filename": "profilehooks-1.1.tar.gz", "has_sig": false, "md5_digest": "ec9ed44f97c08e1ad052238739a763ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6364, "upload_time": "2007-11-07T17:06:18", "url": "https://files.pythonhosted.org/packages/8b/8f/9e2524acf249e45ee4b208f0605a52b280187ae0fc1155971de935df3dca/profilehooks-1.1.tar.gz" } ], "1.10.0": [ { "comment_text": "", "digests": { "md5": "abf5aa32eec861e01f53aa8e9975c7d5", "sha256": "7d9c966aa7e6cfb8230cc7402858ea58ebd44674bfb591db36fc183293bf9627" }, "downloads": -1, "filename": "profilehooks-1.10.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "abf5aa32eec861e01f53aa8e9975c7d5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13450, "upload_time": "2017-12-09T16:24:04", "url": "https://files.pythonhosted.org/packages/b6/b2/d2dfe3bab029df73991a3ba244d94c24d4a96e2fa2aabe6bca85fcc67304/profilehooks-1.10.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7df05c55bc04e9f49dc29dd05cdc9fed", "sha256": "47a3818dfff6a28b27f5ead625fea377e7087cc0b6cc23d301fd0670138212bc" }, "downloads": -1, "filename": "profilehooks-1.10.0.tar.gz", "has_sig": false, "md5_digest": "7df05c55bc04e9f49dc29dd05cdc9fed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15540, "upload_time": "2017-12-09T16:24:06", "url": "https://files.pythonhosted.org/packages/3a/5d/060c9e8a58c939a56017a5b3968d724d6808857084dfaa86b2c9bccaceb2/profilehooks-1.10.0.tar.gz" } ], "1.11.0": [ { "comment_text": "", "digests": { "md5": "b100a11d4b8bfa0253ecc4bdbfff1d86", "sha256": "930b5c93ca81e903d32fedad9a9a4b199f4a427e1a4070cc42080776d69003e7" }, "downloads": -1, "filename": "profilehooks-1.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b100a11d4b8bfa0253ecc4bdbfff1d86", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11731, "upload_time": "2019-04-23T17:44:42", "url": "https://files.pythonhosted.org/packages/d4/ea/68e8f02b16e0a99b2238ff4e49f66c2aed134f6f6401ac2b04abea1e395d/profilehooks-1.11.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d54478a29e44fd10434399bb6b843b20", "sha256": "af2c9f526ec5ff52689c2776df89cf850be1ecfbd707c76339e4af2c6789e011" }, "downloads": -1, "filename": "profilehooks-1.11.0.tar.gz", "has_sig": false, "md5_digest": "d54478a29e44fd10434399bb6b843b20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17083, "upload_time": "2019-04-23T17:44:43", "url": "https://files.pythonhosted.org/packages/cf/71/3851700846f54fade72f1f8ec6744693632b388d38019eddfa767407b6c2/profilehooks-1.11.0.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "ab542a9dad1595e184b4a3223fd35087", "sha256": "4ff5853efb67ddba179b7e35620b93bcf99f26c2a5ec49d9b26172ba8b312754" }, "downloads": -1, "filename": "profilehooks-1.2.tar.gz", "has_sig": false, "md5_digest": "ab542a9dad1595e184b4a3223fd35087", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7113, "upload_time": "2008-03-07T13:43:10", "url": "https://files.pythonhosted.org/packages/f7/4b/09943d61b930f5947209b13fc456fc6b4dc6ab3d71791eaea31e604113ca/profilehooks-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "2e29a3ba7886284ffd6d115409436ed5", "sha256": "0e9d20c13b10b17ac7b583a63017d275c26adb66ba98f2853c4cb24c8820f91b" }, "downloads": -1, "filename": "profilehooks-1.3.tar.gz", "has_sig": false, "md5_digest": "2e29a3ba7886284ffd6d115409436ed5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7396, "upload_time": "2008-06-09T22:48:18", "url": "https://files.pythonhosted.org/packages/f8/ce/9e49e9160a1a861c4c0d7bfaa4a0b82475b12689e8507925014ae6b2b53c/profilehooks-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "1246846fed9f46e5199eedfe006cd424", "sha256": "f76adad570bc9517289c3370d1aed9d0360d2fdeee1c2fcdaa3ad7dc3e4ccd79" }, "downloads": -1, "filename": "profilehooks-1.4.tar.gz", "has_sig": false, "md5_digest": "1246846fed9f46e5199eedfe006cd424", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8484, "upload_time": "2009-03-31T19:46:18", "url": "https://files.pythonhosted.org/packages/5e/ff/8036f396be82f63dbac3f83191e36dc5d64c2669638b8a0e4eb708202f16/profilehooks-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "91ae77c60cb569ab2d002d0733448225", "sha256": "5d19d00fd331b826f91b4eb3e86b349d9d757d2e8b1217bf60ff24d4b808de90" }, "downloads": -1, "filename": "profilehooks-1.5.tar.gz", "has_sig": false, "md5_digest": "91ae77c60cb569ab2d002d0733448225", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8589, "upload_time": "2010-08-13T18:29:27", "url": "https://files.pythonhosted.org/packages/31/ff/cd54022ac20e2a5aacc1df2a4ff46c56245d125b26ee0d923e100e64f57e/profilehooks-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "9bdfb453af49f28b70b731c5ac25ce58", "sha256": "e736b6b32d20598f0d17df8bbb746ef0dc1997c74b8714a74193fa51236b4dae" }, "downloads": -1, "filename": "profilehooks-1.6.tar.gz", "has_sig": false, "md5_digest": "9bdfb453af49f28b70b731c5ac25ce58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10975, "upload_time": "2012-06-05T01:08:46", "url": "https://files.pythonhosted.org/packages/46/88/5384661043ac442383816df6d0ac4aea70261ee2bf213ad9ff0c8fd93855/profilehooks-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "13faab8de510bbaf05872d9ecf152bd0", "sha256": "48c0c57b814649f090312e9d67a56a37d2d295adbc97d983efd7b0a6a7671674" }, "downloads": -1, "filename": "profilehooks-1.7.tar.gz", "has_sig": false, "md5_digest": "13faab8de510bbaf05872d9ecf152bd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12210, "upload_time": "2013-10-16T16:19:42", "url": "https://files.pythonhosted.org/packages/b5/23/ecb981caa30b691e2dd288b05821f3a41250abc3611312084e2d5d2a0403/profilehooks-1.7.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "3a938925e242442d00dc5856d8a09096", "sha256": "28e46124518b0cc1395042a48bd458d0be48e75051f06b056950cd83848bdc99" }, "downloads": -1, "filename": "profilehooks-1.7.1.tar.gz", "has_sig": false, "md5_digest": "3a938925e242442d00dc5856d8a09096", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13951, "upload_time": "2014-12-02T13:18:19", "url": "https://files.pythonhosted.org/packages/ff/d2/4cd5f93384c35ad1e7efae2c1f9cec927757371438217a8e04f3ab437b28/profilehooks-1.7.1.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "7887e07df4fb244a950debf841754762", "sha256": "52277ed965938d8b6293aa41cb35278c72c9a6dd3f6e9f89c45da74767dbd6ea" }, "downloads": -1, "filename": "profilehooks-1.8.0.tar.gz", "has_sig": false, "md5_digest": "7887e07df4fb244a950debf841754762", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14178, "upload_time": "2015-03-25T07:10:01", "url": "https://files.pythonhosted.org/packages/12/7f/b5f0a938f5e6ec2e62cff840d381752d1cacee7d1371d834e9ec8e221517/profilehooks-1.8.0.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "484b00bf1872c93c08a4e57a10663353", "sha256": "7c943c9b2f626e36d217d45b339f20cd27b7c0709fefd7fdaa178c0a50ad31ef" }, "downloads": -1, "filename": "profilehooks-1.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "484b00bf1872c93c08a4e57a10663353", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12653, "upload_time": "2015-11-21T10:11:06", "url": "https://files.pythonhosted.org/packages/54/ee/132a840b1d53de00f51f7618cf1ba6d842b8d552d769de223b0059318621/profilehooks-1.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2cc39ce3c7cd3d8d5dc47900fed419a4", "sha256": "f5a755cc4f3280c931f6598d14ea99844a7fc08faff49d876af28bbccd139f13" }, "downloads": -1, "filename": "profilehooks-1.8.1.tar.gz", "has_sig": false, "md5_digest": "2cc39ce3c7cd3d8d5dc47900fed419a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14548, "upload_time": "2015-11-21T10:11:18", "url": "https://files.pythonhosted.org/packages/7e/3d/10317b388b76150d3f5eabd095167582f628474e562ac93cb9d8562eb7c6/profilehooks-1.8.1.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "418a41c9ee6cb47f661f41c80478106d", "sha256": "1477bbde74c7e945b9919f561adbd86b04ec3e02de05cdb0abd3bc69f1777cc5" }, "downloads": -1, "filename": "profilehooks-1.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "418a41c9ee6cb47f661f41c80478106d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13220, "upload_time": "2017-01-02T07:52:02", "url": "https://files.pythonhosted.org/packages/b0/7b/d547dca8d8927f686fa3bf1c56d5e4821c5856888dc0af4fa50f6f08657a/profilehooks-1.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a93b0de17468f2fe492e5bb99a7eecc", "sha256": "40eab473491bc37b70efe6462707781a0730d86f78a1f5fd1c02dc9e4186f94b" }, "downloads": -1, "filename": "profilehooks-1.9.0.tar.gz", "has_sig": false, "md5_digest": "9a93b0de17468f2fe492e5bb99a7eecc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15368, "upload_time": "2017-01-02T07:52:03", "url": "https://files.pythonhosted.org/packages/98/0f/61ee3548cef04e37fcd3d7597e899764da22c6cd02590f9e68c20bf4b0ac/profilehooks-1.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b100a11d4b8bfa0253ecc4bdbfff1d86", "sha256": "930b5c93ca81e903d32fedad9a9a4b199f4a427e1a4070cc42080776d69003e7" }, "downloads": -1, "filename": "profilehooks-1.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b100a11d4b8bfa0253ecc4bdbfff1d86", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11731, "upload_time": "2019-04-23T17:44:42", "url": "https://files.pythonhosted.org/packages/d4/ea/68e8f02b16e0a99b2238ff4e49f66c2aed134f6f6401ac2b04abea1e395d/profilehooks-1.11.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d54478a29e44fd10434399bb6b843b20", "sha256": "af2c9f526ec5ff52689c2776df89cf850be1ecfbd707c76339e4af2c6789e011" }, "downloads": -1, "filename": "profilehooks-1.11.0.tar.gz", "has_sig": false, "md5_digest": "d54478a29e44fd10434399bb6b843b20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17083, "upload_time": "2019-04-23T17:44:43", "url": "https://files.pythonhosted.org/packages/cf/71/3851700846f54fade72f1f8ec6744693632b388d38019eddfa767407b6c2/profilehooks-1.11.0.tar.gz" } ] }