summaryrefslogtreecommitdiff
path: root/src/flake8/options
diff options
context:
space:
mode:
authorAnthony Sottile <asottile@umich.edu>2019-08-19 15:58:34 -0700
committerAnthony Sottile <asottile@umich.edu>2019-08-19 15:58:34 -0700
commit8fd36ba15b2673d0d9a230da88c7353013e44574 (patch)
treeda3ab723f712b1e67ab70b4aeee20ebee7b3ce31 /src/flake8/options
parentf265b2275b2d131df7af023f0c8b4835bc3b2575 (diff)
downloadflake8-8fd36ba15b2673d0d9a230da88c7353013e44574.tar.gz
Put plugin options into separate argparse groups
Diffstat (limited to 'src/flake8/options')
-rw-r--r--src/flake8/options/manager.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py
index 219e0ad..9dd9128 100644
--- a/src/flake8/options/manager.py
+++ b/src/flake8/options/manager.py
@@ -1,9 +1,10 @@
"""Option handling and Option management logic."""
import argparse
import collections
+import contextlib
import functools
import logging
-from typing import Any, Dict, List, Optional, Set
+from typing import Any, Dict, Generator, List, Optional, Set, Union
from flake8 import utils
@@ -312,7 +313,9 @@ class OptionManager(object):
:param str usage:
Basic usage string used by the OptionParser.
"""
- self.parser = argparse.ArgumentParser(prog=prog, usage=usage)
+ self.parser = argparse.ArgumentParser(
+ prog=prog, usage=usage
+ ) # type: Union[argparse.ArgumentParser, argparse._ArgumentGroup]
self.version_action = self.parser.add_argument(
"--version", action="version", version=version
)
@@ -330,6 +333,16 @@ class OptionManager(object):
"""Convert a PluginVersion into a dictionary mapping name to value."""
return {attr: getattr(plugin, attr) for attr in ["name", "version"]}
+ @contextlib.contextmanager
+ def group(self, name): # type: (str) -> Generator[None, None, None]
+ """Attach options to an argparse group during this context."""
+ group = self.parser.add_argument_group(name)
+ self.parser, orig_parser = group, self.parser
+ try:
+ yield
+ finally:
+ self.parser = orig_parser
+
def add_option(self, *args, **kwargs):
"""Create and register a new option.