{ "info": { "author": "Olemis Lang", "author_email": "olemis@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: Python Software Foundation License", "Natural Language :: English", "Natural Language :: Spanish", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Documentation", "Topic :: Education :: Testing", "Topic :: Software Development :: Documentation", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing" ], "description": "An object-oriented API to test doctests using unittest runners.\n\nModule providing classes which extend doctest module so\nas to achieve better integration with unittest.\n\nIt is different from the Pyhton 2.4 doctest unittest API because:\n\n * A new unitest.TestLoader descendant now allows to load instances\n of TestCases for doctests using unittest-style, supports building\n complex test suites in a more natural way, and eases the use of\n specialized instances of TestCase built out of doctest examples.\n \n * Other loaders allow users to extract TestCase instances out of \n TestCase descendants and doctests (and any other format) in a \n single step.\n \n * In this case unittest.TestResult instances report whether\n individual examples have been successfully executed, or otherwise\n have failed or raised an unexpected exception. Formerly TestResult\n objects contained the whole report outputted by doctest module.\n \n * Test analysis require no further parsing to retrieve detailed\n information about failures.\n \n * A whole new unittest API for doctest adds object orientation and\n eliminates functions with big signatures.\n \n * It is not necessary to use DocTestRunner output streams in order\n to collect test results.\n \n * A new hierarchy of doctest TestCases is now \n possible so for example, setUp and tearDown may\n be redefined across a hierarchy of TestCases \n instead of providing this methods as parameters to\n a function (breaking OOP philosophy and logic); or\n maybe even failures and errors can be represented in a\n custom way.\n \n * Allows to perform regression testing over tests written\n using doctest.\n \n * Fixes a minor bug related with specifying different verbosity\n levels from the command line to unittest.TestProgram (alias main).\n \n * Loads by default test cases for doctests plus those\n formerly loaded by unittest.TestLoader\n\nIt is similar to the Pyhton 2.4 doctest unittest API because:\n\n * Provides integration with TestProgram and unittest test runners.\n \n * Allows to parameterize doctest behavior via doctest options\n\n\nA fuller explanation can be found in the following article:\n\n \"Doctest and unittest... now they'll live happily together\", O. Lang\n (2008) The Python Papers, Volume 3, Issue 1, pp. 31:51\n\n\nNote: The contents of this module were first implemented by the module\noop.utils.testing contained in `PyOOP package`_.\n\n.. _PyOOP package: http://pypi.python.org/pypi/PyOOP\n\n\n\n\nWhat's new in version 0.2.3:\n----------------------------\n\n- Implemented ``Suite Fixture Setup`` test pattern (i.e. set up a fixture \n once before all its interactive examples are run and clean up after \n they all have been run.\n\n- Module is hidden in tracebacks written to instances of `TestResult` \n when a failure or an error is detected.\n\n- Support for multiple pattern matching styles has been added in \n **PackageTestLoader** trough ``style`` parameter. By default standard \n regular expressions (i.e. ``style=REGEX``) are used.\n \n- Unix filename pattern matching (``fnmatch`` module) is available from \n now on while using **PackageTestLoader**. The only thing needed is \n to specify ``style=UNIX``.\n\n- Multiple functions in previous versions contained arguments having \n mutable objects as default values. A \n `message sent to TiP list about default args`_ explains why this is \n really harmful. This has been fixed. Thanks to \n Scott David Daniels `for reporting the issue with default args`_ \n and Jesse Noller for `the pointers about default args`_ .\n\n.. _message sent to TiP list about default args: http://lists.idyll.org/pipermail/testing-in-python/2009-April/001617.html\n\n.. _for reporting the issue with default args: http://lists.idyll.org/pipermail/testing-in-python/2009-April/001606.html \n\n.. _the pointers about default args: http://lists.idyll.org/pipermail/testing-in-python/2009-April/001620.html\n\n\nWhat's new in version 0.2.2:\n----------------------------\n\n- Bug fixed... The class **PackageTestLoader** loaded the tests\n defined in a packages' children but not those specified in the\n top-level module. Now the tests specified in the module supplied in\n to loadTestsFromModule method are also included in the resulting\n test suite.\n\n\nWhat's new in version 0.2.1:\n----------------------------\n\n- **PackageTestLoader** class added to dutest module. It loads\n all the tests found throughout a package hierarchy using another\n loader. The later is used for retrieving the tests contained inside\n every module matching a specified pattern.\n\n- **DocTestLoader** class in *oop.utils.dutest* does not raise \n **ValueError** exception if no doctests are found in a module. This\n is doctest behavior. It was assumed up to this point, but now it has\n proven to be a headache when these loaders are used together with\n instances of **PackageTestLoader** in order to retrieve all the\n tests defined across a package hierarchy.\n\n\nWhat's new in version 0.1.2:\n----------------------------\n\n- Bug fixed... **DocTestCase** instances could not be instantiated because\n ``None`` was supplied in to the initializer as the test method\n name. This bug remained hidden somehow while executing the test\n using *oop.test.check_oopdbc()*, and even when importing\n oop.utils.dutest (which is actually the same implementation).\n\n\nWhat's new in version 0.1.1:\n----------------------------\n\n- The class **oop.utils.testing.VerboseTestProgram** has been moved\n onto dutest module. Release 0.1.0 did not include it. Thanks to\n Michal Kwiatkowski for notifying me so [1]_.\n\n- Default test loader and runner have been added to this module as \n well. The default loader is an instance of **MultiTestLoader** that\n combines the suites loaded by **unittest.TestLoader** and\n **dutest.DocTestLoader**.\n\n- **dutest.main** is an alias for **dutest.VerboseTestProgram**. This\n class fixes a minor bug (... IMO) I found while specifying different\n verbosity levels from the command line to unittest.TestProgram. It\n also employs by default **dutest.defaultTestLoader** instead of\n **unittest.defaultTestLoader**.\n\n.. [1] [TIP] Fwd: An OO API for doctest / unittest integration...\n (http://lists.idyll.org/pipermail/testing-in-python/2008-August/000918.html)\n\n\nWhat's new in version 0.1.0:\n----------------------------\n\ndoctest / unittest extensions:\n\n- A whole new **unittest** API to integrate **doctest** with unittest\n runners.\n\n- It allows to report the individual results of each and every\n interactive example executed during the test run. A separate entry\n is created in the corresponding **TestResult** instance containing\n the expected value and the actual result.\n\n- Since the match made for individual examples is reported one by one\n by instances of **TestResult**, it is quite easier to automate \n post-testing activities (e.g. automated test analysis). Formerly\n access to this information required extra work (i.e. the full report\n provided by doctest had to be parsed).\n\n- You do not need to use **DocTestRunner** output streams\n to collect test results.\n\n- A new hierarchy of **TestCase** descendants (extensions of \n **DocTestCase** class) is now possible so for example, *setUp* and \n *tearDown* may be redefined across a hierarchy of **TestCase** s \n instead of providing this methods as parameters to\n a function (breaking OOP philosophy and logic); or\n maybe even to represent failures and errors in a\n custom way.\n\n- A new **TestLoader** descendant now allows to load (using \n unittest-style) **TestCase** s which check the match made for\n doctests. It provides integration with *TestProgram*, supports\n building complex **TestSuite** s in a more natural way, and eases the\n use of specialized instances of **TestCase** s built out of doctest\n examples.\n\n- Allows to perform regression testing over tests written\n using **doctest**.", "description_content_type": null, "docs_url": null, "download_url": "https://sourceforge.net/project/showfiles.php?group_id=220287&package_id=265911", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://flioops.sourceforge.net", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "dutest", "package_url": "https://pypi.org/project/dutest/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/dutest/", "project_urls": { "Download": "https://sourceforge.net/project/showfiles.php?group_id=220287&package_id=265911", "Homepage": "http://flioops.sourceforge.net" }, "release_url": "https://pypi.org/project/dutest/0.2.4/", "requires_dist": null, "requires_python": null, "summary": "An object-oriented API to test doctests using unittest runners.", "version": "0.2.4" }, "last_serial": 791443, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "91383c32f7f71590e2c006b0d13b770c", "sha256": "eb837a608667c10b89c982ff83a63a4b484454baf75f7776875d716a766dcb52" }, "downloads": -1, "filename": "dutest-0.1.0.zip", "has_sig": false, "md5_digest": "91383c32f7f71590e2c006b0d13b770c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6262, "upload_time": "2008-08-14T17:42:36", "url": "https://files.pythonhosted.org/packages/0a/31/75df71fa420f7bd9b269150fa38c5bf0d7e7907c86e71a549ecf81cfc3ac/dutest-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4fa9cac584eedae38cc56a463915bbf7", "sha256": "160aa32ac3200a10a6ddbf8dfa5db7be9f13c98886f7d326992863700309d014" }, "downloads": -1, "filename": "dutest-0.1.1-py2.5.egg", "has_sig": false, "md5_digest": "4fa9cac584eedae38cc56a463915bbf7", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 13331, "upload_time": "2008-09-03T14:00:25", "url": "https://files.pythonhosted.org/packages/4e/d6/a201700b7db270fc0a8312a3b8281f45d3135ec54f5148bf5dec50dfb8ca/dutest-0.1.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "5b780a5c36ad7c4451be58bef9e01e76", "sha256": "14abeae69c53d62b112af558c880423c9116301e3d17fc1bf685cc446ab9d6e5" }, "downloads": -1, "filename": "dutest-0.1.1.win32.exe", "has_sig": false, "md5_digest": "5b780a5c36ad7c4451be58bef9e01e76", "packagetype": "bdist_wininst", "python_version": "2.5", "requires_python": null, "size": 71154, "upload_time": "2008-09-03T13:00:51", "url": "https://files.pythonhosted.org/packages/7f/38/5262c358ba253323a41663676d17d562617f7ce55c84193d98df473c6c1e/dutest-0.1.1.win32.exe" }, { "comment_text": "", "digests": { "md5": "561f813daa2c02ecb96254dbf655426d", "sha256": "750782d94d68517fd92917145a16354cb87940cc20ee18cb31592dadf90f9202" }, "downloads": -1, "filename": "dutest-0.1.1.zip", "has_sig": false, "md5_digest": "561f813daa2c02ecb96254dbf655426d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7093, "upload_time": "2008-09-03T12:59:51", "url": "https://files.pythonhosted.org/packages/cb/db/60861294d5a680979a655f6c9517d1dd01a7e0403c644457d3795615591b/dutest-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "bb3963cd37452beb2c318d21756ca7d1", "sha256": "305bf04557849e84bde8f90db9d8ed85a739cf62209db9b23a0684982a108818" }, "downloads": -1, "filename": "dutest-0.1.2-py2.5.egg", "has_sig": false, "md5_digest": "bb3963cd37452beb2c318d21756ca7d1", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 13562, "upload_time": "2008-09-08T14:43:43", "url": "https://files.pythonhosted.org/packages/50/74/d6a2e1cf4305789fbe4509b90ab2aa30eec2bdba9c07c64afe3195cb06c0/dutest-0.1.2-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "c00763b6825bfb0d7cb2c7d3a227d657", "sha256": "8e95f6176153a7b2a21d04c58b9599a733197a3ce0011498f270149353868831" }, "downloads": -1, "filename": "dutest-0.1.2.win32.exe", "has_sig": false, "md5_digest": "c00763b6825bfb0d7cb2c7d3a227d657", "packagetype": "bdist_wininst", "python_version": "2.5", "requires_python": null, "size": 71398, "upload_time": "2008-09-08T14:42:29", "url": "https://files.pythonhosted.org/packages/df/c8/d2c9792b7d90afa4fe23cc5292053dc895d7aaa230aa32a2978931674362/dutest-0.1.2.win32.exe" }, { "comment_text": "", "digests": { "md5": "c57a889320f506cdfb5b38a6518458f0", "sha256": "5dee0cb3324cd6006a1aafb7376023558750c0727aab0877510baf633c1b80d4" }, "downloads": -1, "filename": "dutest-0.1.2.zip", "has_sig": false, "md5_digest": "c57a889320f506cdfb5b38a6518458f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7923, "upload_time": "2008-09-08T14:43:09", "url": "https://files.pythonhosted.org/packages/b4/d8/dd4dd5964f7cb6bd7308f78e08bcd0f972abf6c817c8b78868a60000e957/dutest-0.1.2.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "edc6bbe736829f94294ab2d7b946ecc1", "sha256": "4151cbf71ed54c222a74a9acb2044fa98139667c66f72b11c6188b1b33d2a887" }, "downloads": -1, "filename": "dutest-0.2.1-py2.5.egg", "has_sig": false, "md5_digest": "edc6bbe736829f94294ab2d7b946ecc1", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 17612, "upload_time": "2008-09-12T14:04:28", "url": "https://files.pythonhosted.org/packages/03/54/1c613a8bde2b83d49b9b3ef8618cb057bb2932db030c9e458804a5756858/dutest-0.2.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "1a2c0ca9ea716b72f542d84b341ac6d7", "sha256": "9fef9d0919b81c7b0cd80620497fd0731e77e9ac3b86e8ee9f33f4f5b35d71f3" }, "downloads": -1, "filename": "dutest-0.2.1.win32.exe", "has_sig": false, "md5_digest": "1a2c0ca9ea716b72f542d84b341ac6d7", "packagetype": "bdist_wininst", "python_version": "2.5", "requires_python": null, "size": 77381, "upload_time": "2008-09-12T14:01:22", "url": "https://files.pythonhosted.org/packages/48/7a/88be5954edebe4717d13cb41b043a556539c7c7df344c444287179b1384d/dutest-0.2.1.win32.exe" }, { "comment_text": "", "digests": { "md5": "d9d386f9dc343b14c12455d5e87a822c", "sha256": "8d649e68ce199330d1dc0856e8633a0fd41226586b14c22a29252e4bdff4c672" }, "downloads": -1, "filename": "dutest-0.2.1.zip", "has_sig": false, "md5_digest": "d9d386f9dc343b14c12455d5e87a822c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12836, "upload_time": "2008-09-12T14:00:42", "url": "https://files.pythonhosted.org/packages/bd/d5/54a9e4c968be2c42b3771eb2917e8970ae0aefcedfc11abf7ddf293be0e0/dutest-0.2.1.zip" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "1ba141b608a5840d3fc4b34bf15a7ad1", "sha256": "b7bd5dfa0c1e4030fa8e18a30a4fbc0c9195bb8215b7c3d31e6113d506a67e9c" }, "downloads": -1, "filename": "dutest-0.2.2-py2.5.egg", "has_sig": false, "md5_digest": "1ba141b608a5840d3fc4b34bf15a7ad1", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 17922, "upload_time": "2008-09-17T18:25:06", "url": "https://files.pythonhosted.org/packages/2b/98/dce6c19560f73e7b8973a53a9a22c663efc6b55b45750cf7ddae296f1fef/dutest-0.2.2-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "8e09b5038ea619d40da47fd0b9cd8d92", "sha256": "78692434e6b0b27860bab52fdd5f2064282365f8981f61e13aca06daca982a41" }, "downloads": -1, "filename": "dutest-0.2.2.win32.exe", "has_sig": false, "md5_digest": "8e09b5038ea619d40da47fd0b9cd8d92", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 78325, "upload_time": "2008-09-17T17:59:25", "url": "https://files.pythonhosted.org/packages/de/7c/87466af360e53a08bbd98d5d021aa2e25fcc09025196841e81138ab13b09/dutest-0.2.2.win32.exe" }, { "comment_text": "", "digests": { "md5": "a766d6b57f038f48a068dfa9712dca08", "sha256": "cf03b1fc6e6783dd702a44b23c87f0591f8e0a088c5b733a73af15d2820ac664" }, "downloads": -1, "filename": "dutest-0.2.2.zip", "has_sig": false, "md5_digest": "a766d6b57f038f48a068dfa9712dca08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13396, "upload_time": "2008-09-17T17:59:13", "url": "https://files.pythonhosted.org/packages/b9/69/97ea4a67a66b45aeead289c7520858d528240ae1142f9dc0bbfea4617d79/dutest-0.2.2.zip" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "dbf8fd61e6e1c92cc20c85b21ed696db", "sha256": "c8e68ae9a9678074605f585c68fd348b78f342a1d34b191c9b0f9d5494255c66" }, "downloads": -1, "filename": "dutest-0.2.3-py2.5.egg", "has_sig": false, "md5_digest": "dbf8fd61e6e1c92cc20c85b21ed696db", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 23471, "upload_time": "2010-01-15T18:24:37", "url": "https://files.pythonhosted.org/packages/81/10/eceb88ed7a556632348dbc725b48123346fc4e8ca719bd40b81b1b6f31c7/dutest-0.2.3-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "f1558218bc844654934d5e49e7626403", "sha256": "b10789454cd892a22deb8462a4c06b10985fd69fcc470d672f2b3e6e7d5b919d" }, "downloads": -1, "filename": "dutest-0.2.3.tar.bz2", "has_sig": false, "md5_digest": "f1558218bc844654934d5e49e7626403", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12965, "upload_time": "2010-01-15T18:24:50", "url": "https://files.pythonhosted.org/packages/79/ce/6d2779d209e677d2c5c3d16ec76eccb10ef13ebc92f8841f01f2a35f5ae1/dutest-0.2.3.tar.bz2" }, { "comment_text": "", "digests": { "md5": "eb9821b6c7244c9d76305d9bdaf48cc3", "sha256": "1a2e4d8d6c97a181a67ec8345dbfc1daddc99862e24d0702c0f6788a10bce8f6" }, "downloads": -1, "filename": "dutest-0.2.3.tar.gz", "has_sig": false, "md5_digest": "eb9821b6c7244c9d76305d9bdaf48cc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12778, "upload_time": "2010-01-15T18:24:44", "url": "https://files.pythonhosted.org/packages/75/2e/356e2a53e0d1aa330ee62db5b43a38e502e92f5d1fd13ca9632ef929ded4/dutest-0.2.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "6a75d6c262d68c8541c484d1fbfc6852", "sha256": "74a97bdf6efdc4212fac537538bdde16f13b1f9844d99d49559dd8c717d1b324" }, "downloads": -1, "filename": "dutest-0.2.3.zip", "has_sig": false, "md5_digest": "6a75d6c262d68c8541c484d1fbfc6852", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20294, "upload_time": "2010-01-15T18:24:41", "url": "https://files.pythonhosted.org/packages/fa/72/f3f808461605c918c580b71cadad2cc253c912a81f3e29e4c47f516f03a7/dutest-0.2.3.zip" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "e01373c76106005fcdb289324e930827", "sha256": "5ba33794d264e50b70924418f0c11818ca17f42e0f3739bca3d8651904ca9512" }, "downloads": -1, "filename": "dutest-0.2.4.tar.bz2", "has_sig": false, "md5_digest": "e01373c76106005fcdb289324e930827", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14790, "upload_time": "2012-12-16T04:30:14", "url": "https://files.pythonhosted.org/packages/15/b4/6947f49bc710e137cace6ee8a0b2ab38f7c723ad7ef46222b4db39ac7101/dutest-0.2.4.tar.bz2" }, { "comment_text": "", "digests": { "md5": "f4ea29161830386389633532f1461dff", "sha256": "7d7505f81cbb58195ad22ef8baf5a3834276370e38980282507790aec36d35d4" }, "downloads": -1, "filename": "dutest-0.2.4.tar.gz", "has_sig": false, "md5_digest": "f4ea29161830386389633532f1461dff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14508, "upload_time": "2012-12-16T04:29:53", "url": "https://files.pythonhosted.org/packages/0c/95/15ccbb199c73ab879e0c6183ae65010bdeab78559bbda5030ac0442f9c21/dutest-0.2.4.tar.gz" }, { "comment_text": "", "digests": { "md5": "c89f47e733f134710b49f8c07f597a93", "sha256": "9c9a1ea6cb4ae6baf0c2be1a34eaa8b0ac56fb7e20b9ca705ca85327721a6b62" }, "downloads": -1, "filename": "dutest-0.2.4.zip", "has_sig": false, "md5_digest": "c89f47e733f134710b49f8c07f597a93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22333, "upload_time": "2012-12-16T04:31:22", "url": "https://files.pythonhosted.org/packages/2c/32/e79ef0ef2958fc88904be6776f8171d35cfadbd2c77da9c3797249d268f0/dutest-0.2.4.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e01373c76106005fcdb289324e930827", "sha256": "5ba33794d264e50b70924418f0c11818ca17f42e0f3739bca3d8651904ca9512" }, "downloads": -1, "filename": "dutest-0.2.4.tar.bz2", "has_sig": false, "md5_digest": "e01373c76106005fcdb289324e930827", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14790, "upload_time": "2012-12-16T04:30:14", "url": "https://files.pythonhosted.org/packages/15/b4/6947f49bc710e137cace6ee8a0b2ab38f7c723ad7ef46222b4db39ac7101/dutest-0.2.4.tar.bz2" }, { "comment_text": "", "digests": { "md5": "f4ea29161830386389633532f1461dff", "sha256": "7d7505f81cbb58195ad22ef8baf5a3834276370e38980282507790aec36d35d4" }, "downloads": -1, "filename": "dutest-0.2.4.tar.gz", "has_sig": false, "md5_digest": "f4ea29161830386389633532f1461dff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14508, "upload_time": "2012-12-16T04:29:53", "url": "https://files.pythonhosted.org/packages/0c/95/15ccbb199c73ab879e0c6183ae65010bdeab78559bbda5030ac0442f9c21/dutest-0.2.4.tar.gz" }, { "comment_text": "", "digests": { "md5": "c89f47e733f134710b49f8c07f597a93", "sha256": "9c9a1ea6cb4ae6baf0c2be1a34eaa8b0ac56fb7e20b9ca705ca85327721a6b62" }, "downloads": -1, "filename": "dutest-0.2.4.zip", "has_sig": false, "md5_digest": "c89f47e733f134710b49f8c07f597a93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22333, "upload_time": "2012-12-16T04:31:22", "url": "https://files.pythonhosted.org/packages/2c/32/e79ef0ef2958fc88904be6776f8171d35cfadbd2c77da9c3797249d268f0/dutest-0.2.4.zip" } ] }