|
|
from argparse import HelpFormatter |
|
|
from operator import attrgetter |
|
|
|
|
|
class ArgparseAlphabetizer(HelpFormatter): |
|
|
""" |
|
|
Sorts the optional arguments of an argparse parser alphabetically |
|
|
""" |
|
|
|
|
|
@staticmethod |
|
|
def sort_actions(actions): |
|
|
return sorted(actions, key=attrgetter("option_strings")) |
|
|
|
|
|
|
|
|
def add_arguments(self, actions): |
|
|
actions = ArgparseAlphabetizer.sort_actions(actions) |
|
|
super(ArgparseAlphabetizer, self).add_arguments(actions) |
|
|
|
|
|
|
|
|
def add_usage(self, usage, actions, groups, prefix=None): |
|
|
actions = ArgparseAlphabetizer.sort_actions(actions) |
|
|
args = usage, actions, groups, prefix |
|
|
super(ArgparseAlphabetizer, self).add_usage(*args) |
|
|
|
|
|
|
|
|
def remove_arguments(parser, args): |
|
|
for arg in args: |
|
|
for action in parser._actions: |
|
|
opts = vars(action)["option_strings"] |
|
|
if(arg in opts): |
|
|
parser._handle_conflict_resolve(None, [(arg, action)]) |
|
|
|