{
"info": {
"author": "\u0141ukasz Langa",
"author_email": "lukasz@langa.pl",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Environment :: Console",
"Framework :: Flake8",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Quality Assurance"
],
"description": "flake8-mypy\n===========\n\n|Build Status|\n\nA plugin for `Flake8 `__ integrating\n`mypy `__. The idea is to enable limited type\nchecking as a linter inside editors and other tools that already support\n*Flake8* warning syntax and config.\n\nNOTE: This plugin requires *mypy* >=0.500, as of Mar 1st no released\nversion satisfies this yet. You can use master in the mean time.\n\nList of warnings\n----------------\n\n*flake8-mypy* reserves **T4** for all current and future codes, T being\nthe natural letter for typing-related errors. There are other plugins\ngreedily reserving the entire letter **T**. To this I say:\n``\u00af\\_(\u30c4)_/\u00af``.\n\n**T400**: any typing note.\n\n**T484**: any typing error (after PEP 484, geddit?).\n\n**T498**: internal *mypy* error.\n\n**T499**: internal *mypy* traceback, stderr output, or an unmatched\nline.\n\nI plan to support more fine-grained error codes for specific *mypy*\nerrors in the future.\n\nTwo levels of type checking\n---------------------------\n\n*mypy* shines when given a full program to analyze. You can then use\noptions like ``--follow-imports`` or ``--disallow-untyped-calls`` to\nexercise the full transitive closure of your modules, catching errors\nstemming from bad API usage or incompatible types. That being said,\nthose checks take time, and require access to the entire codebase. For\nsome tools, like an editor with an open file, or a code review tool,\nachieving this is not trivial. This is where a more limited approach\ninside a linter comes in.\n\n*Flake8* operates on unrelated files, it doesn't perform full program\nanalysis. In other words, it doesn't follow imports. This is a curse and\na blessing. We cannot find complex problems and the number of warnings\nwe can safely show without risking false positives is lower. In return,\nwe can provide useful warnings with great performance, usable for\nrealtime editor integration.\n\nAs it turns out, in this mode of operation, *mypy* is still able to\nprovide useful information on the annotations within and at least usage\nof stubbed standard library and third party libraries. However, for best\neffects, you will want to use separate configuration for *mypy*'s\nstandalone mode and for usage as a *Flake8* plugin.\n\nConfiguration\n-------------\n\nDue to the reasoning above, by default *flake8-mypy* will operate with\noptions equivalent to the following:\n\n.. code:: ini\n\n [mypy]\n # Specify the target platform details in config, so your developers are\n # free to run mypy on Windows, Linux, or macOS and get consistent\n # results.\n python_version=3.6\n platform=linux\n\n # flake8-mypy expects the two following for sensible formatting\n show_column_numbers=True\n show_error_context=False\n\n # do not follow imports (except for ones found in typeshed)\n follow_imports=skip\n\n # since we're ignoring imports, writing .mypy_cache doesn't make any sense\n cache_dir=/dev/null\n\n # suppress errors about unsatisfied imports\n ignore_missing_imports=True\n\n # allow untyped calls as a consequence of the options above\n disallow_untyped_calls=False\n\n # allow returning Any as a consequence of the options above\n warn_return_any=False\n\n # treat Optional per PEP 484\n strict_optional=True\n\n # ensure all execution paths are returning\n warn_no_return=True\n\n # lint-style cleanliness for typing needs to be disabled; returns more errors\n # than the full run.\n warn_redundant_casts=False\n warn_unused_ignores=False\n\n # The following are off by default since they're too noisy.\n # Flip them on if you feel adventurous.\n disallow_untyped_defs=False\n check_untyped_defs=False\n\nIf you disagree with the defaults above, you can specify your own *mypy*\nconfiguration by providing the ``--mypy-config=`` command-line option to\n*Flake8* (with the .flake8/setup.cfg equivalent being called\n``mypy_config``). The value of that option should be a path to a\nmypy.ini or setup.cfg compatible file. For full configuration syntax,\nfollow `mypy\ndocumentation `__.\n\nFor the sake of simplicity and readability, the config you provide will\nfully replace the one listed above. Values left out will be using\n*mypy*'s own defaults.\n\nRemember that for the best user experience, your linter integration mode\nshouldn't generally display errors that a full run of *mypy* wouldn't.\nThis would be confusing.\n\nNote: chaing the ``follow_imports`` option might have surprising\neffects. If the file you're linting with Flake8 has other files around\nit, then in \"silent\" or \"normal\" mode those files will be used to follow\nimports. This includes imports from\n`typeshed `__.\n\nTests\n-----\n\nJust run:\n\n::\n\n python setup.py test\n\nOMG, this is Python 3 only!\n---------------------------\n\nYes, so is *mypy*. Relax, you can run *Flake8* with all popular plugins\n**as a tool** perfectly fine under Python 3.5+ even if you want to\nanalyze Python\u00a02 code. This way you'll be able to parse all of the new\nsyntax supported on Python 3 but also *effectively all* the Python 2\nsyntax at the same time.\n\nBy making the code exclusively Python 3.5+, I'm able to focus on the\nquality of the checks and re-use all the nice features of the new\nreleases (check out\n`pathlib `__) instead of wasting\ncycles on Unicode compatibility, etc.\n\nLicense\n-------\n\nMIT\n\nChange Log\n----------\n\n17.8.0\n~~~~~~\n\n- avoid raising errors in the default config which don't happen during\n a full run (disable warn\\_unused\\_ignores and warn\\_redundant\\_casts)\n\n- always run type checks from a temporary directory to avoid clashing\n with unrelated files in the same directory\n\n17.3.3\n~~~~~~\n\n- suppress *mypy* messages about relative imports\n\n17.3.2\n~~~~~~\n\n- bugfix: using *Flake8* with absolute paths now correctly matches\n *mypy* messages\n\n- bugfix: don't crash on relative imports in the form\n ``from . import X``\n\n17.3.1\n~~~~~~\n\n- switch ``follow_imports`` from \"silent\" to \"skip\" to avoid name\n clashing files being used to follow imports within\n `typeshed `__\n\n- set MYPYPATH by default to give stubs from typeshed higher priority\n than local sources\n\n17.3.0\n~~~~~~\n\n- performance optimization: skip running *mypy* over files that contain\n no annotations or imports from ``typing``\n\n- bugfix: when running over an entire directory, T484 is now correctly\n used instead of T499\n\n17.2.0\n~~~~~~\n\n- first published version\n\n- date-versioned\n\nAuthors\n-------\n\nGlued together by `\u0141ukasz Langa `__.\n\n.. |Build Status| image:: https://travis-ci.org/ambv/flake8-mypy.svg?branch=master\n :target: https://travis-ci.org/ambv/flake8-mypy\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://github.com/ambv/flake8-mypy",
"keywords": "flake8 mypy bugs linter qa typing",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "flake8-mypy",
"package_url": "https://pypi.org/project/flake8-mypy/",
"platform": "",
"project_url": "https://pypi.org/project/flake8-mypy/",
"project_urls": {
"Homepage": "https://github.com/ambv/flake8-mypy"
},
"release_url": "https://pypi.org/project/flake8-mypy/17.8.0/",
"requires_dist": [
"attrs",
"flake8 (>=3.0.0)",
"mypy"
],
"requires_python": "",
"summary": "A plugin for flake8 integrating mypy.",
"version": "17.8.0"
},
"last_serial": 3139062,
"releases": {
"17.2.0": [
{
"comment_text": "",
"digests": {
"md5": "128702377b298598e6966f25d2708eea",
"sha256": "9cf89d2af713270eb5e2d8984b80fd865f177248cec9c9cce514136d8be24f94"
},
"downloads": -1,
"filename": "flake8_mypy-17.2.0-py35.py36-none-any.whl",
"has_sig": false,
"md5_digest": "128702377b298598e6966f25d2708eea",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 9790,
"upload_time": "2017-02-27T10:50:40",
"url": "https://files.pythonhosted.org/packages/45/d0/3cc2ab2838d9e61080861886d6638fa62aab2e3a77fbd4f90415a2dc160a/flake8_mypy-17.2.0-py35.py36-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "701d7e280f81be71c608812074b9677e",
"sha256": "00fa9bee391370bf53f264fb5f74d4f8cfbffc3ec2116b913bf026e5d5550257"
},
"downloads": -1,
"filename": "flake8-mypy-17.2.0.zip",
"has_sig": false,
"md5_digest": "701d7e280f81be71c608812074b9677e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14993,
"upload_time": "2017-02-27T10:39:05",
"url": "https://files.pythonhosted.org/packages/75/35/e39513eda0ea3e151f7622a1213609b078c4deac55e38ea215c48f5ae14b/flake8-mypy-17.2.0.zip"
}
],
"17.3.0": [
{
"comment_text": "",
"digests": {
"md5": "7d63131583333bdcf7e2dcda97677857",
"sha256": "455dbdf0d479c54b09597fdb76f2580162870046af23f17ecbf73f5bd1c59e4d"
},
"downloads": -1,
"filename": "flake8_mypy-17.3.0-py35.py36-none-any.whl",
"has_sig": false,
"md5_digest": "7d63131583333bdcf7e2dcda97677857",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 10528,
"upload_time": "2017-03-02T02:40:23",
"url": "https://files.pythonhosted.org/packages/cc/1f/d579b70573e0f23503bfb61c93ecaf95afec41595f43965f43174216d76b/flake8_mypy-17.3.0-py35.py36-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "27ab6a506f75c2c5ceb0cf10a5153309",
"sha256": "6c001d58b0122b0ce0a8b81be9aa572a50041df23df3b48ccf57f4d0e6ce328e"
},
"downloads": -1,
"filename": "flake8-mypy-17.3.0.tar.gz",
"has_sig": false,
"md5_digest": "27ab6a506f75c2c5ceb0cf10a5153309",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8641,
"upload_time": "2017-03-02T02:40:04",
"url": "https://files.pythonhosted.org/packages/3d/49/f862851222655f9f24af6ac074e4021a04e0be60f14ac94c6cbfde5d9c9c/flake8-mypy-17.3.0.tar.gz"
}
],
"17.3.1": [
{
"comment_text": "",
"digests": {
"md5": "27cc987f9baa46e2d45353255b9ededc",
"sha256": "644e24f5347c1c229e7a5c57b8c282a5f17b6fcafb4f0ed2391dba61fed83d5a"
},
"downloads": -1,
"filename": "flake8_mypy-17.3.1-py35.py36-none-any.whl",
"has_sig": false,
"md5_digest": "27cc987f9baa46e2d45353255b9ededc",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 11683,
"upload_time": "2017-03-02T10:04:45",
"url": "https://files.pythonhosted.org/packages/30/e3/b9980ca4c0a2464b439c52d404942a9c37fcd5b9242ff6a7032732600d88/flake8_mypy-17.3.1-py35.py36-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "51ca0f797a191345629defd697a38de6",
"sha256": "01db96e6fe69a2759a22787408a34a488764fe3a1932eea672c8f22fd6fd5821"
},
"downloads": -1,
"filename": "flake8-mypy-17.3.1.tar.gz",
"has_sig": false,
"md5_digest": "51ca0f797a191345629defd697a38de6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9936,
"upload_time": "2017-03-02T10:04:41",
"url": "https://files.pythonhosted.org/packages/34/02/aa6088aa1acfe3fb17f8b374eca35c69743ea3d392cfd2a954148f673de1/flake8-mypy-17.3.1.tar.gz"
}
],
"17.3.2": [
{
"comment_text": "",
"digests": {
"md5": "776c4030a8a86cb561912bce5d296f88",
"sha256": "3751512cc5a31abbb9308d0d31a93082151afd1ecd7e91ef506b9b7fcb9d2254"
},
"downloads": -1,
"filename": "flake8_mypy-17.3.2-py35.py36-none-any.whl",
"has_sig": false,
"md5_digest": "776c4030a8a86cb561912bce5d296f88",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 12035,
"upload_time": "2017-03-05T20:03:14",
"url": "https://files.pythonhosted.org/packages/9c/84/5a92aa3f4745001b4f4f1c08952c9b4d7524966463111784a0dd83db5f24/flake8_mypy-17.3.2-py35.py36-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1342baf27ce0f9e622c7d644401a1d8c",
"sha256": "02caa6466db9b8a4fa0500f1ac5d45dd81473ed89b9e51dab3663e3316836ad2"
},
"downloads": -1,
"filename": "flake8-mypy-17.3.2.tar.gz",
"has_sig": false,
"md5_digest": "1342baf27ce0f9e622c7d644401a1d8c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10396,
"upload_time": "2017-03-05T20:03:12",
"url": "https://files.pythonhosted.org/packages/17/9e/8e7f63d12adcdc2e055ee123f3f1cffcf3fedb818f898c603e5eda881ff2/flake8-mypy-17.3.2.tar.gz"
}
],
"17.3.3": [
{
"comment_text": "",
"digests": {
"md5": "be1625a5846414a9f33a684a1cee7ae1",
"sha256": "e492034ed034e30230e3b7cacb4199a3859e73ac9287299c3b18643733fb7330"
},
"downloads": -1,
"filename": "flake8_mypy-17.3.3-py35.py36-none-any.whl",
"has_sig": false,
"md5_digest": "be1625a5846414a9f33a684a1cee7ae1",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 12157,
"upload_time": "2017-03-20T18:03:59",
"url": "https://files.pythonhosted.org/packages/26/21/54e5207539d0d77ee295bd4a70b709f73f2a3c866d13e1f3ea1473030639/flake8_mypy-17.3.3-py35.py36-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "4a1308e844565b2b8b23ba1c86e3b964",
"sha256": "91fd35d31821b6e792fcd3112d2af3ec63e9934d04de163d07b078821aaea63f"
},
"downloads": -1,
"filename": "flake8-mypy-17.3.3.tar.gz",
"has_sig": false,
"md5_digest": "4a1308e844565b2b8b23ba1c86e3b964",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10724,
"upload_time": "2017-03-20T18:03:51",
"url": "https://files.pythonhosted.org/packages/ca/d7/9b04cd39177f2a748e0a0343f6cb3a21931162952c6c03dc728d60626d81/flake8-mypy-17.3.3.tar.gz"
}
],
"17.8.0": [
{
"comment_text": "",
"digests": {
"md5": "033a9c997db8e7f3724b355ca262e2ba",
"sha256": "cff009f4250e8391bf48990093cff85802778c345c8449d6498b62efefeebcbc"
},
"downloads": -1,
"filename": "flake8_mypy-17.8.0-py35.py36-none-any.whl",
"has_sig": true,
"md5_digest": "033a9c997db8e7f3724b355ca262e2ba",
"packagetype": "bdist_wheel",
"python_version": "py35.py36",
"requires_python": null,
"size": 12664,
"upload_time": "2017-08-31T23:16:58",
"url": "https://files.pythonhosted.org/packages/a8/5d/b172de53870fc6fa2336a6f55dca0d67a70e2bf31218ed160aea3239e644/flake8_mypy-17.8.0-py35.py36-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "b45a6b182c89d3bc0a8e96881c9d6b6d",
"sha256": "47120db63aff631ee1f84bac6fe8e64731dc66da3efc1c51f85e15ade4a3ba18"
},
"downloads": -1,
"filename": "flake8-mypy-17.8.0.tar.gz",
"has_sig": true,
"md5_digest": "b45a6b182c89d3bc0a8e96881c9d6b6d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10994,
"upload_time": "2017-08-31T23:17:01",
"url": "https://files.pythonhosted.org/packages/97/9a/cddd1363d7314bb4eb452089c6fb3092ed9fda9f3350683d1978522a30ec/flake8-mypy-17.8.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "033a9c997db8e7f3724b355ca262e2ba",
"sha256": "cff009f4250e8391bf48990093cff85802778c345c8449d6498b62efefeebcbc"
},
"downloads": -1,
"filename": "flake8_mypy-17.8.0-py35.py36-none-any.whl",
"has_sig": true,
"md5_digest": "033a9c997db8e7f3724b355ca262e2ba",
"packagetype": "bdist_wheel",
"python_version": "py35.py36",
"requires_python": null,
"size": 12664,
"upload_time": "2017-08-31T23:16:58",
"url": "https://files.pythonhosted.org/packages/a8/5d/b172de53870fc6fa2336a6f55dca0d67a70e2bf31218ed160aea3239e644/flake8_mypy-17.8.0-py35.py36-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "b45a6b182c89d3bc0a8e96881c9d6b6d",
"sha256": "47120db63aff631ee1f84bac6fe8e64731dc66da3efc1c51f85e15ade4a3ba18"
},
"downloads": -1,
"filename": "flake8-mypy-17.8.0.tar.gz",
"has_sig": true,
"md5_digest": "b45a6b182c89d3bc0a8e96881c9d6b6d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10994,
"upload_time": "2017-08-31T23:17:01",
"url": "https://files.pythonhosted.org/packages/97/9a/cddd1363d7314bb4eb452089c6fb3092ed9fda9f3350683d1978522a30ec/flake8-mypy-17.8.0.tar.gz"
}
]
}