mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
[commands] Fix regression with Union converters not working
This was due to the Literal restriction from earlier.
This commit is contained in:
parent
185b554a56
commit
c250b9fc02
@ -112,6 +112,7 @@ def _evaluate_annotation(
|
|||||||
|
|
||||||
if hasattr(tp, '__args__'):
|
if hasattr(tp, '__args__'):
|
||||||
implicit_str = True
|
implicit_str = True
|
||||||
|
is_literal = False
|
||||||
args = tp.__args__
|
args = tp.__args__
|
||||||
if not hasattr(tp, '__origin__'):
|
if not hasattr(tp, '__origin__'):
|
||||||
if PY_310 and tp.__class__ is types.Union:
|
if PY_310 and tp.__class__ is types.Union:
|
||||||
@ -129,12 +130,13 @@ def _evaluate_annotation(
|
|||||||
if not PY_310:
|
if not PY_310:
|
||||||
args = flatten_literal_params(tp.__args__)
|
args = flatten_literal_params(tp.__args__)
|
||||||
implicit_str = False
|
implicit_str = False
|
||||||
|
is_literal = True
|
||||||
|
|
||||||
evaluated_args = tuple(
|
evaluated_args = tuple(
|
||||||
_evaluate_annotation(arg, globals, locals, cache, implicit_str=implicit_str) for arg in args
|
_evaluate_annotation(arg, globals, locals, cache, implicit_str=implicit_str) for arg in args
|
||||||
)
|
)
|
||||||
|
|
||||||
if not all(isinstance(x, (str, int, bool, float, complex)) for x in evaluated_args):
|
if is_literal and not all(isinstance(x, (str, int, bool, float, complex)) for x in evaluated_args):
|
||||||
raise TypeError('Literal arguments must be of type str, int, bool, float or complex.')
|
raise TypeError('Literal arguments must be of type str, int, bool, float or complex.')
|
||||||
|
|
||||||
if evaluated_args == args:
|
if evaluated_args == args:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user