[commands] Allow FlagCommand subclasses to inherit options
This commit is contained in:
parent
42463bae67
commit
cfe93f19b1
@ -268,14 +268,11 @@ class FlagsMeta(type):
|
|||||||
bases: Tuple[type, ...],
|
bases: Tuple[type, ...],
|
||||||
attrs: Dict[str, Any],
|
attrs: Dict[str, Any],
|
||||||
*,
|
*,
|
||||||
case_insensitive: bool = False,
|
case_insensitive: bool = MISSING,
|
||||||
delimiter: str = ':',
|
delimiter: str = MISSING,
|
||||||
prefix: str = '',
|
prefix: str = MISSING,
|
||||||
):
|
):
|
||||||
attrs['__commands_is_flag__'] = True
|
attrs['__commands_is_flag__'] = True
|
||||||
attrs['__commands_flag_case_insensitive__'] = case_insensitive
|
|
||||||
attrs['__commands_flag_delimiter__'] = delimiter
|
|
||||||
attrs['__commands_flag_prefix__'] = prefix
|
|
||||||
|
|
||||||
if not prefix and not delimiter:
|
if not prefix and not delimiter:
|
||||||
raise TypeError('Must have either a delimiter or a prefix set')
|
raise TypeError('Must have either a delimiter or a prefix set')
|
||||||
@ -303,6 +300,23 @@ class FlagsMeta(type):
|
|||||||
if base.__dict__.get('__commands_is_flag__', False):
|
if base.__dict__.get('__commands_is_flag__', False):
|
||||||
flags.update(base.__dict__['__commands_flags__'])
|
flags.update(base.__dict__['__commands_flags__'])
|
||||||
aliases.update(base.__dict__['__commands_flag_aliases__'])
|
aliases.update(base.__dict__['__commands_flag_aliases__'])
|
||||||
|
if case_insensitive is MISSING:
|
||||||
|
attrs['__commands_flag_case_insensitive__'] = base.__dict__['__commands_flag_case_insensitive__']
|
||||||
|
if delimiter is MISSING:
|
||||||
|
attrs['__commands_flag_delimiter__'] = base.__dict__['__commands_flag_delimiter__']
|
||||||
|
if prefix is MISSING:
|
||||||
|
attrs['__commands_flag_prefix__'] = base.__dict__['__commands_flag_prefix__']
|
||||||
|
|
||||||
|
if case_insensitive is not MISSING:
|
||||||
|
attrs['__commands_flag_case_insensitive__'] = case_insensitive
|
||||||
|
if delimiter is not MISSING:
|
||||||
|
attrs['__commands_flag_delimiter__'] = delimiter
|
||||||
|
if prefix is not MISSING:
|
||||||
|
attrs['__commands_flag_prefix__'] = prefix
|
||||||
|
|
||||||
|
case_insensitive = attrs.setdefault('__commands_flag_case_insensitive__', False)
|
||||||
|
delimiter = attrs.setdefault('__commands_flag_delimiter__', ':')
|
||||||
|
prefix = attrs.setdefault('__commands_flag_prefix__', '')
|
||||||
|
|
||||||
for flag_name, flag in get_flags(attrs, global_ns, local_ns).items():
|
for flag_name, flag in get_flags(attrs, global_ns, local_ns).items():
|
||||||
flags[flag_name] = flag
|
flags[flag_name] = flag
|
||||||
|
Loading…
x
Reference in New Issue
Block a user