{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Natural Language :: Russian", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance" ], "description": "Pylava\n======\nPylava is a community maintained fork of `Pylama\n`_.\n\n.. image:: https://travis-ci.com/pylava/pylava.svg?branch=master\n :target: https://travis-ci.com/pylava/pylava\n :alt: Build Status\n\n.. image:: https://coveralls.io/repos/github/pylava/pylava/badge.svg?branch=master\n :target: https://coveralls.io/github/pylava/pylava?branch=master\n :alt: Coveralls\n\n.. image:: https://img.shields.io/pypi/v/pylava.svg\n :target: https://pypi.org/project/pylava/\n :alt: Version\n\n.. image:: https://readthedocs.org/projects/pylavadocs/badge/?version=latest\n :target: https://pylavadocs.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nPylava is a code audit tool for Python and JavaScript. Pylava wraps\nthese tools:\n\n* pycodestyle_ (formerly pep8) \u00a9 2012-2013, Florent Xicluna;\n* pydocstyle_ (formerly pep257 by Vladimir Keleshev) \u00a9 2014, Amir Rachum;\n* PyFlakes_ \u00a9 2005-2013, Kevin Watters;\n* Mccabe_ \u00a9 Ned Batchelder;\n* Pylint_ \u00a9 2013, Logilab (should be installed 'pylama_pylint' module);\n* Radon_ \u00a9 Michele Lacchia\n* gjslint_ \u00a9 The Closure Linter Authors (should be installed 'pylama_gjslint' module);\n\n.. _pycodestyle: https://github.com/PyCQA/pycodestyle\n.. _pydocstyle: https://github.com/PyCQA/pydocstyle/\n.. _PyFlakes: https://github.com/pyflakes/pyflakes\n.. _Mccabe: http://nedbatchelder.com/blog/200803/python_code_complexity_microtool.html\n.. _Pylint: http://pylint.org\n.. _Radon: https://github.com/rubik/radon\n.. _gjslint: https://developers.google.com/closure/utilities\n\n\n.. contents::\n\n\nCredits\n-------\nThanks to:\n\n- `Kirill Klenov `_ for creating and\n maintaining the original Pylama project. This fork named Pylava is a\n derivative work based on Kirill Klenov's Pylama project.\n- Contributors to Pylama.\n- Contributors to Pylava.\n\n\nNew in Pylava\n-------------\nThis fork of Pylama differs from the original Pylama project in the\nfollowing areas:\n\n- Pylama does not work with Python 3.7 due to `Pylama issue #123\n `_. While there is a pull\n request to resolve the issue, they are not being merged into the\n project due to lack of maintenance. This fork named Pylava is meant\n for merging useful pull requests into the project, so that the project\n can satsify the current needs of Python developers. This is the\n primary reason why this fork was created.\n\n- The licensing terms of Pylama are unclear. The README of the original\n Pylama project mentioned:\n\n Licensed under a `BSD license`_.\n\n It is unclear which BSD license (BSD-3-Clause or BSD-2-Clause) is\n meant here. Moreover there are references to the GNU Lesser General\n Public License (GNU LGPL) also in the project. See `Pylama issue #64\n `_ for more about this.\n\n This fork interprets the license section of the README to mean that\n the Pylama project is available under a BSD license in addition to\n certain files being available under GNU LGPL due to the mentions of\n GNU LGPL in such files.\n\n Further, this fork named Pylava (a derivative work based on Pylama) is\n distributed under the terms of the MIT license which is allowed by BSD\n licenses.\n\n- While the original Pylama project uses the ``develop`` branch as the\n active development branch, this fork uses the ``master`` branch as the\n active development branch.\n\n.. _BSD license: http://www.linfo.org/bsdlicense.html\n\n\nDocumentation\n-------------\nDocumentation is available at https://pylavadocs.readthedocs.io/. Pull\nrequests with documentation enhancements and/or fixes are awesome and\nmost welcome.\n\n\nRequirements\n------------\n- Python (2.7, 3.4, 3.5, 3.6, or 3.7)\n- To use JavaScript checker (``gjslint``) you need to install\n ``python-gflags`` with ``pip install python-gflags``.\n- If your tests are failing on Win platform you are missing:\n ``curses`` - http://www.lfd.uci.edu/~gohlke/pythonlibs/\n (The curses library supplies a terminal-independent screen-painting\n and keyboard-handling facility for text-based terminals)\n\n\nInstallation\n------------\nEnter the following command to install Pylava. ::\n\n $ pip install pylava\n\nWith Python 3, you may need to enter the following command instead. ::\n\n $ pip3 install pylava\n\n\nQuick Start\n-----------\nPylava is easy to use and really fun for checking code quality. Just run\n`pylava` and get common output from all pylava plugins (pycodestyle_,\nPyFlakes_ and etc)\n\nRecursively check the current directory. ::\n\n $ pylava\n\nRecursively check a path. ::\n\n $ pylava \n\nIgnore errors ::\n\n $ pylava -i W,E501\n\nNote: You could choose a group of errors ``D``,``E1``, etc., or special\nerrors ``C0312``.\n\nChoose code checkers ::\n\n $ pylava -l \"pycodestyle,mccabe\"\n\nChoose code checkers for JavaScript::\n\n $ pylava --linters=gjslint --ignore=E:0010 \n\n.. _options:\n\n\nSet Pylava (checkers) options\n-----------------------------\nCommand line options\n~~~~~~~~~~~~~~~~~~~~\n::\n\n $ pylava --help\n\n usage: pylava [-h] [--verbose] [--version] [--format {pycodestyle,pylint}]\n [--select SELECT] [--sort SORT] [--linters LINTERS]\n [--ignore IGNORE] [--skip SKIP] [--report REPORT] [--hook]\n [--async] [--options OPTIONS] [--force] [--abspath]\n [paths [paths ...]]\n\n Code audit tool for python.\n\n positional arguments:\n paths Paths to files or directories for code check.\n\n optional arguments:\n -h, --help show this help message and exit\n --verbose, -v Verbose mode.\n --version show program's version number and exit\n --format {pycodestyle,pylint}, -f {pycodestyle,pylint}\n Choose errors format (pycodestyle, pylint).\n --select SELECT, -s SELECT\n Select errors and warnings. (comma-separated list)\n --sort SORT Sort result by error types. Ex. E,W,D\n --linters LINTERS, -l LINTERS\n Select linters. (comma-separated). Choices are\n mccabe,pycodestyle,pyflakes,pydocstyle.\n --ignore IGNORE, -i IGNORE\n Ignore errors and warnings. (comma-separated)\n --skip SKIP Skip files by masks (comma-separated, Ex.\n */messages.py)\n --report REPORT, -r REPORT\n Send report to file [REPORT]\n --hook Install Git (Mercurial) hook.\n --async Enable async mode. Useful for checking a lot of\n files. Not supported by pylint.\n --options FILE, -o FILE\n Specify configuration file. Looks for pylava.ini,\n setup.cfg, tox.ini, or pytest.ini in the current\n directory.\n --force, -F Force code checking (if linter doesnt allow)\n --abspath, -a Use absolute paths in output.\n\n\nFile modelines\n~~~~~~~~~~~~~~\nYou can set options for Pylava inside a source file. Use\npylava *modeline* for this.\n\nFormat: ::\n\n # pylava:{name1}={value1}:{name2}={value2}:...\n\nExample: ::\n\n .. Somethere in code\n # pylava:ignore=W:select=W301\n\nDisable code checking for current file: ::\n\n .. Somethere in code\n # pylava:skip=1\n\nThose options have a higher priority.\n\n\nSkip lines (noqa)\n~~~~~~~~~~~~~~~~~\nJust add `# noqa` in end of line to ignore.\n\nExample:\n\n.. code:: python\n\n def urgent_fuction():\n unused_var = 'No errors here' # noqa\n\n\nConfiguration file\n~~~~~~~~~~~~~~~~~~\nPylava looks for a configuration file in the current directory.\n\nThe program searches for the first matching ini-style configuration file in\nthe directories of command line argument. Pylava looks for the configuration\nin this order: ::\n\n pylava.ini\n setup.cfg\n tox.ini\n pytest.ini\n\nThe ``--option`` / ``-o`` argument can be used to specify a\nconfiguration file.\n\nPylava searches for sections whose names start with `pylava`.\n\nThe `pylava` section configures global options like `linters` and `skip`.\n\nExample: ::\n\n [pylava]\n format = pylint\n skip = */.tox/*,*/.env/*\n linters = pylint,mccabe\n ignore = F0401,C0111,E731\n\n\nSet Code-checkers' options\n~~~~~~~~~~~~~~~~~~~~~~~~~~\nYou could set options for special code checker with pylava configurations.\n\nExample: ::\n\n [pylava:pyflakes]\n builtins = _\n\n [pylava:pycodestyle]\n max_line_length = 100\n\n [pylava:pylint]\n max_line_length = 100\n disable = R\n\nSee code-checkers' documentation for more info.\n\n\nSet options for file (group of files)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nYou could set options for special file (group of files)\nwith sections:\n\nThe options have a higher priority than in the `pylava` section.\n\nExample: ::\n\n [pylava:*/pylava/main.py]\n ignore = C901,R0914,W0212\n select = R\n\n [pylava:*/tests.py]\n ignore = C0110\n\n [pylava:*/setup.py]\n skip = 1\n\n\nPytest integration\n------------------\nPylava has Pytest_ support. The package automatically registers itself\nas a pytest plugin during installation. Pylava also supports\n`pytest_cache` plugin.\n\nCheck files with pylava: ::\n\n pytest --pylava ...\n\nRecommended way to set pylava options when using pytest \u2014 configuration\nfiles (see below).\n\n.. _Pytest: http://pytest.org\n\nWriting a linter\n----------------\nYou can write a custom extension for Pylava. Custom linter should be a\npython module. Name should be like ``pylava_``.\n\nIn ``setup.py``, ``pylava.linter`` entry point should be defined.\n\nExample:\n\n.. code:: python\n\n setup(\n # ...\n entry_points={\n 'pylava.linter': ['lintername = pylava_lintername.main:Linter'],\n }\n # ...\n )\n\n``Linter`` should be instance of ``pylava.lint.Linter`` class. Must\nimplement two methods:\n\n- ``allow`` takes a path and returns true if linter can check this file for errors.\n- ``run`` takes a path and meta keywords params and returns a list of errors.\n\nExample\n~~~~~~~\nJust a virtual 'WOW' checker.\n\nsetup.py:\n\n.. code:: python\n\n setup(\n name='pylava_wow',\n install_requires=[ 'setuptools' ],\n entry_points={\n 'pylava.linter': ['wow = pylava_wow.main:Linter'],\n }\n # ...\n )\n\npylava_wow.py:\n\n.. code:: python\n\n from pylava.lint import Linter as BaseLinter\n\n class Linter(BaseLinter):\n\n def allow(self, path):\n return 'wow' in path\n\n def run(self, path, **meta):\n with open(path) as f:\n if 'wow' in f.read():\n return [{\n lnum: 0,\n col: 0,\n text: 'Wow has been found.',\n type: 'WOW'\n }]\n\n\nRun pylava from python code\n---------------------------\n.. code:: python\n\n from pylava.main import check_path, parse_options\n\n # Use and/or modify 0 or more of the options defined as keys in the\n # variable my_redefined_options below. To use defaults for any\n # option, remove that key completely.\n my_redefined_options = {\n 'linters': ['pep257', 'pydocstyle', 'pycodestyle', 'pyflakes' ...],\n 'ignore': ['D203', 'D213', 'D406', 'D407', 'D413' ...],\n 'select': ['R1705' ...],\n 'sort': 'F,E,W,C,D,...',\n 'skip': '*__init__.py,*/test/*.py,...',\n 'async': True,\n 'force': True\n ...\n }\n # relative path of the directory in which pylama should check\n my_path = '...'\n\n options = parse_options([my_path], **my_redefined_options)\n errors = check_path(options, rootdir='.')\n\n\n\nSupport\n-------\nTo report bugs, suggest improvements, or ask questions, please create a\nnew issue at http://github.com/pylava/pylava/issues.\n\n\nContributing\n------------\nDevelopment of Pylava happens at the ``master`` branch of\nhttps://github.com/pylava/pylava.\n\n\nContributors\n------------\nSee AUTHORS_.\n\n.. _AUTHORS: https://github.com/pylava/pylava/blob/master/AUTHORS.rst\n\n\nLicense\n-------\nThis is free software. You are permitted to use, copy, modify, merge,\npublish, distribute, sublicense, and/or sell copies of it, under the\nterms of the MIT License. See LICENSE.rst_ for the complete license.\n\nThis software is provided WITHOUT ANY WARRANTY; without even the implied\nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See\nLICENSE.rst_ for the complete disclaimer.\n\n.. _LICENSE.rst: https://github.com/pylava/pylava/blob/master/LICENSE.rst\n\nThe original README from Pylama that made Pylama available under a BSD\nlicense and the original LICENSE file with the GNU LGPL license text are\narchived in the `pylama-archive\n`_\ndirectory.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pylava/pylava", "keywords": "pylint,pep8,pycodestyle,pyflakes,mccabe,linter,qa,pep257,pydocstyle", "license": "MIT", "maintainer": "Susam Pal", "maintainer_email": "susam@susam.in", "name": "pylava", "package_url": "https://pypi.org/project/pylava/", "platform": "Any", "project_url": "https://pypi.org/project/pylava/", "project_urls": { "Homepage": "https://github.com/pylava/pylava" }, "release_url": "https://pypi.org/project/pylava/0.2.2/", "requires_dist": [ "mccabe (>=0.5.2)", "pycodestyle (>=2.3.1)", "pydocstyle (>=2.0.0)", "pyflakes (>=1.5.0)" ], "requires_python": "", "summary": "Pylava -- Code audit tool for Python", "version": "0.2.2" }, "last_serial": 4376282, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1b8c0f16287ffbcad9bf11df893e9386", "sha256": "83e18f229ce2f68f826ef3b3ce4b6796a55769ab427d8c5f80a9105dd618a695" }, "downloads": -1, "filename": "pylava-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1b8c0f16287ffbcad9bf11df893e9386", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26094, "upload_time": "2018-08-15T10:45:35", "url": "https://files.pythonhosted.org/packages/77/de/5d081c54e028037c15b225011152b35612f8bd99fcade2988344f5804cb0/pylava-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d49f42ece18eaad8adae98169fc60f1d", "sha256": "1600361913a7daa0157053733d44b346d2e9cb954e8bf5bae2c1a1c8122eced6" }, "downloads": -1, "filename": "pylava-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d49f42ece18eaad8adae98169fc60f1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30060, "upload_time": "2018-08-15T10:42:37", "url": "https://files.pythonhosted.org/packages/57/0c/1356d0d57c6eddde18b4c6159609cabe9a11f8bcfffe7b37d612fd637f67/pylava-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3542136e724bbd347ed09f75a51b4abb", "sha256": "cf21d63a01f2b8076727cf5677632d6767c34954797aecc89935fcac61047b10" }, "downloads": -1, "filename": "pylava-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3542136e724bbd347ed09f75a51b4abb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26085, "upload_time": "2018-08-15T10:58:01", "url": "https://files.pythonhosted.org/packages/e2/44/1b04d4e329eef4d1d2bede21a54a657ad45f6106b7df3443cb3e09f789a3/pylava-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fee30fdb0893d8d33dabf629a5c77fd6", "sha256": "b4e7e75f7521ab8d6d5c29779986825f826d6a91f402d4976099ea75e14b2cb1" }, "downloads": -1, "filename": "pylava-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fee30fdb0893d8d33dabf629a5c77fd6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29596, "upload_time": "2018-08-15T10:56:19", "url": "https://files.pythonhosted.org/packages/52/d6/dbbba1aa699b8a3dafffc3bc80559d4510c91c4a2cf609a9502de071094b/pylava-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a0e6a5ea51c84b202807fc14e6e889b8", "sha256": "98b6acba48055901129ad3d3b14096b92ebe1f8b88577677a14a3224d05f1600" }, "downloads": -1, "filename": "pylava-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a0e6a5ea51c84b202807fc14e6e889b8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26394, "upload_time": "2018-08-15T14:18:51", "url": "https://files.pythonhosted.org/packages/11/34/3e23cc4c325dc3159b5ae7f399c41eac0934ae93354d81113761290a5ef9/pylava-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d677c984860b6b6641661c245074e43a", "sha256": "d342be2041b1696351de980a8c608f7ca5ffec0059c8cdb26481303cee25230d" }, "downloads": -1, "filename": "pylava-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d677c984860b6b6641661c245074e43a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26515, "upload_time": "2018-08-15T14:18:53", "url": "https://files.pythonhosted.org/packages/ab/dd/c7bd361062c29c1e75def94c22a8f2fe0ac2b5963adb956b003914590b6d/pylava-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "8391c273f6480d638e638c105ba6c9c9", "sha256": "39813844ff4551268f8b5bbf67d28691dec45577a6ae32853d469f9a625d9680" }, "downloads": -1, "filename": "pylava-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8391c273f6480d638e638c105ba6c9c9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26703, "upload_time": "2018-08-24T10:02:57", "url": "https://files.pythonhosted.org/packages/24/ac/53c13b44c1743429f910c97f774de0402c5f3d5c8de9f583b2c5e86c0fe0/pylava-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bde52e2808be889131a9b0d1df607a23", "sha256": "8de84b4ba3747505120f0e38723035f8c942a558bd6db13e364c29d9bf705457" }, "downloads": -1, "filename": "pylava-0.2.0.tar.gz", "has_sig": false, "md5_digest": "bde52e2808be889131a9b0d1df607a23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27107, "upload_time": "2018-08-24T10:02:59", "url": "https://files.pythonhosted.org/packages/c0/b9/b689befdb18ce7f6dc996d2a84346c202dc93f21f381be345103ee345c58/pylava-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ae0c50089a878c0e71a7eae6cea831fb", "sha256": "20d12927f866c2d31c7d16cc4201a02c36ad26212f36f13e6725e0c40502520e" }, "downloads": -1, "filename": "pylava-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae0c50089a878c0e71a7eae6cea831fb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26703, "upload_time": "2018-08-27T14:53:13", "url": "https://files.pythonhosted.org/packages/2a/1b/a976fc7958aea3ffbb1b1a437b965f7260fa5d55a1eba15c6a09fde90b94/pylava-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20a56d83b62967919aabdf3aca8eafb4", "sha256": "667320f3a9eab9f3528b6a83e4e7e92eb8b4791a654402b2f48fd927f01a81a1" }, "downloads": -1, "filename": "pylava-0.2.1.tar.gz", "has_sig": false, "md5_digest": "20a56d83b62967919aabdf3aca8eafb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32787, "upload_time": "2018-08-27T14:53:16", "url": "https://files.pythonhosted.org/packages/78/08/67f025c8f3721042f94212823fd3a3b99fc35772e26b4acca50bb50c238e/pylava-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "15a0449dd56c7230a4a9f5ea4e88b318", "sha256": "b2fc881e9112a36f5a8a97bdbbedfa1704bbb65c34afa630e6df31532ae20994" }, "downloads": -1, "filename": "pylava-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "15a0449dd56c7230a4a9f5ea4e88b318", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26703, "upload_time": "2018-10-15T04:55:03", "url": "https://files.pythonhosted.org/packages/e9/6f/74f09c1fb41e6f9171e0d1ea1c35cd436e92ef35498da8cbe946e03e5414/pylava-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b87387c54eb65552ab86f061a5360363", "sha256": "dcdecb6668cb8c4a38e0ee4fdb5f4d9488793af57bc040d89b0d1142f13b8622" }, "downloads": -1, "filename": "pylava-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b87387c54eb65552ab86f061a5360363", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27085, "upload_time": "2018-10-15T04:55:05", "url": "https://files.pythonhosted.org/packages/37/05/de2b3c4f34a802f0ee225adbc8f4ecf8f18b1b5e2aa9c04233a07df3b864/pylava-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "15a0449dd56c7230a4a9f5ea4e88b318", "sha256": "b2fc881e9112a36f5a8a97bdbbedfa1704bbb65c34afa630e6df31532ae20994" }, "downloads": -1, "filename": "pylava-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "15a0449dd56c7230a4a9f5ea4e88b318", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26703, "upload_time": "2018-10-15T04:55:03", "url": "https://files.pythonhosted.org/packages/e9/6f/74f09c1fb41e6f9171e0d1ea1c35cd436e92ef35498da8cbe946e03e5414/pylava-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b87387c54eb65552ab86f061a5360363", "sha256": "dcdecb6668cb8c4a38e0ee4fdb5f4d9488793af57bc040d89b0d1142f13b8622" }, "downloads": -1, "filename": "pylava-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b87387c54eb65552ab86f061a5360363", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27085, "upload_time": "2018-10-15T04:55:05", "url": "https://files.pythonhosted.org/packages/37/05/de2b3c4f34a802f0ee225adbc8f4ecf8f18b1b5e2aa9c04233a07df3b864/pylava-0.2.2.tar.gz" } ] }