mirror of
https://github.com/AngxiaoYue/ReQFlow.git
synced 2026-06-04 20:24:22 +08:00
31 lines
1021 B
Python
31 lines
1021 B
Python
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"))
|
|
|
|
# Formats the help message
|
|
def add_arguments(self, actions):
|
|
actions = ArgparseAlphabetizer.sort_actions(actions)
|
|
super(ArgparseAlphabetizer, self).add_arguments(actions)
|
|
|
|
# Formats the usage message
|
|
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)])
|