dekshell 0.2.16__tar.gz → 0.2.18__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.
Files changed (38) hide show
  1. {dekshell-0.2.16 → dekshell-0.2.18}/PKG-INFO +1 -1
  2. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/contexts/methods.py +40 -4
  3. {dekshell-0.2.16 → dekshell-0.2.18}/pyproject.toml +1 -1
  4. {dekshell-0.2.16 → dekshell-0.2.18}/README.md +0 -0
  5. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/__init__.py +0 -0
  6. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/click/__entry__.py +0 -0
  7. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/click/__init__.py +0 -0
  8. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/__init__.py +0 -0
  9. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/contexts/__init__.py +0 -0
  10. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/contexts/properties.py +0 -0
  11. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/__init__.py +0 -0
  12. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/base/__init__.py +0 -0
  13. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/base/core.py +0 -0
  14. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/commands.py +0 -0
  15. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/comment.py +0 -0
  16. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/define.py +0 -0
  17. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/echo.py +0 -0
  18. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/empty.py +0 -0
  19. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/env.py +0 -0
  20. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/exec.py +0 -0
  21. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/for_.py +0 -0
  22. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/function.py +0 -0
  23. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/if_.py +0 -0
  24. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/input.py +0 -0
  25. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/invoke.py +0 -0
  26. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/pip_.py +0 -0
  27. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/redirect.py +0 -0
  28. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/shell.py +0 -0
  29. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/var.py +0 -0
  30. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/while_.py +0 -0
  31. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/plugin/__init__.py +0 -0
  32. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/redirect.py +0 -0
  33. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/__init__.py +0 -0
  34. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/beep.py +0 -0
  35. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/cmd.py +0 -0
  36. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/pkg.py +0 -0
  37. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/serializer.py +0 -0
  38. {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/shell.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dekshell
3
- Version: 0.2.16
3
+ Version: 0.2.18
4
4
  Author-Email: sanzenwin <sanzenwin@gmail.com>
5
5
  License: MIT
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import shutil
3
3
  import sys
4
+ import time
4
5
  import tempfile
5
6
  import getpass
6
7
  from importlib import import_module
@@ -23,6 +24,7 @@ from dektools.download import download_from_http
23
24
  from dektools.ps.process import process_detail, process_kill, process_list_all
24
25
  from dektools.time import now
25
26
  from dektools.str import shlex_split, shlex_quote
27
+ from dektools.format import format_duration
26
28
  from dektools.shell import shell_wrapper, is_user_admin, shell_timeout, shell_retry
27
29
  from dektools.match import GeneralMatcher, glob2re, glob_compile, glob_match
28
30
  from dektools.cmd.git import git_clean_dir, git_apply, git_parse_modules, git_fetch_min, git_list_remotes, git_head
@@ -99,15 +101,26 @@ def _remove_path(path):
99
101
  _remove_path(item)
100
102
 
101
103
 
102
- _xeval_default = object()
104
+ _eval_default = object()
103
105
 
104
106
 
105
- def _xeval(expression, default=_xeval_default, translate=False):
107
+ def _eval_mixin(expression, default=_eval_default, translate=False):
106
108
  context = get_inner_vars('__inner_context__', full=True)
107
109
  try:
108
110
  return MarkerBase.eval_mixin(context, expression, translate)
109
111
  except NameError:
110
- if default is _xeval_default:
112
+ if default is _eval_default:
113
+ raise
114
+ else:
115
+ return default
116
+
117
+
118
+ def _eval_lines(expression, default=_eval_default):
119
+ context = get_inner_vars('__inner_context__', full=True)
120
+ try:
121
+ return MarkerBase.eval_lines(context, expression)
122
+ except NameError:
123
+ if default is _eval_default:
111
124
  raise
112
125
  else:
113
126
  return default
@@ -162,6 +175,23 @@ def _pymd(name):
162
175
  return None
163
176
 
164
177
 
178
+ def _time_mark(begin=True, name=None):
179
+ var_prefix = '__time_marker__'
180
+ if name is None:
181
+ name = ''
182
+ name = str(name).strip()
183
+ marker_set = get_inner_vars('__inner_marker_set__', full=True)
184
+ _now = time.time_ns()
185
+ if begin:
186
+ marker_set.vars.add_item(var_prefix + name, _now)
187
+ else:
188
+ t = marker_set.vars.get_item(var_prefix + name, None)
189
+ if t is None:
190
+ return ''
191
+ else:
192
+ return format_duration(int((_now - t) / 10 ** 6))
193
+
194
+
165
195
  path_common_methods = {
166
196
  'cd': _cd,
167
197
  'cwd': lambda: os.getcwd(),
@@ -179,7 +209,6 @@ default_methods = {
179
209
  'io': _io,
180
210
  'reduce': reduce,
181
211
  'chain': chain,
182
- 'xeval': _xeval,
183
212
  'echo': lambda *x, **y: print(*x, **dict(flush=True) | y),
184
213
  'echos': lambda *x, **y: print(*x, **dict(end='', flush=True) | y),
185
214
  'echox': lambda *x, **y: print(*x, **dict(file=sys.stderr, flush=True) | y),
@@ -194,6 +223,8 @@ default_methods = {
194
223
  'timeout': shell_timeout,
195
224
  'retry': shell_retry,
196
225
  'run': shell_wrapper,
226
+ 'eval': _eval_mixin,
227
+ 'exec': _eval_lines,
197
228
  },
198
229
  'path': {
199
230
  **path_common_methods,
@@ -234,6 +265,11 @@ default_methods = {
234
265
  'hash': lambda x, name='sha256', args=None: hash_file(name, x, args=args),
235
266
  },
236
267
  **path_common_methods,
268
+ 'time': {
269
+ 'now': now,
270
+ 'begin': lambda name=None: _time_mark(True, name),
271
+ 'end': lambda name=None: _time_mark(False, name),
272
+ },
237
273
  'pu': {
238
274
  'ps': process_list_all,
239
275
  'kill': process_kill,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dekshell"
3
- version = "0.2.16"
3
+ version = "0.2.18"
4
4
  description = ""
5
5
  authors = [
6
6
  { name = "sanzenwin", email = "sanzenwin@gmail.com" },
File without changes