{ "info": { "author": "Jason Madden", "author_email": "open-source@nextthought.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Zope3", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Testing" ], "description": "=====================\n nose_traceback_info\n=====================\n\nHave you ever wanted supplemental (debugging) info included in an\nerror or failure traceback produced by `nose`_? Do you find that\nnose's `Failure Detail`_ plugin fails you (for example, because you\nuse `PyHamcrest`_ matchers)? Developing server software using Zope,\nPlone, Paste or `WebError`_? Then this plugin might be the solution\nyou're looking for: it allows you to add whatever detailed information\nyou want to any frame in your traceback. Turn a traceback like this::\n\n Traceback (most recent call last):\n File \"/.../nti.nose_traceback_info/src/nti/nose_traceback_info/tests/test_nose_traceback_info.py\", line 39, in test_format_failure\n t, formatted, _ = self.plugin.formatFailure(None, exc_info)\n File \"/.../nti.nose_traceback_info/src/nti/nose_traceback_info/__init__.py\", line 48, in formatFailure\n return self.formatError( test, exc_info)\n File \"/.../nti.nose_traceback_info/src/nti/nose_traceback_info/__init__.py\", line 31, in formatError\n t, v, tb = exc_info\n TypeError: 'builtin_function_or_method' object is not iterable\n\ninto a traceback like this::\n\n TypeError: Traceback (most recent call last):\n Module unittest.case, line 331, in run\n testMethod()\n Module nti.nose_traceback_info.tests.test_nose_traceback_info, line 39, in test_format_failure\n t, formatted, _ = self.plugin.formatFailure(None, exc_info)\n - __traceback_info__: (\"calling plugin with test and exc_info\", None, )\n Module nti.nose_traceback_info, line 48, in formatFailure\n return self.formatError( test, exc_info)\n Module nti.nose_traceback_info, line 31, in formatError\n t, v, tb = exc_info\n - __traceback_info__: (\"Test and exc_info args\", None, )\n TypeError: 'builtin_function_or_method' object is not iterable\n\n\n.. _Failure Detail: https://nose.readthedocs.org/en/latest/plugins/failuredetail.html\n.. _nose: https://nose.readthedocs.org/en/latest/\n.. _PyHamcrest: https://pyhamcrest.readthedocs.org\n.. _WebError: https://pypi.python.org/pypi/WebError\n\nUsage\n=====\n\nOnce the plugin is installed (using ``pip`` or in a ``setup.py`` or\n``requirements.txt`` file), it is enabled by default, just like\n``logcapture.`` The plugin operates by looking for local variables in\neach frame in a traceback and formatting them (both in captured logs\nand tracebacks displayed for failured tests). The variables are\ndefined by conventions developed (and documented) by `Zope`_; these\nconventions are also followed by `Paste`_ and `WebError`_, meaning\nthat information added to help debug tests can also be used to debug\nproduction errors.\n\nSee that documentation for details on the variables. As a quick start,\nthe most important and most commonly used variable is\n``__traceback_info__``, to which you can assign arbitrary information.\nThe ``repr`` of ``__traceback_info__`` is included in the traceback::\n\n def formatError(self, test, exc_info):\n __traceback_info__ = \"Test and exc_info args\", test, exc_info\n t, v, tb = exc_info\n\n\n.. _paste: http://pythonpaste.org/modules/exceptions.html#module-paste.exceptions.collector\n.. _zope: http://docs.zope.org/zope.exceptions/api.html\n\nOptions\n-------\n\nIn addition to the standard environment variable and flags to enable\nthe plugin, additional options control some behaviour.\n\n``--traceback-long-filenames``\n Use complete filenames, not module names, in formatted\n tracebacks.\n``--traceback-nologcapture``\n Do not format tracebacks captured in logs.\n\nOther Plugins\n=============\n\nThis plugin is known to cooperate correctly with `nose-progressive`_,\nwhich also adjusts the traceback.\n\n.. _nose-progressive: https://pypi.python.org/pypi/nose-progressive/\n\n\n=========\n Changes\n=========\n\n1.0.2 (2015-04-21)\n==================\n\n- Add support for PyPy, Python 3.4 and Python 3.2.\n\n\n1.0.1 (2013-12-14)\n==================\n\n- By default, show filenames instead of module names.\n This cooperates better with IDE test integration.\n\n1.0.0 (2013-09-27)\n==================\n\nInitial release", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/NextThought/nti.nose_traceback_info", "keywords": "nose exceptions zope", "license": "Apache", "maintainer": null, "maintainer_email": null, "name": "nti.nose_traceback_info", "package_url": "https://pypi.org/project/nti.nose_traceback_info/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/nti.nose_traceback_info/", "project_urls": { "Homepage": "https://github.com/NextThought/nti.nose_traceback_info" }, "release_url": "https://pypi.org/project/nti.nose_traceback_info/1.0.2/", "requires_dist": null, "requires_python": null, "summary": "Include __traceback_info__ in tracebacks printed by nose", "version": "1.0.2" }, "last_serial": 1515165, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "f1d1d8ccfe7a2428b246aedfa940d74a", "sha256": "dd686252a544fda95dd47825c01d502d5d2ef8c81100b50dfbb5fd87f99a404c" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.0.tar.gz", "has_sig": false, "md5_digest": "f1d1d8ccfe7a2428b246aedfa940d74a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5402, "upload_time": "2013-09-27T12:48:04", "url": "https://files.pythonhosted.org/packages/50/61/726be61ed7cccdf643ac1cf58459dd1add72a949a4127d6e8f0f460d587e/nti.nose_traceback_info-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "3f6e84665cbedfb33679dcfa9dadeff0", "sha256": "ce1379573c5fbcca4de51a4479a24286fb518bb7015fdc4336e8c276a3f8f80c" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.1.tar.gz", "has_sig": false, "md5_digest": "3f6e84665cbedfb33679dcfa9dadeff0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6060, "upload_time": "2013-12-14T18:51:15", "url": "https://files.pythonhosted.org/packages/a8/92/8c0879f2044fe8760610f95e0b8c0f4b1b9645850367bf9d39b64418b985/nti.nose_traceback_info-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "685ede3dbd47ff7a777017c076491d3c", "sha256": "f9703414c1029de683accf70d9371d3ead46a44ad5d8302db30e251b15ff58d3" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2-py2.7.egg", "has_sig": false, "md5_digest": "685ede3dbd47ff7a777017c076491d3c", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 10519, "upload_time": "2015-04-21T18:37:26", "url": "https://files.pythonhosted.org/packages/30/fd/d289ec17c5b1cc1b68d636bbd2c183e7bcd7d32bf24cdbb8683e1e9a6c8c/nti.nose_traceback_info-1.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "17fde95c41843dba42b468acf891c4ac", "sha256": "b8789cd4847a09dcddc74688ea1b2fb8f862e220b50d160909de1deb2738933a" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "17fde95c41843dba42b468acf891c4ac", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9747, "upload_time": "2015-04-21T18:37:30", "url": "https://files.pythonhosted.org/packages/bf/12/d7f2a6682b5a0cedfb9cc20e4cf6982fdc6ce675318cf4675e889bb1fff9/nti.nose_traceback_info-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "930292f0fa9902a871f0c5841dc0c5d4", "sha256": "e5c2c7be596c984b00833641693234c1e9a9daede1fc66e9725c89a09714a58c" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2-py3.4.egg", "has_sig": false, "md5_digest": "930292f0fa9902a871f0c5841dc0c5d4", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 10887, "upload_time": "2015-04-21T18:37:33", "url": "https://files.pythonhosted.org/packages/81/f0/c18a3a47337cf335dbfbc6e90d221eb23c04c05cd3c0756153918a81f5d3/nti.nose_traceback_info-1.0.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "3be849f327d952de6f5fd0c61def85cf", "sha256": "7b90cf0117be9495367e287b2fe2744a895352c7548832fb42cac002b9fb6e9e" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3be849f327d952de6f5fd0c61def85cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6201, "upload_time": "2015-04-21T18:37:36", "url": "https://files.pythonhosted.org/packages/27/f3/e00c7e87cc83b9efd8f3cd269aa4d39e25bf6924143187b34b2e0c667899/nti.nose_traceback_info-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "685ede3dbd47ff7a777017c076491d3c", "sha256": "f9703414c1029de683accf70d9371d3ead46a44ad5d8302db30e251b15ff58d3" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2-py2.7.egg", "has_sig": false, "md5_digest": "685ede3dbd47ff7a777017c076491d3c", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 10519, "upload_time": "2015-04-21T18:37:26", "url": "https://files.pythonhosted.org/packages/30/fd/d289ec17c5b1cc1b68d636bbd2c183e7bcd7d32bf24cdbb8683e1e9a6c8c/nti.nose_traceback_info-1.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "17fde95c41843dba42b468acf891c4ac", "sha256": "b8789cd4847a09dcddc74688ea1b2fb8f862e220b50d160909de1deb2738933a" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "17fde95c41843dba42b468acf891c4ac", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9747, "upload_time": "2015-04-21T18:37:30", "url": "https://files.pythonhosted.org/packages/bf/12/d7f2a6682b5a0cedfb9cc20e4cf6982fdc6ce675318cf4675e889bb1fff9/nti.nose_traceback_info-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "930292f0fa9902a871f0c5841dc0c5d4", "sha256": "e5c2c7be596c984b00833641693234c1e9a9daede1fc66e9725c89a09714a58c" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2-py3.4.egg", "has_sig": false, "md5_digest": "930292f0fa9902a871f0c5841dc0c5d4", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 10887, "upload_time": "2015-04-21T18:37:33", "url": "https://files.pythonhosted.org/packages/81/f0/c18a3a47337cf335dbfbc6e90d221eb23c04c05cd3c0756153918a81f5d3/nti.nose_traceback_info-1.0.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "3be849f327d952de6f5fd0c61def85cf", "sha256": "7b90cf0117be9495367e287b2fe2744a895352c7548832fb42cac002b9fb6e9e" }, "downloads": -1, "filename": "nti.nose_traceback_info-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3be849f327d952de6f5fd0c61def85cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6201, "upload_time": "2015-04-21T18:37:36", "url": "https://files.pythonhosted.org/packages/27/f3/e00c7e87cc83b9efd8f3cd269aa4d39e25bf6924143187b34b2e0c667899/nti.nose_traceback_info-1.0.2.tar.gz" } ] }