diff --git a/docs/source/command_line.rst b/docs/source/command_line.rst index cbd72a217d29..76f403000ce3 100644 --- a/docs/source/command_line.rst +++ b/docs/source/command_line.rst @@ -1082,6 +1082,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 c83ac180817b..3ed00c47abf2 100644 --- a/mypy/main.py +++ b/mypy/main.py @@ -1143,6 +1143,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" ) @@ -1499,6 +1507,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