Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added CLI support for Mypy Plugins #18104

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
5 changes: 5 additions & 0 deletions docs/source/command_line.rst
Original file line number Diff line number Diff line change
Expand Up @@ -888,6 +888,11 @@ in developing or debugging mypy internals.
This flag will invoke the Python debugger when mypy encounters
a fatal error.

.. option:: --extend-plugins, --ep {MODULE|PLUGIN_FILE} ...

This flag acts as a supplementary way to pass (a list of) plugins to customize
Mypy's type checking approach. See :ref:`extending-mypy` for more details.

.. option:: --show-traceback, --tb

If set, this flag will display a full traceback when mypy
Expand Down
13 changes: 13 additions & 0 deletions mypy/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -1008,6 +1008,14 @@ def add_invertible_flag(
title="Advanced options", description="Debug and customize mypy internals."
)
internals_group.add_argument("--pdb", action="store_true", help="Invoke pdb on fatal error")
internals_group.add_argument(
"--extend-plugins",
"--ep",
type=lambda s: [item.strip() for item in s.split(",")],
metavar="{MODULE|PLUGIN_FILE}",
dest="special-opts:cli_plugins",
help="Include user defined plugins during Mypy's type analysis",
)
internals_group.add_argument(
"--show-traceback", "--tb", action="store_true", help="Show traceback on fatal error"
)
Expand Down Expand Up @@ -1291,6 +1299,11 @@ def set_strict_flags() -> None:
special_opts = argparse.Namespace()
parser.parse_args(args, SplitNamespace(options, special_opts, "special-opts:"))

# Parse extra plugins passed via cli args
if special_opts.cli_plugins:
options.plugins.extend(special_opts.cli_plugins)
dibrinsofor marked this conversation as resolved.
Show resolved Hide resolved
print(special_opts.cli_plugins)

# The python_version is either the default, which can be overridden via a config file,
# or stored in special_opts and is passed via the command line.
options.python_version = special_opts.python_version or options.python_version
Expand Down
Loading