{
"info": {
"author": "meejah",
"author_email": "meejah@meejah.ca",
"bugtrack_url": null,
"classifiers": [],
"description": "Cuv'ner\n=======\n\n\"A commanding view of your test-coverage\"\n\n.. image:: https://readthedocs.org/projects/cuvner/badge/?version=latest\n :target: https://cuvner.readthedocs.io/en/latest/\n :alt: ReadTheDocs\n\n\nThe command-line tool ``cuv`` provided by this package gives some\nuseful tools to visualize your project's coverage data. This means you\nmust first run `coverage`_ against your project's test-suite.\n\nOnce you have a ``.coverage`` file, you can use the commands\ndocumented below (or just type ``cuv`` to explore the help).\n\nWe utilize several quality open-source packages to achieve this:\n\n - `coverage`_ by Ned Batchelder\n - `Click`_ by Armin Ronacher / pocoo\n - `pygments`_ by Georg Brandl / pocoo\n - `ansicolors`_ by Giorgos Verigakis\n - `unidiff`_ by Matias Bordese\n - `Source Code Pro`_: the best programming font\n\nCode: https://github.com/meejah/cuvner\nDocs: https://cuvner.readthedocs.org\n\n\nBackground + Terminology\n------------------------\n\nThis started out as some experiments in \"whole-project coverage\nvisualization\", and then also grew some console tools that I find\nuseful when working with Python code.\n\nI have abandoned the pixel/graphical visualization ideas and\nproofs-of-concepts into a branch and now this tool is `just` the\nconsole visualizations -- which are very useful when working on Python\ncode.\n\nAs far as my setup, I am using Debian with a 256-color and unicode\ncapable shell using Solarized Dark color schemes. There are probably\nbugs with other setups, and to a reasonable extent I'm happy to accept\npull-reqeusts fixing these. That said, a unicode-capable shell is a\nmust.\n\n\nOther Neat Visualizations\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOther nice \"coverage visualization\" tools I've run across:\n\n- of course, `Coverage.py\n `_ itself comes with a\n nice HTML visualization\n- `emacs-coverage `_\n- `codecov.io browser extension\n `_ shows coverage live\n while browsing github\n\n\nNotes on Tox\n------------\n\nIf you're using `tox`_ to run tests (and you should, it's great!) your\ncoverage files will -- depending upon setup -- end up in\n``.tox/envname/.coverage`` or similar. So, you will either need to use\n``--coverage`` to point cuv'ner at the right file, or simply move it to\nthe top-level of your project for ease-of-use.\n\n\nPro Tip(tm)\n-----------\n\nThe \"uncovered\" lines start with a slightly different unicode\ncharacter than the \"covered\" lines, so if you're trying to write tests\nfor uncovered things, you can do this on the \"next file that has\nuncovered things\":\n\n``cuv src/file.py | less -p \u258c -j 4``\n\nThat says (since ``cuv lessopen`` is the \"default\" command) to run\n``cuv lessopen`` on ``src/file.py`` and then , in less, jump to the\nfirst uncovered line and place it 4 lines below the top of the\nscreen. You can then hit ``n`` in less to go to the next one.\n\nThis is precisely what the ``cuv next`` command does.\n\n\nConsole Visualizations\n----------------------\n\nThe two main tools usable directly in the console are ``cuv graph``\nand ``cuv lessopen`` (which can be tied directly into ``less`` via the\n``LESSOPEN`` environment variable). For determining coverage of\nbranches or individual commits, use ``cuv diff``. ``cuv spark`` can\nprovide a quick overview of a project's coverage.\n\n\n``cuv graph``\n~~~~~~~~~~~~~\n\n.. image:: ../screenshots/cuvner-graph-txtorcon.png\n :alt: console graph, showing txtorcon code\n\nThis displays all the files in your project and a histogram-like graph\nof their coverage. Each character represents 8 lines of code, and uses\na group of unicode characters (0x2580 through 0x2587) to draw a little\ngraph. So, if those 8 lines are not covered at all, the graph will be\nall red; if they're all covered, it will be all green. If 2 out of the\n8 lines are covered, there will be about 25% green and the rest red.\n\nThe total size of each file can thus be easily seen (by the length of\nthe histogram part, which wraps to subsequent lines if needed) and an\nidea of which parts are covered is given.\n\nTODO:\n\n - testing on more terminal types\n - how does it look when using something besides Solarized Dark?\n - useful, beyond eye-candy?\n\n\n``cuv lessopen``\n~~~~~~~~~~~~~~~~\n\n.. image:: ../screenshots/cuvner-lessopen-twisted.png\n :alt: pygments + coverage coloring in console\n\nThis command is intended to be used via the ``LESSOPEN`` environment\nvariable, which lets you pre-process files that are opened with\n``less``. So, once set up (see the help via ``cuv lessopen --help``)\nyou can simply run ``less`` on any file in your project, and it will\nget syntax-highlighted and show you the line-by-line coverage with a\nleading green or red mini-verical bar and red background (for\nuncovered lines).\n\nA header appears at the top showing the total coverage for this\nparticular file.\n\nTODO:\n\n - probably the \"proper\" way to do this is via a `Pygments`_ plugin or\n extension of some sort\n - option to change which `Pygments`_ style is used\n - dark/light background option?\n\n\n``cuv diff``\n~~~~~~~~~~~~\n\n.. image:: ../screenshots/cuvner-diff-txtorcon.png\n :alt: showing \"cuv diff\" colouring\n\nYou can pipe a ``git diff`` to this and see a colorized version of the\ndiff in your console. I am using a library called `unidiff`_ to read\nthe actual diff, which so far works quite nicely. That said, I've only\ntried against the output of Git, like so::\n\n git diff | cuv diff | less\n\nTODO:\n\n - colors are unsatisfying, since for added lines they're pretty much\n the same as Git's colored output\n - maybe make it look more like the \"real\" underlying diff?\n (e.g. re-create the @@ and so forth things)\n - does it work with merge commits?\n\n\n``cuv spark``\n~~~~~~~~~~~~~\n\n.. image:: ../screenshots/cuvner-spark-txtorcon.png\n :alt: spark-line coverage of txtorcon\n\nThis shows a \"spark-line\" sort of thing in the console. It's not very\nuseful for big projects (e.g. Twisted), but gives a very quick\noverview of the coverage in a small amount of space. Using the same\nunicode characters as ``cuv graph``, this represents each file as a\nsingle character, and its percentage coverage is graphed (so you only\nget granularity down to about 12.5%).\n\n\n.. _tox: https://tox.readthedocs.org/en/latest/\n.. _coverage: https://coverage.readthedocs.org/en/latest/\n.. _pygments: http://pygments.org/\n.. _Twisted: https://twistedmatrix.org/\n.. _txtorcon: https://meejah.ca/projects/txtorcon\n.. _Click: http://click.pocoo.org/\n.. _Source Code Pro: http://adobe-fonts.github.io/source-code-pro/\n.. _ansicolors: https://github.com/verigak/colors/\n.. _unidiff: https://github.com/matiasb/python-unidiff\n\n\n",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://meejah.ca/projects/cuvner",
"keywords": "python,coverage",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "cuvner",
"package_url": "https://pypi.org/project/cuvner/",
"platform": "",
"project_url": "https://pypi.org/project/cuvner/",
"project_urls": {
"Homepage": "https://meejah.ca/projects/cuvner"
},
"release_url": "https://pypi.org/project/cuvner/18.0.1/",
"requires_dist": [
"six",
"ansicolors (==1.0.2)",
"click",
"coverage",
"incremental",
"pygments",
"unidiff",
"watchdog",
"Sphinx; extra == 'dev'",
"wheel; extra == 'dev'"
],
"requires_python": "",
"summary": "A commanding (terminal) view of your test-coverage.",
"version": "18.0.1"
},
"last_serial": 3627037,
"releases": {
"0.0.0": [
{
"comment_text": "cuvner v0.0.0 wheel",
"digests": {
"md5": "c711f10fe126b046b3d941720e01d19c",
"sha256": "b089f0bca27c9baff5b150dd356718e5bc2e520c0853be46a8dc67cea70541e5"
},
"downloads": -1,
"filename": "cuvner-0.0.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "c711f10fe126b046b3d941720e01d19c",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 81966,
"upload_time": "2016-01-08T19:57:17",
"url": "https://files.pythonhosted.org/packages/d6/51/5aa382d68dde5df6232d0db15cb5f795c09fbe2500e3a63e383220f30458/cuvner-0.0.0-py2-none-any.whl"
}
],
"0.0.1": [
{
"comment_text": "cuvner v0.0.1 wheel",
"digests": {
"md5": "d309d5803e7cc4ff0cb7b8bff2e36027",
"sha256": "b43482dd55557a9f7a6ca1d3ef79a43fec9a86c8b4a9c0ff4c9a361bdd4f4838"
},
"downloads": -1,
"filename": "cuvner-0.0.1-py2-none-any.whl",
"has_sig": true,
"md5_digest": "d309d5803e7cc4ff0cb7b8bff2e36027",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 82012,
"upload_time": "2016-01-09T22:33:16",
"url": "https://files.pythonhosted.org/packages/57/72/e637dd8739577c13bd92ee25ef64bf7e9670cee929404c60414be885c910/cuvner-0.0.1-py2-none-any.whl"
}
],
"0.1.0": [
{
"comment_text": "cuvner v0.1.0 wheel",
"digests": {
"md5": "cf811f962c1e789c4cb270f7d7223113",
"sha256": "73729589e7d4d53c02d9fb0f60397af1cc76069cabfca14337008421f6ca4754"
},
"downloads": -1,
"filename": "cuvner-0.1.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "cf811f962c1e789c4cb270f7d7223113",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 82231,
"upload_time": "2016-01-11T02:45:29",
"url": "https://files.pythonhosted.org/packages/d6/89/1c65e5c48c6fec0f62768ec54137db398c20cbe2078a43b7a617bf417b74/cuvner-0.1.0-py2-none-any.whl"
}
],
"0.1.1": [
{
"comment_text": "cuvner v0.1.1 wheel",
"digests": {
"md5": "d9419fc7aeed152f442a82101eac9d53",
"sha256": "93e0aaab7a4fbfc8abb22dacdfd10b25b8dc665c0a67191cbcfd51d7e78845f3"
},
"downloads": -1,
"filename": "cuvner-0.1.1-py2-none-any.whl",
"has_sig": true,
"md5_digest": "d9419fc7aeed152f442a82101eac9d53",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 82271,
"upload_time": "2016-01-11T02:54:37",
"url": "https://files.pythonhosted.org/packages/45/ca/9096d37dd514d40fb214e3ad6d2c69147d37648ba0a14c687975575d607c/cuvner-0.1.1-py2-none-any.whl"
}
],
"0.1.2": [
{
"comment_text": "cuvner v0.1.2 wheel",
"digests": {
"md5": "c999dbc6c2512108807d17713e18851e",
"sha256": "8d25e29d7913118f6498a7fadab45cee7313bb18473831c82d0bfe02cf05ef9d"
},
"downloads": -1,
"filename": "cuvner-0.1.2-py2-none-any.whl",
"has_sig": true,
"md5_digest": "c999dbc6c2512108807d17713e18851e",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 82273,
"upload_time": "2016-01-11T03:54:18",
"url": "https://files.pythonhosted.org/packages/d0/4a/1cac21c02753ae8b843eeec4fa7541c5b5818c32e9c4e8434021d75213b0/cuvner-0.1.2-py2-none-any.whl"
}
],
"0.1.3": [
{
"comment_text": "cuvner v0.1.3 wheel",
"digests": {
"md5": "d96de3340cce75a6193e3003fecead38",
"sha256": "f1d3a160b8fc92bfb6926f8d78a8ad156d30d3bf126ad9bb29982807c8298293"
},
"downloads": -1,
"filename": "cuvner-0.1.3-py2-none-any.whl",
"has_sig": true,
"md5_digest": "d96de3340cce75a6193e3003fecead38",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 82261,
"upload_time": "2016-01-11T04:40:56",
"url": "https://files.pythonhosted.org/packages/85/72/cff2417d490596529901c0fd1fc5fa81ccf41448c84938c116bcf6945d0f/cuvner-0.1.3-py2-none-any.whl"
}
],
"0.2.0": [
{
"comment_text": "cuvner v0.2.0 wheel",
"digests": {
"md5": "a5ae2e3597bff757d9b5b62bcb64602c",
"sha256": "aac536bd701441a36b1a4ee7eeebcc7b4f221445d635e91b87cfdd08d281a446"
},
"downloads": -1,
"filename": "cuvner-0.2.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "a5ae2e3597bff757d9b5b62bcb64602c",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 85224,
"upload_time": "2016-01-19T03:50:03",
"url": "https://files.pythonhosted.org/packages/0a/eb/e9c8768061dc1f6311ef5c7f594c64935553f109ed9326a5b1822003aa78/cuvner-0.2.0-py2-none-any.whl"
}
],
"16.0.0": [
{
"comment_text": "cuvner v16.0.0 wheel",
"digests": {
"md5": "b4aa4f132c34a158905e86b16ebff690",
"sha256": "7e7b0f5299ede3ec042ba78b1b402d474754d75bb7c26ed32e64f46d1df845a3"
},
"downloads": -1,
"filename": "cuvner-16.0.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "b4aa4f132c34a158905e86b16ebff690",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 87854,
"upload_time": "2016-08-13T06:08:26",
"url": "https://files.pythonhosted.org/packages/e5/0e/dcf508ec0027280a0d7c6aeca65df8d20e6180e5f61ad2f1494fa52e3b6a/cuvner-16.0.0-py2-none-any.whl"
}
],
"16.1.0": [
{
"comment_text": "cuvner v16.1.0 wheel",
"digests": {
"md5": "71d06c2beada731354e0600557c0906e",
"sha256": "82703f92dc7355d74516ed4ba7c9fd39bd17ee4b0edbad5dbca530dbad4a4a45"
},
"downloads": -1,
"filename": "cuvner-16.1.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "71d06c2beada731354e0600557c0906e",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 85316,
"upload_time": "2016-11-28T18:41:42",
"url": "https://files.pythonhosted.org/packages/67/5f/8003446d1ebbcc645f7e867fbe6bb3cc59e0ad5db7db0f086e927b44ffe8/cuvner-16.1.0-py2-none-any.whl"
}
],
"16.2.0": [
{
"comment_text": "cuvner v16.2.0 wheel",
"digests": {
"md5": "d9d5452daad28da4b80c9ac9474ad880",
"sha256": "fdb642a54a1cb4d1096349c9c3165cf05cde472a69ca2e4779d3722bb7549f74"
},
"downloads": -1,
"filename": "cuvner-16.2.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "d9d5452daad28da4b80c9ac9474ad880",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 85508,
"upload_time": "2016-11-30T06:44:23",
"url": "https://files.pythonhosted.org/packages/3b/d7/c6ae6052022b37b69b6b53f7225b929798a5936ad9293bf080ee07c22511/cuvner-16.2.0-py2-none-any.whl"
}
],
"16.3.0": [
{
"comment_text": "cuvner v16.3.0 wheel",
"digests": {
"md5": "7d7dadabbce1e4db2824f0d467b1bc20",
"sha256": "2476b9345a4d8e61f356b81caae52037440293390e8bf49775d013d096ebc0ce"
},
"downloads": -1,
"filename": "cuvner-16.3.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "7d7dadabbce1e4db2824f0d467b1bc20",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 85528,
"upload_time": "2016-11-30T06:45:20",
"url": "https://files.pythonhosted.org/packages/87/2f/99b9e9b9783372c4f1dfc873a7a6ac0235fa6edf0565439b9e89810fc96c/cuvner-16.3.0-py2-none-any.whl"
}
],
"16.5.0": [
{
"comment_text": "cuvner v16.5.0 wheel",
"digests": {
"md5": "7435e9df8e28374a856e8e1e8e880f27",
"sha256": "282c5fa5f197dc0d556e6f43e82c3322b5653d4f248f190729b38c2f32d82ede"
},
"downloads": -1,
"filename": "cuvner-16.5.0-py2-none-any.whl",
"has_sig": true,
"md5_digest": "7435e9df8e28374a856e8e1e8e880f27",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 88010,
"upload_time": "2016-12-05T20:23:21",
"url": "https://files.pythonhosted.org/packages/f8/9a/67677d7380bdd4418bc21c73003286fc8b3374325b2e8ca950b6f0b64d8e/cuvner-16.5.0-py2-none-any.whl"
}
],
"16.6.0": [
{
"comment_text": "cuvner v16.6.0 wheel",
"digests": {
"md5": "3a86b726afc3c25aa05e151df6f9cc82",
"sha256": "48486d4515a4a154049653deca0aa5f8cb1c54413099ec1e5429058b57f386f8"
},
"downloads": -1,
"filename": "cuvner-16.6.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "3a86b726afc3c25aa05e151df6f9cc82",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 83408,
"upload_time": "2017-01-17T06:57:43",
"url": "https://files.pythonhosted.org/packages/31/0a/a7697928eaa7867f33e312102fd918e9ce7276da81637892fdbcc33651e9/cuvner-16.6.0-py2.py3-none-any.whl"
}
],
"17.0.0": [
{
"comment_text": "cuvner v17.0.0 wheel",
"digests": {
"md5": "05441e42138c325adc35fbbbc38e0307",
"sha256": "3a1941ffc845a17162c5ed9bb4041fd20eb4214c067adcafdb6000f0a1ce10f1"
},
"downloads": -1,
"filename": "cuvner-17.0.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "05441e42138c325adc35fbbbc38e0307",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88009,
"upload_time": "2017-01-17T19:40:52",
"url": "https://files.pythonhosted.org/packages/ee/68/b55a504bd3c6bc89faa45840dfed77cd9b5e7021942554624dd955d1e83f/cuvner-17.0.0-py2.py3-none-any.whl"
}
],
"17.1.0": [
{
"comment_text": "cuvner v17.1.0 wheel",
"digests": {
"md5": "6253b33eeefae1af365d5f4311cd4f97",
"sha256": "9bdb4e498b5040a1e0dfbd1fd4fac2e65eacc809a6c082915876fe602ed1e4a8"
},
"downloads": -1,
"filename": "cuvner-17.1.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "6253b33eeefae1af365d5f4311cd4f97",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88154,
"upload_time": "2017-02-02T18:29:12",
"url": "https://files.pythonhosted.org/packages/ba/1f/a65733f12d8374148ed369a5fe4f70d559500d0755e7fbbe0a027f8ddcf0/cuvner-17.1.0-py2.py3-none-any.whl"
}
],
"17.2.0": [
{
"comment_text": "cuvner v17.2.0 wheel",
"digests": {
"md5": "334fe905ee66591ac6865fd6c273d33b",
"sha256": "4048dd767a918473cda9624a77c9fd1a7052642c45d975ec57798ff5c5ba1ded"
},
"downloads": -1,
"filename": "cuvner-17.2.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "334fe905ee66591ac6865fd6c273d33b",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88315,
"upload_time": "2017-05-03T19:09:18",
"url": "https://files.pythonhosted.org/packages/bb/b5/9af0fe00e306f5357e5dc9abaf80c40f7394edcc66e5bad7ef58ea3b6852/cuvner-17.2.0-py2.py3-none-any.whl"
}
],
"17.3.0": [
{
"comment_text": "cuvner v17.3.0 wheel",
"digests": {
"md5": "d0d67cfdce7ef6c0df6e7858b1b9433b",
"sha256": "2a84455b764dad1ca7f3561efa99c5798465f677a61b8e52815d559d7718ffce"
},
"downloads": -1,
"filename": "cuvner-17.3.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "d0d67cfdce7ef6c0df6e7858b1b9433b",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88337,
"upload_time": "2017-05-30T20:23:54",
"url": "https://files.pythonhosted.org/packages/54/c7/561f5e4eeec93147437769b6de3b52c7678848bcd7c94c94e1911a778ea7/cuvner-17.3.0-py2.py3-none-any.whl"
}
],
"17.4.0": [
{
"comment_text": "cuvner v17.4.0 wheel",
"digests": {
"md5": "8d1d1ec76a34f13512342cd499eb4575",
"sha256": "af610fc6e548a92e4a98ffc3f6063adf6934cf7a7d1b1ec08719522d62fdb159"
},
"downloads": -1,
"filename": "cuvner-17.4.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "8d1d1ec76a34f13512342cd499eb4575",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88564,
"upload_time": "2017-10-10T05:32:12",
"url": "https://files.pythonhosted.org/packages/cc/1c/b965be7389bd85aa9146358895fd57e6a599d8a68b5846e8bcab49d28469/cuvner-17.4.0-py2.py3-none-any.whl"
}
],
"18.0.0": [
{
"comment_text": "cuvner v18.0.0 wheel",
"digests": {
"md5": "2e241c4307b42fb9a74460efe68084bd",
"sha256": "b99ae4e329a48c77917a30a571bf26f1cd28384d6157d6e870af4f624556e7f3"
},
"downloads": -1,
"filename": "cuvner-18.0.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "2e241c4307b42fb9a74460efe68084bd",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88598,
"upload_time": "2018-02-28T23:35:06",
"url": "https://files.pythonhosted.org/packages/01/3c/506310d022c1503f050dcbc3edde3594631db649a2359b838ce765d12c8f/cuvner-18.0.0-py2.py3-none-any.whl"
}
],
"18.0.1": [
{
"comment_text": "cuvner v18.0.1 wheel",
"digests": {
"md5": "ea691150259c98f3b4c6e141fd9e6918",
"sha256": "395b9b1d802aca999212e70566813b79c6a50289d6a2a712252c9c9eb52cf29e"
},
"downloads": -1,
"filename": "cuvner-18.0.1-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "ea691150259c98f3b4c6e141fd9e6918",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88598,
"upload_time": "2018-03-01T00:37:19",
"url": "https://files.pythonhosted.org/packages/3a/db/5c4d1884eeebef7eb149f99ecbed61f51cc56118db95e0fc62801e9ee641/cuvner-18.0.1-py2.py3-none-any.whl"
}
]
},
"urls": [
{
"comment_text": "cuvner v18.0.1 wheel",
"digests": {
"md5": "ea691150259c98f3b4c6e141fd9e6918",
"sha256": "395b9b1d802aca999212e70566813b79c6a50289d6a2a712252c9c9eb52cf29e"
},
"downloads": -1,
"filename": "cuvner-18.0.1-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "ea691150259c98f3b4c6e141fd9e6918",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 88598,
"upload_time": "2018-03-01T00:37:19",
"url": "https://files.pythonhosted.org/packages/3a/db/5c4d1884eeebef7eb149f99ecbed61f51cc56118db95e0fc62801e9ee641/cuvner-18.0.1-py2.py3-none-any.whl"
}
]
}