dshellInterpreter 1.2.0.3__tar.gz → 1.2.0.5__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.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_file.py +22 -1
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/dshell_global_variables.py +1 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/dshell_interpreter.py +33 -8
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellParser/ast_nodes.py +62 -4
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellTokenizer/dshell_keywords.py +1 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/full_import.py +1 -1
- {dshellinterpreter-1.2.0.3/dshellInterpreter.egg-info → dshellinterpreter-1.2.0.5}/PKG-INFO +1 -1
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5/dshellInterpreter.egg-info}/PKG-INFO +1 -1
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/setup.py +1 -1
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/__init__.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_channel.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_embed.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_interaction.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_member.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_message.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_role.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_ui.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/__init__.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_embed.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_file.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_global.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_list.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_member.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_message.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_numbers.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_permissions.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_string.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_thread.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_type_validation.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/__init__.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/cached_messages.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/dshell_arguments.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/dshell_scope.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/errors.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/utils_interpreter.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellParser/__init__.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellParser/dshell_parser.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellPreProcess/__init__.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellPreProcess/dshell_preprocess.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellTokenizer/__init__.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellTokenizer/dshell_token_type.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellTokenizer/dshell_tokenizer.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/__init__.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/regex_test.py +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/LICENSE +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/README.md +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/dshellInterpreter.egg-info/SOURCES.txt +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/dshellInterpreter.egg-info/dependency_links.txt +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/dshellInterpreter.egg-info/requires.txt +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/dshellInterpreter.egg-info/top_level.txt +0 -0
- {dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/setup.cfg +0 -0
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_file.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
|
|
1
2
|
from ..full_import import Message, Union, PartialMessage, Optional
|
|
2
|
-
from ..DshellParser.ast_nodes import ListNode, FileNode, StrNode, BoolNode, IntNode
|
|
3
|
+
from ..DshellParser.ast_nodes import ListNode, FileNode, StrNode, BoolNode, IntNode, FileStreamNode
|
|
3
4
|
|
|
4
5
|
from .utils.utils_message import utils_get_message
|
|
5
6
|
from .utils.utils_type_validation import (_validate_required_file_node,
|
|
@@ -11,6 +12,7 @@ __all__ = [
|
|
|
11
12
|
"dshell_get_message_files",
|
|
12
13
|
"dshell_write_file",
|
|
13
14
|
"dshell_read_file",
|
|
15
|
+
"dshell_stream_file"
|
|
14
16
|
]
|
|
15
17
|
|
|
16
18
|
async def dshell_get_message_files(ctx: Message, message: Union[StrNode, IntNode]) -> ListNode:
|
|
@@ -50,6 +52,25 @@ async def dshell_read_file(ctx: Message, file: FileNode) -> StrNode:
|
|
|
50
52
|
|
|
51
53
|
return StrNode(file.read())
|
|
52
54
|
|
|
55
|
+
async def dshell_stream_file(ctx: Message, file: FileNode, separator: Optional[StrNode] = None) -> FileStreamNode:
|
|
56
|
+
"""
|
|
57
|
+
Stream le contenue d'un fichier. Si un séparateur est passé en paramètre,
|
|
58
|
+
le stream s'arrêtera à chaque fois que le séparateur est rencontré, sinon il streamera ligne par ligne
|
|
59
|
+
(MAX_STR_SIZE de la str max renvoyé)
|
|
60
|
+
:param ctx:
|
|
61
|
+
:param file:
|
|
62
|
+
:param separator:
|
|
63
|
+
:return:
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
_validate_optional_string(separator, 'separator', 'sf')
|
|
67
|
+
|
|
68
|
+
if separator is not None and len(separator) > 1:
|
|
69
|
+
raise Exception(f"Separator in stream file must be a single character, not '{separator}' !")
|
|
70
|
+
|
|
71
|
+
return file.stream(separator)
|
|
72
|
+
|
|
73
|
+
|
|
53
74
|
async def dshell_write_file(ctx: Message,
|
|
54
75
|
message: StrNode,
|
|
55
76
|
append: BoolNode = BoolNode(False),
|
|
@@ -3,7 +3,7 @@ from ..DshellTokenizer.dshell_token_type import DshellTokenType as DTT
|
|
|
3
3
|
from ..DshellInterpreteur.errors import DshellInterpreterStopExecution
|
|
4
4
|
from Dshell.full_import import TypeVar, Union, Optional, Any, Callable, sleep, findall
|
|
5
5
|
from ..DshellParser.ast_nodes import *
|
|
6
|
-
from Dshell.full_import import AutoShardedBot, Interaction, Message, PrivateChannel
|
|
6
|
+
from Dshell.full_import import AutoShardedBot, Interaction, Message, PrivateChannel
|
|
7
7
|
from ..DshellParser.dshell_parser import parse, print_ast
|
|
8
8
|
from ..DshellTokenizer.dshell_tokenizer import DshellTokenizer
|
|
9
9
|
from .cached_messages import dshell_cached_messages
|
|
@@ -150,6 +150,7 @@ class DshellInterpreteur:
|
|
|
150
150
|
self.env.set(node.variable.name.value, i)
|
|
151
151
|
await self.execute(node.body)
|
|
152
152
|
|
|
153
|
+
|
|
153
154
|
async def _execute_var_node(self, node: VarNode):
|
|
154
155
|
"""Execute a variable assignment node."""
|
|
155
156
|
first_node = node.body[0]
|
|
@@ -353,19 +354,43 @@ class DshellIterator:
|
|
|
353
354
|
"""
|
|
354
355
|
|
|
355
356
|
def __init__(self, data):
|
|
356
|
-
self.data =
|
|
357
|
+
self.data = self._check_data(data)
|
|
357
358
|
self.current = 0
|
|
358
359
|
|
|
359
360
|
def __iter__(self):
|
|
360
361
|
return self
|
|
361
362
|
|
|
362
363
|
def __next__(self):
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
364
|
+
return next(self.data)
|
|
365
|
+
|
|
366
|
+
def _check_data(self, data: Any):
|
|
367
|
+
|
|
368
|
+
if not isinstance(data, (StrNode, ListNode, FloatNode, IntNode, FileNode, FileStreamNode)):
|
|
369
|
+
raise Exception(f"{data} can't be in a loop !")
|
|
370
|
+
|
|
371
|
+
if isinstance(data, FileNode):
|
|
372
|
+
return data.stream()
|
|
373
|
+
|
|
374
|
+
elif isinstance(data, (FloatNode, IntNode)):
|
|
375
|
+
return IntIterator(IntNode(data))
|
|
366
376
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
377
|
+
else:
|
|
378
|
+
return data
|
|
379
|
+
|
|
380
|
+
class IntIterator:
|
|
381
|
+
|
|
382
|
+
def __init__(self, max_iterator: IntNode):
|
|
383
|
+
self.max_iterator = max_iterator
|
|
384
|
+
self.pointer = IntNode(0)
|
|
370
385
|
|
|
386
|
+
def __iter__(self) -> "IntIterator":
|
|
387
|
+
return self
|
|
388
|
+
|
|
389
|
+
def __next__(self) -> IntNode:
|
|
390
|
+
if self.pointer >= self.max_iterator:
|
|
391
|
+
self.pointer = IntNode(0)
|
|
392
|
+
raise StopIteration
|
|
371
393
|
|
|
394
|
+
current = self.pointer
|
|
395
|
+
self.pointer += 1
|
|
396
|
+
return current
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from Dshell.full_import import (Any, randint, Optional, Union, Embed, Member, Role, PermissionOverwrite)
|
|
2
2
|
from ..DshellTokenizer.dshell_token_type import Token
|
|
3
|
-
from ..DshellInterpreteur.dshell_global_variables import MAX_STR_SIZE, MAX_LIST_SIZE
|
|
3
|
+
from ..DshellInterpreteur.dshell_global_variables import MAX_STR_SIZE, MAX_LIST_SIZE, MAX_FILE_SIZE
|
|
4
4
|
|
|
5
5
|
from sys import getsizeof
|
|
6
6
|
|
|
@@ -36,7 +36,8 @@ __all__ = [
|
|
|
36
36
|
'UiSelectNode',
|
|
37
37
|
'OptionUiSelectNode',
|
|
38
38
|
'ScanNode',
|
|
39
|
-
'FileNode'
|
|
39
|
+
'FileNode',
|
|
40
|
+
'FileStreamNode'
|
|
40
41
|
]
|
|
41
42
|
|
|
42
43
|
|
|
@@ -54,8 +55,17 @@ class ASTNode:
|
|
|
54
55
|
class StrNode(str, ASTNode):
|
|
55
56
|
|
|
56
57
|
def __new__(cls, value: Any):
|
|
58
|
+
cls.pointer = 0
|
|
57
59
|
return super().__new__(cls, value)
|
|
58
60
|
|
|
61
|
+
def __next__(self):
|
|
62
|
+
if self.pointer >= len(self):
|
|
63
|
+
raise StopIteration
|
|
64
|
+
|
|
65
|
+
current = self[self.pointer]
|
|
66
|
+
self.pointer += 1
|
|
67
|
+
return current
|
|
68
|
+
|
|
59
69
|
def __len__(self):
|
|
60
70
|
return IntNode(super().__len__())
|
|
61
71
|
|
|
@@ -791,8 +801,8 @@ class FileNode(ASTNode):
|
|
|
791
801
|
|
|
792
802
|
def write(self, content: bytearray, append: bool):
|
|
793
803
|
|
|
794
|
-
if self.size() + len(content) >
|
|
795
|
-
raise Exception("The file content cannot exceed
|
|
804
|
+
if self.size() + len(content) > MAX_FILE_SIZE:
|
|
805
|
+
raise Exception(f"The file content cannot exceed {MAX_FILE_SIZE} bytes !")
|
|
796
806
|
|
|
797
807
|
if append:
|
|
798
808
|
self.content += content
|
|
@@ -802,6 +812,10 @@ class FileNode(ASTNode):
|
|
|
802
812
|
def read(self):
|
|
803
813
|
return self.content.decode(encoding="utf-8", errors="ignore")
|
|
804
814
|
|
|
815
|
+
def stream(self, separator: Optional[StrNode] = None):
|
|
816
|
+
return FileStreamNode(self, separator)
|
|
817
|
+
|
|
818
|
+
|
|
805
819
|
def size(self):
|
|
806
820
|
return len(self.read())
|
|
807
821
|
|
|
@@ -811,6 +825,50 @@ class FileNode(ASTNode):
|
|
|
811
825
|
def __sizeof__(self):
|
|
812
826
|
return self.size()+getsizeof(FileNode)
|
|
813
827
|
|
|
828
|
+
class FileStreamNode(ASTNode):
|
|
829
|
+
|
|
830
|
+
def __init__(self, file: FileNode, separator: Optional[StrNode] = None):
|
|
831
|
+
super().__init__(-1)
|
|
832
|
+
self.file: FileNode = file
|
|
833
|
+
self.content: str = file.read()
|
|
834
|
+
self.separator: Optional[StrNode] = separator
|
|
835
|
+
self.pointer: int = 0
|
|
836
|
+
|
|
837
|
+
def __iter__(self):
|
|
838
|
+
return self
|
|
839
|
+
|
|
840
|
+
def __next__(self):
|
|
841
|
+
|
|
842
|
+
if self.pointer >= len(self.content):
|
|
843
|
+
self.pointer = 0
|
|
844
|
+
raise StopIteration()
|
|
845
|
+
|
|
846
|
+
buffer = ""
|
|
847
|
+
|
|
848
|
+
if self.separator is None:
|
|
849
|
+
|
|
850
|
+
while self.pointer < len(self.content) and self.content[self.pointer] != "\n":
|
|
851
|
+
if len(buffer.encode('utf-8', errors="ignore")) + len(
|
|
852
|
+
self.content[self.pointer].encode('utf-8', errors="ignore")) > MAX_STR_SIZE:
|
|
853
|
+
return StrNode(buffer)
|
|
854
|
+
|
|
855
|
+
buffer += self.content[self.pointer]
|
|
856
|
+
self.pointer += 1
|
|
857
|
+
|
|
858
|
+
self.pointer += 1 # Skip the newline character
|
|
859
|
+
return StrNode(buffer)
|
|
860
|
+
|
|
861
|
+
while self.pointer < len(self.content) and self.content[self.pointer] != self.separator:
|
|
862
|
+
if len(buffer.encode('utf-8', errors="ignore")) + len(
|
|
863
|
+
self.content[self.pointer].encode('utf-8', errors="ignore")) > MAX_STR_SIZE:
|
|
864
|
+
return StrNode(buffer)
|
|
865
|
+
|
|
866
|
+
buffer += self.content[self.pointer]
|
|
867
|
+
self.pointer += 1
|
|
868
|
+
self.pointer += 1 # Skip the newline character
|
|
869
|
+
return StrNode(buffer)
|
|
870
|
+
|
|
871
|
+
|
|
814
872
|
class ListNode(ASTNode):
|
|
815
873
|
"""
|
|
816
874
|
Node representing a list structure in the AST.
|
|
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name="dshellInterpreter",
|
|
8
|
-
version="1.2.0.
|
|
8
|
+
version="1.2.0.5",
|
|
9
9
|
author="Chronos",
|
|
10
10
|
author_email="vagabonwalybi@gmail.com",
|
|
11
11
|
description="A Discord bot interpreter for creating custom commands and automations.",
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_channel.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_embed.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_member.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_message.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_role.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/dshell_ui.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/__init__.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_embed.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DISCORD_COMMANDS/utils/utils_file.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/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.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/__init__.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/cached_messages.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellInterpreteur/dshell_scope.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellParser/dshell_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellPreProcess/dshell_preprocess.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellTokenizer/dshell_token_type.py
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/Dshell/DshellTokenizer/dshell_tokenizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/dshellInterpreter.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/dshellInterpreter.egg-info/requires.txt
RENAMED
|
File without changes
|
{dshellinterpreter-1.2.0.3 → dshellinterpreter-1.2.0.5}/dshellInterpreter.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|