dekshell 0.1.95__py3-none-any.whl → 0.1.97__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.
- dekshell/core/contexts/properties.py +1 -0
- dekshell/core/markers/__init__.py +4 -1
- dekshell/core/markers/base/__init__.py +17 -7
- dekshell/core/markers/base/core.py +1 -1
- dekshell/core/markers/exec.py +2 -2
- dekshell/core/markers/function.py +8 -0
- dekshell/core/markers/input.py +16 -0
- dekshell/core/markers/while_.py +9 -2
- {dekshell-0.1.95.dist-info → dekshell-0.1.97.dist-info}/METADATA +1 -1
- {dekshell-0.1.95.dist-info → dekshell-0.1.97.dist-info}/RECORD +12 -11
- {dekshell-0.1.95.dist-info → dekshell-0.1.97.dist-info}/WHEEL +0 -0
- {dekshell-0.1.95.dist-info → dekshell-0.1.97.dist-info}/entry_points.txt +0 -0
|
@@ -14,6 +14,7 @@ from .echo import *
|
|
|
14
14
|
from .pip_ import *
|
|
15
15
|
from .shell import *
|
|
16
16
|
from .redirect import *
|
|
17
|
+
from .input import *
|
|
17
18
|
from .timout import *
|
|
18
19
|
from .empty import *
|
|
19
20
|
|
|
@@ -23,14 +24,16 @@ def generate_markers(*args, **kwargs):
|
|
|
23
24
|
*args,
|
|
24
25
|
*get_markers_from_modules(**kwargs),
|
|
25
26
|
ErrorEchoMarker, EchoNoWrapMarker, EchoMarker,
|
|
27
|
+
InputMarker,
|
|
26
28
|
DelVarMarker,
|
|
27
29
|
ExecLinesUpdateMarker, ExecLinesMarker, ExecMarker, ExecCmdcallLinesMarker, ExecCmdcallMarker,
|
|
28
30
|
EnvShellMarker, EnvMarker,
|
|
29
31
|
IfMarker, IfElifMarker, IfElseMarker,
|
|
30
|
-
WhileMarker,
|
|
32
|
+
WhileMarker, WhileElseMarker,
|
|
31
33
|
ForMarker, ForElseMarker,
|
|
32
34
|
DefineMarker,
|
|
33
35
|
GotoMarker, InvokeMarker,
|
|
36
|
+
RaiseMarker,
|
|
34
37
|
FunctionMarker, CallMarker, ReturnMarker, EnvGlobalMarker, EnvNonlocalMarker,
|
|
35
38
|
VarGlobalMarker, VarNonlocalMarker,
|
|
36
39
|
EndMarker, BreakMarker, ContinueMarker,
|
|
@@ -90,6 +90,9 @@ class MarkerBase:
|
|
|
90
90
|
def ret(self, value):
|
|
91
91
|
raise QuitContextException(value)
|
|
92
92
|
|
|
93
|
+
def raise_(self, message):
|
|
94
|
+
raise RaiseException(message)
|
|
95
|
+
|
|
93
96
|
def set_var(self, context, array, index, value):
|
|
94
97
|
self.set_var_raw(context, self.get_item(array, index, self.var_name_anonymous), value)
|
|
95
98
|
|
|
@@ -291,7 +294,7 @@ class TransformerMarker(MarkerBase):
|
|
|
291
294
|
|
|
292
295
|
def transform(self, parent):
|
|
293
296
|
for target in self.targets:
|
|
294
|
-
if target
|
|
297
|
+
if isinstance(target, tuple(parent.final_branch_set)):
|
|
295
298
|
return target
|
|
296
299
|
return self.targets[0]
|
|
297
300
|
|
|
@@ -302,13 +305,13 @@ class TransformerMarker(MarkerBase):
|
|
|
302
305
|
records_target = set()
|
|
303
306
|
for i, marker in enumerate(markers):
|
|
304
307
|
match = marker.get_tag_match()
|
|
305
|
-
if
|
|
308
|
+
if match in records_markers:
|
|
306
309
|
records_markers[match].append(marker)
|
|
307
310
|
else:
|
|
308
|
-
records_markers[match] = []
|
|
311
|
+
records_markers[match] = [marker]
|
|
309
312
|
if len(records_markers[match]) > 1:
|
|
310
313
|
records_target.add(match)
|
|
311
|
-
if
|
|
314
|
+
if match not in records_index:
|
|
312
315
|
records_index[match] = i
|
|
313
316
|
offset = 0
|
|
314
317
|
for match in sorted(records_target, key=lambda x: records_index[x]):
|
|
@@ -321,11 +324,14 @@ class TransformerMarker(MarkerBase):
|
|
|
321
324
|
class MarkerWithEnd(MarkerBase):
|
|
322
325
|
tag_tail = EndMarker
|
|
323
326
|
|
|
324
|
-
def get_inner_content(self, context, marker_node):
|
|
327
|
+
def get_inner_content(self, context, marker_node, sep='\n', translate=None):
|
|
325
328
|
commands = []
|
|
326
329
|
marker_node.walk(lambda node, depth: commands.extend([] if depth == 0 else [node.command]))
|
|
327
|
-
text =
|
|
328
|
-
|
|
330
|
+
text = sep.join(commands)
|
|
331
|
+
if translate is None:
|
|
332
|
+
return self.translate(context, text)
|
|
333
|
+
else:
|
|
334
|
+
return self._translate(context, text) if translate else text
|
|
329
335
|
|
|
330
336
|
def eval_codes(self, context, code):
|
|
331
337
|
if not code:
|
|
@@ -382,3 +388,7 @@ class ExitException(ExceptionShell):
|
|
|
382
388
|
|
|
383
389
|
class QuitContextException(ExceptionShell):
|
|
384
390
|
pass
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
class RaiseException(ExceptionShell):
|
|
394
|
+
pass
|
dekshell/core/markers/exec.py
CHANGED
|
@@ -16,7 +16,7 @@ class ExecLinesMarker(MarkerWithEnd, MarkerNoTranslator):
|
|
|
16
16
|
tag_head = '=='
|
|
17
17
|
|
|
18
18
|
def execute(self, context, command, marker_node, marker_set):
|
|
19
|
-
code = self.get_inner_content(context, marker_node)
|
|
19
|
+
code = self.get_inner_content(context, marker_node, translate=False)
|
|
20
20
|
self.eval_lines(context, code)
|
|
21
21
|
return []
|
|
22
22
|
|
|
@@ -25,7 +25,7 @@ class ExecLinesUpdateMarker(MarkerWithEnd, MarkerNoTranslator):
|
|
|
25
25
|
tag_head = '==='
|
|
26
26
|
|
|
27
27
|
def execute(self, context, command, marker_node, marker_set):
|
|
28
|
-
code = self.get_inner_content(context, marker_node)
|
|
28
|
+
code = self.get_inner_content(context, marker_node, translate=False)
|
|
29
29
|
context.update_variables(self.eval_lines(context, code))
|
|
30
30
|
return []
|
|
31
31
|
|
|
@@ -63,6 +63,14 @@ class ReturnMarker(MarkerNoTranslator):
|
|
|
63
63
|
self.ret(self.eval_mixin(context, args[1]))
|
|
64
64
|
|
|
65
65
|
|
|
66
|
+
class RaiseMarker(MarkerBase):
|
|
67
|
+
tag_head = "raise"
|
|
68
|
+
|
|
69
|
+
def execute(self, context, command, marker_node, marker_set):
|
|
70
|
+
args = self.split_raw(command, 1, self.tag_head)
|
|
71
|
+
self.raise_(args[1])
|
|
72
|
+
|
|
73
|
+
|
|
66
74
|
class VarGlobalMarker(MarkerBase):
|
|
67
75
|
tag_head = "global"
|
|
68
76
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
from dektools.shell import shell_with_input
|
|
3
|
+
from .base import MarkerWithEnd, MarkerNoTranslator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class InputMarker(MarkerWithEnd, MarkerNoTranslator):
|
|
7
|
+
tag_head = 'input'
|
|
8
|
+
|
|
9
|
+
def execute(self, context, command, marker_node, marker_set):
|
|
10
|
+
command_text = self.get_inner_content(context, marker_node, sep='', translate=True).strip()
|
|
11
|
+
expression = self.split_raw(command, 1, self.tag_head)[1]
|
|
12
|
+
inputs = self.eval_mixin(context, expression)
|
|
13
|
+
rc = shell_with_input(command_text, inputs, env=context.environ_full())
|
|
14
|
+
if rc:
|
|
15
|
+
raise subprocess.CalledProcessError(rc, command_text)
|
|
16
|
+
return []
|
dekshell/core/markers/while_.py
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
from .base import MarkerWithEnd, BreakMarker, ContinueMarker, MarkerNoTranslator
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
class WhileElseMarker(MarkerWithEnd):
|
|
5
|
+
tag_head = "else"
|
|
6
|
+
|
|
7
|
+
|
|
4
8
|
class WhileMarker(MarkerWithEnd, MarkerNoTranslator):
|
|
5
9
|
tag_head = "while"
|
|
10
|
+
branch_set = {WhileElseMarker}
|
|
6
11
|
|
|
7
12
|
def bubble_continue(self, context, marker_set, marker_node_self, marker_node_target):
|
|
8
13
|
if marker_node_target.is_type(BreakMarker):
|
|
@@ -12,11 +17,13 @@ class WhileMarker(MarkerWithEnd, MarkerNoTranslator):
|
|
|
12
17
|
return None
|
|
13
18
|
|
|
14
19
|
def execute(self, context, command, marker_node, marker_set):
|
|
20
|
+
index_else = self.find_node(marker_node.children, True)
|
|
21
|
+
|
|
15
22
|
result = self.get_condition_result(context, command)
|
|
16
23
|
if result:
|
|
17
|
-
return [*marker_node.children, marker_set.node_cls(ContinueMarker(), None, None, marker_node)]
|
|
24
|
+
return [*marker_node.children[:index_else], marker_set.node_cls(ContinueMarker(), None, None, marker_node)]
|
|
18
25
|
else:
|
|
19
|
-
return []
|
|
26
|
+
return marker_node.children[index_else:]
|
|
20
27
|
|
|
21
28
|
def get_condition_result(self, context, command):
|
|
22
29
|
expression = command.split(self.tag_head, 1)[-1].strip()
|
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
dekshell-0.1.
|
|
2
|
-
dekshell-0.1.
|
|
3
|
-
dekshell-0.1.
|
|
1
|
+
dekshell-0.1.97.dist-info/METADATA,sha256=K1wot7YWg72KB90g-0atDjOncRCauRt_lRJ4Y9poNu8,521
|
|
2
|
+
dekshell-0.1.97.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
|
|
3
|
+
dekshell-0.1.97.dist-info/entry_points.txt,sha256=d-kbfULiUTZWIBBsrQF3J_-wESncF-4K2rwHT08grlI,75
|
|
4
4
|
dekshell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
dekshell/click/__entry__.py,sha256=CMuxUzXoEe4TcHFZwv-MNFwHnu1HSZCDpXFpqQ814uM,42
|
|
6
6
|
dekshell/click/__init__.py,sha256=UKK_JnWOaY6gDakc1GMlVHoU04Kj_ot79GVUt_CAVbI,1877
|
|
7
7
|
dekshell/core/__init__.py,sha256=nwHnjVIRHkEuFqPeoGqrydvfRFYt7cY8VGbQVCkEY0g,5204
|
|
8
8
|
dekshell/core/contexts/__init__.py,sha256=ynsfv37azOKfI2UKd0iPl2M6iBW-k5cb1BqSLOWuJpI,482
|
|
9
9
|
dekshell/core/contexts/methods.py,sha256=0T3_aZSbXnzYqxGCymHDqYnxZpTHhMjhY2KTfYhVXcs,5065
|
|
10
|
-
dekshell/core/contexts/properties.py,sha256=
|
|
11
|
-
dekshell/core/markers/__init__.py,sha256=
|
|
12
|
-
dekshell/core/markers/base/__init__.py,sha256=
|
|
13
|
-
dekshell/core/markers/base/core.py,sha256=
|
|
10
|
+
dekshell/core/contexts/properties.py,sha256=aLHtyUWedbFPQw33V5vQZTc4TeLMTC-AO6e7PhBZKbk,1570
|
|
11
|
+
dekshell/core/markers/__init__.py,sha256=bmGMbZRqsOohMKjH0AReFxZ-nIPFF6YgPJMFT6gTJEw,1725
|
|
12
|
+
dekshell/core/markers/base/__init__.py,sha256=YFl0KGw7MweeDE5PBBpie_IntXxS1gj-uiXWoC-dXJU,12941
|
|
13
|
+
dekshell/core/markers/base/core.py,sha256=AU4XGMWO4jWP2vc7PCOlVvV66rZ25fuQAeYKVqijT7k,10204
|
|
14
14
|
dekshell/core/markers/comment.py,sha256=28iccgLs_0bRdXLhHyQR2I_kzlWdeMSqqNUFW-2vkes,818
|
|
15
15
|
dekshell/core/markers/define.py,sha256=LpMSfz9ziXq2aFJ6oMpUFFo93TpBx7GxKYNzCeht4fQ,516
|
|
16
16
|
dekshell/core/markers/echo.py,sha256=1H61qQbY9tZnrKsdTI_shTmDY5ZaSGipDuBSRptAuZw,660
|
|
17
17
|
dekshell/core/markers/empty.py,sha256=xMYoZIxn7Tt1RjFtLhJERisra8jqsGjJ0G7OID0oD3o,776
|
|
18
18
|
dekshell/core/markers/env.py,sha256=6ZtiMNdKFbGR_DBjG6C7A8L_lJsiymN5Y5AbnTzyMrE,1158
|
|
19
|
-
dekshell/core/markers/exec.py,sha256=
|
|
19
|
+
dekshell/core/markers/exec.py,sha256=zT3mI7bBSgOpBICCjeb-vhAWbra9i8rABuUAVNnuMns,2032
|
|
20
20
|
dekshell/core/markers/for_.py,sha256=uNOEwyDsjffttEBtUYasdlj7FP_sGnQzWuTV5d5esHY,2142
|
|
21
|
-
dekshell/core/markers/function.py,sha256=
|
|
21
|
+
dekshell/core/markers/function.py,sha256=iqzpu01kvrPP31zXbRl7cQytRW89Q2UMueaBgsWGVV8,3570
|
|
22
22
|
dekshell/core/markers/if_.py,sha256=bBG1fDCZd5alE5FSm0QhgHl6ZJn5awiqZAXnPnO-thc,1112
|
|
23
|
+
dekshell/core/markers/input.py,sha256=HpqE1_PxrmeAVbWxACu0O7SeBVQpBw-aAmNIX5uWWYs,659
|
|
23
24
|
dekshell/core/markers/invoke.py,sha256=sXXg0p8Dyg4HQwnWFzWgcyhZYGWvNfhDgUumrrUoWkM,1431
|
|
24
25
|
dekshell/core/markers/pip_.py,sha256=mxXa_oqcrk4Qz-HvhlkMoirsl-SbM9Fz610leNqP1o0,832
|
|
25
26
|
dekshell/core/markers/redirect.py,sha256=7r0SpwIDkHkHjEDa26pNq3luOAE69fsFETyv4mKDw5k,1588
|
|
26
27
|
dekshell/core/markers/shell.py,sha256=oU_APU2__BO9-LeDE4uYDXClic8MGmwambD2jujkpVc,984
|
|
27
28
|
dekshell/core/markers/timout.py,sha256=sC1kNfcA_TFuKZFUaRCSnPHZ5az9Ap8rItSu5RwssUM,915
|
|
28
29
|
dekshell/core/markers/var.py,sha256=UEGnKdloRDOSi1KD8aJId9k7WTYkeDIKjsuT7tBJ5Lo,4210
|
|
29
|
-
dekshell/core/markers/while_.py,sha256=
|
|
30
|
+
dekshell/core/markers/while_.py,sha256=e7lI5jsIM-qxNHMY_wUyCMvvesdXQibR5Ez2jNO9csc,1195
|
|
30
31
|
dekshell/core/plugin/__init__.py,sha256=jAB_KnnHJsyJR_zIfBU_HNLngyhcyyqVv05PdlNZtF8,428
|
|
31
32
|
dekshell/core/redirect.py,sha256=6YCJpG0TkQ4WMt7LBtDD_W1T-C-QkLtGRQw0S60qe54,1058
|
|
32
33
|
dekshell/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -35,4 +36,4 @@ dekshell/utils/cmd.py,sha256=_WG7K-CO-WQkI9ERyrhI2d4yT-DX3OjjJWbNzhmsPus,1197
|
|
|
35
36
|
dekshell/utils/pkg.py,sha256=TgYqRqawoJfjkxt6UAHnp9ttmpjuHiWRFbqxADOS1VE,1337
|
|
36
37
|
dekshell/utils/serializer.py,sha256=aIdF2Wzo-qHmIshv46jn1XD0X66vQ1JFdU-g3ZFbH2w,386
|
|
37
38
|
dekshell/utils/shell.py,sha256=0NoA2-SOOMinbmZZipwzL-npBbzPOdWEfdPVYqq5G5g,92
|
|
38
|
-
dekshell-0.1.
|
|
39
|
+
dekshell-0.1.97.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|