dshellInterpreter 1.2.7.8__tar.gz → 1.2.7.10__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.
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_ui.py +31 -6
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellParser/ast_nodes.py +153 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/full_import.py +1 -1
- {dshellinterpreter-1.2.7.8/dshellInterpreter.egg-info → dshellinterpreter-1.2.7.10}/PKG-INFO +1 -1
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10/dshellInterpreter.egg-info}/PKG-INFO +1 -1
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/setup.py +1 -1
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/__init__.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_channel.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_embed.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_file.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_interaction.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_member.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_message.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_role.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/__init__.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_embed.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_file.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_global.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_list.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_member.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_message.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_numbers.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_permissions.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_string.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_thread.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_type_validation.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/__init__.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/cached_messages.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/dshell_arguments.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/dshell_global_variables.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/dshell_interpreter.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/dshell_iterators.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/dshell_scope.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/errors.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/utils_interpreter.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellParser/__init__.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellParser/dshell_parser.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellParser/errors.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellPreProcess/__init__.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellPreProcess/dshell_preprocess.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellTokenizer/__init__.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellTokenizer/dshell_keywords.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellTokenizer/dshell_token_type.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellTokenizer/dshell_tokenizer.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/__init__.py +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/LICENSE +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/README.md +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/dshellInterpreter.egg-info/SOURCES.txt +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/dshellInterpreter.egg-info/dependency_links.txt +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/dshellInterpreter.egg-info/requires.txt +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/dshellInterpreter.egg-info/top_level.txt +0 -0
- {dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/setup.cfg +0 -0
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_ui.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from
|
|
1
|
+
from ..full_import import (ButtonStyle,
|
|
2
2
|
PrivateChannel,
|
|
3
3
|
Interaction,
|
|
4
4
|
ui,
|
|
@@ -7,15 +7,16 @@ from Dshell.full_import import (ButtonStyle,
|
|
|
7
7
|
CustomIDNotFound,
|
|
8
8
|
SelectMenu,
|
|
9
9
|
ComponentType,
|
|
10
|
-
random
|
|
10
|
+
random,
|
|
11
|
+
IntEnum)
|
|
11
12
|
|
|
12
13
|
from ..DshellParser.ast_nodes import UiSelectNode, UiButtonNode, OptionUiSelectNode, ListNode, StrNode, IntNode, BoolNode
|
|
13
14
|
|
|
14
15
|
from ..DshellInterpreteur.utils_interpreter import regroupe_commandes
|
|
15
16
|
|
|
16
|
-
from ..DshellInterpreteur.dshell_scope import new_scope,
|
|
17
|
+
from ..DshellInterpreteur.dshell_scope import new_scope, update_nbr_usage_scope
|
|
17
18
|
|
|
18
|
-
from
|
|
19
|
+
from ..full_import import Any, TYPE_CHECKING, Union, Optional
|
|
19
20
|
|
|
20
21
|
from .utils.utils_type_validation import (_validate_optional_code_node,
|
|
21
22
|
_validate_required_int,
|
|
@@ -39,6 +40,22 @@ SelectSyleValues: dict = {'string': ComponentType.string_select,
|
|
|
39
40
|
'mention': ComponentType.mentionable_select,
|
|
40
41
|
'channel': ComponentType.channel_select}
|
|
41
42
|
|
|
43
|
+
class UITimeout(IntEnum):
|
|
44
|
+
default_timeout = 600
|
|
45
|
+
max_timeout = 60*60*24
|
|
46
|
+
min_timeout = 5
|
|
47
|
+
|
|
48
|
+
def check_timeout(timeout: Union[int, IntNode]):
|
|
49
|
+
"""
|
|
50
|
+
Check if the timeout is : min_timeout <= timeout <= max_timeout
|
|
51
|
+
:param timeout:
|
|
52
|
+
:return: the current timeout
|
|
53
|
+
"""
|
|
54
|
+
if not UITimeout.min_timeout <= timeout <= UITimeout.max_timeout:
|
|
55
|
+
raise Exception(f"UI timeout must be greater or equal than [{UITimeout.min_timeout} min] "
|
|
56
|
+
f"and less or equal than[{UITimeout.max_timeout}]")
|
|
57
|
+
return timeout
|
|
58
|
+
|
|
42
59
|
async def build_ui_button_parameters(ui_button_node: UiButtonNode, interpreter: "DshellInterpreteur"):
|
|
43
60
|
"""
|
|
44
61
|
Builds the parameters for a UI component from the UiNode.
|
|
@@ -53,16 +70,18 @@ async def build_ui_button_parameters(ui_button_node: UiButtonNode, interpreter:
|
|
|
53
70
|
args_button: dict[str, list[Any]] = regrouped_parameters.get_dict_parameters()
|
|
54
71
|
|
|
55
72
|
code = args_button.pop('code', None)
|
|
56
|
-
style = StrNode(args_button.pop('style', 'primary').lower())
|
|
73
|
+
style = StrNode(args_button.pop('style', StrNode('primary')).lower())
|
|
57
74
|
custom_id = args_button.pop('custom_id', StrNode('ui_button_'+str(random())))
|
|
58
75
|
row = args_button.pop('row', IntNode(0))
|
|
59
76
|
emoji = utils_refactor_emoji(args_button.pop('emoji', None))
|
|
77
|
+
timeout = args_button.pop('timeout', IntNode(UITimeout.default_timeout))
|
|
60
78
|
|
|
61
79
|
_validate_optional_code_node(code, "code", _CMD)
|
|
62
80
|
_validate_required_string(style, "style", _CMD)
|
|
63
81
|
_validate_required_string(custom_id, "custom_id", _CMD)
|
|
64
82
|
_validate_required_int(row, "row", _CMD)
|
|
65
83
|
_validate_optional_string(emoji, "emoji", _CMD)
|
|
84
|
+
_validate_required_int(timeout, 'timeout', _CMD)
|
|
66
85
|
|
|
67
86
|
if style not in ButtonStyleValues:
|
|
68
87
|
raise ValueError(f"Button style must be one of {', '.join(ButtonStyleValues)}, not '{style}' !")
|
|
@@ -71,6 +90,7 @@ async def build_ui_button_parameters(ui_button_node: UiButtonNode, interpreter:
|
|
|
71
90
|
args_button['row'] = row
|
|
72
91
|
args_button['style'] = ButtonStyle[style]
|
|
73
92
|
args_button['emoji'] = emoji
|
|
93
|
+
args_button['timeout'] = check_timeout(timeout)
|
|
74
94
|
args = args_button.pop('*', ())
|
|
75
95
|
yield args, args_button, code
|
|
76
96
|
|
|
@@ -89,13 +109,14 @@ async def build_ui_select_parameters(ui_select_node: UiSelectNode, interpreter:
|
|
|
89
109
|
|
|
90
110
|
code = args_select.pop('code', None)
|
|
91
111
|
custom_id = args_select.pop('custom_id', StrNode('ui_select_'+str(random())))
|
|
92
|
-
select_type = StrNode(args_select.pop('type', 'string').lower())
|
|
112
|
+
select_type = StrNode(args_select.pop('type', StrNode('string')).lower())
|
|
93
113
|
|
|
94
114
|
disabled = args_select.get('disabled', BoolNode(0))
|
|
95
115
|
max_values = args_select.get('max', IntNode(1))
|
|
96
116
|
min_values = args_select.get('min', IntNode(1))
|
|
97
117
|
placeholder = args_select.get('placeholder', StrNode(""))
|
|
98
118
|
row = args_select.pop('row', IntNode(0))
|
|
119
|
+
timeout = args_select.pop('timeout', IntNode(UITimeout.default_timeout))
|
|
99
120
|
|
|
100
121
|
_validate_optional_code_node(code, "Select code", _CMD)
|
|
101
122
|
_validate_required_string(custom_id, "custom_id", _CMD)
|
|
@@ -105,6 +126,7 @@ async def build_ui_select_parameters(ui_select_node: UiSelectNode, interpreter:
|
|
|
105
126
|
_validate_required_int(max_values, "min", _CMD)
|
|
106
127
|
_validate_required_string(placeholder, "placeholder", _CMD)
|
|
107
128
|
_validate_optional_int(row, "row", _CMD)
|
|
129
|
+
_validate_required_int(timeout, 'timeout', _CMD)
|
|
108
130
|
|
|
109
131
|
if select_type not in SelectSyleValues:
|
|
110
132
|
raise TypeError(f"Select style must be one of {', '.join(SelectSyleValues.keys())}, not '{select_type}' !")
|
|
@@ -117,6 +139,7 @@ async def build_ui_select_parameters(ui_select_node: UiSelectNode, interpreter:
|
|
|
117
139
|
args_select["row"] = row
|
|
118
140
|
args_select["type"] = SelectSyleValues[select_type]
|
|
119
141
|
args_select['custom_id'] = custom_id
|
|
142
|
+
args_select['timeout'] = check_timeout(timeout)
|
|
120
143
|
args = args_select.pop('*', ())
|
|
121
144
|
|
|
122
145
|
yield args, args_select, code
|
|
@@ -185,6 +208,7 @@ async def build_ui(ui_node: Union[UiButtonNode, UiSelectNode], interpreter: "Dsh
|
|
|
185
208
|
|
|
186
209
|
if isinstance(ui_node, UiButtonNode):
|
|
187
210
|
async for _, args_button, code in build_ui_button_parameters(ui_node, interpreter):
|
|
211
|
+
view.timeout = args_button.pop('timeout', IntNode(UITimeout.default_timeout))
|
|
188
212
|
b = ui.Button(**args_button)
|
|
189
213
|
view.add_items(b)
|
|
190
214
|
view.set_callable(b.custom_id, _callable=ui_button_callback, data={'code': code, scope_id: interpreter.scope_id})
|
|
@@ -196,6 +220,7 @@ async def build_ui(ui_node: Union[UiButtonNode, UiSelectNode], interpreter: "Dsh
|
|
|
196
220
|
|
|
197
221
|
options = args_select.pop("options", [])
|
|
198
222
|
select_type = args_select.pop("type")
|
|
223
|
+
view.timeout = args_select.pop('timeout', IntNode(UITimeout.default_timeout))
|
|
199
224
|
|
|
200
225
|
if select_type == ComponentType.string_select:
|
|
201
226
|
menu = s.add_string_select_menu(**args_select)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing_extensions import Literal
|
|
2
|
+
|
|
1
3
|
from Dshell.full_import import (
|
|
2
4
|
Any,
|
|
3
5
|
randint,
|
|
@@ -141,6 +143,57 @@ class IntNode(int, ASTNode, DATANode):
|
|
|
141
143
|
def __sizeof__(self):
|
|
142
144
|
return getsizeof(IntNode)
|
|
143
145
|
|
|
146
|
+
def __add__(self, value: "IntNode", /) -> "IntNode":
|
|
147
|
+
if not isinstance(value, IntNode):
|
|
148
|
+
raise Exception(f"Cannot add {type(value).__name__} type to IntNode")
|
|
149
|
+
return IntNode(super().__add__(value))
|
|
150
|
+
|
|
151
|
+
def __sub__(self, value: "IntNode", /) -> "IntNode":
|
|
152
|
+
if not isinstance(value, IntNode):
|
|
153
|
+
raise Exception(f"Cannot sub {type(value).__name__} type to IntNode")
|
|
154
|
+
return IntNode(super().__sub__(value))
|
|
155
|
+
|
|
156
|
+
def __pow__(self, x: "IntNode", /) -> "IntNode":
|
|
157
|
+
if not isinstance(x, IntNode):
|
|
158
|
+
raise Exception(f"Cannot pow {type(x).__name__} type to IntNode")
|
|
159
|
+
return IntNode(super().__pow__(x))
|
|
160
|
+
|
|
161
|
+
def __floordiv__(self, value: "IntNode", /) -> "IntNode":
|
|
162
|
+
if not isinstance(value, IntNode):
|
|
163
|
+
raise Exception(f"Cannot divide {type(value).__name__} type to IntNode")
|
|
164
|
+
return IntNode(super().__floordiv__(value))
|
|
165
|
+
|
|
166
|
+
def __rshift__(self, value: "IntNode", /) -> "IntNode":
|
|
167
|
+
if not isinstance(value, IntNode):
|
|
168
|
+
raise Exception(f"Cannot shift to the right {type(value).__name__} type to IntNode")
|
|
169
|
+
return IntNode(super().__rshift__(value))
|
|
170
|
+
|
|
171
|
+
def __lshift__(self, value: "IntNode", /) -> "IntNode":
|
|
172
|
+
if not isinstance(value, IntNode):
|
|
173
|
+
raise Exception(f"Cannot shift to the left {type(value).__name__} type to IntNode")
|
|
174
|
+
return IntNode(super().__lshift__(value))
|
|
175
|
+
|
|
176
|
+
def __xor__(self, value: "IntNode", /) -> "IntNode":
|
|
177
|
+
if not isinstance(value, IntNode):
|
|
178
|
+
raise Exception(f"Cannot xor {type(value).__name__} type to IntNode")
|
|
179
|
+
return IntNode(super().__xor__(value))
|
|
180
|
+
|
|
181
|
+
def __truediv__(self, value: "IntNode", /) -> "FloatNode":
|
|
182
|
+
if not isinstance(value, IntNode):
|
|
183
|
+
raise Exception(f"Cannot divide {type(value).__name__} type to IntNode")
|
|
184
|
+
return FloatNode(super().__truediv__(value))
|
|
185
|
+
|
|
186
|
+
def __mul__(self, value: "IntNode", /) -> "IntNode":
|
|
187
|
+
if not isinstance(value, IntNode):
|
|
188
|
+
raise Exception(f"Cannot multiply {type(value).__name__} type to IntNode")
|
|
189
|
+
return IntNode(super().__mul__(value))
|
|
190
|
+
|
|
191
|
+
def __mod__(self, value: "IntNode", /) -> "IntNode":
|
|
192
|
+
if not isinstance(value, IntNode):
|
|
193
|
+
raise Exception(f"Cannot modulo {type(value).__name__} type to IntNode")
|
|
194
|
+
return IntNode(super().__mod__(value))
|
|
195
|
+
|
|
196
|
+
|
|
144
197
|
class FloatNode(float, ASTNode, DATANode):
|
|
145
198
|
def __new__(cls, value: Union[str, StrNode, float, "FloatNode", int, IntNode]):
|
|
146
199
|
return super().__new__(cls, value)
|
|
@@ -151,6 +204,56 @@ class FloatNode(float, ASTNode, DATANode):
|
|
|
151
204
|
def __sizeof__(self):
|
|
152
205
|
return getsizeof(FloatNode)
|
|
153
206
|
|
|
207
|
+
def __add__(self, value: "FloatNode", /) -> "FloatNode":
|
|
208
|
+
if not isinstance(value, FloatNode):
|
|
209
|
+
raise Exception(f"Cannot add {type(value).__name__} type to FloatNode")
|
|
210
|
+
return FloatNode(super().__add__(value))
|
|
211
|
+
|
|
212
|
+
def __sub__(self, value: "FloatNode", /) -> "FloatNode":
|
|
213
|
+
if not isinstance(value, FloatNode):
|
|
214
|
+
raise Exception(f"Cannot sub {type(value).__name__} type to FloatNode")
|
|
215
|
+
return FloatNode(super().__sub__(value))
|
|
216
|
+
|
|
217
|
+
def __pow__(self, x: "FloatNode", /) -> "FloatNode":
|
|
218
|
+
if not isinstance(x, FloatNode):
|
|
219
|
+
raise Exception(f"Cannot pow {type(x).__name__} type to FloatNode")
|
|
220
|
+
return FloatNode(super().__pow__(x))
|
|
221
|
+
|
|
222
|
+
def __floordiv__(self, value: "FloatNode", /) -> "FloatNode":
|
|
223
|
+
if not isinstance(value, FloatNode):
|
|
224
|
+
raise Exception(f"Cannot divide {type(value).__name__} type to FloatNode")
|
|
225
|
+
return FloatNode(super().__floordiv__(value))
|
|
226
|
+
|
|
227
|
+
def __rshift__(self, value: "FloatNode", /) -> "FloatNode":
|
|
228
|
+
if not isinstance(value, FloatNode):
|
|
229
|
+
raise Exception(f"Cannot shift to the right {type(value).__name__} type to FloatNode")
|
|
230
|
+
return FloatNode(super().__rshift__(value))
|
|
231
|
+
|
|
232
|
+
def __lshift__(self, value: "FloatNode", /) -> "FloatNode":
|
|
233
|
+
if not isinstance(value, FloatNode):
|
|
234
|
+
raise Exception(f"Cannot shift to the left {type(value).__name__} type to FloatNode")
|
|
235
|
+
return FloatNode(super().__lshift__(value))
|
|
236
|
+
|
|
237
|
+
def __xor__(self, value: "FloatNode", /) -> "FloatNode":
|
|
238
|
+
if not isinstance(value, FloatNode):
|
|
239
|
+
raise Exception(f"Cannot xor {type(value).__name__} type to FloatNode")
|
|
240
|
+
return FloatNode(super().__xor__(value))
|
|
241
|
+
|
|
242
|
+
def __truediv__(self, value: "FloatNode", /) -> "FloatNode":
|
|
243
|
+
if not isinstance(value, FloatNode):
|
|
244
|
+
raise Exception(f"Cannot divide {type(value).__name__} type to FloatNode")
|
|
245
|
+
return FloatNode(super().__truediv__(value))
|
|
246
|
+
|
|
247
|
+
def __mul__(self, value: "FloatNode", /) -> "FloatNode":
|
|
248
|
+
if not isinstance(value, FloatNode):
|
|
249
|
+
raise Exception(f"Cannot multiply {type(value).__name__} type to FloatNode")
|
|
250
|
+
return FloatNode(super().__mul__(value))
|
|
251
|
+
|
|
252
|
+
def __mod__(self, value: "FloatNode", /) -> "FloatNode":
|
|
253
|
+
if not isinstance(value, FloatNode):
|
|
254
|
+
raise Exception(f"Cannot modulo {type(value).__name__} type to FloatNode")
|
|
255
|
+
return FloatNode(super().__mod__(value))
|
|
256
|
+
|
|
154
257
|
class BoolNode(int, ASTNode, DATANode):
|
|
155
258
|
def __new__(cls, value: Union[str, StrNode, int, IntNode, bool, "BoolNode"]):
|
|
156
259
|
return super().__new__(cls, int(bool(value)))
|
|
@@ -161,6 +264,56 @@ class BoolNode(int, ASTNode, DATANode):
|
|
|
161
264
|
def __sizeof__(self):
|
|
162
265
|
return getsizeof(BoolNode)
|
|
163
266
|
|
|
267
|
+
def __add__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
268
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
269
|
+
raise Exception(f"Cannot add {type(value).__name__} type to IntNode")
|
|
270
|
+
return BoolNode(super().__add__(value))
|
|
271
|
+
|
|
272
|
+
def __sub__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
273
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
274
|
+
raise Exception(f"Cannot sub {type(value).__name__} type to IntNode")
|
|
275
|
+
return BoolNode(super().__sub__(value))
|
|
276
|
+
|
|
277
|
+
def __pow__(self, x: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
278
|
+
if not isinstance(x, (BoolNode, IntNode)):
|
|
279
|
+
raise Exception(f"Cannot pow {type(x).__name__} type to IntNode")
|
|
280
|
+
return BoolNode(super().__pow__(x))
|
|
281
|
+
|
|
282
|
+
def __floordiv__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
283
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
284
|
+
raise Exception(f"Cannot divide {type(value).__name__} type to IntNode")
|
|
285
|
+
return BoolNode(super().__floordiv__(value))
|
|
286
|
+
|
|
287
|
+
def __rshift__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
288
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
289
|
+
raise Exception(f"Cannot shift to the right {type(value).__name__} type to IntNode")
|
|
290
|
+
return BoolNode(super().__rshift__(value))
|
|
291
|
+
|
|
292
|
+
def __lshift__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
293
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
294
|
+
raise Exception(f"Cannot shift to the left {type(value).__name__} type to IntNode")
|
|
295
|
+
return BoolNode(super().__lshift__(value))
|
|
296
|
+
|
|
297
|
+
def __xor__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
298
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
299
|
+
raise Exception(f"Cannot xor {type(value).__name__} type to IntNode")
|
|
300
|
+
return BoolNode(super().__xor__(value))
|
|
301
|
+
|
|
302
|
+
def __truediv__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
303
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
304
|
+
raise Exception(f"Cannot divide {type(value).__name__} type to IntNode")
|
|
305
|
+
return BoolNode(super().__truediv__(value))
|
|
306
|
+
|
|
307
|
+
def __mul__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
308
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
309
|
+
raise Exception(f"Cannot multiply {type(value).__name__} type to IntNode")
|
|
310
|
+
return BoolNode(super().__mul__(value))
|
|
311
|
+
|
|
312
|
+
def __mod__(self, value: Union["BoolNode", "IntNode"], /) -> "BoolNode":
|
|
313
|
+
if not isinstance(value, (BoolNode, IntNode)):
|
|
314
|
+
raise Exception(f"Cannot modulo {type(value).__name__} type to IntNode")
|
|
315
|
+
return BoolNode(super().__mod__(value))
|
|
316
|
+
|
|
164
317
|
class StartNode(ASTNode):
|
|
165
318
|
"""
|
|
166
319
|
Node representing the start of the AST.
|
|
@@ -13,5 +13,5 @@ from discord.utils import get, _MissingSentinel
|
|
|
13
13
|
from contextvars import ContextVar
|
|
14
14
|
from re import *
|
|
15
15
|
from random import randint, choice, random
|
|
16
|
-
from enum import Enum, auto, StrEnum
|
|
16
|
+
from enum import Enum, auto, StrEnum, IntEnum
|
|
17
17
|
from collections import ChainMap
|
|
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name="dshellInterpreter",
|
|
8
|
-
version="1.2.7.
|
|
8
|
+
version="1.2.7.10",
|
|
9
9
|
author="Chronos",
|
|
10
10
|
author_email="vagabonwalybi@gmail.com",
|
|
11
11
|
description="A Discord bot interpreter for creating custom commands and automations.",
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/__init__.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_channel.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_embed.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_file.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_member.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_message.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/dshell_role.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_file.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DISCORD_COMMANDS/utils/utils_list.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/dshell_scope.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellInterpreteur/errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellParser/dshell_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellPreProcess/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellTokenizer/dshell_keywords.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellTokenizer/dshell_token_type.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/Dshell/DshellTokenizer/dshell_tokenizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/dshellInterpreter.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/dshellInterpreter.egg-info/requires.txt
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.7.8 → dshellinterpreter-1.2.7.10}/dshellInterpreter.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|