tools (misc): do not remove flags while using them anymore, instead added "all_used" and "unused" properties in FlagsHandler
This commit is contained in:
parent
485dfdf705
commit
e92971ff09
2 changed files with 16 additions and 11 deletions
|
|
@ -369,8 +369,8 @@ class Jp(object):
|
|||
pubsub_group.add_argument("-m", "--max", type=int, default=10,
|
||||
help=_(u"maximum number of items to get ({no_limit} to get all items)".format(no_limit=C.NO_LIMIT)))
|
||||
|
||||
if flags:
|
||||
raise exceptions.InternalError('unknowns flags: {flags}'.format(flags=u', '.join(flags)))
|
||||
if not flags.all_used:
|
||||
raise exceptions.InternalError('unknown flags: {flags}'.format(flags=u', '.join(flags.unused)))
|
||||
if defaults:
|
||||
raise exceptions.InternalError('unused defaults: {defaults}'.format(defaults=defaults))
|
||||
|
||||
|
|
|
|||
|
|
@ -67,24 +67,29 @@ class FlagsHandler(object):
|
|||
|
||||
the instance is initialized with an iterable
|
||||
then attribute return True if flag is set, False else.
|
||||
WARNING: If a flag is checked, it is removed (i.e. unset)
|
||||
this is done to use bool(flags_handler) to check if all flags
|
||||
have been used
|
||||
"""
|
||||
|
||||
def __init__(self, flags):
|
||||
self.flags = set(flags or [])
|
||||
self._used_flags = set()
|
||||
|
||||
def __getattr__(self, flag):
|
||||
try:
|
||||
self.flags.remove(flag)
|
||||
except KeyError:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
self._used_flags.add(flag)
|
||||
return flag in self.flags
|
||||
|
||||
def __len__(self):
|
||||
return len(self.flags)
|
||||
|
||||
def __iter__(self):
|
||||
return self.flags.__iter__()
|
||||
|
||||
@property
|
||||
def all_used(self):
|
||||
"""Return True if all flags have been used"""
|
||||
return self._used_flags.issuperset(self.flags)
|
||||
|
||||
@property
|
||||
def unused(self):
|
||||
"""Return flags which has not been used yet"""
|
||||
return self.flags.difference(self._used_flags)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue