dshellInterpreter 0.2.18.6__tar.gz → 0.2.18.8__tar.gz

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.

Potentially problematic release.


This version of dshellInterpreter might be problematic. Click here for more details.

Files changed (37) hide show
  1. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellInterpreteur/dshell_interpreter.py +57 -53
  2. {dshellinterpreter-0.2.18.6/dshellInterpreter.egg-info → dshellinterpreter-0.2.18.8}/PKG-INFO +1 -1
  3. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8/dshellInterpreter.egg-info}/PKG-INFO +1 -1
  4. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/setup.py +1 -1
  5. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/__init__.py +0 -0
  6. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/dshell_channel.py +0 -0
  7. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/dshell_interaction.py +0 -0
  8. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/dshell_member.py +0 -0
  9. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/dshell_message.py +0 -0
  10. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py +0 -0
  11. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/dshell_role.py +0 -0
  12. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/__init__.py +0 -0
  13. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/utils_global.py +0 -0
  14. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/utils_list.py +0 -0
  15. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/utils_member.py +0 -0
  16. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/utils_message.py +0 -0
  17. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/utils_permissions.py +0 -0
  18. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/utils_string.py +0 -0
  19. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/DISCORD_COMMANDS/utils/utils_thread.py +0 -0
  20. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellInterpreteur/__init__.py +0 -0
  21. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellInterpreteur/errors.py +0 -0
  22. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellParser/__init__.py +0 -0
  23. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellParser/ast_nodes.py +0 -0
  24. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellParser/dshell_parser.py +0 -0
  25. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellTokenizer/__init__.py +0 -0
  26. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellTokenizer/dshell_keywords.py +0 -0
  27. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellTokenizer/dshell_token_type.py +0 -0
  28. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_DshellTokenizer/dshell_tokenizer.py +0 -0
  29. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/__init__.py +0 -0
  30. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/Dshell/_utils.py +0 -0
  31. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/LICENSE +0 -0
  32. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/README.md +0 -0
  33. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/dshellInterpreter.egg-info/SOURCES.txt +0 -0
  34. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/dshellInterpreter.egg-info/dependency_links.txt +0 -0
  35. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/dshellInterpreter.egg-info/requires.txt +0 -0
  36. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/dshellInterpreter.egg-info/top_level.txt +0 -0
  37. {dshellinterpreter-0.2.18.6 → dshellinterpreter-0.2.18.8}/setup.cfg +0 -0
@@ -1,4 +1,4 @@
1
- from asyncio import sleep, run_coroutine_threadsafe, get_running_loop
1
+ from asyncio import sleep, create_task
2
2
  from re import findall
3
3
  from typing import TypeVar, Union, Any, Optional, Callable
4
4
  from copy import deepcopy
@@ -125,18 +125,18 @@ class DshellInterpreteur:
125
125
  self.env['__ret__'] = result # global return variable for all commands
126
126
 
127
127
  elif isinstance(node, ParamNode):
128
- params = get_params(node, self)
128
+ params = await get_params(node, self)
129
129
  self.env.update(params) # update the environment
130
130
 
131
131
  elif isinstance(node, IfNode):
132
132
  elif_valid = False
133
- if eval_expression(node.condition, self):
133
+ if await eval_expression(node.condition, self):
134
134
  await self.execute(node.body)
135
135
  continue
136
136
  elif node.elif_nodes:
137
137
 
138
138
  for i in node.elif_nodes:
139
- if eval_expression(i.condition, self):
139
+ if await eval_expression(i.condition, self):
140
140
  await self.execute(i.body)
141
141
  elif_valid = True
142
142
  break
@@ -146,7 +146,7 @@ class DshellInterpreteur:
146
146
 
147
147
  elif isinstance(node, LoopNode):
148
148
  self.env[node.variable.name.value] = 0
149
- for i in DshellIterator(eval_expression(node.variable.body, self)):
149
+ for i in DshellIterator(await eval_expression(node.variable.body, self)):
150
150
  self.env[node.variable.name.value] = i
151
151
  c = deepcopy(node.body)
152
152
  await self.execute(c)
@@ -156,34 +156,34 @@ class DshellInterpreteur:
156
156
 
157
157
  first_node = node.body[0]
158
158
  if isinstance(first_node, IfNode):
159
- self.env[node.name.value] = eval_expression_inline(first_node, self)
159
+ self.env[node.name.value] = await eval_expression_inline(first_node, self)
160
160
 
161
161
  elif isinstance(first_node, EmbedNode):
162
162
  # rebuild the embed if it already exists
163
163
  if node.name.value in self.env and isinstance(self.env[node.name.value], Embed):
164
- self.env[node.name.value] = rebuild_embed(self.env[node.name.value], first_node.body, first_node.fields, self)
164
+ self.env[node.name.value] = await rebuild_embed(self.env[node.name.value], first_node.body, first_node.fields, self)
165
165
  else:
166
- self.env[node.name.value] = build_embed(first_node.body, first_node.fields, self)
166
+ self.env[node.name.value] = await build_embed(first_node.body, first_node.fields, self)
167
167
 
168
168
  elif isinstance(first_node, PermissionNode):
169
169
  # rebuild the permissions if it already exists
170
170
  if node.name.value in self.env and isinstance(self.env[node.name.value], dict):
171
- self.env[node.name.value].update(build_permission(first_node.body, self))
171
+ self.env[node.name.value].update(await build_permission(first_node.body, self))
172
172
  else:
173
- self.env[node.name.value] = build_permission(first_node.body, self)
173
+ self.env[node.name.value] = await build_permission(first_node.body, self)
174
174
 
175
175
  elif isinstance(first_node, UiNode):
176
176
  # rebuild the UI if it already exists
177
177
  if node.name.value in self.env and isinstance(self.env[node.name.value], EasyModifiedViews):
178
- self.env[node.name.value] = rebuild_ui(first_node, self.env[node.name.value], self)
178
+ self.env[node.name.value] = await rebuild_ui(first_node, self.env[node.name.value], self)
179
179
  else:
180
- self.env[node.name.value] = build_ui(first_node, self)
180
+ self.env[node.name.value] = await build_ui(first_node, self)
181
181
 
182
182
  else:
183
- self.env[node.name.value] = eval_expression(node.body, self)
183
+ self.env[node.name.value] = await eval_expression(node.body, self)
184
184
 
185
185
  elif isinstance(node, SleepNode):
186
- sleep_time = eval_expression(node.body, self)
186
+ sleep_time = await eval_expression(node.body, self)
187
187
  if sleep_time > 3600:
188
188
  raise Exception(f"Sleep time is too long! ({sleep_time} seconds) - maximum is 3600 seconds)")
189
189
  elif sleep_time < 1:
@@ -193,12 +193,12 @@ class DshellInterpreteur:
193
193
 
194
194
 
195
195
  elif isinstance(node, EndNode):
196
- if self.eval_data_token(node.error_message):
196
+ if await self.eval_data_token(node.error_message):
197
197
  raise RuntimeError("Execution stopped - EndNode encountered")
198
198
  else:
199
199
  raise DshellInterpreterStopExecution()
200
200
 
201
- def eval_data_token(self, token: Token):
201
+ async def eval_data_token(self, token: Token):
202
202
  """
203
203
  Eval a data token and returns its value in Python.
204
204
  :param token: The token to evaluate.
@@ -217,13 +217,13 @@ class DshellInterpreteur:
217
217
  return None
218
218
  elif token.type == DTT.LIST:
219
219
  return ListNode(
220
- [self.eval_data_token(tok) for tok in token.value]) # token.value contient déjà une liste de Token
220
+ [await self.eval_data_token(tok) for tok in token.value]) # token.value contient déjà une liste de Token
221
221
  elif token.type == DTT.IDENT:
222
222
  if token.value in self.env.keys():
223
223
  return self.env[token.value]
224
224
  return token.value
225
225
  elif token.type == DTT.EVAL_GROUP:
226
- run_coroutine_threadsafe(self.execute(token.value), get_running_loop())
226
+ await self.execute(parse([token.value], StartNode([]))[0].body) # obliger de parser car ce il n'est pas dejà un AST
227
227
  return self.env['__ret__']
228
228
  elif token.type == DTT.STR:
229
229
  for match in findall(rf"\$({'|'.join(self.env.keys())})", token.value):
@@ -233,21 +233,22 @@ class DshellInterpreteur:
233
233
  return token.value # fallback
234
234
 
235
235
 
236
- def get_params(node: ParamNode, interpreter: DshellInterpreteur) -> dict[str, Any]:
236
+ async def get_params(node: ParamNode, interpreter: DshellInterpreteur) -> dict[str, Any]:
237
237
  """
238
238
  Get the parameters from a ParamNode.
239
239
  :param node: The ParamNode to get the parameters from.
240
240
  :param interpreter: The Dshell interpreter instance.
241
241
  :return: A dictionary of parameters.
242
242
  """
243
- regrouped_args: dict[str, list] = regroupe_commandes(node.body, interpreter)[
244
- 0] # just regroup the commands, no need to do anything else
243
+ regrouped_parameters = await regroupe_commandes(node.body, interpreter)
244
+ regrouped_args: dict[str, list] = regrouped_parameters[0] # just regroup the commands, no need to do anything else
245
245
  regrouped_args.pop('*', ())
246
246
  englobe_args = regrouped_args.pop('--*', {}) # get the arguments that are not mandatory
247
247
  obligate = [i for i in regrouped_args.keys() if regrouped_args[i] == '*'] # get the obligatory parameters
248
248
 
249
249
  g: list[list[Token]] = DshellTokenizer(interpreter.vars).start()
250
- env_give_variables = regroupe_commandes(g[0], interpreter)[0] if g else {}
250
+ regrouped_parameters = await regroupe_commandes(g[0], interpreter)
251
+ env_give_variables = regrouped_parameters[0] if g else {}
251
252
 
252
253
  gived_variables = env_give_variables.pop('*', ()) # get the variables given in the environment
253
254
  englobe_gived_variables: dict = env_give_variables.pop('--*',
@@ -283,19 +284,19 @@ def get_params(node: ParamNode, interpreter: DshellInterpreteur) -> dict[str, An
283
284
  return regrouped_args
284
285
 
285
286
 
286
- def eval_expression_inline(if_node: IfNode, interpreter: DshellInterpreteur) -> Token:
287
+ async def eval_expression_inline(if_node: IfNode, interpreter: DshellInterpreteur) -> Token:
287
288
  """
288
289
  Eval a conditional expression inline.
289
290
  :param if_node: The IfNode to evaluate.
290
291
  :param interpreter: The Dshell interpreter instance.
291
292
  """
292
- if eval_expression(if_node.condition, interpreter):
293
- return eval_expression(if_node.body, interpreter)
293
+ if await eval_expression(if_node.condition, interpreter):
294
+ return await eval_expression(if_node.body, interpreter)
294
295
  else:
295
- return eval_expression(if_node.else_body.body, interpreter)
296
+ return await eval_expression(if_node.else_body.body, interpreter)
296
297
 
297
298
 
298
- def eval_expression(tokens: list[Token], interpreter: DshellInterpreteur) -> Any:
299
+ async def eval_expression(tokens: list[Token], interpreter: DshellInterpreteur) -> Any:
299
300
  """
300
301
  Evaluates an arithmetic and logical expression.
301
302
  :param tokens: A list of tokens representing the expression.
@@ -307,7 +308,7 @@ def eval_expression(tokens: list[Token], interpreter: DshellInterpreteur) -> Any
307
308
  for token in postfix:
308
309
 
309
310
  if token.type in {DTT.INT, DTT.FLOAT, DTT.BOOL, DTT.STR, DTT.LIST, DTT.IDENT}:
310
- stack.append(interpreter.eval_data_token(token))
311
+ stack.append(await interpreter.eval_data_token(token))
311
312
 
312
313
  elif token.type in (DTT.MATHS_OPERATOR, DTT.LOGIC_OPERATOR, DTT.LOGIC_WORD_OPERATOR):
313
314
  op = token.value
@@ -347,7 +348,8 @@ async def call_function(function: Callable, args: ArgsCommandNode, interpreter:
347
348
  :param args: The arguments to pass to the function.
348
349
  :param interpreter: The Dshell interpreter instance.
349
350
  """
350
- reformatted = regroupe_commandes(args.body, interpreter)[0]
351
+ reformatted = await regroupe_commandes(args.body, interpreter)
352
+ reformatted = reformatted[0]
351
353
 
352
354
  # conversion des args en valeurs Python
353
355
  absolute_args = reformatted.pop('*', list())
@@ -361,7 +363,7 @@ async def call_function(function: Callable, args: ArgsCommandNode, interpreter:
361
363
  return await function(*absolute_args, **keyword_args)
362
364
 
363
365
 
364
- def regroupe_commandes(body: list[Token], interpreter: DshellInterpreteur, normalise: bool = False) -> list[dict[str, list[Any]]]:
366
+ async def regroupe_commandes(body: list[Token], interpreter: DshellInterpreteur, normalise: bool = False) -> list[dict[str, list[Any]]]:
365
367
  """
366
368
  Groups the command arguments in the form of a python dictionary.
367
369
  Note that you can specify the parameter you wish to pass via -- followed by the parameter name. But this is not mandatory!
@@ -397,7 +399,7 @@ def regroupe_commandes(body: list[Token], interpreter: DshellInterpreteur, norma
397
399
 
398
400
  elif body[
399
401
  i].type == DTT.SUB_SEPARATOR: # allows to delimit parameters and to have several with the same name
400
- list_tokens += regroupe_commandes(
402
+ list_tokens += await regroupe_commandes(
401
403
  [Token(
402
404
  type_=DTT.SEPARATOR, value=body[i].value, position=body[i].position)
403
405
  ] + body[i + 1:], interpreter
@@ -415,53 +417,55 @@ def regroupe_commandes(body: list[Token], interpreter: DshellInterpreteur, norma
415
417
 
416
418
  else:
417
419
  if current_arg == '*':
418
- tokens[current_arg].append(interpreter.eval_data_token(body[i]))
420
+ tokens[current_arg].append(await interpreter.eval_data_token(body[i]))
419
421
  else:
420
- tokens[current_arg] = interpreter.eval_data_token(body[i]) # add the token to the current argument
422
+ tokens[current_arg] = await interpreter.eval_data_token(body[i]) # add the token to the current argument
421
423
  i += 1
422
424
 
423
425
  return list_tokens
424
426
 
425
427
 
426
- def build_embed_args(body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> tuple[dict, list[dict]]:
428
+ async def build_embed_args(body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> tuple[dict, list[dict]]:
427
429
  """
428
430
  Builds the arguments for an embed from the command information.
429
431
  """
430
- args_main_embed: dict[str, list[Any]] = regroupe_commandes(body, interpreter)[0]
432
+ regrouped_parameters = await regroupe_commandes(body, interpreter)
433
+ args_main_embed: dict[str, list[Any]] = regrouped_parameters[0]
431
434
  args_main_embed.pop('*') # remove unspecified parameters for the embed
432
435
  args_main_embed.pop('--*')
433
436
  args_main_embed: dict[str, Token] # specify what it contains from now on
434
437
 
435
438
  args_fields: list[dict[str, Token]] = []
436
439
  for field in fields: # do the same for the fields
437
- a = regroupe_commandes(field.body, interpreter)[0]
438
- a.pop('*')
439
- a.pop('--*')
440
- a: dict[str, Token]
441
- args_fields.append(a)
440
+ y = await regroupe_commandes(field.body, interpreter)
441
+ args_field = y[0]
442
+ args_field.pop('*')
443
+ args_field.pop('--*')
444
+ args_field: dict[str, Token]
445
+ args_fields.append(args_field)
442
446
 
443
447
  if 'color' in args_main_embed:
444
448
  args_main_embed['color'] = build_colour(args_main_embed['color']) # convert color to Colour object or int
445
449
 
446
450
  return args_main_embed, args_fields
447
451
 
448
- def build_embed(body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> Embed:
452
+ async def build_embed(body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> Embed:
449
453
  """
450
454
  Builds an embed from the command information.
451
455
  """
452
456
 
453
- args_main_embed, args_fields = build_embed_args(body, fields, interpreter)
457
+ args_main_embed, args_fields = await build_embed_args(body, fields, interpreter)
454
458
  embed = Embed(**args_main_embed) # build the main embed
455
459
  for field in args_fields:
456
460
  embed.add_field(**field) # add all fields
457
461
 
458
462
  return embed
459
463
 
460
- def rebuild_embed(embed: Embed, body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> Embed:
464
+ async def rebuild_embed(embed: Embed, body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> Embed:
461
465
  """
462
466
  Rebuilds an embed from an existing embed and the command information.
463
467
  """
464
- args_main_embed, args_fields = build_embed_args(body, fields, interpreter)
468
+ args_main_embed, args_fields = await build_embed_args(body, fields, interpreter)
465
469
 
466
470
  for key, value in args_main_embed.items():
467
471
  if key == 'color':
@@ -491,7 +495,7 @@ def build_colour(color: Union[int, ListNode]) -> Union[Colour, int]:
491
495
  else:
492
496
  raise TypeError(f"Color must be an integer or a ListNode, not {type(color)} !")
493
497
 
494
- def build_ui_parameters(ui_node: UiNode, interpreter: DshellInterpreteur):
498
+ async def build_ui_parameters(ui_node: UiNode, interpreter: DshellInterpreteur):
495
499
  """
496
500
  Builds the parameters for a UI component from the UiNode.
497
501
  Can accept buttons and select menus.
@@ -500,8 +504,8 @@ def build_ui_parameters(ui_node: UiNode, interpreter: DshellInterpreteur):
500
504
  :return:
501
505
  """
502
506
  for ident_component in range(len(ui_node.buttons)):
503
- args_button: dict[str, list[Any]] = \
504
- regroupe_commandes(ui_node.buttons[ident_component].body, interpreter, normalise=True)[0]
507
+ regrouped_parameters = await regroupe_commandes(ui_node.buttons[ident_component].body, interpreter, normalise=True)
508
+ args_button: dict[str, list[Any]] = regrouped_parameters[0]
505
509
  args_button.pop('--*', ())
506
510
 
507
511
  code = args_button.pop('code', None)
@@ -519,7 +523,7 @@ def build_ui_parameters(ui_node: UiNode, interpreter: DshellInterpreteur):
519
523
  args = args_button.pop('*', ())
520
524
  yield args, args_button, code
521
525
 
522
- def build_ui(ui_node: UiNode, interpreter: DshellInterpreteur) -> EasyModifiedViews:
526
+ async def build_ui(ui_node: UiNode, interpreter: DshellInterpreteur) -> EasyModifiedViews:
523
527
  """
524
528
  Builds a UI component from the UiNode.
525
529
  Can accept buttons and select menus.
@@ -529,7 +533,7 @@ def build_ui(ui_node: UiNode, interpreter: DshellInterpreteur) -> EasyModifiedVi
529
533
  """
530
534
  view = EasyModifiedViews()
531
535
 
532
- for args, args_button, code in build_ui_parameters(ui_node, interpreter):
536
+ async for args, args_button, code in build_ui_parameters(ui_node, interpreter):
533
537
  b = Button(**args_button)
534
538
 
535
539
  view.add_items(b)
@@ -537,14 +541,14 @@ def build_ui(ui_node: UiNode, interpreter: DshellInterpreteur) -> EasyModifiedVi
537
541
 
538
542
  return view
539
543
 
540
- def rebuild_ui(ui_node : UiNode, view: EasyModifiedViews, interpreter: DshellInterpreteur) -> EasyModifiedViews:
544
+ async def rebuild_ui(ui_node : UiNode, view: EasyModifiedViews, interpreter: DshellInterpreteur) -> EasyModifiedViews:
541
545
  """
542
546
  Rebuilds a UI component from an existing EasyModifiedViews.
543
547
  :param view:
544
548
  :param interpreter:
545
549
  :return:
546
550
  """
547
- for args, args_button, code in build_ui_parameters(ui_node, interpreter):
551
+ async for args, args_button, code in build_ui_parameters(ui_node, interpreter):
548
552
  try:
549
553
  ui = view.get_ui(args_button['custom_id'])
550
554
  except CustomIDNotFound:
@@ -600,12 +604,12 @@ async def ui_button_callback(button: Button, interaction: Interaction, data: dic
600
604
 
601
605
  data.update({'code': code})
602
606
 
603
- def build_permission(body: list[Token], interpreter: DshellInterpreteur) -> dict[
607
+ async def build_permission(body: list[Token], interpreter: DshellInterpreteur) -> dict[
604
608
  Union[Member, Role], PermissionOverwrite]:
605
609
  """
606
610
  Builds a dictionary of PermissionOverwrite objects from the command information.
607
611
  """
608
- args_permissions: list[dict[str, list[Any]]] = regroupe_commandes(body, interpreter)
612
+ args_permissions: list[dict[str, list[Any]]] = await regroupe_commandes(body, interpreter)
609
613
  permissions: dict[Union[Member, Role], PermissionOverwrite] = {}
610
614
 
611
615
  for i in args_permissions:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dshellInterpreter
3
- Version: 0.2.18.6
3
+ Version: 0.2.18.8
4
4
  Summary: A Discord bot interpreter for creating custom commands and automations.
5
5
  Home-page: https://github.com/BOXERRMD/Dshell_Interpreter
6
6
  Author: Chronos
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dshellInterpreter
3
- Version: 0.2.18.6
3
+ Version: 0.2.18.8
4
4
  Summary: A Discord bot interpreter for creating custom commands and automations.
5
5
  Home-page: https://github.com/BOXERRMD/Dshell_Interpreter
6
6
  Author: Chronos
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setup(
7
7
  name="dshellInterpreter",
8
- version="0.2.18.6",
8
+ version="0.2.18.8",
9
9
  author="Chronos",
10
10
  author_email="vagabonwalybi@gmail.com",
11
11
  description="A Discord bot interpreter for creating custom commands and automations.",