A simple plugin that allows running mypy from PyCharm and navigate between errors

Overview

mypy logo

mypy-PyCharm-plugin

The plugin provides a simple terminal to run fast mypy daemon from PyCharm with a single click or hotkey and easily navigate through type checking results. The idea of the mypy terminal is different from the normal PyCharm type checking that highlights the errors in a current file. The mypy terminal shows errors in all files in your project (even in those not currently open). Also mypy provides a bit stricter type checking and is tunable by various flags and config settings.

mypy plugin screenshot

Installation

The plugin can be installed directly from JetBrains plugin repository

Installing developer build

Requirements for building the plugin:

  • Oracle JDK 8
    • Either javac should be available on your PATH or JAVA_HOME environment variable should contain your JDK installation path

Requirements for running the plugin:

  • Mypy
    • The plugin runs the mypy executable to check types

Installation steps:

  1. Clone the GitHub repository.

  2. Open the cloned directory in your terminal and build it using this shell command:

    ./gradlew clean buildPlugin
    

    or on Windows:

    gradlew clean buildPlugin
    

    The plugin file mypy-PyCharm-plugin.zip will be built in build/distributions.

  3. In PyCharm go to Preferences -> Plugins -> Install plugins from disk -> Select the plugin file -> Restart PyCharm when prompted.

  4. After restart you should find the plugin in View -> Tool windows -> Mypy terminal.

Configuration

Normally, plugin should not require any configuration steps. However, sometimes plugin cannot find dmypy command because it doesn't have the full environment. If the plugin says something like dmypy command not found when you try to run mypy, then this is likely the cause. In this case right click in mypy terminal in PyCharm -> Configure plugin. Then enter the path where mypy is installed as PATH suffix. If you are using a virtual environment, this will look like /my/project/bin (or C:\my\project\Scripts if you are on Windows). If necessary, you can also configure mypy command to use your custom .ini file and flags.

Usage

You can pin the terminal to either side of PyCharm window: click on window toolbar → Move. The current default is bottom, which works best if you typically have only a few errors. If you are working on legacy code with many mypy errors, you may want to use the ‘left’ or ‘right’ setting. Finally, if you have multiple monitors you might find the floating mode convenient.

Currently supported features and keyboard shortcuts:

  • Show/hide mypy terminal: Ctrl + Shift + X
  • Run mypy type checking: Ctrl + Shift + M or click Run
  • Go to error: click on error line, or use Ctrl + Shift + <arrows> to navigate between errors
  • Copy current error: right click → Copy error text, or Ctrl + Shift + C
  • Collapse/expand errors: click on file name in the mypy terminal, or Ctrl + Shift + Enter when a file name is selected
  • Sometimes mypy shows links to online documentation; to follow links use Alt + <click>

Contributing

External contributions to the project should be subject to Dropbox Contributor License Agreement (CLA).

  1. Open the repository in IntelliJ 2019.1 or newer via File -> Open. IntelliJ will import it as a Gradle project.

  2. Set up a project JDK via File -> Project Structure -> Project -> Project SDK. JDK 8 or newer is required.

  3. Build and run the plugin via a Gradle task runIde available as View -> Tool Windows -> Gradle -> Tasks -> intellij -> runIde.


Copyright (c) 2018 Dropbox, Inc.

Owner
Dropbox
Dropbox
Flake8 plugin for managing type-checking imports & forward references

flake8-type-checking Lets you know which imports to put in type-checking blocks. For the imports you've already defined inside type-checking blocks, i

snok 67 Dec 16, 2022
Static Typing for Python

Python static typing home. Contains the source for typing_extensions and the documentation. Also hosts a user help forum.

Python 1.3k Jan 06, 2023
open source tools to generate mypy stubs from protobufs

mypy-protobuf: Generate mypy stub files from protobuf specs We just released a new major release mypy-protobuf 2. on 02/02/2021! It includes some back

Dropbox 527 Jan 03, 2023
Mylint - My really simple rendition of how a linter works.

mylint My really simple rendition of how a linter works. This original version was written for my AST article. Since then I've added tests and turned

Tushar Sadhwani 2 Dec 29, 2021
Easy saving and switching between multiple KDE configurations.

Konfsave Konfsave is a config manager. That is, it allows you to save, back up, and easily switch between different (per-user) system configurations.

42 Sep 25, 2022
Check for python builtins being used as variables or parameters

Flake8 Builtins plugin Check for python builtins being used as variables or parameters. Imagine some code like this: def max_values(list, list2):

Gil Forcada Codinachs 98 Jan 08, 2023
Backport Python 3.8+ typing utils & add issubtype & more

typing-utils Backport Python3.8+ typing utils & issubtype & more Install API issubtype get_origin get_args get_type_hints Install pip install typi

10 Nov 09, 2022
Tool to check the completeness of MANIFEST.in for Python packages

check-manifest Are you a Python developer? Have you uploaded packages to the Python Package Index? Have you accidentally uploaded broken packages with

Marius Gedminas 270 Dec 26, 2022
Flake8 plugin to find commented out or dead code

flake8-eradicate flake8 plugin to find commented out (or so called "dead") code. This is quite important for the project in a long run. Based on eradi

wemake.services 277 Dec 27, 2022
Flake8 extension for enforcing trailing commas in python

Flake8 Extension to enforce better comma placement. Usage If you are using flake8 it's as easy as: pip install flake8-commas Now you can avoid those a

Python Code Quality Authority 127 Sep 03, 2022
flake8 plugin to catch useless `assert` statements

flake8-useless-assert flake8 plugin to catch useless assert statements Download or install on the PyPI page Violations Code Description Example ULA001

1 Feb 12, 2022
Flashcards - A flash card application with 2 optional command line arguments

Flashcards A flash card application with 2 optional command line arguments impor

Özgür Yildirim 2 Jul 15, 2022
A Pylint plugin to analyze Flask applications.

pylint-flask About pylint-flask is Pylint plugin for improving code analysis when editing code using Flask. Inspired by pylint-django. Problems pylint

Joe Schafer 62 Sep 18, 2022
The mypy playground. Try mypy with your web browser.

mypy-playground The mypy playground provides Web UI to run mypy in the sandbox: Features Web UI and sandbox for running mypy eas

Yusuke Miyazaki 57 Jan 02, 2023
Pymxs, the 3DsMax bindings of Maxscript to Python doesn't come with any stubs

PyMXS Stubs generator What Pymxs, the 3DsMax bindings of Maxscript to Python doe

Frieder Erdmann 19 Dec 27, 2022
MonkeyType as a pytest plugin.

MonkeyType as a pytest plugin.

Marius van Niekerk 36 Nov 24, 2022
Unbearably fast O(1) runtime type-checking in pure Python.

Look for the bare necessities, the simple bare necessities. Forget about your worries and your strife. — The Jungle Book.

beartype 1.4k Jan 01, 2023
It's not just a linter that annoys you!

README for Pylint - https://pylint.pycqa.org/ Professional support for pylint is available as part of the Tidelift Subscription. Tidelift gives softwa

Python Code Quality Authority 4.4k Jan 04, 2023
Simple Python style checker in one Python file

pycodestyle (formerly called pep8) - Python style guide checker pycodestyle is a tool to check your Python code against some of the style conventions

Python Code Quality Authority 4.7k Jan 01, 2023
docstring style checker

pydocstyle - docstring style checker pydocstyle is a static analysis tool for checking compliance with Python docstring conventions. pydocstyle suppor

Python Code Quality Authority 982 Jan 03, 2023