{ "info": { "author": "Florent Xicluna", "author_email": "florent.xicluna@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 7 - Inactive", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance" ], "description": "flint - the modular Python source code checker\r\n==============================================\r\n\r\nFlint is a thin wrapper around some Python checkers.\r\n\r\n.. note::\r\n ``flint`` is now merged into `Flake8 2.0\r\n `_.\r\n Please consider https://pypi.python.org/pypi/flake8 instead.\r\n\r\n----\r\n\r\n\r\nFeatures\r\n--------\r\n\r\n* Based on the ``pep8`` and the ``pyflakes`` checkers.\r\n\r\n* Easy to configure, with unified output.\r\n\r\n* Extendable through ``flint.extension`` entry points.\r\n\r\n* Plugin examples:\r\n `flint-mccabe `_ and\r\n `pep8-naming `_\r\n\r\n\r\nInstallation\r\n------------\r\n\r\nYou can install, upgrade, uninstall ``flint`` with these commands::\r\n\r\n $ pip install flint\r\n $ pip install --upgrade flint\r\n $ pip uninstall flint\r\n\r\n\r\nUsage and output\r\n----------------\r\n\r\nFlint runs all the registered checkers with a single ``flint`` script.\r\nIt accepts the same options as the ``pep8`` tool and additional options\r\nfor the plugins. The output merges the errors from all the tools.\r\n\r\nExample (with McCabe plugin)::\r\n\r\n $ flint --version\r\n 0.1 (pep8: 1.4.2, pyflakes: 0.6.1, mccabe: 0.1)\r\n $\r\n $ flint --first --max-complexity 10 optparse.py\r\n optparse.py:61:11: E401 multiple imports on one line\r\n optparse.py:65:1: E302 expected 2 blank lines, found 1\r\n optparse.py:235:34: W602 deprecated form of raising exception\r\n optparse.py:265:5: E303 too many blank lines (2)\r\n optparse.py:375:31: E211 whitespace before '('\r\n optparse.py:404:17: E201 whitespace after '{'\r\n optparse.py:404:23: E203 whitespace before ':'\r\n optparse.py:407:53: E202 whitespace before '}'\r\n optparse.py:530:20: E124 closing bracket does not match visual indentation\r\n optparse.py:597:21: W601 .has_key() is deprecated, use 'in'\r\n optparse.py:637:34: E721 do not compare types, use 'isinstance()'\r\n optparse.py:639:80: E501 line too long (81 > 79 characters)\r\n optparse.py:700:17: E125 continuation line does not distinguish itself from next logical line\r\n optparse.py:1387:1: F841 local variable 'stop' is assigned to but never used\r\n optparse.py:1504:1: C901 'OptionParser._process_short_opts' is too complex (10)\r\n $\r\n\r\n\r\nConfiguration\r\n-------------\r\n\r\nThe behaviour may be configured at two levels.\r\n\r\nThe user settings are read from the ``~/.config/flint`` file.\r\nExample::\r\n\r\n [flint]\r\n ignore = E226,E302,E41\r\n max-line-length = 160\r\n\r\nAt the project level, a ``tox.ini`` file or a ``setup.cfg`` file is read\r\nif present. Only the first file is considered. If this file does not\r\nhave a ``[flint]`` section, no project specific configuration is loaded.\r\n\r\nIf the ``ignore`` option is not in the configuration and not in the arguments,\r\nonly the error codes ``E226`` and ``E241/E242`` are ignored (see below).\r\n\r\n\r\nMessage codes\r\n-------------\r\n\r\nThe convention of Flint is to assign a code to each error or warning, like\r\nthe ``pep8`` tool. These codes are used to configure the list of errors\r\nwhich are selected or ignored.\r\n\r\nEach code consists of an upper case ASCII letter followed by three digits.\r\nThe recommendation is to use a different prefix for each plugin.\r\n\r\nA list of the known prefixes is published below:\r\n\r\n- ``E***``/``W***``: `pep8 errors and warnings\r\n `_\r\n- ``F***``: PyFlakes codes (see below)\r\n- ``C9**``: McCabe complexity plugin `flint-mccabe\r\n `_\r\n- ``N8**``: Naming Conventions plugin `pep8-naming\r\n `_\r\n\r\n\r\nThe original PyFlakes does not provide error codes. Flint patches the PyFlakes\r\nmessages to add the following codes:\r\n\r\n+------+--------------------------------------------------------------------+\r\n| code | sample message |\r\n+======+====================================================================+\r\n| F401 | ``module`` imported but unused |\r\n+------+--------------------------------------------------------------------+\r\n| F402 | import ``module`` from line ``N`` shadowed by loop variable |\r\n+------+--------------------------------------------------------------------+\r\n| F403 | 'from ``module`` import \\*' used; unable to detect undefined names |\r\n+------+--------------------------------------------------------------------+\r\n| F404 | future import(s) ``name`` after other statements |\r\n+------+--------------------------------------------------------------------+\r\n+------+--------------------------------------------------------------------+\r\n| F811 | redefinition of unused ``name`` from line ``N`` |\r\n+------+--------------------------------------------------------------------+\r\n| F812 | list comprehension redefines ``name`` from line ``N`` |\r\n+------+--------------------------------------------------------------------+\r\n| F821 | undefined name ``name`` |\r\n+------+--------------------------------------------------------------------+\r\n| F822 | undefined name ``name`` in __all__ |\r\n+------+--------------------------------------------------------------------+\r\n| F823 | local variable ``name`` ... referenced before assignment |\r\n+------+--------------------------------------------------------------------+\r\n| F831 | duplicate argument ``name`` in function definition |\r\n+------+--------------------------------------------------------------------+\r\n| F841 | local variable ``name`` is assigned to but never used |\r\n+------+--------------------------------------------------------------------+\r\n\r\n\r\nOriginal projects\r\n-----------------\r\n\r\nThank you to the authors of the various projects which are the building blocks\r\nof Flint:\r\n\r\n- pep8: https://github.com/jcrocholl/pep8\r\n- pyflakes: https://launchpad.net/pyflakes\r\n- flake8: https://bitbucket.org/tarek/flake8\r\n\r\n\r\nLinks\r\n-----\r\n\r\n* `pep8 documentation `_\r\n\r\n* `flake8 documentation `_\r\n\r\n* `flint on GitHub `_\r\n\r\n\r\nChangelog\r\n---------\r\n\r\n\r\n0.2 (2013-02-23)\r\n````````````````\r\n\r\n* Rename extension ``flint-naming`` to ``pep8-naming``\r\n\r\n* Read ``builtins`` from the configuration file (Issue #1)\r\n\r\n\r\n0.1 (2013-02-11)\r\n````````````````\r\n\r\n* First release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/flintwork/flint", "keywords": "flint pep8 pyflakes flake8 lint", "license": "Expat license", "maintainer": "", "maintainer_email": "", "name": "flint", "package_url": "https://pypi.org/project/flint/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/flint/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/flintwork/flint" }, "release_url": "https://pypi.org/project/flint/0.2/", "requires_dist": null, "requires_python": null, "summary": "Obsolete - the modular Python source code checker", "version": "0.2" }, "last_serial": 675774, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "67069f3cc735d4959ca7481f5f500897", "sha256": "bb9fae357946b311da081e86bb65833dca51135f6e44fec3c09f416523ae32fc" }, "downloads": -1, "filename": "flint-0.1.tar.gz", "has_sig": false, "md5_digest": "67069f3cc735d4959ca7481f5f500897", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6286, "upload_time": "2013-02-11T08:04:08", "url": "https://files.pythonhosted.org/packages/5a/42/4cb65d0071f527bb3c7cd829d59265ea9a88026393b37290ae3ede9f4549/flint-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "b529881051d6717eb2f2e1ec337da191", "sha256": "2b27fbd848d524fdd487e196d28def8cbbf19f7e054d0c0bcd6ede375cd9fabb" }, "downloads": -1, "filename": "flint-0.2.tar.gz", "has_sig": false, "md5_digest": "b529881051d6717eb2f2e1ec337da191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6374, "upload_time": "2013-02-23T23:42:40", "url": "https://files.pythonhosted.org/packages/75/5d/206126cbbc3a0e311091e49f974dbd45adba6ab1f3336409d493090f0be6/flint-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b529881051d6717eb2f2e1ec337da191", "sha256": "2b27fbd848d524fdd487e196d28def8cbbf19f7e054d0c0bcd6ede375cd9fabb" }, "downloads": -1, "filename": "flint-0.2.tar.gz", "has_sig": false, "md5_digest": "b529881051d6717eb2f2e1ec337da191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6374, "upload_time": "2013-02-23T23:42:40", "url": "https://files.pythonhosted.org/packages/75/5d/206126cbbc3a0e311091e49f974dbd45adba6ab1f3336409d493090f0be6/flint-0.2.tar.gz" } ] }