Browse Source

Add support for converters working with PEP-563

pull/1521/merge
Bryan Forbes 7 years ago
committed by Rapptz
parent
commit
ef89d3aa22
  1. 12
      discord/ext/commands/core.py

12
discord/ext/commands/core.py

@ -173,8 +173,20 @@ class Command:
self.description = inspect.cleandoc(kwargs.get('description', ''))
self.hidden = kwargs.get('hidden', False)
signature = inspect.signature(callback)
annotations = typing.get_type_hints(callback)
self.params = signature.parameters.copy()
# PEP-563 allows postponing evaluation of annotations with a __future__
# import. When postponed, Parameter.annotation will be a string and must
# be replaced with the real class from typing.get_type_hints() for the
# converters to work later on
for key, value in self.params.items():
if isinstance(value.annotation, str) and key in annotations:
self.params[key] = value.replace(annotation=annotations[key])
self.checks = kwargs.get('checks', [])
self.module = callback.__module__
self.ignore_extra = kwargs.get('ignore_extra', True)

Loading…
Cancel
Save