{ "info": { "author": "Rotem Yaari", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python :: 2.7" ], "description": "Introduction\n------------\n*infi.unittest* is a set of extensions for the standard *unittest* module provided by the Python standard library. It provides several improvements over the original implementation, described below.\n\n.. note:: infi.unittest does not support Python 2.6 and below, due to the major overhaul in the *unittest* module that took place in 2.7. Sorry.\n\nInstallation\n------------\nThe installation is done in the ordinary way:\n::\n\n python setup.py install\n\nFeatures\n--------\n\nTest Parameters\n===============\n\nOne of the most annoying things about *unittest* is that you cannot easily specify test parameters. If you have a test to test an API with parameters, and you want several cases, each testing a specific value which should work and has a meaning, this can be annoying, and breaks the DRY principle:\n::\n\n >>> import unittest\n >>> class MyTest(unittest.TestCase):\n ... def test__api_call_with_yellow(self):\n ... self._test_api_call('yellow')\n ... def test__api_call_with_orange(self):\n ... self._test_api_call('orange')\n ... def _test_api_call(self, color):\n ... some_api(color) # test here... yuck!\n\nWhen using infi.unittest, you get a slightly better way of doing this:\n::\n\n >>> from infi.unittest import TestCase\n >>> from infi.unittest import parameters\n >>> class MyTest(TestCase):\n ... @parameters.iterate('color', ['orange', 'yellow'])\n ... def test__api_call(self, color):\n ... some_api(color) # yay!\n\nThe above will construct one test case per possible value, thus separating the cases for each value. It is also possible to use multiple values, multiplying the psosibilities:\n::\n\n >>> class MyTest(TestCase):\n ... @parameters.iterate('a', [1, 2, 3])\n ... @parameters.iterate('b', [4, 5, 6])\n ... def test__some_api(self, a, b):\n ... pass\n\nIteration can be done over functions (or any callable object) that returns the sequence to iterate over::\n\n >>> def get_options():\n ... return [1, 2, 3]\n >>> class MyTest(TestCase):\n ... @parameters.iterate('a', get_options)\n ... def test__something(self, a):\n ... pass\n \nFor boolean flags, there exists a simpler way to iterate between options::\n\n >>> class MyTest(TestCase):\n ... @parameters.toggle('a', 'b', 'c')\n ... def test__something(self, a, b, c):\n ... pass # will be called with all combinations of True/False for a, b, c\n \nFixture Parameters\n==================\nSometimes you want to write a set of tests, where the *fixture* for running them needs to iterate over options. For instance, if we want to test a utility method over both old-style and new-style classes:\n::\n\n >>> class OldStyle:\n ... pass\n >>> class NewStyle(object):\n ... pass\n >>> class TestOldStyle(TestCase):\n ... def setUp(self):\n ... super(TestOldStyle, self).setUp()\n ... self.tested_obj = OldStyle()\n ... def test__1(self):\n ... # do something with self.tested_obj\n ... pass\n ... def test__2(self):\n ... # do something with self.tested_obj\n ... pass\n >>> class TestNewStyle(TestCase):\n ... def setUp(self):\n ... super(TestNewStyle, self).setUp()\n ... self.tested_obj = NewStyle()\n ... def test__1(self):\n ... # do something with self.tested_obj\n ... pass\n ... def test__2(self):\n ... # do something with self.tested_obj\n ... pass\n\nA somewher clever, although not very pretty, way of doing this is inheritance:\n\n >>> class _BaseTest(TestCase):\n ... def test__1(self):\n ... # do something with self.tested_obj\n ... pass\n ... def test__2(self):\n ... # do something with self.tested_obj\n ... pass\n >>> class OldStyleTest(_BaseTest):\n ... def setUp(self):\n ... super(OldStyleTest, self).setUp()\n ... self.tested_obj = OldStyle()\n >>> class NewStyleTest(_BaseTest):\n ... def setUp(self):\n ... super(NewStyleTest, self).setUp()\n ... self.tested_obj = NewStyle()\n\nThis is yucky, and some discovery methods will attempt to run _BaseTest as well (although prefixed with an underscore). *infi.unittest* solves this elegantly:\n\n >>> class Test(TestCase):\n ... @parameters.iterate('obj', [NewStyle(), OldStyle()])\n ... def setUp(self, obj):\n ... super(Test, self).setUp()\n ... self.tested_obj = obj\n ... def test__1(self):\n ... # do something with self.tested_obj\n ... pass\n ... def test__2(self):\n ... # do something with self.tested_obj\n ... pass\n\ninfi.unittest can even multiply across inheritence. This means that the following code will eventually test the cartesian product between [1, 2, 3] and [4, 5, 6]\n::\n\n >>> class BaseTest(TestCase):\n ... @parameters.iterate('param', [1, 2, 3])\n ... def setUp(self, param):\n ... super(BaseTest, self).setUp()\n ... self.base_param = param\n >>> class DerivedTest(BaseTest):\n ... @parameters.iterate('param', [4, 5, 6])\n ... def setUp(self, param):\n ... super(DerivedTest, self).param()\n ... self.derived_param = param\n ... def test(self):\n ... self.do_something_with(self.base_param, self.derived_param)\n\nNote that even the super() call to setUp doesn't need to bother with the parameter(s) - it gets automatically bound.\n\nAbstract Base Tests\n===================\n\nSometimes you would like to include a 'base test' to facilitate code reuse. For example in cases like:\n\n >>> class FileTestBase(TestCase):\n ... def test__has_write_method(self):\n ... self.assertTrue(hasattr(self.file, \"write\"))\n ... def test__has_read_method(self):\n ... self.assertTrue(hasattr(self.file, \"read\"))\n >>> class RegularFileTest(FileTestBase):\n ... def setUp(self):\n ... super(RegularFileTest, self).setUp()\n ... self.file = open(\"somefile\", \"wb\")\n >>> class SocketFileTest(FileTestBase):\n ... def setUp(self):\n ... super(SocketFileTest, self).setUp()\n ... self.file = connect_to_some_server().makefile()\n\nIn this case a regular test discovery mechanism would catch flames, because it would attempt to run FileTestBase itself, which has an incomplete setUp scheme.\n\n*infi.unittest* provides an easy shortcut for this. Just mark the base class like so:\n\n >>> from infi.unittest import abstract_base_test\n >>> @abstract_base_test\n ... class FileTestBase(TestCase):\n ... pass\n\nAnd the base test itself will not be run directly.\n\n.. note:: *nose* as an issue with this technique. There is a workaround in place, but it involves live patching of a nose utility function, so there is a chance it will break in updates, or not work at all in some cases. Until this issue is resolved (https://github.com/nose-devs/nose/issues/502), nose support should be considered experimental.\n\nNose Integration\n================\n*infi.unittest* breaks compatibility with the excellent `nose: ` tool, so it provides a nose plugin to handle with its tests. The plugin is automatically enabled for you, so you don't have to pass the --with-infi flag to nosetests.\n\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "infi.unittest", "package_url": "https://pypi.org/project/infi.unittest/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/infi.unittest/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/infi.unittest/1.1.0/", "requires_dist": null, "requires_python": null, "summary": "Unittest extension library", "version": "1.1.0" }, "last_serial": 1011944, "releases": { "0.0.1": [ { "comment_text": "built for Darwin-10.7.4", "digests": { "md5": "0b812eda325f8a13a8fdf6d8a9e8b4ff", "sha256": "5cc5f0cdbaec691b5b24eb70e9df1a3d94ef5a6ebd79ce2fcfdae2248fad01d9" }, "downloads": -1, "filename": "infi.unittest-0.0.1.macosx-10.4-x86_64.tar.gz", "has_sig": false, "md5_digest": "0b812eda325f8a13a8fdf6d8a9e8b4ff", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 4699, "upload_time": "2011-05-11T16:00:53", "url": "https://files.pythonhosted.org/packages/fe/61/f60cbd3181478d4870e3ca25c8aaef080506aba73fd8fbc541132c9c034a/infi.unittest-0.0.1.macosx-10.4-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "1bc6e5bf536f354cb510d3b3501c8986", "sha256": "8a6e2b1da9d60797186c4d3e1c5e53d62f10abc6e68fa3803c875483051f4e9c" }, "downloads": -1, "filename": "infi.unittest-0.0.1.tar.gz", "has_sig": false, "md5_digest": "1bc6e5bf536f354cb510d3b3501c8986", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2488, "upload_time": "2011-05-11T16:01:03", "url": "https://files.pythonhosted.org/packages/a0/b7/e4a079927cd7716ed8b711f8bdedc1d5e497c79d866bcdb2a8020073845f/infi.unittest-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "ffa74fc50975db52c9593aad0615e29c", "sha256": "229effff76323812ff52b5e1ba8de982021afe78ceb87d2689fe6e7be6b176c4" }, "downloads": -1, "filename": "infi.unittest-0.0.10.tar.gz", "has_sig": false, "md5_digest": "ffa74fc50975db52c9593aad0615e29c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5109, "upload_time": "2011-08-25T14:23:05", "url": "https://files.pythonhosted.org/packages/46/ee/e37faeb278142263165e7ee75bba769e2aff611a7c808d111a77ca8c343b/infi.unittest-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "e20963bfdb02fe0c577108444193116c", "sha256": "5d28bdbca34c8fcdef85d52c21f6c0cab7847e3bd6505d66fe76f51f1d57ebcf" }, "downloads": -1, "filename": "infi.unittest-0.0.11.tar.gz", "has_sig": false, "md5_digest": "e20963bfdb02fe0c577108444193116c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5539, "upload_time": "2011-09-20T10:37:14", "url": "https://files.pythonhosted.org/packages/f6/0d/f0f47ea24adfea956c7fe6ed84f77cdb9bf1181b48c3dc9f6f935f929944/infi.unittest-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "8aa1f35923b5e021e93c26d88e5969c9", "sha256": "9c5071077bc705d0d82c7f05d1c7427627e3e104989c16a4d23c0354b29a560d" }, "downloads": -1, "filename": "infi.unittest-0.0.12.tar.gz", "has_sig": false, "md5_digest": "8aa1f35923b5e021e93c26d88e5969c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5549, "upload_time": "2011-09-27T14:37:24", "url": "https://files.pythonhosted.org/packages/b1/b6/aaadb8d80b0ae6e13d5ad7f46d07abe1ee8de8f0f69a00b0ea4f8c62bef9/infi.unittest-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "7170fb95c1dda7aed1fd6015af3d6af1", "sha256": "5836da6195a7806249c50de681cf092df66e60929c8f67ccb534310b3b31cb21" }, "downloads": -1, "filename": "infi.unittest-0.0.13.tar.gz", "has_sig": false, "md5_digest": "7170fb95c1dda7aed1fd6015af3d6af1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5812, "upload_time": "2012-01-29T10:54:38", "url": "https://files.pythonhosted.org/packages/11/17/4a252738394e07e31e2df4b1ac31998de1db888f5cc84a572109e5d5ba3d/infi.unittest-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "a87d215d0dcf86009e782960f08b3a50", "sha256": "a6550252290cc3d00a8c6120faca608d922aa7ca383a03b3f239d17d0aaa48da" }, "downloads": -1, "filename": "infi.unittest-0.0.14.tar.gz", "has_sig": false, "md5_digest": "a87d215d0dcf86009e782960f08b3a50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6441, "upload_time": "2012-04-08T13:11:08", "url": "https://files.pythonhosted.org/packages/64/fc/f07db14d558fad8cdf90437af2482c7e55e6344063effe826424132f185b/infi.unittest-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "86f31c190ed394e61e2ce98ec9181a06", "sha256": "02b6209e5f09e8a5421adc7ed93eef7e4b3d85aa8aa3ec4f866364ae2991fe8d" }, "downloads": -1, "filename": "infi.unittest-0.0.15.tar.gz", "has_sig": false, "md5_digest": "86f31c190ed394e61e2ce98ec9181a06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6486, "upload_time": "2012-07-11T17:12:14", "url": "https://files.pythonhosted.org/packages/49/04/8101f6abc0cf114dff3ae65addea497396175a26d590a00f21b6039f2e91/infi.unittest-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "f3201f45419d1a2a67a09950ecc3444d", "sha256": "a7b0bbb4c69f599e59f4cd81defe121c1f5d712569034658625da2ba84bc8463" }, "downloads": -1, "filename": "infi.unittest-0.0.16.tar.gz", "has_sig": false, "md5_digest": "f3201f45419d1a2a67a09950ecc3444d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6503, "upload_time": "2012-10-24T13:56:01", "url": "https://files.pythonhosted.org/packages/4e/a8/18b55e1d868553fb3e2b0f638ec67725cc076759b47eb271d3dc382f341a/infi.unittest-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "26e38ee622695e2590fdac20e8baf73a", "sha256": "63efc5bcff5a4e27226a6ec2744ee9b2b8ad3d42be224a8d86d2e19d178b6223" }, "downloads": -1, "filename": "infi.unittest-0.0.17.tar.gz", "has_sig": false, "md5_digest": "26e38ee622695e2590fdac20e8baf73a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8742, "upload_time": "2013-05-09T07:56:59", "url": "https://files.pythonhosted.org/packages/73/c6/cd602617abb4ef3783e3bf74b80c036b242510288b0b35cb9d9c4b047893/infi.unittest-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "5f6b3b80cd0d86a87f80294a12b03b07", "sha256": "71a2bd4ab5cf59867a85ddf2a431f9a6cbf33e8cc5e9cbcc427ea8e7f2325d36" }, "downloads": -1, "filename": "infi.unittest-0.0.18.tar.gz", "has_sig": false, "md5_digest": "5f6b3b80cd0d86a87f80294a12b03b07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8703, "upload_time": "2013-06-05T11:39:33", "url": "https://files.pythonhosted.org/packages/07/63/9f1b027af32692a59ad94d3c6cd53259beb8b71d6e403e10e2bb19720f73/infi.unittest-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "992b3879c39b249631cd471294059614", "sha256": "209b9ffe948ded1099802cb9217e5f4f3eb0a9c3666a82f2a4729186a3ad7469" }, "downloads": -1, "filename": "infi.unittest-0.0.19.tar.gz", "has_sig": false, "md5_digest": "992b3879c39b249631cd471294059614", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8744, "upload_time": "2013-12-05T14:52:59", "url": "https://files.pythonhosted.org/packages/0f/c8/cf5c32e0717d83b8025213f25bd0cea8475eec8df205dca02806fe3fba43/infi.unittest-0.0.19.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "80fe90dd0c051b339016d81363fdf269", "sha256": "aef4f83ded9d96fc80f8f8bc76fcaa955a60025c31876f04d5926910f3f966a5" }, "downloads": -1, "filename": "infi.unittest-0.0.2.tar.gz", "has_sig": false, "md5_digest": "80fe90dd0c051b339016d81363fdf269", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2521, "upload_time": "2011-05-11T16:11:27", "url": "https://files.pythonhosted.org/packages/0b/ed/0408385b66fdf7542f929f93cc8a103d884541b68f2ef1eb7fe5e0e263c5/infi.unittest-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "b9acfad065418de511d61e2cb11fa911", "sha256": "c1e27bded26ee0135f08eaee000fa06c9b377c301125c4340713f18e1205821f" }, "downloads": -1, "filename": "infi.unittest-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b9acfad065418de511d61e2cb11fa911", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2805, "upload_time": "2011-05-23T14:21:17", "url": "https://files.pythonhosted.org/packages/51/e0/6c8cd3cc6c60d2db4ab69d767ca82a72100c967ca1b6ce19241dccf23465/infi.unittest-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "8c456355815aeda6874a11a2a6bce918", "sha256": "179a0ed02ea34dffec3a194070666fee1a2cd76aeca754ac7f5463d3be7712fb" }, "downloads": -1, "filename": "infi.unittest-0.0.5-py2.6.egg", "has_sig": false, "md5_digest": "8c456355815aeda6874a11a2a6bce918", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 16450, "upload_time": "2011-07-17T15:33:23", "url": "https://files.pythonhosted.org/packages/7b/85/3beee12ffedb42766639e81d4f8aa3d6a61216e824d6cd92eff42d017005/infi.unittest-0.0.5-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "1aa1e5a92182fd2e419d4d23c28ff9b4", "sha256": "828030f82cf477d06e9e068875ecfeafd64778a9ceeb7b746c80a3ef1d5d3eb9" }, "downloads": -1, "filename": "infi.unittest-0.0.5-py2.7.egg", "has_sig": false, "md5_digest": "1aa1e5a92182fd2e419d4d23c28ff9b4", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 16315, "upload_time": "2011-07-17T15:32:53", "url": "https://files.pythonhosted.org/packages/e8/24/43d0dd0bdfef5463271aed5351b1abc3b5e0c91697573e1453bd3dd2f227/infi.unittest-0.0.5-py2.7.egg" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "c9a09d8e369d8d809ae3006e000b9aba", "sha256": "85a0fce5c44a5e92c782e19921536bc6f7a38b9450ee5b60753d274361edc439" }, "downloads": -1, "filename": "infi.unittest-0.0.6-py2.6.egg", "has_sig": false, "md5_digest": "c9a09d8e369d8d809ae3006e000b9aba", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 16647, "upload_time": "2011-08-14T10:01:43", "url": "https://files.pythonhosted.org/packages/4d/d4/88042b6efadcb8ba165d5900d4e3bc8b2988bc708d695f5dc07d091771cc/infi.unittest-0.0.6-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "854bb7a71ca950ff004c4883335c7d13", "sha256": "b2839b97d8e1fe4ba3dc38b8592206b3578a91725026df21825fdbc82e12f554" }, "downloads": -1, "filename": "infi.unittest-0.0.6-py2.7.egg", "has_sig": false, "md5_digest": "854bb7a71ca950ff004c4883335c7d13", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 16504, "upload_time": "2011-08-14T10:01:40", "url": "https://files.pythonhosted.org/packages/ba/1b/45a9852df5d73f5eeccdb271bc09c9aac975279a90c9bd80c7782e948fe4/infi.unittest-0.0.6-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "0fbf231353ad82edb68df9061edff1b7", "sha256": "ea73a4f6a66bff9d2652ab461344b947b6993a175e10cbe06dbd9473a0102868" }, "downloads": -1, "filename": "infi.unittest-0.0.6.tar.gz", "has_sig": false, "md5_digest": "0fbf231353ad82edb68df9061edff1b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4657, "upload_time": "2011-08-14T10:01:44", "url": "https://files.pythonhosted.org/packages/6c/35/8976416d196b8e6e5a567f3b3a42d2432acefbe4df82d6f000a3fa723848/infi.unittest-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c69c73d5145b9a7aabdf87208de08b79", "sha256": "5af9c77d7712431ebe5186d4ecb2f6d52b957618820ad1497a86cbf19bccadb1" }, "downloads": -1, "filename": "infi.unittest-0.0.7-py2.6.egg", "has_sig": false, "md5_digest": "c69c73d5145b9a7aabdf87208de08b79", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 17217, "upload_time": "2011-08-14T16:09:27", "url": "https://files.pythonhosted.org/packages/a2/87/f77890fc6de3af0b327b20ecc7826e60a71c527caa36933fef07a4d6e607/infi.unittest-0.0.7-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "93043e91cc4e938f4cdb333ce031d71b", "sha256": "a5206424191211b3622302147001536577e271cd86aca83382d1e744b202ca86" }, "downloads": -1, "filename": "infi.unittest-0.0.7-py2.7.egg", "has_sig": false, "md5_digest": "93043e91cc4e938f4cdb333ce031d71b", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 17074, "upload_time": "2011-08-14T16:09:22", "url": "https://files.pythonhosted.org/packages/62/b8/5c3e0a5e48e840807f45f3b3f30650384426308ab8f7875729150cd11592/infi.unittest-0.0.7-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "966ef7a4b40fb4f9d0d24c275338ae26", "sha256": "ea678fb7a2463d3a80c96cbb96f6710a5141e5dc77539347a5ac7f455821fc1b" }, "downloads": -1, "filename": "infi.unittest-0.0.7.tar.gz", "has_sig": false, "md5_digest": "966ef7a4b40fb4f9d0d24c275338ae26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4796, "upload_time": "2011-08-14T16:09:29", "url": "https://files.pythonhosted.org/packages/04/ca/aa94ea8d5b9643ccbcb1277ef61b4ef88cee07e26db6dbdfc34e7b342098/infi.unittest-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "85a296a7df0da06dc0b031c8c69fcba0", "sha256": "cdda728b0b52768b2a8e60b5ba326e36bdde878c2c7eb6d51105619e6ad600a4" }, "downloads": -1, "filename": "infi.unittest-0.0.8-py2.6.egg", "has_sig": false, "md5_digest": "85a296a7df0da06dc0b031c8c69fcba0", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 17337, "upload_time": "2011-08-17T16:40:12", "url": "https://files.pythonhosted.org/packages/50/ac/61a528afc54049881ecc61cf46cdd4985f512d3ea9375dc77682a9d51ea6/infi.unittest-0.0.8-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "b1f355c93ca7117e9d2f2fe85e1cb357", "sha256": "39b331a2beaf0560f2d996562e6556049f1f9dfdd11fbdd65fd1a3969b5e94b9" }, "downloads": -1, "filename": "infi.unittest-0.0.8-py2.7.egg", "has_sig": false, "md5_digest": "b1f355c93ca7117e9d2f2fe85e1cb357", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 17195, "upload_time": "2011-08-17T16:40:09", "url": "https://files.pythonhosted.org/packages/c1/9f/007695c19eb344ddc28af76461c00c5ca0604bb4f4bde3af3056b8b6ce59/infi.unittest-0.0.8-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "8219edf5f091451da95bc36b2fe9c10c", "sha256": "b69493c9f8e82c7e91fc5bb576dde288d13e0735c5e5d591cf94a970e8fa5217" }, "downloads": -1, "filename": "infi.unittest-0.0.8.tar.gz", "has_sig": false, "md5_digest": "8219edf5f091451da95bc36b2fe9c10c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4825, "upload_time": "2011-08-17T16:40:14", "url": "https://files.pythonhosted.org/packages/47/35/98448490708fe59ec3bae7ba8bda5626a04ca94911265f2a37b661075001/infi.unittest-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "b6b59e723f0d902e89d1fbcefa5c53ce", "sha256": "068b1ebe56667af6fe38aa22bb6bf398d412ae28287e6ab49125829f81f5876b" }, "downloads": -1, "filename": "infi.unittest-0.0.9.tar.gz", "has_sig": false, "md5_digest": "b6b59e723f0d902e89d1fbcefa5c53ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4983, "upload_time": "2011-08-25T12:45:47", "url": "https://files.pythonhosted.org/packages/0f/74/bbe62dd646af5a25dac96e86d21079e94ad785237b2f632fa70965b594fe/infi.unittest-0.0.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "0e103312aabd50ce2840676a26f235b1", "sha256": "98dba359061278a865b6d40a57ea907c29b2c2fac9f2d59785a0e7689453a094" }, "downloads": -1, "filename": "infi.unittest-1.0.0.tar.gz", "has_sig": false, "md5_digest": "0e103312aabd50ce2840676a26f235b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8728, "upload_time": "2014-01-08T12:42:23", "url": "https://files.pythonhosted.org/packages/9c/e5/42f02483edef98e7915b548559b72329d03f47006d21bb62d3bb0767d72d/infi.unittest-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "e60ecd3520e6879a9b5ad623cedad2d9", "sha256": "00b79577a53b3ec077de9439c41b3a688f8166f1d5262c6541e86f0a0cc98c82" }, "downloads": -1, "filename": "infi.unittest-1.1.0.tar.gz", "has_sig": false, "md5_digest": "e60ecd3520e6879a9b5ad623cedad2d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8872, "upload_time": "2014-02-25T18:59:17", "url": "https://files.pythonhosted.org/packages/1e/c6/7a2d44b5449d54ebdfb3a8ca401e81c1932a954c63dab6e88e3da8c8f347/infi.unittest-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e60ecd3520e6879a9b5ad623cedad2d9", "sha256": "00b79577a53b3ec077de9439c41b3a688f8166f1d5262c6541e86f0a0cc98c82" }, "downloads": -1, "filename": "infi.unittest-1.1.0.tar.gz", "has_sig": false, "md5_digest": "e60ecd3520e6879a9b5ad623cedad2d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8872, "upload_time": "2014-02-25T18:59:17", "url": "https://files.pythonhosted.org/packages/1e/c6/7a2d44b5449d54ebdfb3a8ca401e81c1932a954c63dab6e88e3da8c8f347/infi.unittest-1.1.0.tar.gz" } ] }