diff --git a/docs/source/command_line.rst b/docs/source/command_line.rst index 92db5d59d0ee..82f399b5264b 100644 --- a/docs/source/command_line.rst +++ b/docs/source/command_line.rst @@ -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 diff --git a/mypy/main.py b/mypy/main.py index ae3e7d75be7f..f39cf08022c1 100644 --- a/mypy/main.py +++ b/mypy/main.py @@ -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" ) @@ -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) + 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