{ "info": { "author": "tpltnt", "author_email": "tpltnt+pyutil@nbkawtg.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: DFSG approved", "License :: OSI Approved :: GNU General Public License (GPL)", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries", "Topic :: Utilities" ], "description": ".. -*- coding: utf-8; fill-column: 77 -*-\n\npyutil -- a library of useful Python functions and classes\n==========================================================\n\nMany of these utilities (or their ancestors) were developed originally\nby Zooko Wilcox-O'Hearn for the Mojo Nation, Mnet, Allmydata.com \"Mountain View\",\nTahoe-LAFS, or SimpleGeo's products. Please note that version 2.X is based\non Python 2. Version 3.X will have support for Python 3.\n\n.. image:: https://travis-ci.org/tpltnt/pyutil.svg?branch=master\n :target: https://travis-ci.org/tpltnt/pyutil\n\nutilities\n=========\n\ncurrent\n-------\n\n- mathutil.py_ - integer power, floor, ceil, and nearest multiples; permute\n and fit slope\n- memutil.py_ - statistics and diagnostics for memory use and garbage\n collection\n- platformutil.py_ - get platform including Linux distro; more accurate and\n less noisy than platform.platform()\n- strutil.py_ - common prefix and suffix of two strings, and newline\n processing\n- assertutil.py_ - test preconditions, postconditions, and assertions\n- benchutil.py_ - benchmark a function by running it repeatedly\n- fileutil.py_ - work with files and directories\n- iputil.py_ - query available local IPv4 addresses\n- jsonutil.py_ - wrapper around simplejson which converts decimal inputs to\n Python Decimal objects instead of to Python floats\n- lineutil.py_ - remove extra whitespace from files\n- testutil.py_ - utilities for use in unit tests, especially in Twisted\n- time_format.py_ - date and time formatting operations\n- version_class.py_ - parse version strings into a Version Number object\n- verlib.py_ - utility to compare version strings, by Tarek Ziad\u00e9\n\nout of shape\n------------\n\nI don't currently use these, but I still think they are possibly good ideas.\n\n- nummedobj.py_ - number objects in order of creation for consistent debug\n output\n- observer.py_ - the Observer pattern\n- increasing.py_ - an implementation of a monotonically-increasing timer; By\n the way a future, better implementation of this would use CLOCK_MONOTONIC\n or CLOCK_MONOTONIC_RAW if it were available:\n http://stackoverflow.com/questions/1205722/how-do-i-get-monotonic-time-durations-in-python/1205762#1205762\n- repeatable_random.py_ - Make the random and time modules deterministic, so\n that executions can be reproducible.\n- strutil.py_ - string utilities\n- cache.py_ - multiple implementations of a least-recently-used in-memory\n caching strategy, optimized for different sizes (note: I, Zooko, nowadays\n prefer a random-replacement cache eviction strategy over\n least-recently-used because the former has more consistent and predictable\n behavior)\n- odict.py_ - ordered dictionary implementation: see PEP 372. Note: there is\n now (as of Python 2.7) an ordered dict implementation in the standard\n library, but I haven't checked if it is as good as this one.\n- zlibutil.py_ - zlib decompression in limited memory\n\ndeprecated\n----------\n\nI no longer use these and I don't recommend that you do either.\n\n- logutil.py_ - send log messages to Twisted logger if present, else Python\n library logger\n- weakutil.py_ - allows a bound method's object to be GC'd\n- twistedutil.py_ - callLater_weakly, a variant of Twisted's callLater which\n interacts more nicely with weakrefs\n- PickleSaver.py_ - make all or part of an object persistent, by saving it to\n disk when it's garbage collected\n- humanreadable.py_ - an improved version of the builtin repr() function\n- find_exe.py_ - try different paths in search of an executable\n- dictutil.py_ - several specialized dict extensions, as well as some\n convenient functions for working with dicts\n- randutil.py_ - various ways to get random bytes\n- xor.py_ - xor two same-length strings together\n\nThanks to Peter Westlake and Ravi Pinjala for help documenting what these do.\n\n\n\ndownload\n========\n\nhttps://pypi.python.org/pypi/pyutil\n\nsource code (git)\n=================\n\nhttps://github.com/tpltnt/pyutil\n\nissue tracker\n=============\n\nhttps://github.com/tpltnt/pyutil/issues\n\ntests and benchmarks\n====================\n\nTesting requires these dependencies: ``twisted``, ``setuptools_trial``,\nand ``simplejson``. You can install them by running:\n``pip install twisted setuptools_trial simplejson``.\n\nTo run tests: ``python ./setup.py trial -s pyutil.test.current``.\n\nYou can also run the tests with the standard pyunit test runner instead of\ntrial, but a couple of the tests will fail due to the absence of Trial's\n\"Skip This Test\" feature. You can also run the tests of the out-of-shape and\ndeprecated modules:\n\n``python ./setup.py trial -s pyutil.test.out_of_shape``\n\n``python ./setup.py trial -s pyutil.test.deprecated``\n\nOr of all modules:\n\n``python ./setup.py trial -s pyutil.test``\n\nSome modules have self-benchmarks provided. For example, to benchmark the\ncache module: ``python -OOu -c 'from pyutil.test import test_cache;\ntest_cache.quick_bench()'``\n\nor for more complete and time-consuming results: ``python -OOu -c 'from\npyutil.test import test_cache; test_cache.slow_bench()'``\n\n(The \"-O\" is important when benchmarking, since cache has extensive\nself-tests that are optimized out when -O is included.)\n\ntesting with virtualenv\n-----------------------\n\nYou can install all testing tools and test-time dependencies in a local\n`virtualenv` which avoids interference with user- or system-wide python\npackages. Here's an example of this process (command output omitted):\n\n.. code:: bash\n\n $ git clone 'https://github.com/tpltnt/pyutil'\n $ cd pyutil/\n $ virtualenv ./venv\n $ ./venv/bin/pip install twisted setuptools_trial simplejson\n $ ./venv/bin/python ./setup.py trial -s pyutil.test\n\nLICENCE\n=======\n\nYou may use this package under the GNU General Public License, version 2 or,\nat your option, any later version. You may use this package under the\nTransitive Grace Period Public Licence, version 1.0, or at your option, any\nlater version. (You may choose to use this package under the terms of either\nlicence, at your option.) You may use this package under the Simple\nPermissive Licence, version 1 or, at your option, any later version. See the\nfile COPYING.GPL_ for the terms of the GNU General Public License, version 2.\nSee the file COPYING.TGPPL.rst_ for the terms of the Transitive Grace Period\nPublic Licence, version 1.0. See the file COPYING.SPL.txt_ for the terms of\nthe Simple Permissive Licence, version 1.\n\n.. _COPYING.GPL: COPYING.GPL\n.. _COPYING.TGPPL.rst: COPYING.TGPPL.rst\n.. _COPYING.SPL.txt: COPYING.SPL.txt\n\n.. _assertutil.py: pyutil/assertutil.py\n.. _benchutil.py: pyutil/benchutil.py\n.. _cache.py: pyutil/cache.py\n.. _dictutil.py: pyutil/dictutil.py\n.. _fileutil.py: pyutil/fileutil.py\n.. _find_exe.py: pyutil/find_exe.py\n.. _humanreadable.py: pyutil/humanreadable.py\n.. _increasing.py: pyutil/increasing.py\n.. _iputil.py: pyutil/iputil.py\n.. _jsonutil.py: pyutil/jsonutil.py\n.. _lineutil.py: pyutil/lineutil.py\n.. _logutil.py: pyutil/logutil.py\n.. _mathutil.py: pyutil/mathutil.py\n.. _memutil.py: pyutil/memutil.py\n.. _nummedobj.py: pyutil/nummedobj.py\n.. _observer.py: pyutil/observer.py\n.. _odict.py: pyutil/odict.py\n.. _PickleSaver.py: pyutil/PickleSaver.py\n.. _platformutil.py: pyutil/platformutil.py\n.. _randutil.py: pyutil/randutil.py\n.. _repeatable_random.py: pyutil/repeatable_random.py\n.. _strutil.py: pyutil/strutil.py\n.. _strutil.py: pyutil/strutil.py\n.. _testutil.py: pyutil/testutil.py\n.. _time_format.py: pyutil/time_format.py\n.. _twistedutil.py: pyutil/twistedutil.py\n.. _verlib.py: pyutil/verlib.py\n.. _version_class.py: pyutil/version_class.py\n.. _weakutil.py: pyutil/weakutil.py\n.. _xor.py: pyutil/xor/xor.py\n.. _zlibutil.py: pyutil/zlibutil.py", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tpltnt/pyutil", "keywords": "", "license": "GNU GPL", "maintainer": "", "maintainer_email": "", "name": "pyutil", "package_url": "https://pypi.org/project/pyutil/", "platform": "", "project_url": "https://pypi.org/project/pyutil/", "project_urls": { "Homepage": "https://github.com/tpltnt/pyutil" }, "release_url": "https://pypi.org/project/pyutil/3.3.0/", "requires_dist": null, "requires_python": "", "summary": "a collection of utilities for Python programmers", "version": "3.3.0" }, "last_serial": 5452702, "releases": { "1.7.1": [ { "comment_text": "", "digests": { "md5": "d6efa4b42a3e6d2d602f6b72b40a62e8", "sha256": "4bd139d73fa1d29ca464e2cdae31a965c50e4b50d1325a06e4fd162f973e5dd9" }, "downloads": -1, "filename": "pyutil-1.7.1.tar.gz", "has_sig": false, "md5_digest": "d6efa4b42a3e6d2d602f6b72b40a62e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86926, "upload_time": "2010-04-05T17:12:12", "url": "https://files.pythonhosted.org/packages/d8/3e/5d84e4e3561c134eaf5f36e0bfd92ed21e88889e44086de179a339d82502/pyutil-1.7.1.tar.gz" } ], "1.7.10": [ { "comment_text": "", "digests": { "md5": "81579fef95714575c1a4fb31d34b6845", "sha256": "e39011a2b1da4b6e74884254ba0a029568190be1e0ad2efc6bd7f3d91876ac9d" }, "downloads": -1, "filename": "pyutil-1.7.10.tar.gz", "has_sig": false, "md5_digest": "81579fef95714575c1a4fb31d34b6845", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88361, "upload_time": "2010-08-09T20:30:03", "url": "https://files.pythonhosted.org/packages/72/0a/213fbf90c466badedb1a1d1926fdc8fb720aaa534b5f4a2fae0c1d7524e5/pyutil-1.7.10.tar.gz" } ], "1.7.11": [ { "comment_text": "", "digests": { "md5": "c2e22dcf98961014862e056e655241b2", "sha256": "281a5ec6d8e66ec4664ca82d55f1b0c6c156d2133e3d41939dcb4fd735ef36f1" }, "downloads": -1, "filename": "pyutil-1.7.11.tar.gz", "has_sig": false, "md5_digest": "c2e22dcf98961014862e056e655241b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95436, "upload_time": "2010-09-03T07:30:43", "url": "https://files.pythonhosted.org/packages/1a/a3/bf7f80f773a129c6a0bc2feab1ba3fc19b44052d51f91354d56854be9133/pyutil-1.7.11.tar.gz" } ], "1.7.12": [ { "comment_text": "", "digests": { "md5": "9bc2a5794d4b2519dc5330822ac2039b", "sha256": "be66bcf4f5fab65e5c8a964d3f4f1b10e7ca604375c6b908050cc795d7a507b1" }, "downloads": -1, "filename": "pyutil-1.7.12.tar.gz", "has_sig": false, "md5_digest": "9bc2a5794d4b2519dc5330822ac2039b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95516, "upload_time": "2010-09-04T08:14:45", "url": "https://files.pythonhosted.org/packages/69/bb/087ed614cc6d5726af5f84efed81208dcd1eb87ef74bfdf6b92673b35c0d/pyutil-1.7.12.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "f5817dbd6c3493ab5f1fc1b51fc10d14", "sha256": "131c9975ba40c0f21854209368d66bbfc390d5dfc604aac3fb570a48763dae2e" }, "downloads": -1, "filename": "pyutil-1.7.2.tar.gz", "has_sig": false, "md5_digest": "f5817dbd6c3493ab5f1fc1b51fc10d14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87094, "upload_time": "2010-04-28T19:52:01", "url": "https://files.pythonhosted.org/packages/e3/33/f40ecc08b7cef15d992db5ba8ef435ded1871940baab7159b80fb70eb0da/pyutil-1.7.2.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "02ca1d3f1b4effebe6cf22884e503568", "sha256": "62e9b21ca6676435ecb1d278d06d88336651003000dab872b5cd8893b8f1efd6" }, "downloads": -1, "filename": "pyutil-1.7.3.tar.gz", "has_sig": false, "md5_digest": "02ca1d3f1b4effebe6cf22884e503568", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87118, "upload_time": "2010-04-28T20:05:19", "url": "https://files.pythonhosted.org/packages/ec/a7/6be6eed4775c6e99ab453f06c3437bd5c3bfd4ead78fcf31198c296e654b/pyutil-1.7.3.tar.gz" } ], "1.7.4": [ { "comment_text": "", "digests": { "md5": "eb06d4f1f2fadf63429923ac660b8759", "sha256": "bd8b6ffa27e1766d05560176f8f54af095d79bc224f848b1ba5fd9d248e24aaa" }, "downloads": -1, "filename": "pyutil-1.7.4.tar.gz", "has_sig": false, "md5_digest": "eb06d4f1f2fadf63429923ac660b8759", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87120, "upload_time": "2010-04-28T21:46:50", "url": "https://files.pythonhosted.org/packages/a8/ef/80baf98d2cb60af236a9f9936fa281adc1fa512ec9d029955eb138893062/pyutil-1.7.4.tar.gz" } ], "1.7.5": [ { "comment_text": "", "digests": { "md5": "32a4fc90bc9d23e39a0ed57ab8626627", "sha256": "436279d7e2bc27a4fe5d970964c1cf49ef6046690e70d59fe4630ac54075dad0" }, "downloads": -1, "filename": "pyutil-1.7.5.tar.gz", "has_sig": false, "md5_digest": "32a4fc90bc9d23e39a0ed57ab8626627", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87130, "upload_time": "2010-04-28T21:59:28", "url": "https://files.pythonhosted.org/packages/51/ec/0808fb1aeaf4f5fd5fe337e7f2376989ccec6f505554f90f72c89b5d5f33/pyutil-1.7.5.tar.gz" } ], "1.7.6": [ { "comment_text": "", "digests": { "md5": "f5f609120085cd2e6dedf7d9df6261dd", "sha256": "1791d91b93a27905ce0ddef0d8bdb7c37dc5ba6e00220e13b91abec8cc11d3ea" }, "downloads": -1, "filename": "pyutil-1.7.6.tar.gz", "has_sig": false, "md5_digest": "f5f609120085cd2e6dedf7d9df6261dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87186, "upload_time": "2010-05-07T23:59:05", "url": "https://files.pythonhosted.org/packages/18/10/cdcac5e7173b39d51e612346247ac8f99fb3b98deec1b5c58595bf0d81dc/pyutil-1.7.6.tar.gz" } ], "1.7.7": [ { "comment_text": "", "digests": { "md5": "e24e7417a7e78006a72fc3017c94a6ba", "sha256": "bf47482997648c3beeac40a8e45cb42d4834e947360f613378a0d6322251fa79" }, "downloads": -1, "filename": "pyutil-1.7.7.tar.gz", "has_sig": false, "md5_digest": "e24e7417a7e78006a72fc3017c94a6ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87223, "upload_time": "2010-05-23T20:49:25", "url": "https://files.pythonhosted.org/packages/f4/01/c2f22cbc42de42f6a62981021b786b8db0ca4f4d525cc27b5b7da4690f10/pyutil-1.7.7.tar.gz" } ], "1.7.8": [ { "comment_text": "", "digests": { "md5": "c1af93dce586f600ea8a8554642ef866", "sha256": "9df9f27ed6f9c6e483da53d380e9654985a7d2558b4f8801f1c069370f0baa86" }, "downloads": -1, "filename": "pyutil-1.7.8.tar.gz", "has_sig": false, "md5_digest": "c1af93dce586f600ea8a8554642ef866", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87353, "upload_time": "2010-06-03T22:09:27", "url": "https://files.pythonhosted.org/packages/af/22/b020a686c162345ab5f4447a94ea63402011c099d1d04e24108869d027d5/pyutil-1.7.8.tar.gz" } ], "1.7.9": [ { "comment_text": "", "digests": { "md5": "452c9485216026947d313d0614bcc369", "sha256": "c303bb779f96073820e2eb7c9692fe15a57df491eb356839f3cb3377ed03b844" }, "downloads": -1, "filename": "pyutil-1.7.9.tar.gz", "has_sig": false, "md5_digest": "452c9485216026947d313d0614bcc369", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 151917, "upload_time": "2010-06-16T18:27:42", "url": "https://files.pythonhosted.org/packages/f7/22/f48bff905164652cd9c6ecc2699ed0a22c55139bb9fd473b0dbb87f89488/pyutil-1.7.9.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "f9b9bc320988c2e5afe964ef802308bb", "sha256": "f58cb6f834a40aa35258a6a48446805246658fbaf89af9d9afc5ddc42700c5b5" }, "downloads": -1, "filename": "pyutil-1.8.0.tar.gz", "has_sig": false, "md5_digest": "f9b9bc320988c2e5afe964ef802308bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88845, "upload_time": "2010-12-06T20:22:06", "url": "https://files.pythonhosted.org/packages/43/91/caba1ed1f667811d3944fde808e0828e06161aea3c5975644a664e5179f6/pyutil-1.8.0.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "2b05db3d8895cb229486ba59cec4550b", "sha256": "093ccc8573f4ef55b839ea1fe83c7c7bbbf35db109dd0df9e792c380c2e92326" }, "downloads": -1, "filename": "pyutil-1.8.1.tar.gz", "has_sig": false, "md5_digest": "2b05db3d8895cb229486ba59cec4550b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93977, "upload_time": "2010-12-19T21:58:34", "url": "https://files.pythonhosted.org/packages/f8/d4/d8bbd17f247160471a135090ca5f281b8830874d9d27f878e7d4d850a414/pyutil-1.8.1.tar.gz" } ], "1.8.2": [ { "comment_text": "", "digests": { "md5": "e9f9329b7310455ab4f4b30bc2d92e5b", "sha256": "3507b070d714cd43020592adf9b26de34c77b89d7e49028119b621b375f15987" }, "downloads": -1, "filename": "pyutil-1.8.2.tar.gz", "has_sig": false, "md5_digest": "e9f9329b7310455ab4f4b30bc2d92e5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96188, "upload_time": "2011-02-13T08:41:11", "url": "https://files.pythonhosted.org/packages/5c/b3/0bd0fcc3f6b866222c196f4003a55e5a4a0d9031b385e1dcc0cc57511228/pyutil-1.8.2.tar.gz" } ], "1.8.3": [ { "comment_text": "", "digests": { "md5": "0dbf78b033d7fae3b9888396f40c3188", "sha256": "f23496f16ff9d163a283939758b82999aac233c238107961c41b075b670d8276" }, "downloads": -1, "filename": "pyutil-1.8.3.tar.gz", "has_sig": false, "md5_digest": "0dbf78b033d7fae3b9888396f40c3188", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96189, "upload_time": "2011-02-13T14:08:35", "url": "https://files.pythonhosted.org/packages/a7/1e/2aa42eed1591736cce37066ac628208c08d6ab3245a2b92238cad4f4b826/pyutil-1.8.3.tar.gz" } ], "1.8.4": [ { "comment_text": "", "digests": { "md5": "1eb14efa6184208a204a39e8e03d7354", "sha256": "86719ae8655bf28cb65aeab16ceb7a156b78547144d71e31b851e8a9eea0e3bf" }, "downloads": -1, "filename": "pyutil-1.8.4.tar.gz", "has_sig": false, "md5_digest": "1eb14efa6184208a204a39e8e03d7354", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96186, "upload_time": "2011-02-13T14:10:25", "url": "https://files.pythonhosted.org/packages/ed/7d/c45b5849b06654b17cf29f99f63897ae40b3095e6b5eedf6e6cb457863e7/pyutil-1.8.4.tar.gz" } ], "1.8.6": [ { "comment_text": "", "digests": { "md5": "4a0d82925af775407525ff7465fa0c55", "sha256": "f5665604069eeebabf1288d6f91cdb110d5ab8165c2ae74991e06922f79c4b32" }, "downloads": -1, "filename": "pyutil-1.8.6.tar.gz", "has_sig": false, "md5_digest": "4a0d82925af775407525ff7465fa0c55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80283, "upload_time": "2012-03-20T21:45:57", "url": "https://files.pythonhosted.org/packages/8f/77/d3e912cdf14a852f61c94d060977985bcba6716720e0a128a3f1bcbf89e9/pyutil-1.8.6.tar.gz" } ], "1.8.7": [ { "comment_text": "", "digests": { "md5": "8a39301c8ef56b98f81ca3ed3266212c", "sha256": "ec543095367dac44bb9e3078bf332b916fbf11be1f66f8562c5e043c300fc47e" }, "downloads": -1, "filename": "pyutil-1.8.7.tar.gz", "has_sig": false, "md5_digest": "8a39301c8ef56b98f81ca3ed3266212c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111407, "upload_time": "2012-03-21T07:01:00", "url": "https://files.pythonhosted.org/packages/7f/8b/e619ebc9016416cd99786f59d1327e2694a003f4b73964b6a6decc1b9f7a/pyutil-1.8.7.tar.gz" } ], "1.8.8": [ { "comment_text": "", "digests": { "md5": "284c87f6ca206e2f5103aca5504f7d99", "sha256": "272c8deefddbd2be99ce5475e482e77c370666a912e4d58fc81de914a2285b0d" }, "downloads": -1, "filename": "pyutil-1.8.8.tar.gz", "has_sig": false, "md5_digest": "284c87f6ca206e2f5103aca5504f7d99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111576, "upload_time": "2012-04-01T05:31:15", "url": "https://files.pythonhosted.org/packages/48/f4/c27bb941a8e36406344e0e64cab0d442d09680a160dd4e45cfea443dfff9/pyutil-1.8.8.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "3f69427214b36e8714ab6899ef25a44d", "sha256": "6cf74d0d6a38894e74a693f10c7e3cb19056a407c657a83ef19f1f739ef96b0b" }, "downloads": -1, "filename": "pyutil-1.9.0.tar.gz", "has_sig": false, "md5_digest": "3f69427214b36e8714ab6899ef25a44d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111638, "upload_time": "2012-04-01T06:20:11", "url": "https://files.pythonhosted.org/packages/f3/38/aac702cd5d6a82aee150d0760bb88c474b278905459410c6b69f624d6aab/pyutil-1.9.0.tar.gz" } ], "1.9.1": [ { "comment_text": "", "digests": { "md5": "90b7249b653136909a629f056e30fe32", "sha256": "b7b807b0036c6c1143ef2593f6840513c09f3b4f074603c5ce7416c389bb07f8" }, "downloads": -1, "filename": "pyutil-1.9.1.tar.gz", "has_sig": false, "md5_digest": "90b7249b653136909a629f056e30fe32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111726, "upload_time": "2012-04-01T15:52:00", "url": "https://files.pythonhosted.org/packages/e7/3a/6451bf6999b87a0eb1b8d2fdd4eb066e94a52d8ada96235c80a0dc94cdd4/pyutil-1.9.1.tar.gz" } ], "1.9.2": [ { "comment_text": "", "digests": { "md5": "638959175e03e98c366d998437d052a1", "sha256": "ceaad8e45b510df1328d57f3fcd1f150cfed36bb827ac13109f491c1f0cb4a1d" }, "downloads": -1, "filename": "pyutil-1.9.2.tar.gz", "has_sig": false, "md5_digest": "638959175e03e98c366d998437d052a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111899, "upload_time": "2012-04-11T05:21:34", "url": "https://files.pythonhosted.org/packages/e3/bb/6c4cbc6eac3ba13af4712d467231b51dea8ec06dfdb97fefb1b0f4e559cc/pyutil-1.9.2.tar.gz" } ], "1.9.3": [ { "comment_text": "", "digests": { "md5": "3902a6ad6772eebc347cfcca41d1b63f", "sha256": "b7b6be306cd0b654546951f740896acdc6d71535924a001e9a23313c62c42fc8" }, "downloads": -1, "filename": "pyutil-1.9.3.tar.gz", "has_sig": false, "md5_digest": "3902a6ad6772eebc347cfcca41d1b63f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118766, "upload_time": "2012-04-29T01:19:19", "url": "https://files.pythonhosted.org/packages/6b/30/c2d53680e851a7990aba79225cf42fa5fabf558261ae3490b0d83ac330c8/pyutil-1.9.3.tar.gz" } ], "1.9.4": [ { "comment_text": "", "digests": { "md5": "af51cf296b574112e115c9dfba51464d", "sha256": "a269a88f83037329ccd0066e3446fa901ab1232eafc7a4692de3294b478067b2" }, "downloads": -1, "filename": "pyutil-1.9.4.tar.gz", "has_sig": false, "md5_digest": "af51cf296b574112e115c9dfba51464d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 132151, "upload_time": "2012-09-16T19:25:39", "url": "https://files.pythonhosted.org/packages/d2/87/818c72c4b4cc204449cf2d950d61275b9dc38f750e5d08110cbc172e6bb1/pyutil-1.9.4.tar.gz" } ], "1.9.5": [], "1.9.6": [ { "comment_text": "", "digests": { "md5": "a34e6825f00ab44c6c109e5625085f36", "sha256": "48b2d0f7f7482e4104aa699fd9f5a177298bafe45e75615ef87b2bca1ec8d763" }, "downloads": -1, "filename": "pyutil-1.9.6.tar.gz", "has_sig": false, "md5_digest": "a34e6825f00ab44c6c109e5625085f36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 206359, "upload_time": "2013-05-30T13:01:48", "url": "https://files.pythonhosted.org/packages/7d/57/ebe6b7629d837338202b0be65d15f7ef00898a8dfc140f91a63f72e42029/pyutil-1.9.6.tar.gz" } ], "1.9.7": [ { "comment_text": "", "digests": { "md5": "5a20ccae479d967d3fa11b905d0e10f6", "sha256": "0aaa2dad8f280bc26311799622d5fdda392a0ecd7ad1a1b80ec79fbf2fcfbd74" }, "downloads": -1, "filename": "pyutil-1.9.7.tar.gz", "has_sig": false, "md5_digest": "5a20ccae479d967d3fa11b905d0e10f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 206717, "upload_time": "2013-05-31T06:01:45", "url": "https://files.pythonhosted.org/packages/70/8c/078191a405a1248baa515ad4e6e1f940dae0c7df340cedce61ef228fc98c/pyutil-1.9.7.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "025a06985691133479500139a3729909", "sha256": "0ca95cb85843c5b09f7b65b5bd6c42d1940e19667b076620585ac45abe4f4fbb" }, "downloads": -1, "filename": "pyutil-2.0.0.tar.gz", "has_sig": false, "md5_digest": "025a06985691133479500139a3729909", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125079, "upload_time": "2014-03-17T22:02:20", "url": "https://files.pythonhosted.org/packages/da/a2/40fe7c3765cd945ba211762d2f726a2f4a15947d9bd0138ab15dd44925b0/pyutil-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "6db766bcb21289df3ac3a8550e21da80", "sha256": "d0282e105576268510701c26d1ee239b26bea207d773dd1e2080509d910cd4ef" }, "downloads": -1, "filename": "pyutil-2.0.1.tar.gz", "has_sig": false, "md5_digest": "6db766bcb21289df3ac3a8550e21da80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 132059, "upload_time": "2018-01-10T11:14:21", "url": "https://files.pythonhosted.org/packages/86/96/24a3ecc22553bc3ae6442a1ba263875542e89fa552f182a43222b0d54b22/pyutil-2.0.1.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "789799394a59a70ec88a0e62c760d317", "sha256": "30e9716eff6696536e4311dd0b369629c7b12400745eff48e940cc8aac422a25" }, "downloads": -1, "filename": "pyutil-2.1.0.tar.gz", "has_sig": false, "md5_digest": "789799394a59a70ec88a0e62c760d317", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 190533, "upload_time": "2018-01-10T12:19:37", "url": "https://files.pythonhosted.org/packages/c6/f2/42e3c9f20c12030e94b6e8d8a3633760a898cfde7bdb4bf6218404da16ff/pyutil-2.1.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "4bea733686270a5a8b51ca7aa4350612", "sha256": "a08db86b8e3ab146754683bf1206a010a71e4d78181c1ac96791258a08ad93a1" }, "downloads": -1, "filename": "pyutil-3.0.0.tar.gz", "has_sig": false, "md5_digest": "4bea733686270a5a8b51ca7aa4350612", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 236949, "upload_time": "2018-01-12T17:25:47", "url": "https://files.pythonhosted.org/packages/e4/e6/5c9a5cd2127473e47f9a27cd0aba97d7897d022e6f641317b69a28b2f7e0/pyutil-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "a9ad3a8c87cadc56f2880a10e0e8219d", "sha256": "8e254aa0a3b59e90515f7bca7ebc467b20a8d3fd2e26b63d196655c075da8d38" }, "downloads": -1, "filename": "pyutil-3.1.0.tar.gz", "has_sig": false, "md5_digest": "a9ad3a8c87cadc56f2880a10e0e8219d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 294541, "upload_time": "2018-01-14T21:32:16", "url": "https://files.pythonhosted.org/packages/54/16/11f89043cf7732fcc9493df558d2286c729a71efdd620dd744fdf659b4da/pyutil-3.1.0.tar.gz" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "91f7dc4472674b551cbc644729a0037b", "sha256": "910b83e70d83a6d44d5c44613c524725faeb55d297aeb3bd7623a16743689d1c" }, "downloads": -1, "filename": "pyutil-3.2.0.tar.gz", "has_sig": false, "md5_digest": "91f7dc4472674b551cbc644729a0037b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 292901, "upload_time": "2019-04-07T16:30:27", "url": "https://files.pythonhosted.org/packages/a3/6a/dac88efc61636269c97e0fef12fe797c1ff27e9c24539727db717fffcb34/pyutil-3.2.0.tar.gz" } ], "3.3.0": [ { "comment_text": "", "digests": { "md5": "b4b9d3ae51ff24725771fa77e2f4bf56", "sha256": "8c4d4bf668c559186389bb9bce99e4b1b871c09ba252a756ccaacd2b8f401848" }, "downloads": -1, "filename": "pyutil-3.3.0.tar.gz", "has_sig": false, "md5_digest": "b4b9d3ae51ff24725771fa77e2f4bf56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 292857, "upload_time": "2019-06-26T16:51:35", "url": "https://files.pythonhosted.org/packages/79/e5/26dc921e91c00d1eaf09f35f10f4d788cccec3b0dc73a69920f42950f189/pyutil-3.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b4b9d3ae51ff24725771fa77e2f4bf56", "sha256": "8c4d4bf668c559186389bb9bce99e4b1b871c09ba252a756ccaacd2b8f401848" }, "downloads": -1, "filename": "pyutil-3.3.0.tar.gz", "has_sig": false, "md5_digest": "b4b9d3ae51ff24725771fa77e2f4bf56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 292857, "upload_time": "2019-06-26T16:51:35", "url": "https://files.pythonhosted.org/packages/79/e5/26dc921e91c00d1eaf09f35f10f4d788cccec3b0dc73a69920f42950f189/pyutil-3.3.0.tar.gz" } ] }