dekshell 0.2.25__py3-none-any.whl → 0.2.27__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/__init__.py +7 -6
- dekshell/core/contexts/methods.py +3 -3
- dekshell/core/markers/__init__.py +1 -1
- dekshell/core/markers/base/__init__.py +12 -6
- dekshell/core/markers/base/core.py +6 -2
- dekshell/core/markers/base/shell.py +1 -1
- dekshell/core/markers/comment.py +7 -0
- dekshell/core/markers/var.py +5 -3
- dekshell/utils/cmd.py +4 -3
- {dekshell-0.2.25.dist-info → dekshell-0.2.27.dist-info}/METADATA +1 -1
- {dekshell-0.2.25.dist-info → dekshell-0.2.27.dist-info}/RECORD +13 -13
- {dekshell-0.2.25.dist-info → dekshell-0.2.27.dist-info}/WHEEL +0 -0
- {dekshell-0.2.25.dist-info → dekshell-0.2.27.dist-info}/entry_points.txt +0 -0
dekshell/core/__init__.py
CHANGED
|
@@ -37,11 +37,11 @@ def shell_command_file(filepath, **kwargs):
|
|
|
37
37
|
filepath = normal_path(filepath, unix=True)
|
|
38
38
|
with codecs.open(filepath, encoding='utf-8') as f:
|
|
39
39
|
kwargs['source'] = dict(desc=filepath)
|
|
40
|
-
kwargs['context'] = (kwargs.get('context') or {})
|
|
40
|
+
kwargs['context'] = {**(kwargs.get('context') or {}), **dict(
|
|
41
41
|
fp=filepath,
|
|
42
42
|
fpp=os.path.dirname(filepath),
|
|
43
43
|
fpy=seek_py_module_path(filepath),
|
|
44
|
-
)
|
|
44
|
+
)}
|
|
45
45
|
return shell_command_batch(f.read(), **kwargs)
|
|
46
46
|
|
|
47
47
|
|
|
@@ -56,9 +56,10 @@ default_configs = {
|
|
|
56
56
|
'descper': dict(desc_begin_per=True, desc_took_per=True),
|
|
57
57
|
'source': lambda src: dict(source=dict(desc=src))
|
|
58
58
|
}
|
|
59
|
-
default_configs
|
|
60
|
-
|
|
61
|
-
'
|
|
59
|
+
default_configs = {
|
|
60
|
+
**default_configs,
|
|
61
|
+
'notify': {**default_configs['beep'], **default_configs['deschead']},
|
|
62
|
+
'notifyper': {**default_configs['beep'], **default_configs['deschead'], **default_configs['descper']},
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
|
|
@@ -114,7 +115,7 @@ def shell_command_batch_core(
|
|
|
114
115
|
generate_markers(*(marker or []), **(plugin_kwargs or {})),
|
|
115
116
|
shell_exec, shell_cmd
|
|
116
117
|
)
|
|
117
|
-
context_final = get_all_context()
|
|
118
|
+
context_final = {**get_all_context(), **(context or {})}
|
|
118
119
|
tz = get_tz(tz)
|
|
119
120
|
ts_begin = time.time()
|
|
120
121
|
commands, ln = _get_commands(commands)
|
|
@@ -217,9 +217,9 @@ default_methods = {
|
|
|
217
217
|
'io': _io,
|
|
218
218
|
'reduce': reduce,
|
|
219
219
|
'chain': chain,
|
|
220
|
-
'echo': lambda *x, **y: print(*x, **dict(flush=True)
|
|
221
|
-
'echos': lambda *x, **y: print(*x, **dict(end='', flush=True)
|
|
222
|
-
'echox': lambda *x, **y: print(*x, **dict(file=sys.stderr, flush=True)
|
|
220
|
+
'echo': lambda *x, **y: print(*x, **{**dict(flush=True), **y}),
|
|
221
|
+
'echos': lambda *x, **y: print(*x, **{**dict(end='', flush=True), **y}),
|
|
222
|
+
'echox': lambda *x, **y: print(*x, **{**dict(file=sys.stderr, flush=True), **y}),
|
|
223
223
|
'pprint': pprint,
|
|
224
224
|
'o2s': obj2str,
|
|
225
225
|
'now': now,
|
|
@@ -39,7 +39,7 @@ def generate_markers(*args, **kwargs):
|
|
|
39
39
|
FunctionMarker, CallMarker, ReturnMarker, EnvGlobalMarker, EnvNonlocalMarker,
|
|
40
40
|
VarGlobalMarker, VarNonlocalMarker,
|
|
41
41
|
EndMarker, BreakMarker, ContinueMarker,
|
|
42
|
-
CommentMultiLineMarker, CommentMarker, CommentShebangMarker, CommentConfigMarker,
|
|
42
|
+
CommentMultiLineMarker, CommentMarker, CommentShebangMarker, CommentConfigMarker, TextContentMarker,
|
|
43
43
|
PipMarker,
|
|
44
44
|
CommandsMarker,
|
|
45
45
|
RedirectMarker, ShiftMarker,
|
|
@@ -74,6 +74,9 @@ class MarkerBase:
|
|
|
74
74
|
return bool(re.match(r, command))
|
|
75
75
|
return False
|
|
76
76
|
|
|
77
|
+
def text_content(self, command):
|
|
78
|
+
return command
|
|
79
|
+
|
|
77
80
|
def transform(self, parent):
|
|
78
81
|
return self
|
|
79
82
|
|
|
@@ -235,7 +238,7 @@ class MarkerBase:
|
|
|
235
238
|
def eval(context, s, v=None):
|
|
236
239
|
if not s:
|
|
237
240
|
return None
|
|
238
|
-
return eval(s, context.variables_full()
|
|
241
|
+
return eval(s, {**context.variables_full(), **(v or {})})
|
|
239
242
|
|
|
240
243
|
@classmethod
|
|
241
244
|
def eval_mixin(cls, context, expression, translate=True):
|
|
@@ -278,7 +281,7 @@ class MarkerBase:
|
|
|
278
281
|
|
|
279
282
|
@staticmethod
|
|
280
283
|
def eval_lines(context, s, v=None):
|
|
281
|
-
globals_ = context.variables_full()
|
|
284
|
+
globals_ = {**context.variables_full(), **(v or {})}
|
|
282
285
|
locals_ = {}
|
|
283
286
|
exec(s, globals_, locals_)
|
|
284
287
|
return locals_
|
|
@@ -354,10 +357,13 @@ class MarkerWithEnd(MarkerBase):
|
|
|
354
357
|
tag_tail = EndMarker
|
|
355
358
|
|
|
356
359
|
def get_inner_content(self, context, marker_node, sep='\n', translate=None):
|
|
360
|
+
def walk(node, depth):
|
|
361
|
+
if depth != 0:
|
|
362
|
+
commands.append(self.translate_case(context, node.text_content, translate))
|
|
363
|
+
|
|
357
364
|
commands = []
|
|
358
|
-
marker_node.walk(
|
|
359
|
-
|
|
360
|
-
return self.translate_case(context, text, translate)
|
|
365
|
+
marker_node.walk(walk)
|
|
366
|
+
return sep.join(commands)
|
|
361
367
|
|
|
362
368
|
def eval_codes(self, context, code):
|
|
363
369
|
if not code:
|
|
@@ -402,7 +408,7 @@ class MarkerShellBase(MarkerBase):
|
|
|
402
408
|
|
|
403
409
|
@classmethod
|
|
404
410
|
def execute_core(cls, context, command, marker_node, marker_set, kwargs=None):
|
|
405
|
-
kwargs = (marker_node.payload or {})
|
|
411
|
+
kwargs = {**(marker_node.payload or {}), **(kwargs or {})}
|
|
406
412
|
return marker_set.shell_cmd(command, cls.shell_cls(kwargs), env=context.environ_full())
|
|
407
413
|
|
|
408
414
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
|
-
from types import NoneType
|
|
4
3
|
from dektools.output import obj2str
|
|
5
4
|
from dektools.str import hex_random
|
|
6
5
|
from dektools.dict import MapChainContext
|
|
6
|
+
from dektools.typing import NoneType
|
|
7
7
|
from . import MarkerBase, TransformerMarker, ExitException, QuitContextException
|
|
8
8
|
|
|
9
9
|
|
|
@@ -142,6 +142,10 @@ class MarkerNode:
|
|
|
142
142
|
def __repr__(self):
|
|
143
143
|
return f'Node({self.marker.__class__.__name__},line={self.line_number})'
|
|
144
144
|
|
|
145
|
+
@property
|
|
146
|
+
def text_content(self):
|
|
147
|
+
return self.marker.text_content(self.command)
|
|
148
|
+
|
|
145
149
|
@property
|
|
146
150
|
def debug_info(self):
|
|
147
151
|
def walk(node):
|
|
@@ -350,6 +354,6 @@ class MarkerSet:
|
|
|
350
354
|
try:
|
|
351
355
|
root = self.generate_tree(commands, ln)
|
|
352
356
|
return root.execute(
|
|
353
|
-
self.context_cls().update_variables((context or {})
|
|
357
|
+
self.context_cls().update_variables({**(context or {}), **dict(__inner_marker_set__=self)}), self)
|
|
354
358
|
except ExitException:
|
|
355
359
|
pass
|
dekshell/core/markers/comment.py
CHANGED
|
@@ -33,3 +33,10 @@ class CommentConfigMarker(MarkerCommentBase):
|
|
|
33
33
|
if end == -1:
|
|
34
34
|
end = None
|
|
35
35
|
return content[begin:end].strip()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class TextContentMarker(MarkerCommentBase):
|
|
39
|
+
tag_head = "/"
|
|
40
|
+
|
|
41
|
+
def text_content(self, command):
|
|
42
|
+
return command[len(self.tag_head):]
|
dekshell/core/markers/var.py
CHANGED
|
@@ -42,16 +42,18 @@ class AssignRawStrMarker(AssignStrMarker, MarkerNoTranslator):
|
|
|
42
42
|
|
|
43
43
|
class AssignMultiLineStrMarker(MarkerAssignBase, MarkerWithEnd):
|
|
44
44
|
tag_head_re_args = '::'
|
|
45
|
+
_translate_type = None
|
|
45
46
|
|
|
46
47
|
def execute(self, context, command, marker_node, marker_set):
|
|
47
|
-
text = self.get_inner_content(context, marker_node)
|
|
48
|
-
|
|
49
|
-
self.
|
|
48
|
+
text = self.get_inner_content(context, marker_node, translate=self._translate_type)
|
|
49
|
+
var_name = command[:re.search(self.tag_head_re_args, command).span()[0]]
|
|
50
|
+
self.set_var_raw(context, var_name.strip(), text)
|
|
50
51
|
return []
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
class AssignMultiLineRawStrMarker(AssignMultiLineStrMarker, MarkerNoTranslator):
|
|
54
55
|
tag_head_re_args = re.escape(r'\::')
|
|
56
|
+
_translate_type = False
|
|
55
57
|
|
|
56
58
|
|
|
57
59
|
class AssignEvalMarker(MarkerAssignValueBase, MarkerNoTranslator):
|
dekshell/utils/cmd.py
CHANGED
|
@@ -34,12 +34,13 @@ def ak2cmd(args=None, kwargs=None):
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
def pack_context(args, kwargs):
|
|
37
|
-
return {
|
|
37
|
+
return {
|
|
38
|
+
**{f'{key_arg}{i}': arg for i, arg in enumerate(args)}, **{key_args: tuple(args), key_kwargs: kwargs}, **kwargs}
|
|
38
39
|
|
|
39
40
|
|
|
40
41
|
def pack_context_argv():
|
|
41
|
-
return {f"{key_argv}{i}": x for i, x in enumerate(sys.argv)}
|
|
42
|
+
return {**{f"{key_argv}{i}": x for i, x in enumerate(sys.argv)}, **{key_argv: sys.argv}}
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
def pack_context_full(args=None, kwargs=None):
|
|
45
|
-
return pack_context(args or [], kwargs or {})
|
|
46
|
+
return {**pack_context(args or [], kwargs or {}), **pack_context_argv()}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
dekshell-0.2.
|
|
2
|
-
dekshell-0.2.
|
|
3
|
-
dekshell-0.2.
|
|
1
|
+
dekshell-0.2.27.dist-info/METADATA,sha256=4g1SAFNRqiCj9b1SaNNDVnY2sKGDALxg3jXW3Zy45io,573
|
|
2
|
+
dekshell-0.2.27.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
|
|
3
|
+
dekshell-0.2.27.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=rFzB_exzPQaIcbbms5PdHAU3NGdl2MBaYbq9v7g7BOI,1870
|
|
7
|
-
dekshell/core/__init__.py,sha256=
|
|
7
|
+
dekshell/core/__init__.py,sha256=7d3AjVUGIjXIXRYYiJ03rz5ZONTTojmGfgwpjGmKqtU,5448
|
|
8
8
|
dekshell/core/contexts/__init__.py,sha256=ynsfv37azOKfI2UKd0iPl2M6iBW-k5cb1BqSLOWuJpI,482
|
|
9
|
-
dekshell/core/contexts/methods.py,sha256=
|
|
9
|
+
dekshell/core/contexts/methods.py,sha256=ksoOgBHDRM6uiGHw3ubCk4x7ExJKvJ6H3eGhaM-SNDE,9722
|
|
10
10
|
dekshell/core/contexts/properties.py,sha256=esr51c6wDTDsuFXF2uj7WfyIGSq9H0dzqDqWzeMTNQE,2382
|
|
11
|
-
dekshell/core/markers/__init__.py,sha256=
|
|
12
|
-
dekshell/core/markers/base/__init__.py,sha256=
|
|
13
|
-
dekshell/core/markers/base/core.py,sha256=
|
|
14
|
-
dekshell/core/markers/base/shell.py,sha256=
|
|
11
|
+
dekshell/core/markers/__init__.py,sha256=yRQazZ1dxMltFao_RQnDnawSnQcjN_4B930MjJhaZ40,1968
|
|
12
|
+
dekshell/core/markers/base/__init__.py,sha256=mrOgC5glSG60NMpflSi5mb4bXTmDgv2i-ZYUHCef2Nw,13826
|
|
13
|
+
dekshell/core/markers/base/core.py,sha256=InsUA3md2gC6GyXQsvARfeNTrfbVD3gGOYxTM8VqqPA,11679
|
|
14
|
+
dekshell/core/markers/base/shell.py,sha256=fiFsTUDI8pSDDUCk834OI4ajri2qNWFJkLVhmUk2uAs,484
|
|
15
15
|
dekshell/core/markers/commands.py,sha256=mDRj4dSfKbDaZ_ts4lPXd6wftvGFI4VKkRoIzxV7otA,1696
|
|
16
|
-
dekshell/core/markers/comment.py,sha256=
|
|
16
|
+
dekshell/core/markers/comment.py,sha256=U1U3Xc4-giTqSEAPa4E_DmilZM9hs9zG-PCJ9nn4y5U,965
|
|
17
17
|
dekshell/core/markers/define.py,sha256=LpMSfz9ziXq2aFJ6oMpUFFo93TpBx7GxKYNzCeht4fQ,516
|
|
18
18
|
dekshell/core/markers/echo.py,sha256=1H61qQbY9tZnrKsdTI_shTmDY5ZaSGipDuBSRptAuZw,660
|
|
19
19
|
dekshell/core/markers/empty.py,sha256=pWKsHlrp6uXWU6blqOs0IgN_3kYm1OmDQiKGPERabAo,79
|
|
@@ -27,14 +27,14 @@ dekshell/core/markers/invoke.py,sha256=To_U_FscoCbf7osvjC5MQTk2gjH5Mu_-06Kb22YQP
|
|
|
27
27
|
dekshell/core/markers/pip_.py,sha256=mxXa_oqcrk4Qz-HvhlkMoirsl-SbM9Fz610leNqP1o0,832
|
|
28
28
|
dekshell/core/markers/redirect.py,sha256=3vfkRQ2tnQ6rSGGn7csgUlpDi0s2ep5X7JU7NVvo0eI,1984
|
|
29
29
|
dekshell/core/markers/shell.py,sha256=43BDAAzMdmgZmemkW5buh_w4LL1GDGw-s9fNZo6vhag,1929
|
|
30
|
-
dekshell/core/markers/var.py,sha256=
|
|
30
|
+
dekshell/core/markers/var.py,sha256=hGz2Gn6kjU563fPEjqBWhlbXGS_Oeg_az0ZRRjX2Dpo,5159
|
|
31
31
|
dekshell/core/markers/while_.py,sha256=e7lI5jsIM-qxNHMY_wUyCMvvesdXQibR5Ez2jNO9csc,1195
|
|
32
32
|
dekshell/core/plugin/__init__.py,sha256=jAB_KnnHJsyJR_zIfBU_HNLngyhcyyqVv05PdlNZtF8,428
|
|
33
33
|
dekshell/core/redirect.py,sha256=6YCJpG0TkQ4WMt7LBtDD_W1T-C-QkLtGRQw0S60qe54,1058
|
|
34
34
|
dekshell/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
dekshell/utils/beep.py,sha256=teuQgHbWDr8BD1xCJ4Pt79X6N1-eq1tTlyGunK6wBIM,120
|
|
36
|
-
dekshell/utils/cmd.py,sha256=
|
|
36
|
+
dekshell/utils/cmd.py,sha256=A0lEixQ7Ui0UxmeuymniyqCZXss9qQdX1C0COM7EEkQ,1234
|
|
37
37
|
dekshell/utils/pkg.py,sha256=TgYqRqawoJfjkxt6UAHnp9ttmpjuHiWRFbqxADOS1VE,1337
|
|
38
38
|
dekshell/utils/serializer.py,sha256=aIdF2Wzo-qHmIshv46jn1XD0X66vQ1JFdU-g3ZFbH2w,386
|
|
39
39
|
dekshell/utils/shell.py,sha256=0NoA2-SOOMinbmZZipwzL-npBbzPOdWEfdPVYqq5G5g,92
|
|
40
|
-
dekshell-0.2.
|
|
40
|
+
dekshell-0.2.27.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|