Skip to main content
Version: 2.0 (deprecated)

mypy_source_plugin


A MyPy plugin loaded through source code.

To load a source plugin:

1. Write your plugin. See https://mypy.readthedocs.io/en/stable/extending_mypy.html.
2. Define a `mypy_source_plugin` target with the plugin's Python file(s) included in the
`sources` field.
3. Add `plugins = path.to.module` to your MyPy config file, using the name of the module
without source roots. For example, if your Python file is called
`pants-plugins/mypy_plugins/custom_plugin.py`, and you set `pants-plugins` as a source root,
then set `plugins = mypy_plugins.custom_plugin`. Set the `config`
option in the `[mypy]` scope to point to your MyPy config file.
4. Set the option `source_plugins` in the `[mypy]` scope to include this target's
address, e.g. `source_plugins = ["pants-plugins/mypy_plugins:plugin"]`.

To instead load a third-party plugin, set the option extra_requirements in the [mypy] scope (see https://www.pantsbuild.org/v2.0/docs/python-typecheck-goal). Set plugins in your config file, like you'd do with a source plugin.

This target type is treated similarly to a python_library target. For example, Python linters and formatters will run on this target.

You can depend on other targets and Pants's dependency inference will add them to the dependencies field, including any third-party requirements and python_library targets (even if their source files live in a different directory).

Other targets can depend on this target. This allows you to write a python_tests target for this code or a python_distribution target to distribute the plugin externally.

Backend: ``


sources

Iterable[str]
required

A list of files and globs that belong to this target. Paths are relative to the BUILD file's directory. You can ignore files/globs by prefixing them with !. Example: sources=['example.py', 'test_*.py', '!test_ignore.py'].

compatibility

str | Iterable[str] | None
default: None

A string for Python interpreter constraints on this target. This should be written in Requirement-style format, e.g. CPython==2.7.* or CPython>=3.6,<4. As a shortcut, you can leave off CPython, e.g. >=2.7 will be expanded to CPython>=2.7. If this is left off, this will default to the option interpreter_constraints in the [python-setup] scope. See https://www.pantsbuild.org/docs/python-interpreter-compatibility.

dependencies

Iterable[str] | None
default: None

Addresses to other targets that this target depends on, e.g. ['helloworld/subdir:lib']. Alternatively, you may include file names. Pants will find which target owns that file, and create a new target from that which only includes the file in its sources field. For files relative to the current BUILD file, prefix with ./; otherwise, put the full path, e.g. ['./sibling.txt', 'resources/demo.json']. You may exclude dependencies by prefixing with !, e.g. ['!helloworld/subdir:lib', '!./sibling.txt']. Ignores are intended for false positives with dependency inference; otherwise, simply leave off the dependency from the BUILD file.

description

str | None
default: None

A human-readable description of the target. Use ./pants list --documented :: to see all targets with descriptions.

tags

Iterable[str] | None
default: None

Arbitrary strings that you can use to describe a target. For example, you may tag some test targets with 'integration_test' so that you could run ./pants --tags='integration_test' test :: to only run on targets with that tag.