dekshell 0.2.43__py3-none-any.whl → 0.2.45__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.
@@ -100,37 +100,60 @@ def _remove_path(path):
100
100
  _remove_path(item)
101
101
 
102
102
 
103
- _eval_default = object()
103
+ _default_value = object()
104
104
 
105
105
 
106
- def _eval_mixin(expression, default=_eval_default, translate=False):
107
- context = get_inner_vars('__inner_context__', full=True)
106
+ def _parse_expression(expression, default=_default_value, translate=False):
107
+ context = get_inner_vars('__inner_context__')
108
+ try:
109
+ return MarkerBase.parse_expression(context, expression, translate)
110
+ except NameError:
111
+ if default is _default_value:
112
+ raise
113
+ else:
114
+ return default
115
+
116
+
117
+ def _eval_mixin(expression, default=_default_value, translate=False):
118
+ context = get_inner_vars('__inner_context__')
108
119
  try:
109
120
  return MarkerBase.eval_mixin(context, expression, translate)
110
121
  except NameError:
111
- if default is _eval_default:
122
+ if default is _default_value:
112
123
  raise
113
124
  else:
114
125
  return default
115
126
 
116
127
 
117
- def _eval_lines(expression, default=_eval_default):
118
- context = get_inner_vars('__inner_context__', full=True)
128
+ def _eval_lines(expression, default=_default_value):
129
+ context = get_inner_vars('__inner_context__')
119
130
  try:
120
131
  return MarkerBase.eval_lines(context, expression)
121
132
  except NameError:
122
- if default is _eval_default:
133
+ if default is _default_value:
123
134
  raise
124
135
  else:
125
136
  return default
126
137
 
127
138
 
128
139
  def _global_update(variables):
129
- context = get_inner_vars('__inner_context__', full=True)
140
+ context = get_inner_vars('__inner_context__')
130
141
  for k, v in variables.items():
131
142
  MarkerBase.set_var_raw(context, k, v)
132
143
 
133
144
 
145
+ def _env_update(variables):
146
+ context = get_inner_vars('__inner_context__')
147
+ for k, v in variables.items():
148
+ context.add_env(k, v)
149
+
150
+
151
+ def _envs_update(variables):
152
+ context = get_inner_vars('__inner_context__')
153
+ for k, v in variables.items():
154
+ context.environ.add_item(k, v)
155
+
156
+
134
157
  def _defined(name):
135
158
  default = object()
136
159
  return _eval_mixin(name, default=default) is not default
@@ -198,7 +221,7 @@ def _time_mark(begin=True, name=None):
198
221
  if name is None:
199
222
  name = ''
200
223
  name = str(name).strip()
201
- marker_set = get_inner_vars('__inner_marker_set__', full=True)
224
+ marker_set = get_inner_vars('__inner_marker_set__')
202
225
  _now = time.time_ns()
203
226
  if begin:
204
227
  marker_set.vars.add_item(var_prefix + name, _now)
@@ -245,10 +268,21 @@ default_methods = {
245
268
  'timeout': shell_timeout,
246
269
  'retry': shell_retry,
247
270
  'run': shell_wrapper,
271
+ 'env': {
272
+ None: lambda k, v: _env_update({k: v}),
273
+ 'update': _env_update,
274
+ },
275
+ 'envs': {
276
+ None: lambda k, v: _envs_update({k: v}),
277
+ 'update': _envs_update,
278
+ },
279
+ 'expr': _parse_expression,
248
280
  'eval': _eval_mixin,
249
281
  'exec': _eval_lines,
250
- 'update': _global_update,
251
- 'assign': lambda k, v: _global_update({k: v}),
282
+ 'var': {
283
+ None: lambda k, v: _global_update({k: v}),
284
+ 'update': _global_update,
285
+ },
252
286
  'invoke': lambda __placeholder__filepath, *args, **kwargs: InvokeMarker.execute_file(
253
287
  None, __placeholder__filepath, args, kwargs),
254
288
  'goto': lambda __placeholder__filepath, *args, **kwargs: GotoMarker.execute_file(
@@ -44,37 +44,36 @@ is_on_win = os.name == "nt"
44
44
  path_root = path_home[:path_home.find(os.sep)] if is_on_win else os.sep
45
45
 
46
46
 
47
- class _Env:
48
- def __getattr__(self, item):
49
- return os.environ.get(item.upper(), '')
50
-
51
- def __getitem__(self, item):
52
- return os.environ[item.upper()]
53
-
54
- def __contains__(self, item):
55
- return item.upper() in os.environ
47
+ class _EnvBase:
48
+ __getenv__ = None
56
49
 
57
-
58
- class _EnvS:
59
50
  def __getattr__(self, item):
60
- context = get_inner_vars('__inner_context__', full=True)
61
- return context.get_env_full(item.upper(), '')
51
+ context = get_inner_vars('__inner_context__')
52
+ return getattr(context, self.__getenv__)(item.upper(), '')
62
53
 
63
54
  def __getitem__(self, item):
64
- context = get_inner_vars('__inner_context__', full=True)
55
+ context = get_inner_vars('__inner_context__')
65
56
  default = object()
66
- ret = context.get_env_full(item.upper(), default)
57
+ ret = getattr(context, self.__getenv__)(item.upper(), default)
67
58
  if ret is default:
68
59
  raise KeyError(item)
69
60
  return ret
70
61
 
71
62
  def __contains__(self, item):
72
- context = get_inner_vars('__inner_context__', full=True)
63
+ context = get_inner_vars('__inner_context__')
73
64
  default = object()
74
- ret = context.get_env_full(item.upper(), default)
65
+ ret = getattr(context, self.__getenv__)(item.upper(), default)
75
66
  return ret is not default
76
67
 
77
68
 
69
+ class _Env(_EnvBase):
70
+ __getenv__ = 'get_env'
71
+
72
+
73
+ class _EnvS(_EnvBase):
74
+ __getenv__ = 'get_env_full'
75
+
76
+
78
77
  default_properties = {
79
78
  'meta': {
80
79
  'name': package_name,
@@ -26,9 +26,9 @@ def generate_markers(*args, **kwargs):
26
26
  ErrorEchoMarker, EchoNoWrapMarker, EchoMarker,
27
27
  InputMarker, InputOnceMarker,
28
28
  DelVarMarker,
29
- ExecLinesUpdateMarker, ExecLinesMarker, ExecTranslatorMarker, ExecMarker, ExecCmdcallSimpleLinesMarker,
30
- ExecCmdcallLinesMarker,
31
- ExecCmdcallMarker, ExecCmdcallChainMarker,
29
+ ExecLinesUpdateMarker, ExecLinesTranslatorMarker, ExecLinesMarker, ExecTranslatorMarker, ExecMarker,
30
+ ExecCommandOutputChainMarker,
31
+ ExecCmdcallSimpleLinesMarker, ExecCmdcallLinesMarker, ExecCmdcallMarker, ExecCmdcallChainMarker,
32
32
  EnvShellMarker, EnvMarker,
33
33
  IfMarker, IfElifMarker, IfElseMarker,
34
34
  WhileMarker, WhileElseMarker,
@@ -50,7 +50,7 @@ def generate_markers(*args, **kwargs):
50
50
  AssignRetryMarker,
51
51
  AssignExecMarker, AssignTranslatorEvalMarker, AssignEvalMarker,
52
52
  AssignCommandRcSilenceMarker, AssignCommandRcMarker, AssignCommandOutputMarker,
53
- AssignEncodeStrMarker, AssignDecodeMarker, AssignEncodeMarker,
53
+ AssignDecodeMarker, AssignEncodeMarker,
54
54
  AssignEnvMarker, AssignEnvFullMarker, AssignCmdcallMarker, AssignCmdcallChainMarker,
55
55
  AssignMultiLineRawStrMarker, AssignMultiLineStrMarker, AssignRawStrMarker, AssignStrMarker,
56
56
  EmptyMarker, # must be at the tail
@@ -1,4 +1,3 @@
1
- import os
2
1
  import re
3
2
  import functools
4
3
  from dektools.str import deep_format, split_table_line, shlex_split, shlex_quote
@@ -30,7 +29,6 @@ class MarkerBase:
30
29
  trans_marker_command_rc_silence = '<<<'
31
30
  trans_marker_command_rc = '<<'
32
31
  trans_marker_command_output = '<'
33
- trans_marker_encode_str = '///'
34
32
  trans_marker_decode = '//'
35
33
  trans_marker_encode = '/'
36
34
  trans_marker_env = '$$'
@@ -171,7 +169,7 @@ class MarkerBase:
171
169
  change += 1
172
170
  if change in (0, 2):
173
171
  break
174
- value = cls.parse_expression(context, expression, ignore_errors)
172
+ value = cls.parse_expression(context, expression, False, False, ignore_errors)
175
173
  if as_var:
176
174
  return context.add_variable_temp(value)
177
175
  return value
@@ -183,10 +181,10 @@ class MarkerBase:
183
181
  re.escape(cls.trans_marker__end), handler, cls.trans_marker__escape)
184
182
 
185
183
  @classmethod
186
- def parse_expression(cls, context, expression, ignore_errors=False):
184
+ def parse_expression(cls, context, expression, translate_eval=True, translate_others=True, ignore_errors=False):
187
185
  def evaluate(expr, default):
188
186
  try:
189
- return cls.eval_mixin(context, expr, False)
187
+ return cls.eval_mixin(context, expr, translate_eval)
190
188
  except NameError:
191
189
  if ignore_errors:
192
190
  return default
@@ -198,22 +196,29 @@ class MarkerBase:
198
196
 
199
197
  if expression.startswith(cls.trans_marker_command_rc_silence):
200
198
  expression = expression[len(cls.trans_marker_command_rc_silence):]
199
+ if translate_others:
200
+ expression = cls.translate_case(context, expression, True)
201
201
  return shell_exitcode(expression, env=context.environ_full())
202
202
  elif expression.startswith(cls.trans_marker_command_rc):
203
203
  expression = expression[len(cls.trans_marker_command_rc):]
204
+ if translate_others:
205
+ expression = cls.translate_case(context, expression, True)
204
206
  return shell_wrapper(expression, check=False, env=context.environ_full())
205
207
  elif expression.startswith(cls.trans_marker_command_output):
206
208
  expression = expression[len(cls.trans_marker_command_output):]
209
+ if translate_others:
210
+ expression = cls.translate_case(context, expression, True)
207
211
  return shell_output(expression, env=context.environ_full())
208
212
  elif expression.startswith(cls.trans_marker_env):
209
213
  expression = expression[len(cls.trans_marker_env):]
214
+ if translate_others:
215
+ expression = cls.translate_case(context, expression, True)
210
216
  return context.get_env(expression.strip(), default_value)
211
217
  elif expression.startswith(cls.trans_marker_env_full):
212
218
  expression = expression[len(cls.trans_marker_env_full):]
219
+ if translate_others:
220
+ expression = cls.translate_case(context, expression, True)
213
221
  return context.get_env_full(expression.strip(), default_value)
214
- elif expression.startswith(cls.trans_marker_encode_str):
215
- expression = expression[len(cls.trans_marker_encode_str):]
216
- return serializer.dump(expression)
217
222
  elif expression.startswith(cls.trans_marker_decode):
218
223
  expression = expression[len(cls.trans_marker_decode):]
219
224
  value = evaluate(expression, empty_value)
@@ -435,13 +440,28 @@ class TransformerMarker(MarkerBase):
435
440
  class MarkerWithEnd(MarkerBase):
436
441
  tag_tail = EndMarker
437
442
 
438
- def get_inner_content(self, context, marker_node, sep='\n', translate=None):
443
+ def get_inner_content(self, context, marker_node, sep='\n', translate=None, code=False):
439
444
  def walk(node, depth):
440
445
  if depth != 0:
441
446
  commands.append(self.translate_case(context, node.text_content, translate))
442
447
 
443
448
  commands = []
444
449
  marker_node.walk(walk)
450
+ if code:
451
+ if commands:
452
+ c = commands[0]
453
+ cc = c.lstrip()
454
+ tabs = c[:len(c) - len(cc)]
455
+ result = []
456
+ for index, line in enumerate(commands):
457
+ if not line.startswith(tabs) and line.lstrip():
458
+ raise ValueError(
459
+ f'Code indent error:\n'
460
+ f'lineno=>{marker_node.line_number + index + 1}\n'
461
+ f'translated-line=>{line}'
462
+ )
463
+ result.append(line[len(tabs):])
464
+ commands = result
445
465
  return sep.join(commands)
446
466
 
447
467
  def eval_codes(self, context, code):
@@ -7,7 +7,7 @@ from dektools.typing import NoneType
7
7
  from . import MarkerBase, TransformerMarker, ExitException, QuitContextException
8
8
 
9
9
 
10
- def get_inner_vars(*var_name_list, full=False):
10
+ def get_inner_vars(*var_name_list, full=True):
11
11
  def walk(attr):
12
12
  depth = 1
13
13
  while True:
@@ -98,6 +98,14 @@ class MarkerContext:
98
98
  def get_env(name, default=None):
99
99
  return os.environ.get(name, default)
100
100
 
101
+ @staticmethod
102
+ def add_env(key, value):
103
+ os.environ[key] = value
104
+
105
+ @staticmethod
106
+ def remove_env(key):
107
+ os.environ.pop(key, None)
108
+
101
109
 
102
110
  class HiddenVarSet:
103
111
  def __init__(self):
@@ -215,8 +223,8 @@ class MarkerNode:
215
223
  raise
216
224
  except Exception as e:
217
225
  sys.stderr.write(f"Execute error {node.marker}:\n\
218
- command=> {node.command if node.command_old is None else node.command_old}\n\
219
- line=> {node.line_number}\n\
226
+ command=>{node.command if node.command_old is None else node.command_old}\n\
227
+ lineno=>{node.line_number}\n\
220
228
  context=>\n\
221
229
  {context}")
222
230
  raise e from None
@@ -12,5 +12,5 @@ class DefineMarker(MarkerNoTranslator):
12
12
  except NameError:
13
13
  expression = self.get_item(args, 2)
14
14
  if expression:
15
- result = self.eval_mixin(context, expression)
15
+ result = self.parse_expression(context, expression)
16
16
  self.set_var_raw(context, var_name, result)
@@ -24,9 +24,9 @@ class EnvMarker(MarkerEnvBase):
24
24
  if key:
25
25
  key = key.upper()
26
26
  if value is None:
27
- os.environ.pop(key, None)
27
+ context.remove_env(key)
28
28
  else:
29
- os.environ[key] = value
29
+ context.add_env(key, value)
30
30
 
31
31
 
32
32
  class EnvShellMarker(MarkerEnvBase):
@@ -25,7 +25,16 @@ class ExecLinesMarker(MarkerWithEnd, MarkerNoTranslator):
25
25
  tag_head = cmd_call_eval_prefix * 2
26
26
 
27
27
  def execute(self, context, command, marker_node, marker_set):
28
- code = self.get_inner_content(context, marker_node, translate=False)
28
+ code = self.get_inner_content(context, marker_node, translate=False, code=True)
29
+ self.eval_lines(context, code)
30
+ return []
31
+
32
+
33
+ class ExecLinesTranslatorMarker(MarkerWithEnd):
34
+ tag_head = cmd_call_eval_prefix + cmd_call_eval_trans_prefix
35
+
36
+ def execute(self, context, command, marker_node, marker_set):
37
+ code = self.get_inner_content(context, marker_node, translate=True, code=True)
29
38
  self.eval_lines(context, code)
30
39
  return []
31
40
 
@@ -34,7 +43,7 @@ class ExecLinesUpdateMarker(MarkerWithEnd, MarkerNoTranslator):
34
43
  tag_head = cmd_call_eval_prefix * 3
35
44
 
36
45
  def execute(self, context, command, marker_node, marker_set):
37
- code = self.get_inner_content(context, marker_node, translate=False)
46
+ code = self.get_inner_content(context, marker_node, translate=False, code=True)
38
47
  context.update_variables(self.eval_lines(context, code))
39
48
  return []
40
49
 
@@ -52,6 +61,15 @@ class ExecCmdcallChainMarker(ExecCmdcallMarkerBase):
52
61
  tag_head = cmd_call_prefix_chain + cmd_call_prefix_simple
53
62
 
54
63
 
64
+ class MarkerParseExprBase(MarkerBase):
65
+ def execute(self, context, command, marker_node, marker_set):
66
+ self.parse_expression(context, command.lstrip())
67
+
68
+
69
+ class ExecCommandOutputChainMarker(MarkerParseExprBase):
70
+ tag_head = MarkerBase.trans_marker_command_output
71
+
72
+
55
73
  class ExecCmdcallSimpleLinesMarker(MarkerWithEnd):
56
74
  command_append_prefix = cmd_call_prefix_simple
57
75
  tag_head = cmd_call_prefix_simple * 3
@@ -49,4 +49,4 @@ class ForMarker(MarkerWithEnd, MarkerNoTranslator):
49
49
  ]
50
50
 
51
51
  def get_expression_value(self, context, expression):
52
- return self.eval_mixin(context, expression)
52
+ return self.parse_expression(context, expression)
@@ -35,7 +35,7 @@ class Function:
35
35
  self.body = body
36
36
 
37
37
  def __call__(self, *args, **kwargs):
38
- context, marker_set = get_inner_vars('__inner_context__', '__inner_marker_set__', full=True)
38
+ context, marker_set = get_inner_vars('__inner_context__', '__inner_marker_set__')
39
39
  context = context.derive().update_variables(self.pack_variables(context, args, kwargs))
40
40
  return QuitContext.real(marker_set.node_cls.execute_nodes(context, marker_set, self.body[:])[0])
41
41
 
@@ -61,7 +61,7 @@ class ReturnMarker(MarkerNoTranslator):
61
61
 
62
62
  def execute(self, context, command, marker_node, marker_set):
63
63
  args = self.split_raw(command, 1, self.tag_head)
64
- self.ret(self.eval_mixin(context, args[1]))
64
+ self.ret(self.parse_expression(context, args[1]))
65
65
 
66
66
 
67
67
  class RaiseMarker(MarkerBase):
@@ -18,7 +18,7 @@ class MarkerWithJudge(MarkerWithEnd, MarkerNoTranslator):
18
18
  def get_condition_result(self, context, expression):
19
19
  if not expression:
20
20
  return self.empty_expected_value
21
- return self.eval_mixin(context, expression)
21
+ return self.parse_expression(context, expression)
22
22
 
23
23
 
24
24
  class IfElseMarker(MarkerWithJudge):
@@ -9,7 +9,7 @@ class InputMarker(MarkerWithEnd, MarkerNoTranslator):
9
9
  def execute(self, context, command, marker_node, marker_set):
10
10
  command_text = self.get_inner_content(context, marker_node, sep='', translate=True).strip()
11
11
  expression = self.split_raw(command, 1, self.tag_head)[1]
12
- inputs = self.eval_mixin(context, expression)
12
+ inputs = self.parse_expression(context, expression)
13
13
  rc = shell_with_input(command_text, inputs, env=context.environ_full())
14
14
  if rc:
15
15
  raise subprocess.CalledProcessError(rc, command_text)
@@ -17,7 +17,7 @@ class MarkerInvokerBase(MarkerBase):
17
17
  @classmethod
18
18
  def execute_file(cls, marker_set, filepath, args, kwargs):
19
19
  if marker_set is None:
20
- marker_set = get_inner_vars('__inner_marker_set__', full=True)
20
+ marker_set = get_inner_vars('__inner_marker_set__')
21
21
  return cls._run_file(marker_set, normal_path(filepath), pack_context_full(args, kwargs))
22
22
 
23
23
  @classmethod
@@ -75,7 +75,7 @@ class AssignExecMarker(MarkerAssignBase, MarkerWithEnd, MarkerNoTranslator):
75
75
  tag_head_re_args = cmd_call_eval_prefix * 2
76
76
 
77
77
  def execute(self, context, command, marker_node, marker_set):
78
- code = self.get_inner_content(context, marker_node, translate=False)
78
+ code = self.get_inner_content(context, marker_node, translate=False, code=True)
79
79
  result = self.eval_codes(context, code)
80
80
  args = self.split_raw(command, 1, self.tag_head_re_args)
81
81
  self.set_var(context, args, 0, result)
@@ -86,7 +86,7 @@ class MarkerAssignValueParseExprBase(MarkerAssignValueBase):
86
86
  tag_head_re_args_raw = None
87
87
 
88
88
  def get_value(self, context, marker_node, marker_set, expression):
89
- return self.parse_expression(context, self.tag_head_re_args_raw + expression)
89
+ return self.parse_expression(context, self.tag_head_re_args_raw + expression, False)
90
90
 
91
91
 
92
92
  class AssignCommandRcSilenceMarker(MarkerAssignValueParseExprBase):
@@ -104,11 +104,6 @@ class AssignCommandOutputMarker(MarkerAssignValueParseExprBase):
104
104
  tag_head_re_args = re.escape(MarkerBase.trans_marker_command_output)
105
105
 
106
106
 
107
- class AssignEncodeStrMarker(MarkerAssignValueParseExprBase):
108
- tag_head_re_args_raw = MarkerBase.trans_marker_encode_str
109
- tag_head_re_args = re.escape(MarkerBase.trans_marker_encode_str)
110
-
111
-
112
107
  class AssignDecodeMarker(MarkerAssignValueParseExprBase):
113
108
  tag_head_re_args_raw = MarkerBase.trans_marker_decode
114
109
  tag_head_re_args = re.escape(MarkerBase.trans_marker_decode)
@@ -29,4 +29,4 @@ class WhileMarker(MarkerWithEnd, MarkerNoTranslator):
29
29
  expression = command.split(self.tag_head, 1)[-1].strip()
30
30
  if not expression:
31
31
  return True
32
- return self.eval_mixin(context, expression)
32
+ return self.parse_expression(context, expression)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dekshell
3
- Version: 0.2.43
3
+ Version: 0.2.45
4
4
  Author-Email: sanzenwin <sanzenwin@gmail.com>
5
5
  License: MIT
6
6
  Requires-Python: >=3.8
@@ -1,34 +1,34 @@
1
- dekshell-0.2.43.dist-info/METADATA,sha256=7_oIag3oGwZRV1DcfxmuNFRmfSzHQRwJYo5ynVNx7Oc,573
2
- dekshell-0.2.43.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- dekshell-0.2.43.dist-info/entry_points.txt,sha256=d-kbfULiUTZWIBBsrQF3J_-wESncF-4K2rwHT08grlI,75
1
+ dekshell-0.2.45.dist-info/METADATA,sha256=rY4WEtfO49dKer-stqUf8iWB7EDBntXkGVxUfmRIp-s,573
2
+ dekshell-0.2.45.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ dekshell-0.2.45.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=r-AHdO9CEEVvTN20-8Jozr6Zh8XSv_BnktYRwrlhtrE,2046
7
7
  dekshell/core/__init__.py,sha256=isDEKwk1odLdvTQNCILCtVNBuXp1uFVPz_uTDNihkVU,5547
8
8
  dekshell/core/contexts/__init__.py,sha256=ynsfv37azOKfI2UKd0iPl2M6iBW-k5cb1BqSLOWuJpI,482
9
- dekshell/core/contexts/methods.py,sha256=4oGrhKT_KNtZ17Mm9Lw79pQJPkg00NwpZ_OLaM7x5s8,10897
10
- dekshell/core/contexts/properties.py,sha256=DCMp008aVpD-xEqrt3N1jftXonP9mVSkd80wFoBaxso,3471
11
- dekshell/core/markers/__init__.py,sha256=lBVNDy3fTImQn17FLvORA6kKQGrq5t_DIqoXJnJdAAY,2201
12
- dekshell/core/markers/base/__init__.py,sha256=RrGhwhJlgHXsKYYy2Q2oJAXS7kDOuMiLWwzAwO2j4ng,17007
13
- dekshell/core/markers/base/core.py,sha256=IM5mZ37k62vHfa457s5_Gh0rVEO6CXH5G4zqTeNm1IY,12399
9
+ dekshell/core/contexts/methods.py,sha256=3Bzfv_t8At5MqR0xD7qT8zye6KQySeXr0HpwuendrdE,11789
10
+ dekshell/core/contexts/properties.py,sha256=TQonN3T_K2cB2uakq_DVVB13B-IFwoM6t2ZkL_OMekw,3365
11
+ dekshell/core/markers/__init__.py,sha256=mK6OiZMWmUTrkAL0Bc1XqRTSb-NNhBgpHb7GLivLAlk,2235
12
+ dekshell/core/markers/base/__init__.py,sha256=uG2r2IWQC8L8R1b8SMVJRJUH3Bj_ACU7AjVZIsI7BWw,18039
13
+ dekshell/core/markers/base/core.py,sha256=SwZuCDYGyhm1HUeeBOjO_SDKRZ7IwQI9at1u6X4pmsE,12556
14
14
  dekshell/core/markers/base/shell.py,sha256=fiFsTUDI8pSDDUCk834OI4ajri2qNWFJkLVhmUk2uAs,484
15
15
  dekshell/core/markers/commands.py,sha256=mDRj4dSfKbDaZ_ts4lPXd6wftvGFI4VKkRoIzxV7otA,1696
16
16
  dekshell/core/markers/comment.py,sha256=U1U3Xc4-giTqSEAPa4E_DmilZM9hs9zG-PCJ9nn4y5U,965
17
- dekshell/core/markers/define.py,sha256=LpMSfz9ziXq2aFJ6oMpUFFo93TpBx7GxKYNzCeht4fQ,516
17
+ dekshell/core/markers/define.py,sha256=Xlw_YPOWlmbopVIHhIeAKWSZhHhXmqb3gCbXxvuH4BQ,522
18
18
  dekshell/core/markers/echo.py,sha256=1H61qQbY9tZnrKsdTI_shTmDY5ZaSGipDuBSRptAuZw,660
19
19
  dekshell/core/markers/empty.py,sha256=pWKsHlrp6uXWU6blqOs0IgN_3kYm1OmDQiKGPERabAo,79
20
- dekshell/core/markers/env.py,sha256=6ZtiMNdKFbGR_DBjG6C7A8L_lJsiymN5Y5AbnTzyMrE,1158
21
- dekshell/core/markers/exec.py,sha256=3yWpaCpASrMwzqVslDNzBaUVL7Lbn-zWMs-dOxUePZU,2744
22
- dekshell/core/markers/for_.py,sha256=uNOEwyDsjffttEBtUYasdlj7FP_sGnQzWuTV5d5esHY,2142
23
- dekshell/core/markers/function.py,sha256=lYCfK3SAjBwxmJAanpPAqObY4s1FNvZ15FT32_qkaTc,3855
24
- dekshell/core/markers/if_.py,sha256=bBG1fDCZd5alE5FSm0QhgHl6ZJn5awiqZAXnPnO-thc,1112
25
- dekshell/core/markers/input.py,sha256=O0yvGtt1uhbpE2gOReLseAmshVpZYMW3zV-OabZt0lw,1182
26
- dekshell/core/markers/invoke.py,sha256=Gf7Y3anFlpXso7oNxecqPtzKoWhFVn3PZVJ8VIgnKls,1986
20
+ dekshell/core/markers/env.py,sha256=hU6irauFrvsUgK9j6jifosiMn0b6mt3aOf5t9oKhxS4,1160
21
+ dekshell/core/markers/exec.py,sha256=tcKZzTuGH17UOi6dycgHGjX3mHrvjKLj8Bnga38tE7U,3369
22
+ dekshell/core/markers/for_.py,sha256=wQnK3-o0dQl4A2wx8xgs6V2dzgEjEbnt4MML2fh2x8U,2148
23
+ dekshell/core/markers/function.py,sha256=j8Cz4ouBQi_0dT6Q6pfJie-1rfIZuSIcWzGBlsKCSd8,3850
24
+ dekshell/core/markers/if_.py,sha256=UqEnR0X9bKO7hEKol3MJNWXvP7fuJAGt8zwk3xlBCuk,1118
25
+ dekshell/core/markers/input.py,sha256=94SWaeLnwtxRdIn9Ck0IxMZL6vOXVCedUmsp5IPAwWo,1188
26
+ dekshell/core/markers/invoke.py,sha256=ESL2DE9DTaq33AnrXpvEudp1qtoeZFKOhLL12OQpcs0,1975
27
27
  dekshell/core/markers/pip_.py,sha256=mxXa_oqcrk4Qz-HvhlkMoirsl-SbM9Fz610leNqP1o0,832
28
28
  dekshell/core/markers/redirect.py,sha256=cpTQaXFAuSwprsrhUNP0xTGDmu06HGNQVcwKsETEjas,1981
29
29
  dekshell/core/markers/shell.py,sha256=43BDAAzMdmgZmemkW5buh_w4LL1GDGw-s9fNZo6vhag,1929
30
- dekshell/core/markers/var.py,sha256=y7gfEtEKs7x3T95AAUTFN6aG3vFiUMMG_TAjfUJFT6U,7070
31
- dekshell/core/markers/while_.py,sha256=e7lI5jsIM-qxNHMY_wUyCMvvesdXQibR5Ez2jNO9csc,1195
30
+ dekshell/core/markers/var.py,sha256=lGKhKP7NcKc5f_kiombR1d_d2TyRYfVDa9mcB3MJxOY,6894
31
+ dekshell/core/markers/while_.py,sha256=Q0SaElyXSrxg-wS_rfCcxMsmw9jf-0SgN1ICn860T4A,1201
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
@@ -37,4 +37,4 @@ dekshell/utils/cmd.py,sha256=K9FbXgHcGFchHA58xI0_t4YK4yb8XkWbxsNoztYRx3Y,518
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.43.dist-info/RECORD,,
40
+ dekshell-0.2.45.dist-info/RECORD,,