{ "info": { "author": "C Anthony Risinger", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python" ], "description": "==========\nRetrospect\n==========\n\n**Dynamic logging after the fact**\n\nClassic logging expects perfect foresight, but only hindsight is 20/20!\n\nUsage\n-----\n\nInstall via pip, then enter in a shell:\n\n.. code-block:: python\n\n def hello(a, b=2):\n \"\"\"docstring\"\"\"\n a = 1\n c = b * 2\n a = b = c = a * 2 + b * c\n print('output: a={} b={} c={}'.format(a, b, c))\n return a, b, c\n\n import retrospect\n retro = retrospect.FunctionRetrospector(hello)\n\nNow you can start inspecting lines in real-time:\n\n.. code-block:: python\n\n >>> retro.implement(lines=True)\n >>> hello(10)\n ((3, SetLineno, 3), {'a': 10, 'b': 2})\n ((4, SetLineno, 4), {'a': 1, 'b': 2})\n ((5, SetLineno, 5), {'a': 1, 'b': 2, 'c': 4})\n ((6, SetLineno, 6), {'a': 10, 'b': 10, 'c': 10})\n output: a=10 b=10 c=10\n ((7, SetLineno, 7), {'a': 10, 'b': 10, 'c': 10})\n ((7, RETURN_VALUE, None), {'a': 10, 'b': 10, 'c': 10})\n\nOr a specific set of lines:\n\n.. code-block:: python\n\n >>> retro.implement(lines=[4], boundaries=False)\n >>> hello(20)\n ((4, SetLineno, 4), {'a': 1, 'b': 2})\n output: a=10 b=10 c=10\n\nOr only on symbol changes:\n\n.. code-block:: python\n\n >>> retro.implement(symbols=True, boundaries='start')\n >>> hello(30)\n ((3, SetLineno, 3), {'a': 30, 'b': 2})\n ((3, STORE_FAST, 'a'), {'a': 30, 'b': 2})\n ((3, STORE_FAST, 'a'), {'a': 1, 'b': 2})\n ((4, STORE_FAST, 'c'), {'a': 1, 'b': 2})\n ((4, STORE_FAST, 'c'), {'a': 1, 'b': 2, 'c': 4})\n ((5, STORE_FAST, 'a'), {'a': 1, 'b': 2, 'c': 4})\n ((5, STORE_FAST, 'a'), {'a': 10, 'b': 2, 'c': 4})\n ((5, STORE_FAST, 'b'), {'a': 10, 'b': 2, 'c': 4})\n ((5, STORE_FAST, 'b'), {'a': 10, 'b': 10, 'c': 4})\n ((5, STORE_FAST, 'c'), {'a': 10, 'b': 10, 'c': 4})\n ((5, STORE_FAST, 'c'), {'a': 10, 'b': 10, 'c': 10})\n output: a=10 b=10 c=10\n\nOr specific opcodes:\n\n.. code-block:: python\n\n >>> retro.implement(opcodes=['LOAD_CONST'], boundaries='finish')\n >>> hello(40)\n ((3, LOAD_CONST, 1), {'a': 40, 'b': 2})\n ((4, LOAD_CONST, 2), {'a': 1, 'b': 2})\n ((5, LOAD_CONST, 2), {'a': 1, 'b': 2, 'c': 4})\n ((6, LOAD_CONST, 'output: a={} b={} c={}'), {'a': 10, 'b': 10, 'c': 10})\n output: a=10 b=10 c=10\n ((7, RETURN_VALUE, None), {'a': 10, 'b': 10, 'c': 10})\n\nOr return to **exact** original:\n\n.. code-block:: python\n\n >>> retro.implement()\n >>> hello(50)\n output: a=10 b=10 c=10\n\nAny of the above can be mixed as necessary, eg. ``lines=True, symbols=\"c\"``", "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/xtfxme/retrospect", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "retrospect", "package_url": "https://pypi.org/project/retrospect/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/retrospect/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/xtfxme/retrospect" }, "release_url": "https://pypi.org/project/retrospect/0.1.4/", "requires_dist": null, "requires_python": null, "summary": "Log with 20/20 vision", "version": "0.1.4" }, "last_serial": 3752814, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "28d72814ac9656e6265ae94338f41c94", "sha256": "982b2824a91a13e9b457547f1aa61aa34ca1388f6e0b833f2a9fcaa8a21ebb6f" }, "downloads": -1, "filename": "retrospect-0.0.1.tar.gz", "has_sig": false, "md5_digest": "28d72814ac9656e6265ae94338f41c94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1102, "upload_time": "2014-11-24T15:35:10", "url": "https://files.pythonhosted.org/packages/9b/38/c084978a4ba0cd66a395d4b08a5b8a0651daf4c195e5107d3604636e8789/retrospect-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "b05bf0b7b167e1ca59654b6fc20793cc", "sha256": "2724cebda4a0b17a86f440e1830b546d8ea2e66b68b2ada25d89a4ccbdfa5f41" }, "downloads": -1, "filename": "retrospect-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b05bf0b7b167e1ca59654b6fc20793cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7695, "upload_time": "2014-12-01T16:23:15", "url": "https://files.pythonhosted.org/packages/b8/78/cc99ebcff4158b2515c83193ea12f3a93cd68e2e4b9abdc1b3dfa4fd739a/retrospect-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4e0df06ef0fa0cfcd82a8c17a884f898", "sha256": "4bd4f070260127bcfa3f41443822ed4e980a524191ce582530aee6da3b6f9dc9" }, "downloads": -1, "filename": "retrospect-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4e0df06ef0fa0cfcd82a8c17a884f898", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7881, "upload_time": "2014-12-01T16:36:44", "url": "https://files.pythonhosted.org/packages/bd/67/e48864da8e3861078d6891bd6b3b7f710028d5c1c28a2a3d5d7393bed0d4/retrospect-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "15da9d12770ddbc5b9ededafedcbddba", "sha256": "01f80838def51b7e96ea5f34047d8e434ee3b7a8de539a03b71bec99bcb9904e" }, "downloads": -1, "filename": "retrospect-0.1.2.tar.gz", "has_sig": false, "md5_digest": "15da9d12770ddbc5b9ededafedcbddba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8204, "upload_time": "2014-12-15T15:44:35", "url": "https://files.pythonhosted.org/packages/c3/d1/3fee468954d90268df941fde3e199e842b8a4bb2c1b8ecc5ca75a3713b54/retrospect-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "2ea52c6d4b9960f7cb0ab9279efea098", "sha256": "62f6dddf1e2cd420109ec4942419199a6af74503d4fae5b924ba7416be76c5ef" }, "downloads": -1, "filename": "retrospect-0.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "2ea52c6d4b9960f7cb0ab9279efea098", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10478, "upload_time": "2015-10-12T17:33:37", "url": "https://files.pythonhosted.org/packages/a9/91/9ac4458e0365f22b0994a4a9175b452055d5bf76553066ed01c2a5cfe837/retrospect-0.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75972501b6f13b7791706e4203fed777", "sha256": "fb7a1d40d16f954c3ae254c963f822b8f2b1c3c4090bf6bb71a102b6ccaed36c" }, "downloads": -1, "filename": "retrospect-0.1.3.tar.gz", "has_sig": false, "md5_digest": "75972501b6f13b7791706e4203fed777", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8311, "upload_time": "2015-10-12T17:32:06", "url": "https://files.pythonhosted.org/packages/c5/46/3e3e25f3cf34a79c377d2dca737001194f1d3703cccc452e6c215ccd599d/retrospect-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "868d6bebb6172905222e989ffc78ff77", "sha256": "bb06771537eff97a0219eba8fb24f790d0ce088acd5c33ee6f121db6c3f1dafa" }, "downloads": -1, "filename": "retrospect-0.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "868d6bebb6172905222e989ffc78ff77", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10325, "upload_time": "2015-10-12T21:24:52", "url": "https://files.pythonhosted.org/packages/fd/d2/ed9ab4edcd8dbf00cba6057e559948b13f53756cb605b27d5026aa2fe35c/retrospect-0.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f02bd9193038a61507f00e95cabdd5b", "sha256": "c99b884caa7f08476cf5901167450dcd0ea6b5cfd88ef881a5146616bb4d7762" }, "downloads": -1, "filename": "retrospect-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9f02bd9193038a61507f00e95cabdd5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8228, "upload_time": "2015-10-12T21:24:41", "url": "https://files.pythonhosted.org/packages/2c/8f/76fa99ff48a1b07f08e9d30f7cbc3b3d1d036c40166bc4b8c2bb7a8442a6/retrospect-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "868d6bebb6172905222e989ffc78ff77", "sha256": "bb06771537eff97a0219eba8fb24f790d0ce088acd5c33ee6f121db6c3f1dafa" }, "downloads": -1, "filename": "retrospect-0.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "868d6bebb6172905222e989ffc78ff77", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10325, "upload_time": "2015-10-12T21:24:52", "url": "https://files.pythonhosted.org/packages/fd/d2/ed9ab4edcd8dbf00cba6057e559948b13f53756cb605b27d5026aa2fe35c/retrospect-0.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f02bd9193038a61507f00e95cabdd5b", "sha256": "c99b884caa7f08476cf5901167450dcd0ea6b5cfd88ef881a5146616bb4d7762" }, "downloads": -1, "filename": "retrospect-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9f02bd9193038a61507f00e95cabdd5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8228, "upload_time": "2015-10-12T21:24:41", "url": "https://files.pythonhosted.org/packages/2c/8f/76fa99ff48a1b07f08e9d30f7cbc3b3d1d036c40166bc4b8c2bb7a8442a6/retrospect-0.1.4.tar.gz" } ] }