hikari-arc 1.3.1__py3-none-any.whl → 1.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
arc/abc/client.py CHANGED
@@ -333,8 +333,8 @@ class Client(t.Generic[AppT], abc.ABC):
333
333
  inj_ctx = alluka.OverridingContext.from_client(self.injector)
334
334
 
335
335
  for hook in self._injection_hooks:
336
- if inspect.iscoroutinefunction(hook):
337
- await hook(ctx, inj_ctx)
336
+ if inspect.isawaitable(hook):
337
+ await hook(ctx, inj_ctx) # type: ignore
338
338
  else:
339
339
  hook(ctx, inj_ctx)
340
340
  return inj_ctx
@@ -483,7 +483,7 @@ class Client(t.Generic[AppT], abc.ABC):
483
483
  CommandT[te.Self]
484
484
  The next command that matches the given criteria.
485
485
 
486
- Examples
486
+ Example
487
487
  --------
488
488
  ```py
489
489
  for cmd in plugin.walk_commands(hikari.CommandType.SLASH):
@@ -561,7 +561,7 @@ class Client(t.Generic[AppT], abc.ABC):
561
561
  RuntimeError
562
562
  If the command is already added to a plugin.
563
563
 
564
- Examples
564
+ Example
565
565
  --------
566
566
  ```py
567
567
  @client.include # Add the command to the client.
@@ -637,7 +637,7 @@ class Client(t.Generic[AppT], abc.ABC):
637
637
  !!! note
638
638
  Parameters left as `hikari.UNDEFINED` will be inherited from the parent client.
639
639
 
640
- Examples
640
+ Example
641
641
  --------
642
642
  ```py
643
643
  group = client.include_slash_group("Group", "A group of commands.")
@@ -891,7 +891,7 @@ class Client(t.Generic[AppT], abc.ABC):
891
891
  te.Self
892
892
  The client for chaining calls.
893
893
 
894
- Examples
894
+ Example
895
895
  --------
896
896
  ```py
897
897
  @client.set_error_handler
@@ -942,7 +942,7 @@ class Client(t.Generic[AppT], abc.ABC):
942
942
  te.Self
943
943
  The client for chaining calls.
944
944
 
945
- Examples
945
+ Example
946
946
  --------
947
947
  ```py
948
948
  @client.add_startup_hook
@@ -989,7 +989,7 @@ class Client(t.Generic[AppT], abc.ABC):
989
989
  te.Self
990
990
  The client for chaining calls.
991
991
 
992
- Examples
992
+ Example
993
993
  --------
994
994
  ```py
995
995
  @client.add_shutdown_hook
@@ -1040,7 +1040,7 @@ class Client(t.Generic[AppT], abc.ABC):
1040
1040
  te.Self
1041
1041
  The client for chaining calls.
1042
1042
 
1043
- Examples
1043
+ Example
1044
1044
  --------
1045
1045
  ```py
1046
1046
  @client.set_startup_hook
@@ -1092,7 +1092,7 @@ class Client(t.Generic[AppT], abc.ABC):
1092
1092
  te.Self
1093
1093
  The client for chaining calls.
1094
1094
 
1095
- Examples
1095
+ Example
1096
1096
  --------
1097
1097
  ```py
1098
1098
  @client.set_shutdown_hook
@@ -1140,7 +1140,7 @@ class Client(t.Generic[AppT], abc.ABC):
1140
1140
  te.Self
1141
1141
  The client for chaining calls.
1142
1142
 
1143
- Examples
1143
+ Example
1144
1144
  --------
1145
1145
  ```py
1146
1146
  @client.set_command_locale_provider
@@ -1187,7 +1187,7 @@ class Client(t.Generic[AppT], abc.ABC):
1187
1187
  te.Self
1188
1188
  The client for chaining calls.
1189
1189
 
1190
- Examples
1190
+ Example
1191
1191
  --------
1192
1192
  ```py
1193
1193
  @client.set_option_locale_provider
@@ -1229,7 +1229,7 @@ class Client(t.Generic[AppT], abc.ABC):
1229
1229
  provider : CustomLocaleRequestT
1230
1230
  The custom locale provider to set.
1231
1231
 
1232
- Examples
1232
+ Example
1233
1233
  --------
1234
1234
  ```py
1235
1235
  @client.set_custom_locale_provider
@@ -1272,7 +1272,7 @@ class Client(t.Generic[AppT], abc.ABC):
1272
1272
  ValueError
1273
1273
  If the module does not have a loader.
1274
1274
 
1275
- Examples
1275
+ Example
1276
1276
  --------
1277
1277
  ```py
1278
1278
  client = arc.GatewayClient(...)
@@ -1337,7 +1337,7 @@ class Client(t.Generic[AppT], abc.ABC):
1337
1337
  ExtensionLoadError
1338
1338
  If a module does not have a loader defined.
1339
1339
 
1340
- Examples
1340
+ Example
1341
1341
  --------
1342
1342
  ```py
1343
1343
  client = arc.GatewayClient(...)
@@ -1438,7 +1438,7 @@ class Client(t.Generic[AppT], abc.ABC):
1438
1438
  te.Self
1439
1439
  The client for chaining calls.
1440
1440
 
1441
- Examples
1441
+ Example
1442
1442
  --------
1443
1443
  ```py
1444
1444
  class MyDependency:
@@ -1513,7 +1513,7 @@ class Client(t.Generic[AppT], abc.ABC):
1513
1513
  Command callbacks are automatically injected with dependencies,
1514
1514
  thus this decorator is not needed for them.
1515
1515
 
1516
- Examples
1516
+ Example
1517
1517
  --------
1518
1518
  ```py
1519
1519
  class MyDependency:
arc/abc/command.py CHANGED
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import abc
4
4
  import asyncio
5
- import inspect
6
5
  import typing as t
7
6
 
8
7
  import attr
@@ -549,10 +548,7 @@ class CommandBase(
549
548
  try:
550
549
  hooks = command._resolve_hooks()
551
550
  for hook in hooks:
552
- if inspect.iscoroutinefunction(hook):
553
- res = await ctx._injection_ctx.call_with_async_di(hook, ctx)
554
- else:
555
- res = ctx._injection_ctx.call_with_di(hook, ctx)
551
+ res = await ctx._injection_ctx.call_with_async_di(hook, ctx)
556
552
 
557
553
  res = t.cast(HookResult | None, res)
558
554
 
@@ -569,10 +565,7 @@ class CommandBase(
569
565
  try:
570
566
  post_hooks = command._resolve_post_hooks()
571
567
  for hook in post_hooks:
572
- if inspect.iscoroutinefunction(hook):
573
- await ctx._injection_ctx.call_with_async_di(hook, ctx)
574
- else:
575
- ctx._injection_ctx.call_with_di(hook, ctx)
568
+ await ctx._injection_ctx.call_with_async_di(hook, ctx)
576
569
  except Exception as e:
577
570
  await command._handle_exception(ctx, e)
578
571
  finally:
@@ -86,7 +86,7 @@ def with_concurrency_limit(
86
86
  t.Callable[[HasConcurrencyLimiterT], HasConcurrencyLimiterT]
87
87
  The object with the concurrency limiter set.
88
88
 
89
- Examples
89
+ Example
90
90
  --------
91
91
  ```py
92
92
  @client.include
arc/abc/error_handler.py CHANGED
@@ -39,7 +39,7 @@ class HasErrorHandler(abc.ABC, t.Generic[ClientT]):
39
39
 
40
40
  This function will be called when an exception is raised during the invocation of a command.
41
41
 
42
- Examples
42
+ Example
43
43
  --------
44
44
  ```py
45
45
  @client.include
arc/abc/hookable.py CHANGED
@@ -97,7 +97,7 @@ def with_hook(hook: HookT[ClientT]) -> t.Callable[[HookableT], HookableT]:
97
97
  and returns either a [`HookResult`][arc.abc.hookable.HookResult] or
98
98
  `None` can be used as a hook.
99
99
 
100
- Examples
100
+ Example
101
101
  --------
102
102
  ```py
103
103
  @client.include
@@ -127,7 +127,7 @@ def with_post_hook(hook: PostHookT[ClientT]) -> t.Callable[[HookableT], Hookable
127
127
  Post-execution hooks **are** called even if the command callback raises an exception.
128
128
  You can see if the command callback failed by checking [`Context.has_command_failed`][arc.context.base.Context.has_command_failed].
129
129
 
130
- Examples
130
+ Example
131
131
  --------
132
132
  ```py
133
133
  @client.include
arc/abc/option.py CHANGED
@@ -33,7 +33,7 @@ OriginT = t.TypeVar("OriginT")
33
33
  Option = t.Annotated
34
34
  """Alias for typing.Annotated.
35
35
 
36
- Examples
36
+ Example
37
37
  --------
38
38
  ```py
39
39
  arc.Option[type, arc.TypeParams(...)]
arc/abc/plugin.py CHANGED
@@ -295,7 +295,7 @@ class PluginBase(HasErrorHandler[ClientT], Hookable[ClientT], HasConcurrencyLimi
295
295
  !!! note
296
296
  Parameters left as `hikari.UNDEFINED` will be inherited from the parent plugin or client.
297
297
 
298
- Examples
298
+ Example
299
299
  --------
300
300
  ```py
301
301
  group = client.include_slash_group("Group", "A group of commands.")
@@ -340,7 +340,7 @@ class PluginBase(HasErrorHandler[ClientT], Hookable[ClientT], HasConcurrencyLimi
340
340
  Command callbacks are automatically injected with dependencies,
341
341
  thus this decorator is not needed for them.
342
342
 
343
- Examples
343
+ Example
344
344
  --------
345
345
  ```py
346
346
  class MyDependency:
@@ -439,7 +439,7 @@ class PluginBase(HasErrorHandler[ClientT], Hookable[ClientT], HasConcurrencyLimi
439
439
  CommandT[ClientT]
440
440
  The next command that matches the given criteria.
441
441
 
442
- Examples
442
+ Example
443
443
  --------
444
444
  ```py
445
445
  for cmd in plugin.walk_commands(hikari.CommandType.SLASH):
arc/client.py CHANGED
@@ -344,7 +344,7 @@ class GatewayClient(GatewayClientBase[hikari.GatewayBotAware]):
344
344
  If you already have an injector instance, you may pass it here.
345
345
  Otherwise, a new one will be created by default.
346
346
 
347
- Examples
347
+ Example
348
348
  --------
349
349
  ```py
350
350
  import hikari
@@ -390,7 +390,7 @@ class RESTClient(RESTClientBase[hikari.RESTBotAware]):
390
390
  Otherwise, a new one will be created by default.
391
391
 
392
392
 
393
- Examples
393
+ Example
394
394
  --------
395
395
  ```py
396
396
  import hikari
arc/command/message.py CHANGED
@@ -96,7 +96,7 @@ def message_command(
96
96
  name_localizations : t.Mapping[hikari.Locale, str] | None
97
97
  The localizations for this command's name.
98
98
 
99
- Examples
99
+ Example
100
100
  --------
101
101
  ```py
102
102
  @client.include
@@ -22,9 +22,6 @@ class AttachmentParams(OptionParams[hikari.Attachment]):
22
22
  ----------
23
23
  description : str
24
24
  The description of the option
25
-
26
- Other Parameters
27
- ----------------
28
25
  name : str
29
26
  The name of the option. If not provided, the name of the parameter will be used.
30
27
  name_localizations : Mapping[hikari.Locale, str] | None
@@ -21,9 +21,6 @@ class BoolParams(OptionParams[bool]):
21
21
  ----------
22
22
  description : str
23
23
  The description of the option
24
-
25
- Other Parameters
26
- ----------------
27
24
  name : str
28
25
  The name of the option. If not provided, the name of the parameter will be used.
29
26
  name_localizations : t.Optional[t.Mapping[str, str]]
@@ -28,9 +28,6 @@ class ChannelParams(OptionParams[hikari.PartialChannel]):
28
28
  ----------
29
29
  description : str
30
30
  The description of the option
31
-
32
- Other Parameters
33
- ----------------
34
31
  name : str
35
32
  The name of the option. If not provided, the name of the parameter will be used.
36
33
  name_localizations : Mapping[hikari.Locale, str]
@@ -24,9 +24,6 @@ class ColorParams(OptionParams[hikari.Color]):
24
24
  ----------
25
25
  description : str
26
26
  The description of the option
27
-
28
- Other Parameters
29
- ----------------
30
27
  name : str
31
28
  The name of the option. If not provided, the name of the parameter will be used.
32
29
  name_localizations : Mapping[hikari.Locale, str] | None
@@ -24,9 +24,6 @@ class MemberParams(OptionParams[hikari.InteractionMember]):
24
24
  ----------
25
25
  description : str
26
26
  The description of the option
27
-
28
- Other Parameters
29
- ----------------
30
27
  name : str
31
28
  The name of the option. If not provided, the name of the parameter will be used.
32
29
  name_localizations : Mapping[hikari.Locale, str] | None
@@ -27,9 +27,6 @@ class FloatParams(OptionWithChoicesParams[float, ClientT]):
27
27
  ----------
28
28
  description : str
29
29
  The description of the option
30
-
31
- Other Parameters
32
- ----------------
33
30
  name : str
34
31
  The name of the option. If not provided, the name of the parameter will be used.
35
32
  name_localizations : Mapping[hikari.Locale, str] | None
arc/command/option/int.py CHANGED
@@ -27,9 +27,6 @@ class IntParams(OptionWithChoicesParams[int, ClientT]):
27
27
  ----------
28
28
  description : str
29
29
  The description of the option
30
-
31
- Other Parameters
32
- ----------------
33
30
  name : str
34
31
  The name of the option. If not provided, the name of the parameter will be used.
35
32
  name_localizations : Mapping[hikari.Locale, str] | None
@@ -23,9 +23,6 @@ class MentionableParams(OptionParams[hikari.Role | hikari.User]):
23
23
  ----------
24
24
  description : str
25
25
  The description of the option
26
-
27
- Other Parameters
28
- ----------------
29
26
  name : str
30
27
  The name of the option. If not provided, the name of the parameter will be used.
31
28
  name_localizations : Mapping[hikari.Locale, str] | None
@@ -22,9 +22,6 @@ class RoleParams(OptionParams[hikari.Role]):
22
22
  ----------
23
23
  description : str
24
24
  The description of the option
25
-
26
- Other Parameters
27
- ----------------
28
25
  name : str
29
26
  The name of the option. If not provided, the name of the parameter will be used.
30
27
  name_localizations : t.Optional[t.Mapping[str, str]]
arc/command/option/str.py CHANGED
@@ -28,9 +28,6 @@ class StrParams(OptionWithChoicesParams[str, ClientT]):
28
28
  ----------
29
29
  description : str
30
30
  The description of the option
31
-
32
- Other Parameters
33
- ----------------
34
31
  name : str
35
32
  The name of the option. If not provided, the name of the parameter will be used.
36
33
  name_localizations : Mapping[hikari.Locale, str]
@@ -23,9 +23,6 @@ class UserParams(OptionParams[hikari.User]):
23
23
  ----------
24
24
  description : str
25
25
  The description of the option
26
-
27
- Other Parameters
28
- ----------------
29
26
  name : str
30
27
  The name of the option. If not provided, the name of the parameter will be used.
31
28
  name_localizations : Mapping[hikari.Locale, str] | None
arc/command/slash.py CHANGED
@@ -546,7 +546,7 @@ class SlashSubGroup(SubCommandBase[ClientT, SlashGroup[ClientT]]):
546
546
  raise exc
547
547
  except Exception as exc:
548
548
  assert self._parent is not None
549
- await ctx._injection_ctx.call_with_async_di(self._parent._handle_exception, ctx, exc)
549
+ await self._parent._handle_exception(ctx, exc)
550
550
 
551
551
  def _request_option_locale(self, client: Client[t.Any], command: CommandProto) -> None:
552
552
  super()._request_option_locale(client, command)
@@ -694,12 +694,12 @@ class SlashSubCommand(
694
694
  async def _handle_exception(self, ctx: Context[ClientT], exc: Exception) -> None:
695
695
  try:
696
696
  if self.error_handler:
697
- await self.error_handler(ctx, exc)
697
+ await ctx._injection_ctx.call_with_async_di(self.error_handler, ctx, exc)
698
698
  else:
699
699
  raise exc
700
700
  except Exception as e:
701
701
  assert self._parent is not None
702
- await self._handle_exception(ctx, e)
702
+ await self._parent._handle_exception(ctx, e)
703
703
 
704
704
  def _request_option_locale(self, client: Client[t.Any], command: CommandProto) -> None:
705
705
  super()._request_option_locale(client, command)
@@ -777,7 +777,7 @@ def slash_command(
777
777
  !!! note
778
778
  Parameters left as `hikari.UNDEFINED` will be inherited from the parent plugin or client.
779
779
 
780
- Examples
780
+ Example
781
781
  --------
782
782
  ```py
783
783
  @client.include
@@ -843,7 +843,7 @@ def slash_subcommand(
843
843
  !!! note
844
844
  Parameters left as `hikari.UNDEFINED` will be inherited from the parent group, plugin or client.
845
845
 
846
- Examples
846
+ Example
847
847
  --------
848
848
  ```py
849
849
  group = client.include_slash_group("group", "A group of slash commands.")
arc/command/user.py CHANGED
@@ -99,7 +99,7 @@ def user_command(
99
99
  name_localizations : t.Mapping[hikari.Locale, str] | None
100
100
  The localizations for this command's name.
101
101
 
102
- Examples
102
+ Example
103
103
  --------
104
104
  ```py
105
105
  @client.include
arc/context/base.py CHANGED
@@ -468,7 +468,7 @@ class Context(t.Generic[ClientT]):
468
468
  ValueT | None
469
469
  The value of the option, or None if it does not exist, or is not of the correct type.
470
470
 
471
- Examples
471
+ Example
472
472
  --------
473
473
  ```py
474
474
  value = ctx.get_option("name", arc.OptionType.STRING)
arc/extension.py CHANGED
@@ -20,7 +20,7 @@ def loader(
20
20
  ) -> t.Callable[[ClientT], None] | t.Callable[[t.Callable[[ClientT], None]], t.Callable[[ClientT], None]]:
21
21
  """Decorator to set the load callback for this module.
22
22
 
23
- Examples
23
+ Example
24
24
  --------
25
25
  ```py
26
26
  client.load_extension("my_extension")
@@ -61,7 +61,7 @@ def unloader(
61
61
  ) -> t.Callable[[ClientT], None] | t.Callable[[t.Callable[[ClientT], None]], t.Callable[[ClientT], None]]:
62
62
  """Decorator to set the unload callback for this module.
63
63
 
64
- Examples
64
+ Example
65
65
  --------
66
66
  ```py
67
67
  client.unload_extension("my_extension")
arc/internal/about.py CHANGED
@@ -5,7 +5,7 @@ __author_email__: t.Final[str] = "git@hypergonial.com"
5
5
  __maintainer__: t.Final[str] = "hypergonial"
6
6
  __license__: t.Final[str] = "MIT"
7
7
  __url__: t.Final[str] = "https://github.com/hypergonial/hikari-arc"
8
- __version__: t.Final[str] = "1.3.1"
8
+ __version__: t.Final[str] = "1.3.3"
9
9
 
10
10
  # MIT License
11
11
  #
arc/plugin.py CHANGED
@@ -42,7 +42,7 @@ class RESTPluginBase(PluginBase[RESTClientT]):
42
42
  is_nsfw : bool | hikari.UndefinedType
43
43
  Whether this plugin is only usable in NSFW channels
44
44
 
45
- Examples
45
+ Example
46
46
  --------
47
47
  ```py
48
48
  plugin = arc.RESTPlugin("MyPlugin")
@@ -90,7 +90,7 @@ class GatewayPluginBase(PluginBase[GatewayClientT]):
90
90
  is_nsfw : bool | hikari.UndefinedType
91
91
  Whether this plugin is only usable in NSFW channels
92
92
 
93
- Examples
93
+ Example
94
94
  --------
95
95
  ```py
96
96
  plugin = arc.GatewayPlugin("MyPlugin")
@@ -256,7 +256,7 @@ def global_concurrency(limit: int) -> CommandConcurrencyLimiter[t.Any]:
256
256
  CommandConcurrencyLimiter[t.Any]
257
257
  A concurrency limiter for use with a command.
258
258
 
259
- Examples
259
+ Example
260
260
  --------
261
261
  ```py
262
262
  @arc.with_concurrency_limit(arc.global_concurrency(1))
@@ -278,7 +278,7 @@ def guild_concurrency(limit: int) -> CommandConcurrencyLimiter[t.Any]:
278
278
  CommandConcurrencyLimiter[t.Any]
279
279
  A concurrency limiter for use with a command.
280
280
 
281
- Examples
281
+ Example
282
282
  --------
283
283
  ```py
284
284
  @arc.with_concurrency_limit(arc.guild_concurrency(1))
@@ -300,7 +300,7 @@ def channel_concurrency(limit: int) -> CommandConcurrencyLimiter[t.Any]:
300
300
  CommandConcurrencyLimiter[t.Any]
301
301
  A concurrency limiter for use with a command.
302
302
 
303
- Examples
303
+ Example
304
304
  --------
305
305
  ```py
306
306
  @arc.with_concurrency_limit(arc.channel_concurrency(1))
@@ -322,7 +322,7 @@ def user_concurrency(limit: int) -> CommandConcurrencyLimiter[t.Any]:
322
322
  CommandConcurrencyLimiter[t.Any]
323
323
  A concurrency limiter for use with a command.
324
324
 
325
- Examples
325
+ Example
326
326
  --------
327
327
  ```py
328
328
  @arc.with_concurrency_limit(arc.user_concurrency(1))
@@ -344,7 +344,7 @@ def member_concurrency(limit: int) -> CommandConcurrencyLimiter[t.Any]:
344
344
  CommandConcurrencyLimiter[t.Any]
345
345
  A concurrency limiter for use with a command.
346
346
 
347
- Examples
347
+ Example
348
348
  --------
349
349
  ```py
350
350
  @arc.with_concurrency_limit(arc.member_concurrency(1))
@@ -370,7 +370,7 @@ def custom_concurrency(
370
370
  CommandConcurrencyLimiter[t.Any]
371
371
  A concurrency limiter for use with a command.
372
372
 
373
- Examples
373
+ Example
374
374
  --------
375
375
  ```py
376
376
  # This is identical to 'arc.guild_concurrency(1)'
arc/utils/hooks/basic.py CHANGED
@@ -20,7 +20,7 @@ if t.TYPE_CHECKING:
20
20
  def guild_only(ctx: Context[t.Any]) -> HookResult:
21
21
  """A pre-execution hook that aborts the execution of a command if it is invoked outside of a guild.
22
22
 
23
- Examples
23
+ Example
24
24
  --------
25
25
  ```py
26
26
  @arc.with_hook(arc.guild_only)
@@ -39,7 +39,7 @@ def guild_only(ctx: Context[t.Any]) -> HookResult:
39
39
  def dm_only(ctx: Context[t.Any]) -> HookResult:
40
40
  """A pre-execution hook that aborts the execution of a command if it is invoked outside of a DM.
41
41
 
42
- Examples
42
+ Example
43
43
  --------
44
44
  ```py
45
45
  @arc.with_hook(arc.dm_only)
@@ -58,7 +58,7 @@ def dm_only(ctx: Context[t.Any]) -> HookResult:
58
58
  def owner_only(ctx: Context[t.Any]) -> HookResult:
59
59
  """A pre-execution hook that aborts the execution of a command if it is invoked by a non-owner.
60
60
 
61
- Examples
61
+ Example
62
62
  --------
63
63
  ```py
64
64
  @arc.with_hook(arc.owner_only)
@@ -105,7 +105,7 @@ def has_permissions(perms: hikari.Permissions) -> t.Callable[[Context[t.Any]], H
105
105
  InvokerMissingPermissionsError
106
106
  If the invoker is missing some of the specified permissions.
107
107
 
108
- Examples
108
+ Example
109
109
  --------
110
110
  ```py
111
111
  @arc.with_hook(arc.has_permissions(hikari.Permissions.MANAGE_CHANNELS | hikari.Permissions.MANAGE_GUILD))
@@ -149,7 +149,7 @@ def bot_has_permissions(perms: hikari.Permissions) -> t.Callable[[Context[t.Any]
149
149
  BotMissingPermissionsError
150
150
  If the bot is missing some of the specified permissions.
151
151
 
152
- Examples
152
+ Example
153
153
  --------
154
154
  ```py
155
155
  @arc.with_hook(arc.bot_has_permissions(hikari.Permissions.MANAGE_CHANNELS | hikari.Permissions.MANAGE_GUILD))
@@ -82,7 +82,7 @@ def global_limiter(period: float, limit: int) -> LimiterHook[t.Any]:
82
82
  RateLimiterExhaustedError
83
83
  If the limiter is exhausted.
84
84
 
85
- Examples
85
+ Example
86
86
  --------
87
87
  ```py
88
88
  @arc.with_hook(arc.global_limiter(5.0, 1))
@@ -108,7 +108,7 @@ def guild_limiter(period: float, limit: int) -> LimiterHook[t.Any]:
108
108
  RateLimiterExhaustedError
109
109
  If the limiter is exhausted.
110
110
 
111
- Examples
111
+ Example
112
112
  --------
113
113
  ```py
114
114
  @arc.with_hook(arc.guild_limiter(5.0, 1))
@@ -134,7 +134,7 @@ def channel_limiter(period: float, limit: int) -> LimiterHook[t.Any]:
134
134
  RateLimiterExhaustedError
135
135
  If the limiter is exhausted.
136
136
 
137
- Examples
137
+ Example
138
138
  --------
139
139
  ```py
140
140
  @arc.with_hook(arc.channel_limiter(5.0, 1))
@@ -160,7 +160,7 @@ def user_limiter(period: float, limit: int) -> LimiterHook[t.Any]:
160
160
  RateLimiterExhaustedError
161
161
  If the limiter is exhausted.
162
162
 
163
- Examples
163
+ Example
164
164
  --------
165
165
  ```py
166
166
  @arc.with_hook(arc.user_limiter(5.0, 1))
@@ -187,7 +187,7 @@ def member_limiter(period: float, limit: int) -> LimiterHook[t.Any]:
187
187
  RateLimiterExhaustedError
188
188
  If the limiter is exhausted.
189
189
 
190
- Examples
190
+ Example
191
191
  --------
192
192
  ```py
193
193
  @arc.with_hook(arc.member_limiter(5.0, 1))
@@ -215,7 +215,7 @@ def custom_limiter(period: float, limit: int, get_key_with: t.Callable[[Context[
215
215
  RateLimiterExhaustedError
216
216
  If the limiter is exhausted.
217
217
 
218
- Examples
218
+ Example
219
219
  --------
220
220
  ```py
221
221
  # This is identical to 'arc.guild_limiter(5.0, 1)'
arc/utils/loops.py CHANGED
@@ -152,7 +152,7 @@ class IntervalLoop(_LoopBase[P]):
152
152
  TypeError
153
153
  If the passed function is not a coroutine function.
154
154
 
155
- Examples
155
+ Example
156
156
  --------
157
157
  ```py
158
158
  loop = IntervalLoop(my_coro, seconds=5)
@@ -189,6 +189,50 @@ class IntervalLoop(_LoopBase[P]):
189
189
  def _get_next_run(self) -> float:
190
190
  return self._sleep
191
191
 
192
+ def set_interval(
193
+ self,
194
+ *,
195
+ seconds: float | None = None,
196
+ minutes: float | None = None,
197
+ hours: float | None = None,
198
+ days: float | None = None,
199
+ ):
200
+ """Set a new specified interval.
201
+
202
+ !!! note
203
+ You need to restart the loop if you want these changes to take effect immediately.
204
+
205
+ Parameters
206
+ ----------
207
+ seconds : float | None, optional
208
+ The number of seconds to wait before running the coroutine again.
209
+ minutes : float | None, optional
210
+ The number of minutes to wait before running the coroutine again.
211
+ hours : float | None, optional
212
+ The number of hours to wait before running the coroutine again.
213
+ days : float | None, optional
214
+ The number of days to wait before running the coroutine again.
215
+
216
+ Example
217
+ --------
218
+ ```py
219
+ loop = IntervalLoop(my_coro, seconds=5)
220
+ loop.start()
221
+ loop.set_interval(seconds=10)
222
+ loop.cancel()
223
+ loop.start()
224
+ ```
225
+ """
226
+ if not seconds and not minutes and not hours and not days:
227
+ raise ValueError("At least one of 'seconds', 'minutes', 'hours' or 'days' must be not None.")
228
+ else:
229
+ seconds = seconds or 0
230
+ minutes = minutes or 0
231
+ hours = hours or 0
232
+ days = hours or 0
233
+
234
+ self._sleep: float = seconds + minutes * 60 + hours * 3600 + days * 24 * 3600
235
+
192
236
 
193
237
  class CronLoop(_LoopBase[P]):
194
238
  """A simple interval loop that runs a coroutine at a specified interval.
@@ -207,7 +251,7 @@ class CronLoop(_LoopBase[P]):
207
251
  cron_format : str
208
252
  The cron format to use. See https://en.wikipedia.org/wiki/Cron for more information.
209
253
  timezone : datetime.timezone
210
- The timezone to use for the cron format. Defaults to UTC.
254
+ The timezone to use for the cron loop. Defaults to UTC.
211
255
 
212
256
  Raises
213
257
  ------
@@ -218,7 +262,7 @@ class CronLoop(_LoopBase[P]):
218
262
  TypeError
219
263
  If the passed function is not a coroutine function.
220
264
 
221
- Examples
265
+ Example
222
266
  --------
223
267
  ```py
224
268
  loop = CronLoop(my_coro, "*/5 * * * *")
@@ -256,7 +300,12 @@ class CronLoop(_LoopBase[P]):
256
300
 
257
301
 
258
302
  def interval_loop(
259
- *, seconds: float | None = None, minutes: float | None = None, hours: float | None = None, days: float | None = None
303
+ *,
304
+ seconds: float | None = None,
305
+ minutes: float | None = None,
306
+ hours: float | None = None,
307
+ days: float | None = None,
308
+ run_on_start: bool = True,
260
309
  ) -> t.Callable[[t.Callable[P, t.Awaitable[None]]], IntervalLoop[P]]:
261
310
  """A decorator to create an [`IntervalLoop`][arc.utils.loops.IntervalLoop] out of a coroutine function.
262
311
 
@@ -270,6 +319,9 @@ def interval_loop(
270
319
  The number of hours to wait before running the coroutine again.
271
320
  days : float, optional
272
321
  The number of days to wait before running the coroutine again.
322
+ run_on_start : bool, optional
323
+ Whether to run the callback immediately after starting the loop.
324
+ If set to false, the loop will wait for the specified interval before first running the callback.
273
325
 
274
326
  Returns
275
327
  -------
@@ -283,7 +335,7 @@ def interval_loop(
283
335
  TypeError
284
336
  If the decorated function is not a coroutine function.
285
337
 
286
- Examples
338
+ Example
287
339
  --------
288
340
  ```py
289
341
  import arc
@@ -300,12 +352,14 @@ def interval_loop(
300
352
  """
301
353
 
302
354
  def decorator(coro: t.Callable[P, t.Awaitable[None]]) -> IntervalLoop[P]:
303
- return IntervalLoop(coro, seconds=seconds, minutes=minutes, hours=hours, days=days)
355
+ return IntervalLoop(coro, seconds=seconds, minutes=minutes, hours=hours, days=days, run_on_start=run_on_start)
304
356
 
305
357
  return decorator
306
358
 
307
359
 
308
- def cron_loop(cron_format: str) -> t.Callable[[t.Callable[P, t.Awaitable[None]]], CronLoop[P]]:
360
+ def cron_loop(
361
+ cron_format: str, timezone: datetime.timezone = datetime.timezone.utc
362
+ ) -> t.Callable[[t.Callable[P, t.Awaitable[None]]], CronLoop[P]]:
309
363
  """Decorator to create a [`CronLoop`][arc.utils.loops.CronLoop] out of a coroutine function.
310
364
 
311
365
  !!! warning
@@ -319,6 +373,8 @@ def cron_loop(cron_format: str) -> t.Callable[[t.Callable[P, t.Awaitable[None]]]
319
373
  ----------
320
374
  cron_format : str
321
375
  The cron format to use. See https://en.wikipedia.org/wiki/Cron for more information.
376
+ timezone : datetime.timezone
377
+ The timezone to use for the cron loop. Defaults to UTC.
322
378
 
323
379
  Returns
324
380
  -------
@@ -334,7 +390,7 @@ def cron_loop(cron_format: str) -> t.Callable[[t.Callable[P, t.Awaitable[None]]]
334
390
  TypeError
335
391
  If the decorated function is not a coroutine function.
336
392
 
337
- Examples
393
+ Example
338
394
  --------
339
395
  ```py
340
396
  import arc
@@ -351,7 +407,7 @@ def cron_loop(cron_format: str) -> t.Callable[[t.Callable[P, t.Awaitable[None]]]
351
407
  """
352
408
 
353
409
  def decorator(coro: t.Callable[P, t.Awaitable[None]]) -> CronLoop[P]:
354
- return CronLoop(coro, cron_format)
410
+ return CronLoop(coro, cron_format, timezone=timezone)
355
411
 
356
412
  return decorator
357
413
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hikari-arc
3
- Version: 1.3.1
3
+ Version: 1.3.3
4
4
  Summary: A command handler for hikari with a focus on type-safety and correctness.
5
5
  Home-page: https://github.com/hypergonial/hikari-arc
6
6
  Author: hypergonial
@@ -31,7 +31,7 @@ Provides-Extra: cron
31
31
  Requires-Dist: croniter ==2.0.5 ; extra == 'cron'
32
32
  Requires-Dist: types-croniter ==2.0.0.20240423 ; extra == 'cron'
33
33
  Provides-Extra: dev
34
- Requires-Dist: ruff ==0.4.4 ; extra == 'dev'
34
+ Requires-Dist: ruff ==0.4.5 ; extra == 'dev'
35
35
  Requires-Dist: pyright ==1.1.364 ; extra == 'dev'
36
36
  Requires-Dist: nox ==2024.4.15 ; extra == 'dev'
37
37
  Requires-Dist: typing-extensions ==4.11.0 ; extra == 'dev'
@@ -41,7 +41,7 @@ Requires-Dist: slotscheck ==0.19.0 ; extra == 'dev'
41
41
  Provides-Extra: docs
42
42
  Requires-Dist: mkdocs-material[imaging] ~=9.5.24 ; extra == 'docs'
43
43
  Requires-Dist: mkdocs ~=1.6.0 ; extra == 'docs'
44
- Requires-Dist: mkdocstrings-python ~=1.10.2 ; extra == 'docs'
44
+ Requires-Dist: mkdocstrings-python ~=1.10.3 ; extra == 'docs'
45
45
  Requires-Dist: black ~=24.4.2 ; extra == 'docs'
46
46
  Requires-Dist: griffe-inherited-docstrings ~=1.0.0 ; extra == 'docs'
47
47
  Requires-Dist: mkdocs-glightbox ~=0.4.0 ; extra == 'docs'
@@ -0,0 +1,59 @@
1
+ arc/__init__.py,sha256=jNbK-SPm7T-O5Ej555Obxni9SyfQ05Z2i_G_DwGVggw,6029
2
+ arc/__main__.py,sha256=ClAG2bqkzmJfKrEMYTVzi0O5--8eY_QFuNAqsMmwVQY,2012
3
+ arc/client.py,sha256=NyuXMmm087SggW82Oekw-VjQ4LhqgeBJG2qhl7SThy4,17850
4
+ arc/errors.py,sha256=_RLNY-iivsbogHlv_ofSU8TwoIewOGZ_ruf6EKtPvbY,6802
5
+ arc/events.py,sha256=WRXTLH9PBwU4GTu5rZS5AJ4fNxhDgSD9Rx3M-02FcDQ,2782
6
+ arc/extension.py,sha256=UgtORuV7D3_zUHG1LGXrnhHvz8nntxHRncMrxleoPM0,3371
7
+ arc/locale.py,sha256=nEKKQi-oKdU8VZQdWdFTL-tNECwhtTVv3I3vTsU_1f8,4921
8
+ arc/plugin.py,sha256=8-TGlfxPUYy6uRr-o_LXYD4t5CnQ1lQvQ0psGkkI6L0,8622
9
+ arc/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ arc/abc/__init__.py,sha256=J9KxcN9gHHKW_GDrJD_5fu76Ya6l4XvPHe0Vdqza0Pk,2277
11
+ arc/abc/client.py,sha256=yp8Do85Zf3H1XM4RoKmw_gjpY50e3NmVKMD_aha2x90,54155
12
+ arc/abc/command.py,sha256=u2wjx4PHFWlCFz2OyuMNOUSCf5l0Y1rn0d8yjVPtGC0,28462
13
+ arc/abc/concurrency_limiting.py,sha256=Ed3AUb0veY2H85X8nz9qnAPFC9aRpx9dc4xApxzaLwE,4665
14
+ arc/abc/error_handler.py,sha256=MvT6Pl6iCuTyRi8KFQBLzoPJLDS6UcH_nzLtxFmeRHw,3701
15
+ arc/abc/hookable.py,sha256=qDb-PLJcLE8cE49YKQGvNUQ6B2B5ALRcPVssEXeznNw,5484
16
+ arc/abc/limiter.py,sha256=kAPzIcoXcanAFNWIRmdIxelJHT4lb6HVaIwiDcpOdWI,1766
17
+ arc/abc/option.py,sha256=jpEmCFuWI8_Qq36MZrKUxeU2JsywuANdQ6MYqScXu_E,12981
18
+ arc/abc/plugin.py,sha256=VtR6qcjF3QUlKWHinp8Z6xK2NSe-Pq0jPaERmn1erl0,19700
19
+ arc/command/__init__.py,sha256=TrVhqqfVR9K_RyMbng9TKZuix4nVLbTYOb78GZNOd8U,2542
20
+ arc/command/message.py,sha256=Q-kxmQV2SajXPoEfol6UlC7DM7tIsOPQRwzuTH5L3a8,5943
21
+ arc/command/slash.py,sha256=Vl8npjqxf2Dt3Mc1wqbnPA1QeDeTsReyn-KOYwo0hd0,35491
22
+ arc/command/user.py,sha256=W8a4wPqLF2rHODCLgR4CZpQD3wGZQcnZ-1vHq_X9nks,5995
23
+ arc/command/option/__init__.py,sha256=hEldXTprteztvDjUIq6oTEhD8ayN5Dwfg56E_18abhY,2117
24
+ arc/command/option/attachment.py,sha256=N9DEVg3zO8hcJbU2fQyJGARfJl1DZQSd_7T5tX3Bxts,3004
25
+ arc/command/option/bool.py,sha256=2rKV60LzAlKVUG4lGyNKP41eWMu5cRFLnNBn_ucdfDE,2902
26
+ arc/command/option/channel.py,sha256=RHGehb2zKEMxW35Y5m18p7oTaXUAJ_ARaMTeinAqNvE,3718
27
+ arc/command/option/float.py,sha256=892XO8dd3IS3gJK0FL9tQQAoWcju-iU_nLqGBPSgaTs,5142
28
+ arc/command/option/int.py,sha256=cjhrI8UueYqPpEfaxQTh7Fb6YlDpztAgi3MilhuwktY,5092
29
+ arc/command/option/mentionable.py,sha256=_mVHoQbI-kxI9oM5IxIwo-P-Yh19qbO5l_2oa2OJxiE,3110
30
+ arc/command/option/role.py,sha256=i-eC7Nj6rIqRyg1bwwXFKB6cZ9OspC9Rjc_kXVa5BoI,2934
31
+ arc/command/option/str.py,sha256=3Qr9Y2uoyrUNGeJL49Jjh9ps12_nbOHioDEVWB8uSac,5267
32
+ arc/command/option/user.py,sha256=Qf9dqqmsSPB-yBjT4qAupKRfF1UHh9P3rKXZnRahFYE,2922
33
+ arc/command/option/custom/__init__.py,sha256=rAAtOTZNLN0jKLncUH7kP35zpVyIMTuYvRazqG31axQ,225
34
+ arc/command/option/custom/color.py,sha256=eBO85edOVztUu_m5kdvVGm0XYUVl9bpmWYTWizzOnTo,3474
35
+ arc/command/option/custom/member.py,sha256=Jjn0ZWex6fv9x1iSUqcyFSAr90Oq8cK6OFCIQcr5HHA,3338
36
+ arc/context/__init__.py,sha256=MOc71Up8gUAN8WfZkIzu3lDQhwZlwZbWFYWy3V7yCVQ,1303
37
+ arc/context/autocomplete.py,sha256=YOu6leCKH0mfGVj0vmo4kj1_cWUM6c_vjgooymQ6sYY,3797
38
+ arc/context/base.py,sha256=4hF_p-_mnzhdw5MlVLN7EATfKg8jGAKRkkXtxRggQbc,39976
39
+ arc/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ arc/internal/__init__.py,sha256=kZKBSFOkaDLe5kBvxiCQ-MWRPUZ_GBZdWwINPMkSbvo,1436
41
+ arc/internal/about.py,sha256=QrNIGe5nB4YTG4flqf2hfzv9ZBTH9-UmnFaOVVgaErA,1414
42
+ arc/internal/deprecation.py,sha256=Lnirv1z_oj6QJvbnd38TwHQnhHhFD2rTqqvH96pxiWE,2204
43
+ arc/internal/options.py,sha256=EODBho9BdHOgjqqOVAEEbwOkZJiVfjFDDpUztGKUdK4,3622
44
+ arc/internal/sigparse.py,sha256=EsewKxcidtuoY0clEAVh8nVGmTq5hvAHxqokGOAcZPk,13518
45
+ arc/internal/sync.py,sha256=ApiHD66Gi8BOSUcEKRiZ_n03u9MNkftNjSDZz5Wk1_M,12589
46
+ arc/internal/types.py,sha256=NXemzM6cR2pH2vV9CCr6CSZFJZNY_yaovzNifppUkUA,4365
47
+ arc/internal/version.py,sha256=bZFtIbhehFhsGU2yyTVHb8YIvCYhp9iyueTalCKFtsg,2201
48
+ arc/utils/__init__.py,sha256=vc8QYVVVOe95_kfWWb5lc8dFkJrs5SnpIJta_t0l3UI,2334
49
+ arc/utils/concurrency_limiter.py,sha256=YocMFU0sajLWnsajzZ7T2Qvpd9PKjc2koDqflQTJtPM,12959
50
+ arc/utils/loops.py,sha256=CqRe6tpgzdyvD3POHiSoXATDhPklalMtswvGhcBt964,14009
51
+ arc/utils/ratelimiter.py,sha256=YPETOjQOga8RazYoK3Ghueh2TsOdfkH7WM58dr3ybcU,9477
52
+ arc/utils/hooks/__init__.py,sha256=pXlAQ1zGxQV-bBeeL8sKRkUyO1PmEazT_a_XKtf7GFA,515
53
+ arc/utils/hooks/basic.py,sha256=q6aXAyV7qPGbaQXg0Z2piPAVr1L9uN2hJGjXsbyumLE,5889
54
+ arc/utils/hooks/limiters.py,sha256=D0brZBnLqhUF7ycs16JllsW6gYqdlHnNOISH8iMBWkw,7490
55
+ hikari_arc-1.3.3.dist-info/LICENSE,sha256=q_osUjCCfQVI7zzgteLMZ-RlhXlB4rqQE8I0DGh7ur4,1076
56
+ hikari_arc-1.3.3.dist-info/METADATA,sha256=03tCSLM3Jn-XPLzRpx3JKTegwcjaocgozm_rEaN2rG0,5563
57
+ hikari_arc-1.3.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
58
+ hikari_arc-1.3.3.dist-info/top_level.txt,sha256=kTs_REfGfSlIT6Hq_kxH-MtDlOO6LPwFwkOoNdDCnJ4,4
59
+ hikari_arc-1.3.3.dist-info/RECORD,,
@@ -1,59 +0,0 @@
1
- arc/__init__.py,sha256=jNbK-SPm7T-O5Ej555Obxni9SyfQ05Z2i_G_DwGVggw,6029
2
- arc/__main__.py,sha256=ClAG2bqkzmJfKrEMYTVzi0O5--8eY_QFuNAqsMmwVQY,2012
3
- arc/client.py,sha256=bvyxtIVomFGRNUgEP3-D_SPM2FoYx4lAYuwB4ThwW58,17852
4
- arc/errors.py,sha256=_RLNY-iivsbogHlv_ofSU8TwoIewOGZ_ruf6EKtPvbY,6802
5
- arc/events.py,sha256=WRXTLH9PBwU4GTu5rZS5AJ4fNxhDgSD9Rx3M-02FcDQ,2782
6
- arc/extension.py,sha256=PSK7XcwPCDoUAyGWbNQlr3qDNGpijsZl97RWxteMp9E,3373
7
- arc/locale.py,sha256=nEKKQi-oKdU8VZQdWdFTL-tNECwhtTVv3I3vTsU_1f8,4921
8
- arc/plugin.py,sha256=AKc5lLU8eXjnKyiQxxs7wZm27qLI8kLCKQcX5CP8Lcs,8624
9
- arc/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- arc/abc/__init__.py,sha256=J9KxcN9gHHKW_GDrJD_5fu76Ya6l4XvPHe0Vdqza0Pk,2277
11
- arc/abc/client.py,sha256=MPQe4ZHeZgxsR0en6GDh8u9CDtivoJgGh_RYAlI_Yu0,54162
12
- arc/abc/command.py,sha256=rWaBt4pD2ivZdLRtqAcLrURrFSOBW3Oqdj1s_s9ALGw,28769
13
- arc/abc/concurrency_limiting.py,sha256=NefJQgftC-WzQNYehzzqmVuFY4MNHwPfQ8B4wqvjvUs,4666
14
- arc/abc/error_handler.py,sha256=RCuO35mibkncSPxUbaDcUPRzOXhS-et0Sa_7VKMjpuk,3702
15
- arc/abc/hookable.py,sha256=x5SjMQ314nPdnWsTV6ZELeDCKQMck2e24Ybv7BripzI,5486
16
- arc/abc/limiter.py,sha256=kAPzIcoXcanAFNWIRmdIxelJHT4lb6HVaIwiDcpOdWI,1766
17
- arc/abc/option.py,sha256=NgIPl1mbSpxfoVt10V95aKDMAhdUE9fzTgxyQFZzx7s,12982
18
- arc/abc/plugin.py,sha256=Kl3n43XB2HE6DcCsU4eZ5O37WqTCsTemwAfPioraEJ8,19703
19
- arc/command/__init__.py,sha256=TrVhqqfVR9K_RyMbng9TKZuix4nVLbTYOb78GZNOd8U,2542
20
- arc/command/message.py,sha256=b0DjJoIQV9FlfGx3uZQPAmHfv0cBHJoIhXfVhusT9OA,5944
21
- arc/command/slash.py,sha256=kfOw26t7QdkfxGovf8pk4RaMmrTgvFekM87B33X31hc,35485
22
- arc/command/user.py,sha256=XJV_6gYwE4vpwBFw2shlQUwUIJL972N0qZpNVoxXa2c,5996
23
- arc/command/option/__init__.py,sha256=hEldXTprteztvDjUIq6oTEhD8ayN5Dwfg56E_18abhY,2117
24
- arc/command/option/attachment.py,sha256=wXv6AJT5F0500PKkkh3inR3QQafrPuX5a4gKk72o2H8,3047
25
- arc/command/option/bool.py,sha256=4dNCAZooDtzMXDdKPPQ3DFtY-EIXkmYMHRDZvATCxWs,2945
26
- arc/command/option/channel.py,sha256=dAWm0JNiq6z4JKloZZy00Sh3jrcvxFn5NpJWt7iugWc,3761
27
- arc/command/option/float.py,sha256=vonlUXPI8wID7Yh60WvmgW5mVYGlNtPMMMv5c4HAZUo,5185
28
- arc/command/option/int.py,sha256=SJuJWrVzrrot-dkDZe5B12crV2pCMVD73jxJwhLm3HY,5135
29
- arc/command/option/mentionable.py,sha256=QRzCFknERoNDHHqlzTRIsp-d307F2BhBIqHmlkRow9s,3153
30
- arc/command/option/role.py,sha256=Tdb1ep7otySvPPZuxutTPyUimBd_ZirHcCWIS8TMXA8,2977
31
- arc/command/option/str.py,sha256=DcovOnAVqQ3wnIdzXbxm8s_da6qcgtqWbbhwhNheAMo,5310
32
- arc/command/option/user.py,sha256=4R0GtzX5dNJYL27OZQNT7_rcD-jrTSxRnuKgpNyQk5c,2965
33
- arc/command/option/custom/__init__.py,sha256=rAAtOTZNLN0jKLncUH7kP35zpVyIMTuYvRazqG31axQ,225
34
- arc/command/option/custom/color.py,sha256=_vLHbaEo78bUrQXqPi0qmbDtBMtFsbX2icTDp74I8EE,3517
35
- arc/command/option/custom/member.py,sha256=5tK1weEryp9LH0RdE9XBzXKZt7mUdYCJwwTaXSGYfGk,3381
36
- arc/context/__init__.py,sha256=MOc71Up8gUAN8WfZkIzu3lDQhwZlwZbWFYWy3V7yCVQ,1303
37
- arc/context/autocomplete.py,sha256=YOu6leCKH0mfGVj0vmo4kj1_cWUM6c_vjgooymQ6sYY,3797
38
- arc/context/base.py,sha256=MUZe8abJUwzFUsnv_WsxHPKDQswI4IUImyozjgnGDs8,39977
39
- arc/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- arc/internal/__init__.py,sha256=kZKBSFOkaDLe5kBvxiCQ-MWRPUZ_GBZdWwINPMkSbvo,1436
41
- arc/internal/about.py,sha256=AyaKo5EADmNJPkrNqjvdEswZXMy1LZyf67HwBLzL8Bw,1414
42
- arc/internal/deprecation.py,sha256=Lnirv1z_oj6QJvbnd38TwHQnhHhFD2rTqqvH96pxiWE,2204
43
- arc/internal/options.py,sha256=EODBho9BdHOgjqqOVAEEbwOkZJiVfjFDDpUztGKUdK4,3622
44
- arc/internal/sigparse.py,sha256=EsewKxcidtuoY0clEAVh8nVGmTq5hvAHxqokGOAcZPk,13518
45
- arc/internal/sync.py,sha256=ApiHD66Gi8BOSUcEKRiZ_n03u9MNkftNjSDZz5Wk1_M,12589
46
- arc/internal/types.py,sha256=NXemzM6cR2pH2vV9CCr6CSZFJZNY_yaovzNifppUkUA,4365
47
- arc/internal/version.py,sha256=bZFtIbhehFhsGU2yyTVHb8YIvCYhp9iyueTalCKFtsg,2201
48
- arc/utils/__init__.py,sha256=vc8QYVVVOe95_kfWWb5lc8dFkJrs5SnpIJta_t0l3UI,2334
49
- arc/utils/concurrency_limiter.py,sha256=7wz7bfzvCna5Ai50EAw1SaY8ZmZy-Bc68NwubhQExxc,12965
50
- arc/utils/loops.py,sha256=nCKGy0tTwpR49gDAZJaVwetMgIBM_WbqIpEyDIqBcjE,12064
51
- arc/utils/ratelimiter.py,sha256=YPETOjQOga8RazYoK3Ghueh2TsOdfkH7WM58dr3ybcU,9477
52
- arc/utils/hooks/__init__.py,sha256=pXlAQ1zGxQV-bBeeL8sKRkUyO1PmEazT_a_XKtf7GFA,515
53
- arc/utils/hooks/basic.py,sha256=e09raCnIcGMpBMd4uvzBCofNij2aGAmXPO2AuC8cXZY,5894
54
- arc/utils/hooks/limiters.py,sha256=So6BZxSy3AdexM1UHWt8cILGQ8b-Fp78DYfqqw4yvdM,7496
55
- hikari_arc-1.3.1.dist-info/LICENSE,sha256=q_osUjCCfQVI7zzgteLMZ-RlhXlB4rqQE8I0DGh7ur4,1076
56
- hikari_arc-1.3.1.dist-info/METADATA,sha256=juQrw3lZ5xNQINwBHMfq0o0z7yFIWhJS_c6nn-M6ymQ,5563
57
- hikari_arc-1.3.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
58
- hikari_arc-1.3.1.dist-info/top_level.txt,sha256=kTs_REfGfSlIT6Hq_kxH-MtDlOO6LPwFwkOoNdDCnJ4,4
59
- hikari_arc-1.3.1.dist-info/RECORD,,