{ "info": { "author": "Chris McDonough, Agendaless Consulting", "author_email": "pylons-devel@googlegroups.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 6 - Mature", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "venusian\n========\n\n.. image:: https://travis-ci.org/Pylons/venusian.png?branch=master\n :target: https://travis-ci.org/Pylons/venusian\n\n.. image:: https://readthedocs.org/projects/venusian/badge/?version=latest\n :target: https://docs.pylonsproject.org/projects/venusian/en/latest/\n :alt: Documentation Status\n\nVenusian is a library which allows framework authors to defer\ndecorator actions. Instead of taking actions when a function (or\nclass) decorator is executed at import time, you can defer the action\nusually taken by the decorator until a separate \"scan\" phase.\n\nSee the \"docs\" directory of the package or the online documentation at\nhttps://docs.pylonsproject.org/projects/venusian/en/latest/\n\n\n1.2.0 (2019-01-08)\n------------------\n\n- Add support for Python 3.7.\n\n- Drop support for Python 3.3.\n\n1.1.0 (2017-04-24)\n------------------\n\n- Updated to using py.test instead of nosetest, and added support for Python\n 3.4 -> 3.6\n\n- Make scanning more resilient of metaclasses that return proxies for any\n attribute access.\n\n- Fix bug where using the same venusian decorator on both a class and its\n methods would cause the method decorations to be ignored. See\n https://github.com/Pylons/venusian/issues/40\n\n- Drop support for Python 2.6.\n\n- Drop support for Python 3.2: it is no longer supported by current\n packaging / CI tools.\n\n- Support loaders that require the module name as argument to their\n ``get_filename()`` method. This fixes problems with zipped packages\n on Python 3.\n\n- Micro-optimization when ignores are used (see\n https://github.com/Pylons/venusian/pull/20).\n\n- A tox run now combines coverage between Py2 and Py3.\n\n1.0 (2014-06-30)\n----------------\n\n- Fix an issue under PyPy > 2.0 where attached decorators may not be found.\n\n- Drop support of Python 2.4 / 2.5 / Jython.\n\n- Add ``lift`` and ``onlyliftedfrom`` class decorators to allow for inheritance\n of venusian decorators attached to superclass methods. See the API\n documentation for more information.\n\n- Fix bug where otherwise undecorated subclass of a superclass that had\n venusian decorators on it would inherit its superclass' decorations.\n Venusian decorators should have never been inherited implicitly. See\n https://github.com/Pylons/venusian/issues/11#issuecomment-4977352\n\n1.0a8 (2013-04-15)\n------------------\n\n- Pass ``ignore`` argument along recursively to ``walk_packages`` so custom\n ignore functions will ignore things recursively. See\n https://github.com/Pylons/venusian/pull/16\n\n- Don't run tox tests under Python 2.4 anymore (tox no longer supports 2.4).\n\n1.0a7 (2012-08-25)\n------------------\n\n- Venusian now works on Python 3.3b2+ (importlib-based).\n\n- Use nose-exclude instead of relying on fragile module-scope code to ensure\n we don't get errors resulting from import of fixture code during\n \"nosetests\".\n\n- Bug fix: no longer suppress ``ImportError`` while scanning by default. If\n you want to suppress ``ImportError`` while scanning, you'll now need use an\n ``onerror`` callback as described in the documentation.\n\n1.0a6 (2012-04-23)\n------------------\n\n- Don't ignore decorated objects within their original locations if they\n happen to be imported into another module (remove ``seen`` set from invoke\n in venusian scanning). See https://github.com/Pylons/venusian/pull/13 .\n\n1.0a5 (2012-04-21)\n------------------\n\n- Slightly less sucky way to ignore objects during scanning that are only\n imported into a module but not actually defined there. See 1.0a4 change\n notes for rationale. Now instead of checking whether the module of the\n *scanned object* matches the module being scanned, we check whether the\n module of the *Venusian attachment* matches the module being scanned. This\n allows some genuine uses of imported objects as Venusian scan targets while\n preventing inappropriate double-scanning of objects that have a venusian\n attachment which just happen to be imported into other scanned modules.\n\n- Add ``dev`` and ``docs`` setup.py commands (ala Pyramid).\n\n1.0a4 (2012-04-16)\n------------------\n\n- Attempt to ignore objects during scanning that are only imported into a\n module but not actually defined there. This is a semantics change, but\n it's the right thing to do, because I found myself facing a situation like\n this::\n\n # in a module named \"one\"\n\n from two import anotheradecoratedthing\n @adecorator\n def adecoratedthing(): pass\n\n # and scanning both modules\n scan('one')\n scan('two')\n\n In this case you'd wind up with two repeated registrations for\n \"anotherdecoratedthing\", which isn't what anyone expects.\n\n1.0a3 (2012-02-08)\n------------------\n\n- Add an ``ignore`` argument to the ``scan`` method of a ``Scanner``. This\n argument allows a user to ignore packages, modules, and global objects by\n name during a ``scan``. See the \"ignore Scan Argument\" in the narrative\n documentation for more details.\n\n1.0a2 (2011-09-02)\n------------------\n\n- Close ImpLoader file handle to avoid resource warnings on Python 3.\n\n1.0a1 (2011-08-27)\n------------------\n\n- Python 3 compatibility.\n\n- Allow an ``onerror`` callback to be passed to ``Scanner.scan()``.\n\n0.9 (2011-06-18)\n----------------\n\n- Prevent corner case scan-time exception when trying to introspect insane\n module-scope objects. See https://github.com/Pylons/venusian/issues/5 .\n\n0.8 (2011-04-30)\n----------------\n\n- Normal \"setup.py test\" can't support running the venusian tests under py\n 2.4 or 2.5; when it scans the 'classdecorators' fixture, it barfs. To get\n around this, we used to depend on ``nose`` in ``setup_requires`` and tell\n \"setup.py test\" to use nose by setting test_suite to \"nose.collector\" but\n we can't anymore because folks use Venusian in systems which install from\n pip bundles; pip bundles do not support setup_requires. So, sorry, we're\n painted into a corner; at this point you just have to know to install nose\n and run \"setup.py nosetests\" rather than \"setup.py test\". Or just run\n \"tox\" which tests it under all Pythons.\n\n0.7 (2011-03-16)\n----------------\n\n- Use Pylons theme in documentation.\n\n- Fix orphaned pyc test on pypy.\n\n- Fix GitHub Issue #1: subclasses of decorated classes that do not\n have any decorations should not inherit the decorations of their\n parent classes. \n\n- Fix GitHub Issue #2: scans should only \"find\" each object once per\n scan, regardless of how many modules that object is imported into.\n\n0.6 (2011-01-09)\n----------------\n\n- Some metaclasses (Elixir's) don't raise an AttributeError when asked for a\n nonexistent attribute during a scan. We now catch all exceptions when\n interrogating an object for ``__venusian_callbacks__`` rather than just\n AttributeError.\n\n0.5 (2010-12-19)\n----------------\n\n- Make ``codeinfo`` attribute available as an attribute of the AttachInfo\n object. It will be a tuple in the form ``(filename, lineno, function,\n sourceline)`` representing the context of the venusian decorator. Eg.\n ``('/home/chrism/projects/venusian/tests/test_advice.py', 81,\n 'testCallInfo', 'add_handler(foo, bar)')``\n\n0.4 (2010-09-03)\n----------------\n\n- Bug fix: when a venusian decorator used as a class decorator was\n used against both a class *and* a subclass of that class, the\n superclass and subclass would effectively share the same set of\n callbacks. This was not the intent: each class declaration should\n have its own local set of callbacks; callbacks added via decorations\n should not be inherited, and a superclass should not receive its\n subclass' decorations.\n\n- Arrange test fixtures into a single directory.\n\n0.3 (2010-06-24)\n----------------\n\n- Ignore orphaned modules (``.pyc`` or ``.pyo`` files without a\n corresponding ``.py`` file) during a scan.\n\n0.2 (2010-04-18)\n----------------\n\n- Add the concept of scan categories (see the \"Scan Categories\"\n section of the documentation) to allow an application to make use of\n more than one Venusian-using framework simultaneously.\n\n0.1 (2010-02-15)\n----------------\n\n- Initial release.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pylonsproject.org", "keywords": "web wsgi zope", "license": "BSD-derived (http://www.repoze.org/LICENSE.txt)", "maintainer": "", "maintainer_email": "", "name": "venusian", "package_url": "https://pypi.org/project/venusian/", "platform": "", "project_url": "https://pypi.org/project/venusian/", "project_urls": { "Homepage": "https://pylonsproject.org" }, "release_url": "https://pypi.org/project/venusian/1.2.0/", "requires_dist": [ "Sphinx; extra == 'docs'", "repoze.sphinx.autointerface; extra == 'docs'", "pytest; extra == 'testing'", "coverage; extra == 'testing'", "pytest-cov; extra == 'testing'" ], "requires_python": "", "summary": "A library for deferring decorator actions", "version": "1.2.0" }, "last_serial": 4674027, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "dbfc0db60943ddacb0db21619f0afc11", "sha256": "b7c59aaf2bd0fd6364e083cb80a097b4fa9f80219643feefc5382006d6343ebf" }, "downloads": -1, "filename": "venusian-0.1.tar.gz", "has_sig": false, "md5_digest": "dbfc0db60943ddacb0db21619f0afc11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26763, "upload_time": "2010-02-15T23:58:06", "url": "https://files.pythonhosted.org/packages/0b/f4/4977d847511019b7fed69f15fe4f50f2f1a73cdda0f96cfd7cbcd893c2c7/venusian-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "9828c0a261e7d7c786c649ff91ceb45b", "sha256": "07f079fe778d331bf53f6c3ae14f15cbb65cf0fce94862161cc54d4e4a4aea2e" }, "downloads": -1, "filename": "venusian-0.2.tar.gz", "has_sig": false, "md5_digest": "9828c0a261e7d7c786c649ff91ceb45b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27885, "upload_time": "2010-04-18T20:34:26", "url": "https://files.pythonhosted.org/packages/ef/1d/13d3ca784bc263a4826fa3515e47bf9e16653e07b8aa0adb97068f18a01a/venusian-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "1f32b70e73a455961b4cc079e69fb1f0", "sha256": "6425956f4e8620e4a9e1bea0a4974f21e4338824b863ab352242c090ba757255" }, "downloads": -1, "filename": "venusian-0.3.tar.gz", "has_sig": false, "md5_digest": "1f32b70e73a455961b4cc079e69fb1f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28780, "upload_time": "2010-06-25T00:28:23", "url": "https://files.pythonhosted.org/packages/89/4a/5a29dad9ec95ae46bcfc7f0895c7818ea993004591932f35e23d5cb6b8cd/venusian-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "086ec02a432adc551580ff2b47f97eb9", "sha256": "d0ff8498bb034f066a5623e95ed1d75882c919868139016ff30836bc05a426a1" }, "downloads": -1, "filename": "venusian-0.4.tar.gz", "has_sig": false, "md5_digest": "086ec02a432adc551580ff2b47f97eb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29422, "upload_time": "2010-09-04T02:33:04", "url": "https://files.pythonhosted.org/packages/8a/54/66990f84ca359161c099825ee041d1a42fe420acce1707c8a5ca668e8fb7/venusian-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "669cbd5070434c92d3c33901b7cb8c12", "sha256": "81a11a9cbd8bb0266b04c153d3fb1cb9d821b48dbcd633274087604a6ec811d7" }, "downloads": -1, "filename": "venusian-0.5.tar.gz", "has_sig": false, "md5_digest": "669cbd5070434c92d3c33901b7cb8c12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29766, "upload_time": "2010-12-19T07:13:51", "url": "https://files.pythonhosted.org/packages/ce/a7/bcc698a3aff6fb3fb0c27f8b693dcefb06b6db97931e2c63785e77bf078f/venusian-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "e2d37698f0f63d1c128f31f0d073db9f", "sha256": "10aaf0c2ad63e0b61c7402e288a1cde7e289637e2607dfc282497b03816d4ded" }, "downloads": -1, "filename": "venusian-0.6.tar.gz", "has_sig": false, "md5_digest": "e2d37698f0f63d1c128f31f0d073db9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29980, "upload_time": "2011-01-09T19:31:25", "url": "https://files.pythonhosted.org/packages/de/91/173b00bf03218acf4ff8f8e4470f28fb54ce3f8ebf940d95096375fef671/venusian-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "1a1767c4ab5b476fb627ba1f0620e260", "sha256": "4ed59589c3bbda7d848c78ec0297dd82933c84123f7b0e4eab2c311ab26e997b" }, "downloads": -1, "filename": "venusian-0.7.tar.gz", "has_sig": false, "md5_digest": "1a1767c4ab5b476fb627ba1f0620e260", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33012, "upload_time": "2011-03-16T16:03:57", "url": "https://files.pythonhosted.org/packages/9f/d2/564626f2b5b1292523700c6ede17502965c8037edf7ab94dcc84304e9820/venusian-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "881f1f05dd621ff4d76f011f979f1c44", "sha256": "62e035e0556d600de1055c33675cfdb0dbfc7047439be065d75deaf23226380f" }, "downloads": -1, "filename": "venusian-0.8.tar.gz", "has_sig": false, "md5_digest": "881f1f05dd621ff4d76f011f979f1c44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33377, "upload_time": "2011-05-01T02:59:50", "url": "https://files.pythonhosted.org/packages/60/74/315504f34a9f8f86b2573646aace5afd33ee246a579e69175aab1c6c03f9/venusian-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "82617dcfba9b304f3ec2fab5f05b8249", "sha256": "d0e887f1434b0ae204236b023b67685ce6e1448eb37bff271e6419c2076848b2" }, "downloads": -1, "filename": "venusian-0.9.tar.gz", "has_sig": false, "md5_digest": "82617dcfba9b304f3ec2fab5f05b8249", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33814, "upload_time": "2011-06-18T22:10:49", "url": "https://files.pythonhosted.org/packages/e9/28/5b7c531bfb089096877d95a2d04aa58a453a45d2531b7e75e670b8e6035c/venusian-0.9.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "dccf2eafb7113759d60c86faf5538756", "sha256": "1720cff2ca9c369c840c1d685a7c7a21da1afa687bfe62edd93cae4bf429ca5a" }, "downloads": -1, "filename": "venusian-1.0.tar.gz", "has_sig": false, "md5_digest": "dccf2eafb7113759d60c86faf5538756", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45747, "upload_time": "2014-06-30T17:27:36", "url": "https://files.pythonhosted.org/packages/86/20/1948e0dfc4930ddde3da8c33612f6a5717c0b4bc28f591a5c5cf014dd390/venusian-1.0.tar.gz" } ], "1.0a1": [ { "comment_text": "", "digests": { "md5": "7fafec2c2dee07991cffbf9fd2b31ec3", "sha256": "b2090ed620788c25dcc1d2f2457e767aa28ea26cb4943803014543c425fb62f9" }, "downloads": -1, "filename": "venusian-1.0a1.tar.gz", "has_sig": false, "md5_digest": "7fafec2c2dee07991cffbf9fd2b31ec3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33596, "upload_time": "2011-08-27T09:36:40", "url": "https://files.pythonhosted.org/packages/ec/d8/d76438c1cae09baabef86b78e54197a0feaac57a561b4947d15a2d39aebe/venusian-1.0a1.tar.gz" } ], "1.0a2": [ { "comment_text": "", "digests": { "md5": "6ef80d161ba0c4ce8960f3e5b3f17966", "sha256": "48772b136311aa1b0f0c40b664d180018ca448125fc3dc9f82d2275b61289d28" }, "downloads": -1, "filename": "venusian-1.0a2.tar.gz", "has_sig": false, "md5_digest": "6ef80d161ba0c4ce8960f3e5b3f17966", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33706, "upload_time": "2011-10-03T02:24:39", "url": "https://files.pythonhosted.org/packages/19/c2/cd28c0d6cc45541f1448b9047104cfabc93c8b7d504c90235e26f7738418/venusian-1.0a2.tar.gz" } ], "1.0a3": [ { "comment_text": "", "digests": { "md5": "7e3a522772ed2c98e9922ade569c7474", "sha256": "47fb92f6565441e9b0d55e07d9990194f79088de16cadadd01ae1c7d1f2e586a" }, "downloads": -1, "filename": "venusian-1.0a3.tar.gz", "has_sig": false, "md5_digest": "7e3a522772ed2c98e9922ade569c7474", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41783, "upload_time": "2012-02-09T05:48:17", "url": "https://files.pythonhosted.org/packages/88/ea/ec00b41c1dbc7e3d7649bf178ffb2e9d8f49cb6ac60593b08b54100a6e79/venusian-1.0a3.tar.gz" } ], "1.0a4": [ { "comment_text": "", "digests": { "md5": "db7fa9dae788a138cee7490389054c18", "sha256": "6bb87b48f4bb8cb856c267c59408c43f372f30611e567b5ec69e9cecd9b67d8a" }, "downloads": -1, "filename": "venusian-1.0a4.tar.gz", "has_sig": false, "md5_digest": "db7fa9dae788a138cee7490389054c18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43147, "upload_time": "2012-04-16T14:20:10", "url": "https://files.pythonhosted.org/packages/09/00/c1e8f4cb28c35082fc6e13f5bd9baa17c6451cd898c9ed86f7fa67e7ad4c/venusian-1.0a4.tar.gz" } ], "1.0a5": [ { "comment_text": "", "digests": { "md5": "e1a96906679919f7c72eeaa6878975cd", "sha256": "f968aadc195b62c75449b38fc8afaf7def1a9fa0cea20027b8a8bf9d694450d8" }, "downloads": -1, "filename": "venusian-1.0a5.tar.gz", "has_sig": false, "md5_digest": "e1a96906679919f7c72eeaa6878975cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43270, "upload_time": "2012-04-21T17:45:57", "url": "https://files.pythonhosted.org/packages/d6/30/bb3815285ecaa9cb2fde6350f4c62ece4f062be90cca0c9ffeebe234b9ce/venusian-1.0a5.tar.gz" } ], "1.0a6": [ { "comment_text": "", "digests": { "md5": "d1ec24013df197291f8b457da5f7d21c", "sha256": "6b9a14a6d903fa6074d4bc221e603d548399fd1c48b37a036694828786516d86" }, "downloads": -1, "filename": "venusian-1.0a6.tar.gz", "has_sig": false, "md5_digest": "d1ec24013df197291f8b457da5f7d21c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43714, "upload_time": "2012-04-23T19:12:13", "url": "https://files.pythonhosted.org/packages/bf/53/54f3204265ffee1cb375ae20d84fb3f7f0119ace8262002aae5fe5f80987/venusian-1.0a6.tar.gz" } ], "1.0a7": [ { "comment_text": "", "digests": { "md5": "6f67506dd3cf77116f1c01682a6c3f27", "sha256": "adba7aa463569f7483186e74a2c0a7ea239879376d24066e52b71fc227dcede6" }, "downloads": -1, "filename": "venusian-1.0a7.tar.gz", "has_sig": false, "md5_digest": "6f67506dd3cf77116f1c01682a6c3f27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43710, "upload_time": "2012-08-25T08:07:36", "url": "https://files.pythonhosted.org/packages/7c/c7/2f2d43d95d464e179cfc70eed602f78097995a840b1eb7811360b4ca1477/venusian-1.0a7.tar.gz" } ], "1.0a8": [ { "comment_text": "", "digests": { "md5": "a1a72166fd7cccf0f30e3305e09ce5cf", "sha256": "a1b054d4ccf0859a76d900c49f419645279298d5316be3a65a1c00a40719bce0" }, "downloads": -1, "filename": "venusian-1.0a8.tar.gz", "has_sig": false, "md5_digest": "a1a72166fd7cccf0f30e3305e09ce5cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42845, "upload_time": "2013-04-15T07:40:47", "url": "https://files.pythonhosted.org/packages/9d/03/bb61d6c547a42e198e8cd7a95f76754ecc9a0917e540bbda4af920aa288d/venusian-1.0a8.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "484b62fb50070e5dca26e3d7dd588817", "sha256": "757162c5f907e18571b6ab41b7673e5bf18cc8715abf8164292eaef4f1610668" }, "downloads": -1, "filename": "venusian-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "484b62fb50070e5dca26e3d7dd588817", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36322, "upload_time": "2017-04-25T01:14:17", "url": "https://files.pythonhosted.org/packages/2f/c2/3d122e19287ed7d73f03821cef87e53673f27d41cae54ee3a46e92b147e2/venusian-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "56bc5e6756e4bda37bcdb94f74a72b8f", "sha256": "9902e492c71a89a241a18b2f9950bea7e41d025cc8f3af1ea8d8201346f8577d" }, "downloads": -1, "filename": "venusian-1.1.0.tar.gz", "has_sig": false, "md5_digest": "56bc5e6756e4bda37bcdb94f74a72b8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44674, "upload_time": "2017-04-25T01:03:49", "url": "https://files.pythonhosted.org/packages/38/24/b4b470ab9e0a2e2e9b9030c7735828c8934b4c6b45befd1bb713ec2aeb2d/venusian-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "436d615b8d2fdae4d465980b584e4bc9", "sha256": "2f2d077a1eedc3fda40425f65687c8c494da7e83d7c23bc2c4d1a40eb3ca5b6d" }, "downloads": -1, "filename": "venusian-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "436d615b8d2fdae4d465980b584e4bc9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33200, "upload_time": "2019-01-08T19:22:59", "url": "https://files.pythonhosted.org/packages/21/80/8e2ac4aef69e927754277d29636b65eceb4767e9da90a2c3046c4176184a/venusian-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccfbbe8d59b386384b543a3b1b8df512", "sha256": "64ec8285b80b110d0ae5db4280e90e31848a59db98db1aba4d7d46f48ce91e3e" }, "downloads": -1, "filename": "venusian-1.2.0.tar.gz", "has_sig": false, "md5_digest": "ccfbbe8d59b386384b543a3b1b8df512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42404, "upload_time": "2019-01-08T19:23:00", "url": "https://files.pythonhosted.org/packages/7e/6f/40a9d43ac77cb51cb62be5b5662d170f43f8037bdc4eab56336c4ca92bb7/venusian-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "436d615b8d2fdae4d465980b584e4bc9", "sha256": "2f2d077a1eedc3fda40425f65687c8c494da7e83d7c23bc2c4d1a40eb3ca5b6d" }, "downloads": -1, "filename": "venusian-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "436d615b8d2fdae4d465980b584e4bc9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33200, "upload_time": "2019-01-08T19:22:59", "url": "https://files.pythonhosted.org/packages/21/80/8e2ac4aef69e927754277d29636b65eceb4767e9da90a2c3046c4176184a/venusian-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccfbbe8d59b386384b543a3b1b8df512", "sha256": "64ec8285b80b110d0ae5db4280e90e31848a59db98db1aba4d7d46f48ce91e3e" }, "downloads": -1, "filename": "venusian-1.2.0.tar.gz", "has_sig": false, "md5_digest": "ccfbbe8d59b386384b543a3b1b8df512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42404, "upload_time": "2019-01-08T19:23:00", "url": "https://files.pythonhosted.org/packages/7e/6f/40a9d43ac77cb51cb62be5b5662d170f43f8037bdc4eab56336c4ca92bb7/venusian-1.2.0.tar.gz" } ] }