mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
[commands] Add support for type statement and NewType
This commit is contained in:
parent
692db7e9ab
commit
9fab99acbc
@ -68,6 +68,7 @@ import re
|
||||
import os
|
||||
import sys
|
||||
import types
|
||||
import typing
|
||||
import warnings
|
||||
import logging
|
||||
|
||||
@ -1080,6 +1081,7 @@ def as_chunks(iterator: _Iter[T], max_size: int) -> _Iter[List[T]]:
|
||||
|
||||
|
||||
PY_310 = sys.version_info >= (3, 10)
|
||||
PY_312 = sys.version_info >= (3, 12)
|
||||
|
||||
|
||||
def flatten_literal_params(parameters: Iterable[Any]) -> Tuple[Any, ...]:
|
||||
@ -1118,6 +1120,16 @@ def evaluate_annotation(
|
||||
cache[tp] = evaluated
|
||||
return evaluated
|
||||
|
||||
if PY_312 and getattr(tp.__repr__, '__objclass__', None) is typing.TypeAliasType: # type: ignore
|
||||
temp_locals = dict(**locals, **{t.__name__: t for t in tp.__type_params__})
|
||||
annotation = evaluate_annotation(tp.__value__, globals, temp_locals, cache.copy())
|
||||
if hasattr(tp, '__args__'):
|
||||
annotation = annotation[tp.__args__]
|
||||
return annotation
|
||||
|
||||
if hasattr(tp, '__supertype__'):
|
||||
return evaluate_annotation(tp.__supertype__, globals, locals, cache)
|
||||
|
||||
if hasattr(tp, '__metadata__'):
|
||||
# Annotated[X, Y] can access Y via __metadata__
|
||||
metadata = tp.__metadata__[0]
|
||||
|
Loading…
x
Reference in New Issue
Block a user