{ "info": { "author": "Jay Marcyes", "author_email": "jay@marcyes.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Plugins", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing" ], "description": "Pout\n====\n\nA collection of handy functions for printing out variables and debugging\ncode.\n\n``print()`` was too hard to read, ``pprint`` wasn't much better. I was\nalso getting sick of typing: ``print \"var = \", var``.\n\nThis tries to print out variables with their name, and for good measure,\nit also prints where the pout function was called from, so you can\neasily find it and delete it when you're done.\n\nMethods\n-------\n\npout.v(arg1, [arg2, ...]) -- easy way to print variables\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nexample\n\n.. code:: python\n\n foo = 1\n pout.v(foo)\n\n bar = [1, 2, [3, 4], 5]\n pout.v(bar)\n\nshould print something like:\n\n::\n\n foo = 1\n (/file.py:line)\n\n bar (4) =\n [\n 0: 1,\n 1: 2,\n 2:\n [\n 0: 3,\n 1: 4\n ],\n 3: 5\n ]\n (/file.py:line)\n\nYou can send as many variables as you want into the call\n\n.. code:: python\n\n # pass in as many variables as you want\n pout.v(foo, bar, che)\n\n # a multi-line call is also fine\n pout.v(\n foo,\n bar\n )\n\npout.h() -- easy way to print \"here\" in the code\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nexample\n\n.. code:: python\n\n pout.h(1)\n # do something else\n pout.h(2)\n\n # do even more of something else\n pout.h()\n\nShould print something like:\n\n::\n\n here 1 (/file.py:line)\n\n here 2 (/file.py:line)\n\n here (/file.py:line)\n\npout.t() -- print a backtrace\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrints a nicely formatted backtrace, by default this should compact\nsystem python calls (eg, anything in dist-packages) which makes the\nbacktrace easier for me to follow.\n\nexample:\n\n.. code:: python\n\n pout.t()\n\nshould print something like:\n\n::\n\n 15 - C:\\Python27\\lib\\runpy.py:162\n 14 - C:\\Python27\\lib\\runpy.py:72\n 13 - C:\\Python27\\lib\\unittest\\__main__.py:12\n 12 - C:\\Python27\\lib\\unittest\\main.py:95\n 11 - C:\\Python27\\lib\\unittest\\main.py:229\n 10 - C:\\Python27\\lib\\unittest\\runner.py:151\n 09 - C:\\Python27\\lib\\unittest\\suite.py:65\n 08 - C:\\Python27\\lib\\unittest\\suite.py:103\n 07 - C:\\Python27\\lib\\unittest\\suite.py:65\n 06 - C:\\Python27\\lib\\unittest\\suite.py:103\n 05 - C:\\Python27\\lib\\unittest\\suite.py:65\n 04 - C:\\Python27\\lib\\unittest\\suite.py:103\n 03 - C:\\Python27\\lib\\unittest\\case.py:376\n 02 - C:\\Python27\\lib\\unittest\\case.py:318\n 01 - C:\\Projects\\Pout\\_pout\\src\\test_pout.py:50\n\n pout.t()\n\npout.p([title]) -- quick and dirty profiling\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nexample\n\n.. code:: python\n\n p(\"starting profile\")\n time.sleep(1)\n p() # stop the \"starting profile\" session\n\n\n # you can go N levels deep\n p(\"one\")\n p(\"two\")\n time.sleep(0.5)\n p() # stop profiling of \"two\"\n time.sleep(0.5)\n p() # stop profiling of \"one\"\n\n\n # you can also use with\n with p(\"benchmarking\"):\n time.sleep(0.5)\n\nshould print something like:\n\n::\n\n starting profile - 1008.2 ms\n start: 1368137723.7 (/file/path:n)\n stop: 1368137724.71(/file/path:n)\n\n\n one > two - 509.2 ms\n start: 1368137722.69 (/file/path:n)\n stop: 1368137723.2(/file/path:n)\n\n\n one - 1025.9 ms\n start: 1368137722.68 (/file/path:n)\n stop: 1368137723.7(/file/path:n)\n\npout.x([exit\\_code]) -- like sys.exit(exit\\_code)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis just prints out where it was called from, so you can remember where\nyou exited the code while debugging\n\nexample:\n\n.. code:: python\n\n pout.x()\n\nwill print something like this before exiting with an exit code of 1:\n\n.. code:: python\n\n exit (/file/path:n)\n\npout.b([title[, rows[, sep]]]) -- prints lots of lines to break up output\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis is is handy if you are printing lots of stuff in a loop and you\nwant to break up the output into sections.\n\nexample:\n\n.. code:: python\n\n pout.b()\n pout.b('this is the title')\n pout.b('this is the title 2', 5)\n pout.b('this is the title 3', 3, '=')\n\nWould result in output like:\n\n::\n\n ********************************************************************************\n (/file/path:n)\n\n\n ****************************** this is the title *******************************\n (/file/path:n)\n\n\n ********************************************************************************\n ********************************************************************************\n ***************************** this is the title 2 ******************************\n ********************************************************************************\n ********************************************************************************\n (/file/path:n)\n\n\n ================================================================================\n ============================= this is the title 3 ==============================\n ===============================================================================\n (/file/path:n)\n\npout.c(str1, [str2, ...]) -- print info about each char in each str\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nKind of like ``od -c`` on the command line.\n\nexample:\n\n.. code:: python\n\n pout.c('this')\n\nwill print something like:\n\n::\n\n Total Characters: 4\n t 't' \\u0074 LATIN SMALL LETTER T\n h 'h' \\u0068 LATIN SMALL LETTER H\n i 'i' \\u0069 LATIN SMALL LETTER I\n s 's' \\u0073 LATIN SMALL LETTER S\n (/file/path:n)\n\nThis could fail if Python isn't compiled with 4 byte unicode support,\njust something to be aware of, but chances are, if you don't have 4 byte\nunicode supported Python, you're not doing much with 4 byte unicode.\n\npout.s(arg1, [arg2, ...]) -- easy way to return pretty versions of variables\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nJust like ``pout.v()`` but will return the value as a string\n\npout.ss(arg1, [arg2, ...]) -- easy way to return pretty versions of variables without meta information\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nJust like ``pout.vv()`` but will return the value as a string\n\npout.l([logger\\_name, [logger\\_level]]) -- turn logging on just for this context\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTurns logging on for the given level (defaults to ``logging.DEBUG``) and\nprints the logs to **stderr**. Useful when you just want to check the\nlogs of something without modifying your current logging configuration.\n\nexample:\n\n.. code:: python\n\n with pout.l():\n logger.debug(\"This will print to the screen even if logging is off\")\n logger.debug(\"this will not print if logging is off\")\n\n with pout.l(\"name\"):\n # if \"name\" logger is used it will print to stderr\n # \"name\" logger goes back to previous configuration\n\nCustomizing Pout\n----------------\n\nobject magic method\n~~~~~~~~~~~~~~~~~~~\n\nAny class object can define a ``__pout__`` magic method, similar to\nPython's built in ``__str__`` magic method that can return a customized\nstring of the object if you want to. This method can return anything, it\nwill be run through Pout's internal stringify methods to convert it to a\nstring and print it out.\n\npout.pout\\_class\n~~~~~~~~~~~~~~~~\n\nYou can create your own class and set this module variable and any pout\nmethod will then use your custom class:\n\n.. code:: python\n\n class PoutChild(pout.Pout):\n pass\n\n # any pout.* calls will now use your child class, customize as you like\n pout.pout_class = PoutChild\n\nConsole commands\n----------------\n\npout.json\n~~~~~~~~~\n\nrunning a command on the command line that outputs a whole a bunch of\njson? Pout can help:\n\n::\n\n $ some-command-that-outputs-json | pout.json\n\npout.char\n~~~~~~~~~\n\nRuns ``pout.c`` but on the output from a command line script:\n\n::\n\n $ echo \"some string with chars to analyze\" | pout.char\n\nInstall\n-------\n\nUse PIP\n\n::\n\n pip install pout\n\nGenerally, the pypi version and the github version shouldn't be that out\nof sync, but just in case, you can install from github also:\n\n::\n\n pip install git+https://github.com/Jaymon/pout#egg=pout\n\n--------------\n\nMake Pout easier to use\n-----------------------\n\nWhen debugging, it's really nice not having to put ``import pout`` at\nthe top of every module you want to use it in, so there's a command for\nthat, if you put:\n\n.. code:: python\n\n import pout\n pout.inject()\n\nSomewhere near the top of your application startup script, then ``pout``\nwill be available in all your files whether you imported it or not, it\nwill be just like ``str()``, ``object``, or the rest of python's\nstandard library.\n\nIf you don't even want to bother with doing that, then just run:\n\n::\n\n $ pout inject\n\nfrom the command line and it will modify your python environment to make\npout available as a builtin module, just like the python standard\nlibrary. This is super handy for development virtual environments.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/Jaymon/pout", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pout", "package_url": "https://pypi.org/project/pout/", "platform": "", "project_url": "https://pypi.org/project/pout/", "project_urls": { "Homepage": "http://github.com/Jaymon/pout" }, "release_url": "https://pypi.org/project/pout/0.7.9/", "requires_dist": null, "requires_python": "", "summary": "Prints out python variables in an easy to read way, handy for debugging", "version": "0.7.9" }, "last_serial": 4491778, "releases": { "0.4": [ { "comment_text": "", "digests": { "md5": "98a9f0af9a865fa4d3ca8e7b524a155f", "sha256": "c6167b4e19955a83e2a656624e81f5a7c601a85c199c034e71a5bd069ab00218" }, "downloads": -1, "filename": "pout-0.4.tar.gz", "has_sig": false, "md5_digest": "98a9f0af9a865fa4d3ca8e7b524a155f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13457, "upload_time": "2013-07-08T23:33:44", "url": "https://files.pythonhosted.org/packages/0c/ad/6791c0a0480cd361497e2e812fc381cdfb8b4944aa23dea4ab9e39343ddc/pout-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "841d981be199d10c31f32a5e62858df4", "sha256": "aef9e456c5109aaca42cea45b7bb06f3ad3ea0c5cac864e7234641c22bc6f553" }, "downloads": -1, "filename": "pout-0.5.tar.gz", "has_sig": false, "md5_digest": "841d981be199d10c31f32a5e62858df4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13555, "upload_time": "2013-07-22T22:25:34", "url": "https://files.pythonhosted.org/packages/ec/5d/bfd54672838ee41cb150a26d757bde09308a023402095fbb03f2a5d85a8b/pout-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "df236f9c079c0955513c103046b80c8a", "sha256": "4b213f848c3f9390cffdaa6fd1b76d6434e0d49183388b1d7e12b46b15721f91" }, "downloads": -1, "filename": "pout-0.5.1.tar.gz", "has_sig": false, "md5_digest": "df236f9c079c0955513c103046b80c8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13610, "upload_time": "2013-08-02T21:37:22", "url": "https://files.pythonhosted.org/packages/ba/e9/9541afded5696ef92333a652445caf3d38ea942e7688dc7b094e4dde6cb9/pout-0.5.1.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "d8b3edbe874b5767777606036923f4bc", "sha256": "5f22a7254808bde3deb9870ee8bc8a626f4f2c02a8da1a5bfd74acda9852017f" }, "downloads": -1, "filename": "pout-0.5.6.tar.gz", "has_sig": false, "md5_digest": "d8b3edbe874b5767777606036923f4bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14638, "upload_time": "2014-01-14T22:33:37", "url": "https://files.pythonhosted.org/packages/e0/ad/4d999a740afa938c07eed77ab206f7cb6bf641f9149629ad90c2ed15f4ba/pout-0.5.6.tar.gz" } ], "0.5.8": [ { "comment_text": "", "digests": { "md5": "d5c83d7504439ffaa2bbfd328ab02b3b", "sha256": "ebb0e76f99a68194736df1104e16d05f258be3e77bcb0e7c460b95b75ddf5c02" }, "downloads": -1, "filename": "pout-0.5.8.tar.gz", "has_sig": false, "md5_digest": "d5c83d7504439ffaa2bbfd328ab02b3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16592, "upload_time": "2016-03-28T20:42:12", "url": "https://files.pythonhosted.org/packages/c2/04/9b45c07fd36e705267f58b804c9b18121a2b1c16240f9dff197369da688a/pout-0.5.8.tar.gz" } ], "0.5.9": [ { "comment_text": "", "digests": { "md5": "d161fa234703754a227973c29f66fedf", "sha256": "14a1f9b1adba970f71094cb0fa99f1b3f5988a23cdcee86db1d07b029f2a8920" }, "downloads": -1, "filename": "pout-0.5.9.tar.gz", "has_sig": false, "md5_digest": "d161fa234703754a227973c29f66fedf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17159, "upload_time": "2016-05-04T09:50:07", "url": "https://files.pythonhosted.org/packages/c7/ad/a1ac9d2fead0822297de95270dcc0484e0bcb169b97293a7bd74d138d3b2/pout-0.5.9.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "5dad38ceed4aff55a832c7e8cb3b4057", "sha256": "5d020894f379f01d5b9b25c09f58142fe9c7e6a13fab6a27a0a3ef70fd4225a8" }, "downloads": -1, "filename": "pout-0.6.0.tar.gz", "has_sig": false, "md5_digest": "5dad38ceed4aff55a832c7e8cb3b4057", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17252, "upload_time": "2016-05-10T23:34:12", "url": "https://files.pythonhosted.org/packages/aa/c7/f35541b9138b116eaeed8d571d4f04da0470a6ec73427b5c0d22b69c1fd2/pout-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "68c3bb40927ee165ad9a61a1f15b57f9", "sha256": "2b61c1913e57dcf5d6b50aca62bbcd1409300acfef55769b0aa9a60d4d029ee4" }, "downloads": -1, "filename": "pout-0.6.1.tar.gz", "has_sig": false, "md5_digest": "68c3bb40927ee165ad9a61a1f15b57f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17662, "upload_time": "2016-08-18T03:08:40", "url": "https://files.pythonhosted.org/packages/49/c6/c361fc673f6226b0cb3596be66e5bcf22472d310149248733cf3030abf20/pout-0.6.1.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "21a1c03b5579fb74ca3065f946182f8e", "sha256": "92327de73dbc3acdea533c914528ed37ef4d584ed6516f5b9973491c39dc3f51" }, "downloads": -1, "filename": "pout-0.6.3.tar.gz", "has_sig": false, "md5_digest": "21a1c03b5579fb74ca3065f946182f8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17743, "upload_time": "2016-12-12T08:40:18", "url": "https://files.pythonhosted.org/packages/88/8e/94dc0d209c624852f9bc253f1f419447890d3847260af74cdbc698af5d5a/pout-0.6.3.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "010a6f465e568155425ed334d85d8bc3", "sha256": "39dfb94d43b3e5f0c359db45d914a426ee0d4bf9e939aa5e4c0ae7834475a9f7" }, "downloads": -1, "filename": "pout-0.6.5.tar.gz", "has_sig": false, "md5_digest": "010a6f465e568155425ed334d85d8bc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17826, "upload_time": "2017-01-27T23:53:07", "url": "https://files.pythonhosted.org/packages/80/b7/2db5faba5240cb5b80672e5aae08b690d3ad18b04c0fa18a9dd639f4fb87/pout-0.6.5.tar.gz" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "d142d0a00861384082f5b00c7ce9d193", "sha256": "9e3ba469a253306b1a39bd50cbcccb3ee56c53bb88175facaf549f4b4c45429d" }, "downloads": -1, "filename": "pout-0.6.6.tar.gz", "has_sig": false, "md5_digest": "d142d0a00861384082f5b00c7ce9d193", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18729, "upload_time": "2017-04-27T09:12:35", "url": "https://files.pythonhosted.org/packages/ff/41/2e2433a7852da1d005e059d74edbb424c9294b1ee64d0f382a343275868b/pout-0.6.6.tar.gz" } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "9b9141744829a57db45dd6e8dd4bcf6e", "sha256": "3db86b375eeb38302de4a2a08ff83ccb4b228371f2c244c5c90bbe59b6c625a3" }, "downloads": -1, "filename": "pout-0.6.7.tar.gz", "has_sig": false, "md5_digest": "9b9141744829a57db45dd6e8dd4bcf6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18751, "upload_time": "2017-08-23T20:14:44", "url": "https://files.pythonhosted.org/packages/6d/0b/ff721f8e244db9cc0a1eaa912d5bf5f9f5b3457e5909b2e5effff1996fdd/pout-0.6.7.tar.gz" } ], "0.6.8": [ { "comment_text": "", "digests": { "md5": "976c4593e8968a22572481e2a4c99a8e", "sha256": "1143b01376d6e9fa5975c187e8326f0005866067f4f30769c66fdaac6a521585" }, "downloads": -1, "filename": "pout-0.6.8.tar.gz", "has_sig": false, "md5_digest": "976c4593e8968a22572481e2a4c99a8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19407, "upload_time": "2017-12-28T08:00:57", "url": "https://files.pythonhosted.org/packages/17/f6/1933342f4dd40f0cf62466a5dc098f0ce49293889f63b84b1c238bc6d455/pout-0.6.8.tar.gz" } ], "0.6.9": [ { "comment_text": "", "digests": { "md5": "4da37e92d0131ecf6a2e2755c78e9806", "sha256": "7477aba48d25d4258eab8e8ac5cfb911fe3b8ada2ff7b89e2ea350c1eca549d1" }, "downloads": -1, "filename": "pout-0.6.9.tar.gz", "has_sig": false, "md5_digest": "4da37e92d0131ecf6a2e2755c78e9806", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19455, "upload_time": "2018-03-09T09:00:27", "url": "https://files.pythonhosted.org/packages/69/85/45261b1538c88378ff9030b975f34862f7da81f7218f681518617bef1f65/pout-0.6.9.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "112890a1d798dd2a8bb720cd3050ecf6", "sha256": "ff977f0919fcb4133ea81102a2acb7ce3f6609091e24283f7ee328314e6b8c2f" }, "downloads": -1, "filename": "pout-0.7.0.tar.gz", "has_sig": false, "md5_digest": "112890a1d798dd2a8bb720cd3050ecf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23573, "upload_time": "2018-03-09T09:07:55", "url": "https://files.pythonhosted.org/packages/2f/68/b7900d12ba82c6daa9bdba3825498c0b8e655b023828a3bd8bffd0b037c7/pout-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "dcb05646a1235a21221c82432f5364b4", "sha256": "e2bfb51c42b0730f8c247a7296195b6f22cbc0f4d788b4f083cabb260d07af52" }, "downloads": -1, "filename": "pout-0.7.1.tar.gz", "has_sig": false, "md5_digest": "dcb05646a1235a21221c82432f5364b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23605, "upload_time": "2018-03-21T00:07:56", "url": "https://files.pythonhosted.org/packages/55/ec/80b11123a7e9c8996e8dd406a5d40e57215f21fecf439bf05763edebf7e9/pout-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "504af140371e813cf146b5e08b5c2ea6", "sha256": "0d592f73922aaeaa9a27a8f114ffe25b93c6f466ac1b65a0488208dd6cd998db" }, "downloads": -1, "filename": "pout-0.7.2.tar.gz", "has_sig": false, "md5_digest": "504af140371e813cf146b5e08b5c2ea6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24007, "upload_time": "2018-04-18T23:23:42", "url": "https://files.pythonhosted.org/packages/40/9d/9da82ce75ab17771b6145366882de720372d5971a9f7e9d9de1be60007f7/pout-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "07791c81eaf6f335b4dcd13ba6e814a4", "sha256": "961545f8b91c6af6be79329dfd3fd380975775b6f5f709d1935cd4c9e99d0374" }, "downloads": -1, "filename": "pout-0.7.3.tar.gz", "has_sig": false, "md5_digest": "07791c81eaf6f335b4dcd13ba6e814a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25239, "upload_time": "2018-04-22T22:50:17", "url": "https://files.pythonhosted.org/packages/47/8a/821399c3accd9478a90c6887132e1820bbe64b8b1633fbc09afa8c1377d1/pout-0.7.3.tar.gz" } ], "0.7.7": [ { "comment_text": "", "digests": { "md5": "ee30ba8b447b9a7df9af21d04c2b1bae", "sha256": "b329bc693b2ae716421b15ce354080d47ccbfa9230d768d3d89edc65459a9223" }, "downloads": -1, "filename": "pout-0.7.7.tar.gz", "has_sig": false, "md5_digest": "ee30ba8b447b9a7df9af21d04c2b1bae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27280, "upload_time": "2018-08-31T20:52:54", "url": "https://files.pythonhosted.org/packages/a1/68/d6d4e3e99da4ee21368c51a117bb4dbcf11a8eb021d2a5ea9d2b64a0832f/pout-0.7.7.tar.gz" } ], "0.7.9": [ { "comment_text": "", "digests": { "md5": "eb380fa860e89f2a979937e1a30b97e0", "sha256": "25737cd7410f74499c2cb5022a87a95fadfe441230699f3d509b132d5df930aa" }, "downloads": -1, "filename": "pout-0.7.9.tar.gz", "has_sig": false, "md5_digest": "eb380fa860e89f2a979937e1a30b97e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26654, "upload_time": "2018-11-16T00:01:09", "url": "https://files.pythonhosted.org/packages/3d/5d/f0d8aca217dab0abde20017d14bc2a4687a4eeb5baf310978709e8912500/pout-0.7.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eb380fa860e89f2a979937e1a30b97e0", "sha256": "25737cd7410f74499c2cb5022a87a95fadfe441230699f3d509b132d5df930aa" }, "downloads": -1, "filename": "pout-0.7.9.tar.gz", "has_sig": false, "md5_digest": "eb380fa860e89f2a979937e1a30b97e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26654, "upload_time": "2018-11-16T00:01:09", "url": "https://files.pythonhosted.org/packages/3d/5d/f0d8aca217dab0abde20017d14bc2a4687a4eeb5baf310978709e8912500/pout-0.7.9.tar.gz" } ] }