Commit Graph

624 Commits

Author SHA1 Message Date
fb024546ff [commands] Fix Literal converter not working within flags 2021-04-24 08:55:55 -04:00
1c312a158a [commands] Add FlagConverter.__iter__ 2021-04-24 08:53:36 -04:00
91c473db57 [commands] Fix _HelpCommandImpl.clean_params popitem 2021-04-23 02:24:09 -04:00
8e9860077d [commands] Fix flag detection code in get_flags 2021-04-23 02:23:07 -04:00
a55e817ffe Fix documentation for RoleConverter 2021-04-21 23:24:04 -04:00
8457f70477 [commands] Set constructible FlagConverter flags to not be required 2021-04-21 23:21:02 -04:00
cfe93f19b1 [commands] Allow FlagCommand subclasses to inherit options 2021-04-21 07:16:23 -04:00
42463bae67 [commands] Add support for aliasing to FlagConverter 2021-04-21 00:31:01 -04:00
0c1c9284f6 Fix typo within HelpCommand.verify_checks documentation 2021-04-21 00:18:32 -04:00
6065329c0e [commands] Avoid creating unnecessary flag mapping copies 2021-04-20 08:02:40 -04:00
15bfdf66b2 [commands] Default construct flags if they're not passed as parameters
This only applies if and only if the flag can be default constructible.
Ergo, all the flags are optional or not required.
2021-04-20 08:00:47 -04:00
18bf3d3a7d [commands] Actually expose the FlagError base error 2021-04-19 10:27:24 -04:00
ddb71e2aed [commands] Initial support for FlagConverter
The name is currently pending and there's no command.signature hook
for it yet since this requires bikeshedding.
2021-04-19 10:25:08 -04:00
c54e43360b [commands] Add run_converters helper to call converters 2021-04-19 04:46:02 -04:00
09f3f2111c [commands] Add Context.current_parameter 2021-04-19 04:41:32 -04:00
7fb746e6e5 [commands] Refactor evaluation functions to allow passing in localns 2021-04-18 04:10:19 -04:00
ef9bb79e91 [tasks] Move the Loop's sleep to be before exit conditions
This change makes it more so that `Loop.stop()` gracefully makes the
current iteration the final one, by waiting AND THEN returning.
The current implementation is closer to `cancel`, while also not.

I encountered this because I was trying to run a
`@tasks.loop(count=1)`, and inside it I print some text and change the
interval, and in an `after_loop`, I restart the loop.

Without this change, it immediately floods my console, due to
not waiting before executing `after_loop`.
2021-04-16 22:35:18 -04:00
5dec62f4c0 [commands] Add a converter for discord.Object 2021-04-16 08:18:57 -04:00
d3ac191a67 Restrict snowflake regexes to 15-20 digits 2021-04-16 07:33:44 -04:00
ffea48f218 [commands] Remove HelpCommand.clean_prefix (#6736) 2021-04-15 21:28:08 -04:00
5ea5f32479 [commands] Fix missing re import in Context 2021-04-15 08:04:24 -04:00
ed3c141f5e [commands] Add clean_prefix attribute to commands.Context 2021-04-14 22:09:40 -04:00
74b07a3218 [commands] Fix Command.clean_params to return a regular dict 2021-04-11 16:30:28 -04:00
af5964358d [commands] Strip text to remove spaces before ellipsis 2021-04-11 15:19:45 -04:00
74d8ad2013 [commands] Add support for Python 3.10 Union typing 2021-04-11 02:11:24 -04:00
1ecadf057e [commands] Fix errors with cooldown mappings 2021-04-11 01:00:04 -04:00
7f91ae8b67 [commands] use __args__ and __origin__ where applicable 2021-04-11 00:38:17 -04:00
c54c4cb215 [commands] Fix repr for Greedy 2021-04-10 22:34:24 -04:00
3151672cfe [commands] Refactor typing evaluation to not use get_type_hints
get_type_hints had a few issues:

1. It would convert = None default parameters to Optional
2. It would not allow values as type annotations
3. It would not implicitly convert some string literals as ForwardRef

In Python 3.9 `list['Foo']` does not convert into
`list[ForwardRef('Foo')]` even though `typing.List` does this
behaviour. In order to streamline it, evaluation had to be rewritten
manually to support our usecases.

This patch also flattens nested typing.Literal which was not done
until Python 3.9.2.
2021-04-10 20:56:08 -04:00
27886e5aa4 [commands] Remove legacy ExtensionNotFound.original attribute 2021-04-10 15:52:53 -04:00
353737239a [commands] Minimise code duplication in channel converters 2021-04-10 14:01:26 -04:00
bcd3a00eaf [commands] Make commands.Greedy a typing.Generic 2021-04-10 07:27:32 -04:00
f2d5ab6f80 [commands] Provide a dynamic cooldown system 2021-04-10 03:30:01 -04:00
68aef92b37 [commands]Add typing.Literal converter 2021-04-10 02:50:59 -04:00
4134a17a29 [commands] Raise error when a cog name is already registered 2021-04-08 22:04:10 -04:00
99fc950510 Use f-strings in more places that were missed. 2021-04-08 06:02:47 -04:00
1c553f51fb [commands] Use has_error_handler instead in command_error 2021-04-07 23:42:52 -04:00
f80b8d3f5d [commands] Only replace annotation if one was given 2021-04-07 03:17:36 -04:00
89456022cf Add __all__ to remaining modules 2021-04-07 02:30:32 -04:00
7a34de1570 [commands] Use typing.get_type_hints to resolve ForwardRefs 2021-04-06 23:24:23 -04:00
9ab58d302d [commands] Fix classmethod converters not working.
Protocols sure are annoying.
2021-04-05 23:52:28 -04:00
ee5bb07c02 [commands] Revert conversion code back to how it was originally 2021-04-05 23:24:47 -04:00
0efb720cec [commands] Fix AttributeError for classes missing convert attribute 2021-04-05 23:12:27 -04:00
6d74514729 [commands] Fix logic in Cog.has_error_handler() 2021-04-05 21:39:22 -04:00
682b73abb6 [commands] Address incorrect use of subclass (from type perspective)
This is a follow up from #6641
2021-04-05 21:39:17 -04:00
d0476e98df [commands] Add more type information to public API of converters 2021-04-05 21:31:28 -04:00
83bd76504a Use covariant TypeVar for protocol 2021-04-05 20:29:15 -04:00
fbe6e2f520 [commands] Fix @classmethod converters 2021-04-05 20:25:23 -04:00
34ab772653 Use typing.Protocol instead of abc.ABCMeta 2021-04-04 18:05:49 -04:00
adaf7c6192 [commands] Use positional only parameter for Context.invoke 2021-04-04 07:04:01 -04:00