just-bash 0.1.5__py3-none-any.whl → 0.1.10__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.
Files changed (49) hide show
  1. just_bash/ast/factory.py +3 -1
  2. just_bash/bash.py +28 -6
  3. just_bash/commands/awk/awk.py +362 -17
  4. just_bash/commands/cat/cat.py +5 -1
  5. just_bash/commands/echo/echo.py +33 -1
  6. just_bash/commands/grep/grep.py +141 -3
  7. just_bash/commands/od/od.py +144 -30
  8. just_bash/commands/printf/printf.py +289 -87
  9. just_bash/commands/pwd/pwd.py +32 -2
  10. just_bash/commands/read/read.py +243 -64
  11. just_bash/commands/readlink/readlink.py +3 -9
  12. just_bash/commands/registry.py +32 -0
  13. just_bash/commands/rmdir/__init__.py +5 -0
  14. just_bash/commands/rmdir/rmdir.py +160 -0
  15. just_bash/commands/sed/sed.py +142 -31
  16. just_bash/commands/shuf/__init__.py +5 -0
  17. just_bash/commands/shuf/shuf.py +242 -0
  18. just_bash/commands/stat/stat.py +9 -0
  19. just_bash/commands/time/__init__.py +5 -0
  20. just_bash/commands/time/time.py +74 -0
  21. just_bash/commands/touch/touch.py +118 -8
  22. just_bash/commands/whoami/__init__.py +5 -0
  23. just_bash/commands/whoami/whoami.py +18 -0
  24. just_bash/fs/in_memory_fs.py +22 -0
  25. just_bash/fs/overlay_fs.py +22 -1
  26. just_bash/interpreter/__init__.py +1 -1
  27. just_bash/interpreter/builtins/__init__.py +2 -0
  28. just_bash/interpreter/builtins/control.py +4 -8
  29. just_bash/interpreter/builtins/declare.py +321 -24
  30. just_bash/interpreter/builtins/getopts.py +163 -0
  31. just_bash/interpreter/builtins/let.py +2 -2
  32. just_bash/interpreter/builtins/local.py +71 -5
  33. just_bash/interpreter/builtins/misc.py +22 -6
  34. just_bash/interpreter/builtins/readonly.py +38 -10
  35. just_bash/interpreter/builtins/set.py +58 -8
  36. just_bash/interpreter/builtins/test.py +136 -19
  37. just_bash/interpreter/builtins/unset.py +62 -10
  38. just_bash/interpreter/conditionals.py +29 -4
  39. just_bash/interpreter/control_flow.py +61 -17
  40. just_bash/interpreter/expansion.py +1647 -104
  41. just_bash/interpreter/interpreter.py +436 -69
  42. just_bash/interpreter/types.py +263 -2
  43. just_bash/parser/__init__.py +2 -0
  44. just_bash/parser/lexer.py +295 -26
  45. just_bash/parser/parser.py +523 -64
  46. just_bash/types.py +11 -0
  47. {just_bash-0.1.5.dist-info → just_bash-0.1.10.dist-info}/METADATA +40 -1
  48. {just_bash-0.1.5.dist-info → just_bash-0.1.10.dist-info}/RECORD +49 -40
  49. {just_bash-0.1.5.dist-info → just_bash-0.1.10.dist-info}/WHEEL +0 -0
just_bash/types.py CHANGED
@@ -109,6 +109,14 @@ class IFileSystem(Protocol):
109
109
  """Read symbolic link target."""
110
110
  ...
111
111
 
112
+ async def utimes(self, path: str, atime: float, mtime: float) -> None:
113
+ """Set access and modification times for a file."""
114
+ ...
115
+
116
+ async def realpath(self, path: str) -> str:
117
+ """Resolve path to absolute canonical path (resolve all symlinks)."""
118
+ ...
119
+
112
120
  def resolve_path(self, base: str, path: str) -> str:
113
121
  """Resolve path relative to base."""
114
122
  ...
@@ -169,6 +177,9 @@ class CommandContext:
169
177
  sleep: Optional[Callable[[float], Awaitable[None]]] = None
170
178
  """Custom sleep implementation for testing."""
171
179
 
180
+ fd_contents: dict[int, str] = field(default_factory=dict)
181
+ """Contents of custom file descriptors (3+), for commands like read -u."""
182
+
172
183
 
173
184
  class Command(Protocol):
174
185
  """Protocol for command implementations."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: just-bash
3
- Version: 0.1.5
3
+ Version: 0.1.10
4
4
  Summary: A pure Python bash interpreter with in-memory virtual filesystem
5
5
  Project-URL: Homepage, https://github.com/dbreunig/just-bash-py
6
6
  Project-URL: Repository, https://github.com/dbreunig/just-bash-py
@@ -126,6 +126,7 @@ bash = Bash(
126
126
  env={...}, # Environment variables
127
127
  cwd="/home/user", # Working directory
128
128
  network=NetworkConfig(...), # Network configuration (for curl)
129
+ unescape_html=True, # Auto-fix HTML entities in LLM output (default: True)
129
130
  )
130
131
  ```
131
132
 
@@ -266,6 +267,32 @@ async def main():
266
267
  asyncio.run(main())
267
268
  ```
268
269
 
270
+ ### HTML Escaping Compatibility
271
+
272
+ When LLMs generate bash commands, they sometimes output HTML-escaped operators:
273
+
274
+ ```bash
275
+ wc -l &lt; file.txt # LLM outputs this instead of: wc -l < file.txt
276
+ echo "done" &amp;&amp; exit # Instead of: echo "done" && exit
277
+ ```
278
+
279
+ By default, just-bash automatically unescapes these HTML entities (`&lt;` → `<`, `&gt;` → `>`, `&amp;` → `&`, `&quot;` → `"`, `&apos;` → `'`) in operator positions, so LLM-generated commands work correctly.
280
+
281
+ Entities inside quotes and heredocs are preserved:
282
+
283
+ ```python
284
+ # These work as expected
285
+ await bash.exec('echo "&lt;"') # Outputs: &lt;
286
+ await bash.exec("cat << 'EOF'\n&lt;tag&gt;\nEOF") # Outputs: &lt;tag&gt;
287
+ ```
288
+
289
+ To disable this behavior for strict bash compatibility:
290
+
291
+ ```python
292
+ bash = Bash(unescape_html=False)
293
+ ```
294
+
295
+
269
296
  ## Security
270
297
 
271
298
  - **No native execution** - All commands are pure Python implementations
@@ -395,6 +422,18 @@ curl (disabled by default)
395
422
  bash sh
396
423
  ```
397
424
 
425
+ ## Test Results
426
+
427
+ Test suite history per commit (spec_tests excluded). Each `█` ≈ 53 tests.
428
+
429
+ ```
430
+ Commit Date Passed Failed Skipped Graph
431
+ c816182 2026-01-25 2641 3 2 ████████████████████████████████████████████████▒░
432
+ e91d4d8 2026-01-26 2643 2 2 ████████████████████████████████████████████████▒░
433
+ ```
434
+
435
+ `█` passed · `▒` failed · `░` skipped
436
+
398
437
  ## License
399
438
 
400
439
  Apache 2.0
@@ -1,16 +1,16 @@
1
1
  just_bash/__init__.py,sha256=tiXmLS8Go-RFG7Q6Klqfk9yV0ied-Ik12FumuToA_hk,999
2
- just_bash/bash.py,sha256=XlyHQGag2Eur0yFrS9ckYgwJvfYQlxmHQJqPwUyWq0A,6653
2
+ just_bash/bash.py,sha256=SAx4oC2YS48hSsM5nzMzV3ARq1fX4YoYazf041h5_E8,7662
3
3
  just_bash/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- just_bash/types.py,sha256=ryQ1fups9tocsD_C8FFT5zA6HjB91YgJZghO9XJANEY,4607
4
+ just_bash/types.py,sha256=z0DEYwb-XHnW2qQFnRuOeos-i_7V8lKHX_1O-TSMU0k,5036
5
5
  just_bash/ast/__init__.py,sha256=yItXk_RIPHj3Op6JKBKjxdyZaxW_1lTg5d-L-KHgDLc,4570
6
- just_bash/ast/factory.py,sha256=TPlE5uT2XAqViKiHtJILw5vpeqrAKRUfzLQAwIb19y4,8268
6
+ just_bash/ast/factory.py,sha256=Uycslt6UrHeiQfwc8Tyo8BJaM4tE_hNBrxfEhNBiHKI,8328
7
7
  just_bash/ast/types.py,sha256=o8MdwIirjAcA1HgvQaOmrK5iwSWpYOlvvnRdkbvTBck,26574
8
8
  just_bash/commands/__init__.py,sha256=sKNb1FjmMY56svg4BJuVgm0ljhbpVl_tMKcx3jFNdE8,523
9
- just_bash/commands/registry.py,sha256=djwBIfuPqU7OK5JX6dzYG-bJHuVLBStH9b8K-hKzFHk,21962
9
+ just_bash/commands/registry.py,sha256=94TNVIUlUELDDzGg5hMc0aqx86mm6lk-7iYiFqnnoqI,22813
10
10
  just_bash/commands/argv/__init__.py,sha256=QrGig0hlCcxkOYGzqWsw_bWVOFwxxLLeukU7wAiGDp4,85
11
11
  just_bash/commands/argv/argv.py,sha256=Qbn7gIjplMA3HSB7scnLd0wOerjcwuTfg_m5HmyTYIE,560
12
12
  just_bash/commands/awk/__init__.py,sha256=ZpgMK6A0QsApd3GyCIvpkmL3iPf7FaUPav13bdUsZhk,89
13
- just_bash/commands/awk/awk.py,sha256=Rzi14vZ36K2SIdTvIl_T7Nf0OxEumZ_x86vSZAMnnCg,40913
13
+ just_bash/commands/awk/awk.py,sha256=Akt6g2DY6WzZ032mgfoRCW3bkJ3nNsjxvW2k7A_o-bU,54535
14
14
  just_bash/commands/base64/__init__.py,sha256=0hKkKgCi7m_TDz83hd3KaFJgjmBDjIqfLx7bctx98xA,101
15
15
  just_bash/commands/base64/base64.py,sha256=UtzE0e-3MAYm_61anfI3Vxm36UlOB4X9fobl9ySV8s0,4927
16
16
  just_bash/commands/basename/__init__.py,sha256=mEapj7eo70RrVGjwhVj9S9idWrBxptOPu6uV6z_cteo,94
@@ -18,7 +18,7 @@ just_bash/commands/basename/basename.py,sha256=gwN-fbw7W1brCsP3qfnHBhq50ZNYcpk6g
18
18
  just_bash/commands/bash/__init__.py,sha256=Ex1nZTRGKKGnQgfaimqUClcnsa-cFoUAU6CEe63cpo8,110
19
19
  just_bash/commands/bash/bash.py,sha256=HNKijbjCnUQL3clRehnkL0pDiBd94xaMYTzylmt-3RU,6790
20
20
  just_bash/commands/cat/__init__.py,sha256=XlNjapD9s5p_xVRKj1ejpTPd9sZQEIrlkzsHKsqlfgs,89
21
- just_bash/commands/cat/cat.py,sha256=LTrc3BVYLtxY1zWto_KQ39M5QGrJwcfhJHkCcrcNgyU,5928
21
+ just_bash/commands/cat/cat.py,sha256=PhdBFc3sewaPeUjBiIt45MIjKxaxFbYvmZ-f10o-hp8,6106
22
22
  just_bash/commands/checksum/__init__.py,sha256=gUaSlBm6lr68tFCAZ_O20CsvgISaRi2-gseP6MxNp_M,163
23
23
  just_bash/commands/checksum/checksum.py,sha256=uUuKgMRrYGJMgEd7Ix2QlGQ0IT1-8njEqOreINCYPgc,5822
24
24
  just_bash/commands/chmod/__init__.py,sha256=egGRvaYIeEVDaq2mIQUZE3rtw6px1EGTNDezCLx_7Cc,97
@@ -44,7 +44,7 @@ just_bash/commands/dirname/dirname.py,sha256=42Axi-oosF9qUtaf__YFowTLWT8pjCO8xAh
44
44
  just_bash/commands/du/__init__.py,sha256=9bZp6U1xY4ADt2j0BsDOSf5DdK3pso7hqe8YGQsNG68,70
45
45
  just_bash/commands/du/du.py,sha256=qmwMpDhzwTLFTLAd85SAdstp7YYFPJ2mRoHqAOzxUVk,5118
46
46
  just_bash/commands/echo/__init__.py,sha256=Sx2A-cuaoyHfuLg_4O34VmnoxWbgSzbX-N-JgwrsHxI,93
47
- just_bash/commands/echo/echo.py,sha256=6CyPzd5gX1k7bMUr9fws05wPVrz6X4NmvHq49RM0mVI,3713
47
+ just_bash/commands/echo/echo.py,sha256=5zxj8fpywCxqKuQThVHBqKKhMD0_YFpWRKCXZRjaa4Y,5044
48
48
  just_bash/commands/env/__init__.py,sha256=pa6xN-fb05ebTZfYnhgNiIUz8gURMAeDL4bwkpG6F1w,124
49
49
  just_bash/commands/env/env.py,sha256=pJRuxN-LnjyJXR2qt6eydqvadMwE65LFYdpagCQyxZk,5278
50
50
  just_bash/commands/expand/__init__.py,sha256=8O92n7Xx000IlTI8-7puKYPrAzO6kT-nSqPP3kWA7Y8,136
@@ -58,7 +58,7 @@ just_bash/commands/find/find.py,sha256=I2Qmn3cSUvyiVfdh2XIYJqACpe2ggiPdxnNhPlN2d
58
58
  just_bash/commands/fold/__init__.py,sha256=R0PCq0oBJ5PWEXIeRz-M1vuNkoRdvWLaSSiXyEx9nKQ,78
59
59
  just_bash/commands/fold/fold.py,sha256=QWGehi7vdVhcAGxaAZ4lWYHAuWquduhFb515zpKL09M,5417
60
60
  just_bash/commands/grep/__init__.py,sha256=Ho400PkJRLXBf5Rt7tYF4uiS8Dbv4VhWcfkQNzqgxB4,153
61
- just_bash/commands/grep/grep.py,sha256=AaA99kpS8Kel9v_M-liLL2I1RRVIe4zowg351VopFck,16607
61
+ just_bash/commands/grep/grep.py,sha256=qVlGv74EuX5K8jur5Vxqt-i5hraf_2rmbhq4xXx5VGE,22032
62
62
  just_bash/commands/head/__init__.py,sha256=UTgOtL29ZxbqIKjEXC0EjaxmlnWD8dYFFbW4YruJCDI,93
63
63
  just_bash/commands/head/head.py,sha256=41Ib8Z5uIBiiISWB-My9CAK7nDfpQJnnS7vkRwkA2yo,6083
64
64
  just_bash/commands/help/__init__.py,sha256=F-NY6nt_1vpSm4qPDd93-muE6Pz_K68wy3-_PpMNvlE,78
@@ -82,32 +82,36 @@ just_bash/commands/mv/mv.py,sha256=nuzB_yzGcrQMFOCxqYboitz4DEQkxGafOWDlBRybPE0,4
82
82
  just_bash/commands/nl/__init__.py,sha256=OPZWDtLn3MGvgrWWggTfQcJuxsfJEbAFhqSb62Av8Ew,70
83
83
  just_bash/commands/nl/nl.py,sha256=cXsxH_b0YF3C4Gd3m180t2hXQKURCHK44i1I4KKzUPM,6226
84
84
  just_bash/commands/od/__init__.py,sha256=cfacRaC8aJRfnoc-lnseNT3h7Ra8XERqzbDu78uh-CM,70
85
- just_bash/commands/od/od.py,sha256=HZhTe28c3X07ebhqI_dGTtpcE0_PM69OESqRRBgwhkI,5537
85
+ just_bash/commands/od/od.py,sha256=TAFe8Rci5hUGo0PY0n6NCL6gCbJfaPXy5v-Di96rDKs,10058
86
86
  just_bash/commands/paste/__init__.py,sha256=gpVl4JgzzQCdehehgTAsfhPer-9JbRUGxcHO4qR1pRo,82
87
87
  just_bash/commands/paste/paste.py,sha256=DrSFp0yv5cxhpUXow9c9HLZKNU5LApgkERfxd0sK9q8,3342
88
88
  just_bash/commands/printf/__init__.py,sha256=Y2GE9w1QBZQmcxn6U7CrRyPUlfl3S3xDUO6_JMgHaXA,86
89
- just_bash/commands/printf/printf.py,sha256=ndG3Q-6rMv-NA0FQMx3rwHKvppFiWkw3jT3pSup4m9A,5836
89
+ just_bash/commands/printf/printf.py,sha256=e8QLg6eNw0qivvRkRNSAKFT8YXglN3mvDMdMBW79ais,13038
90
90
  just_bash/commands/pwd/__init__.py,sha256=28Z9r9nceiLy3jSJnT_vjWNYBnzquxqW6-a6TpzV2AE,89
91
- just_bash/commands/pwd/pwd.py,sha256=swhfjRGpiOLIx42xTlIYgTGRMcgIbwd3HzZJHZD-1O8,632
91
+ just_bash/commands/pwd/pwd.py,sha256=S5RH7QCJxyffSvSXpVeH9PrWQUfJKH8yOmBAq6xItbg,1696
92
92
  just_bash/commands/read/__init__.py,sha256=uuekWKV4Ca5wN6qKgA6Tf1ckDNNASskpVMlHF7cIR98,85
93
- just_bash/commands/read/read.py,sha256=R3tN543tC8vd38_zaHZjPK15B0hExAJZdh3vWAWuk-A,5929
93
+ just_bash/commands/read/read.py,sha256=shTxzJNG7TZMfYQcJ5Dzwpf1vUezU6nTSqM5DuAe4yI,13270
94
94
  just_bash/commands/readlink/__init__.py,sha256=07eL4MP_r5FoxwTKAhPnnQwN3H_ljgeD3HgP-o_0x2c,94
95
- just_bash/commands/readlink/readlink.py,sha256=-03DPVbTLsjFbtQy-qjcxN4kOJ8Zsy32LoYNXCEU1sA,2934
95
+ just_bash/commands/readlink/readlink.py,sha256=l5zLfUysICa8G3XPXg_pCs9ZwoGd9oLUmhpdR5bvJUo,2638
96
96
  just_bash/commands/rev/__init__.py,sha256=zwR9cCm_kUU2cEv8sdmZP7zyVt8Kw-cXABVzI8iBydE,74
97
97
  just_bash/commands/rev/rev.py,sha256=UKXuKaoo7eoDO_MnWbQeQzKpeXOcOgogC_XGqfJKG-E,2369
98
98
  just_bash/commands/rg/__init__.py,sha256=xh2mUedPwkMjHuCbQIEYv0FQZIQ0HE1Er1wS3WyRpWk,80
99
99
  just_bash/commands/rg/rg.py,sha256=otv28NCA40dWnqT-zOUHIpNDiBo5fA8neLBUok-_1EI,40196
100
100
  just_bash/commands/rm/__init__.py,sha256=rKzvwJDnXU4FJTvBnMiFQVRWMNsml1lJYviOSPi7bv4,85
101
101
  just_bash/commands/rm/rm.py,sha256=iscJLQ4ZLCE80ya0MBdnZRfFNxNpRPc2y3zrcOmqfAU,3368
102
+ just_bash/commands/rmdir/__init__.py,sha256=3TXJGuyVqagMDQwqVuuadMOjbj1HPPaQa6R7awyzHac,82
103
+ just_bash/commands/rmdir/rmdir.py,sha256=9OdD5inMxoeVOQdReX__5jnATM4xizOSSEsfBh7zd4E,5073
102
104
  just_bash/commands/search_engine/__init__.py,sha256=-OizNEms1HS7nih5YERemvIIdrDrjiS04YqH1oQb0tQ,331
103
105
  just_bash/commands/search_engine/matcher.py,sha256=I-fDRenZEGCESwDwEFkqirXuiKdVbtNiUrZ9eVOzeLg,5091
104
106
  just_bash/commands/search_engine/regex.py,sha256=8_MSSI5JgScRjl3KJfMWNRhxhj8V0HCdaKu6sBnwnSs,4782
105
107
  just_bash/commands/sed/__init__.py,sha256=qp6p9u6dao-qvf68EAU3wB8dPG5te6Vv0gNnIYehmHE,89
106
- just_bash/commands/sed/sed.py,sha256=s9bK6VE4-2QBBzBo7ajflghQ-mByKCVYo7R3uFWEwP8,31551
108
+ just_bash/commands/sed/sed.py,sha256=GH7L1KMv7tQ9Tc7l_ffOwISKzPXx9d-TJT3jMglcPKA,35437
107
109
  just_bash/commands/seq/__init__.py,sha256=WoS9bcCPBCi4kEAwqmUSyxo-1ekumaJ-QFJYLNswFQQ,89
108
110
  just_bash/commands/seq/seq.py,sha256=cBfVJqbZMmXXXUA2FcXDJk8H2yZpTXqKLgy6-f5vciE,6485
109
111
  just_bash/commands/shell/__init__.py,sha256=7FUmyHPZv-ujikzHzks8SRTPYScfs9vr_9KJ8Ny72XM,189
110
112
  just_bash/commands/shell/shell.py,sha256=NEuSVfXz-L-0L2ev6M5ir4S9z6TvEN8-mIJgSlV1wjg,6753
113
+ just_bash/commands/shuf/__init__.py,sha256=0xLdf5wRMK4vfOoCwDWdOisHy09PGuJnkIp0oRnBhjM,78
114
+ just_bash/commands/shuf/shuf.py,sha256=BDGkvKqYvAq1I6ZGetBfvOzsaSjznwfIc2vPZ4yhoSs,8523
111
115
  just_bash/commands/sleep/__init__.py,sha256=c2BuhU78G38aj6zOZwplWhtqmbf0ydfv8y_cIdc9N3I,82
112
116
  just_bash/commands/sleep/sleep.py,sha256=tKXLGndy43nDgT-gO5jLnclkmMY_k2mU7cZh3Hxcb2M,1710
113
117
  just_bash/commands/sort/__init__.py,sha256=97Zp6z7YGf6HLvhVYsN9atRXUDfCTxr7GrfsQmY0fBY,93
@@ -117,7 +121,7 @@ just_bash/commands/split/split.py,sha256=t9BCYeA48nP4WjFN5vnmasj4ooQhTvMnPWHiyWM
117
121
  just_bash/commands/sqlite3/__init__.py,sha256=U2OyLiCUMsbRfRt1ydX2TMjCZBjPHFRrH-E15avelA8,116
118
122
  just_bash/commands/sqlite3/sqlite3_cmd.py,sha256=pX4x_g5O2T12SiVTJEbQibrZ6dj2m1btDjZUWXrjApI,15790
119
123
  just_bash/commands/stat/__init__.py,sha256=AZWUFpGS_TzgkXZ75f7VT-Ge9Y3EJsFtUZg-nDdpN08,78
120
- just_bash/commands/stat/stat.py,sha256=OtheZDC_MZdy3C4VdLyarfB6gEEQ3eI4BGkyeTMXFWQ,4649
124
+ just_bash/commands/stat/stat.py,sha256=xUjauxs8blKlPdVwCfTGhm9czXArhnFNtO1PdJ3l8LI,5042
121
125
  just_bash/commands/strings/__init__.py,sha256=ujX0Xp2K9C-mATONU4GyYPG_UiGE5OiCGNm-JRjCDDg,90
122
126
  just_bash/commands/strings/strings.py,sha256=wTcWkO75fabJJ-JVjAn2SASUznlRtuEhEi6U7zT6WRo,5397
123
127
  just_bash/commands/tac/__init__.py,sha256=zzP9GYFRNdfTlPQWyzBAiAinmAbPd3KT-tBozAVqXFM,74
@@ -128,10 +132,12 @@ just_bash/commands/tar/__init__.py,sha256=tfy1xL2nrVx4L8fm-igMQn3CVfgkPHZVz95iN9
128
132
  just_bash/commands/tar/tar.py,sha256=ZBVYoGdKuTp3l3LUHOpOWVXoF_h7duecsY2m42poyVI,38343
129
133
  just_bash/commands/tee/__init__.py,sha256=CqKf3u-TMO-cwWFAYLtuwKLxRe96gbELizTnwkGXvJw,74
130
134
  just_bash/commands/tee/tee.py,sha256=M0YppP2fHq8nzDH0rPyot3jWaEQRBFURzjp_Drj43iU,1896
135
+ just_bash/commands/time/__init__.py,sha256=mQ9a4qqgUkPFnt5hOdTIFhm1m1w1j46m1_QottzqmEU,78
136
+ just_bash/commands/time/time.py,sha256=r7KUl90cuFVr62IfT7VHMFpDkYgE0tSJ1y_2XfrHaHg,2148
131
137
  just_bash/commands/timeout/__init__.py,sha256=0Fut3Ss5MHRlRzPklxWKf76IEbw73sKqzEoLJIZOJmY,90
132
138
  just_bash/commands/timeout/timeout.py,sha256=vVeW9bLEECWPxrmNLlCFeCCccWLflZu-VLF67VOICIo,6939
133
139
  just_bash/commands/touch/__init__.py,sha256=CXCkt-2zysVVp4jAXio8EJdDKdbUKxe4AVL2TrelL-E,97
134
- just_bash/commands/touch/touch.py,sha256=RCO658d_jDT8ef4_XmEYShTbx4YnbtPXWsJF434HoW0,3022
140
+ just_bash/commands/touch/touch.py,sha256=Xm5A4rHbpuD_teOqmaM1HAb1a0ReE9TwqEdYDcGTCV8,7415
135
141
  just_bash/commands/tr/__init__.py,sha256=0RLKFP0Sh_RNncKdTTzn4Ziyb0OAV1wrhRlhjF9RufM,85
136
142
  just_bash/commands/tr/tr.py,sha256=JhOtWw-aziSKN1Ei4QXJvbeO4zN5ejOnhOT_oXIng20,9905
137
143
  just_bash/commands/tree/__init__.py,sha256=wO-3O1X1zrdi_u-MGRE-bFjLbu5IsKxJBjUQoCkZ83c,78
@@ -144,6 +150,8 @@ just_bash/commands/wc/__init__.py,sha256=rvAXLKu6x5_cIZiibQDrFRL_1zqahrtEjAgo8v8
144
150
  just_bash/commands/wc/wc.py,sha256=9-6ukug5nZlmS4T8AaGsuNaj27Js6Af41nA9OyxPF3Q,5881
145
151
  just_bash/commands/which/__init__.py,sha256=K0GaqdG-4KR_KVW0ue3fKGPy5OBLyJsDdiOVCwe5FQA,82
146
152
  just_bash/commands/which/which.py,sha256=dxFcFF2s0q5d_xNLD7J4A2vneMTPcJJVXnQALsysr1E,1525
153
+ just_bash/commands/whoami/__init__.py,sha256=l5pI_4o14OAlj_LeCJjoZLIN3Tw1W7kG0e0qX3CPRQI,86
154
+ just_bash/commands/whoami/whoami.py,sha256=9MJPWTMjdmUBtOdmNjNtg4TJaDm5pTN05S84kNoxCXk,398
147
155
  just_bash/commands/xan/__init__.py,sha256=6bOPK4bAIhyw2rLEkpBFTjN3BeJeyu7Uh7qVVR0RJBM,88
148
156
  just_bash/commands/xan/xan.py,sha256=1-TI4pcFqPHTibV_aDBohJX5APZJCLqldq0pjHeEfrc,50117
149
157
  just_bash/commands/xargs/__init__.py,sha256=LSUy4ZEM5X_1XPNkhuLZNDp8N8ujLTg0UXehNIyWT4c,82
@@ -151,43 +159,44 @@ just_bash/commands/xargs/xargs.py,sha256=Vfgo9buACoBvvAvjjUTawcFDjAc3WUEShvqWxpg
151
159
  just_bash/commands/yq/__init__.py,sha256=2y80NUG8-011i_WrKC8T4Fl1V_RVsqDzYHurz3Bb1-k,70
152
160
  just_bash/commands/yq/yq.py,sha256=Av6QQSHOvV5pp11lgvK22bJR0SEzQNuNkVvXbznc5a0,27519
153
161
  just_bash/fs/__init__.py,sha256=hEDypfPi7T7tHOIyf97JOcoryKjd9fF_XAShDUyGj58,636
154
- just_bash/fs/in_memory_fs.py,sha256=I7pnAYyrZVTEBr05XV3cbetENAUgnqW7D-rt93RFmQQ,21347
162
+ just_bash/fs/in_memory_fs.py,sha256=WGC55k99GnBCxWMfjlgoQCcqP4LSSM_nCnwIsdN1rXc,22374
155
163
  just_bash/fs/mountable_fs.py,sha256=xhYLRllN1mCScL4tG8q0JXyanEntyZLxMYK6hvc3Pg4,17774
156
- just_bash/fs/overlay_fs.py,sha256=WHbefQBVlIYVTKlJ7s_qdoVE2qYib1Y99bTcaHKDFxE,30405
164
+ just_bash/fs/overlay_fs.py,sha256=MSeoC6ZumLOKjZspnH6Bp8ma_x5NGsvsKnl15mHHnPk,31379
157
165
  just_bash/fs/read_write_fs.py,sha256=7auXvArIuKlmbQGxPNSpV8tR48tJp4mfqUhrBNEpbXc,14813
158
- just_bash/interpreter/__init__.py,sha256=ud2zeA0Ly0rMjhzY9zEOnLzukUi7FnJYJ0ZCMnTEuhA,790
159
- just_bash/interpreter/conditionals.py,sha256=wRMRiEMevhJom6KJbYC8Rxb7mfQdOmUG3cOJk8iQXDk,11169
160
- just_bash/interpreter/control_flow.py,sha256=k-ZDCXslQ4EJc9N1GbvDmfzPNoavpL36qZFgifLJ6A4,11997
166
+ just_bash/interpreter/__init__.py,sha256=y9zyV5QpuWEQZPvKCQ4yF3gjsmPrcfOY7bqHgoMbg7E,805
167
+ just_bash/interpreter/conditionals.py,sha256=rlOKDSiCtHftg6Medn9ypCJ6aMNpek_Lneprq5HFdDg,11984
168
+ just_bash/interpreter/control_flow.py,sha256=QaDxWV6DwmznZjf-gFtiZt5oUsE1rB3rdsP6UP2KOb8,13661
161
169
  just_bash/interpreter/errors.py,sha256=Nz_dbvGxCybfnxFSTxKD5QIEQBz0Y6SrRA4KDhq2n20,3585
162
- just_bash/interpreter/expansion.py,sha256=Yc-yKt16MjsjFrdYNJ-e1JdN_B1jS5G85JvRmv6TuIM,41584
163
- just_bash/interpreter/interpreter.py,sha256=nAv9WQvGnEy-h9Si6f_Uo2TZ4f2e0o8ows1WW1E3Je8,29933
164
- just_bash/interpreter/types.py,sha256=t8v7sRSVf0_sVmXWKxAV3x1pi2vzun3yi97qtq8wanY,3992
165
- just_bash/interpreter/builtins/__init__.py,sha256=uGh2b8ij3DQ4oxYodRyfMhOWTFdRHPa3wuqMfOBw_ms,2461
170
+ just_bash/interpreter/expansion.py,sha256=m9bZCnza_G5IMyYyqaIRU0H9suzN7lBzTSXkY1ySOxc,103338
171
+ just_bash/interpreter/interpreter.py,sha256=3lAaqhn8_TdyXTfQ_fYwN5eggKU-r5eTaGu-VGfRb6I,49347
172
+ just_bash/interpreter/types.py,sha256=qwPUMKm5eWTofkszNWsFXO-5bOaZ72jjVldCQnGqAvM,12952
173
+ just_bash/interpreter/builtins/__init__.py,sha256=rw2BYjzrBxNl_nhPPiZ9tcw8Gu-79Me0XhGr2m6PtCQ,2528
166
174
  just_bash/interpreter/builtins/alias.py,sha256=b575DQKcNbT2uNK-7YBsPEyNZ54-YjjduUaoQ6-z150,4017
167
175
  just_bash/interpreter/builtins/cd.py,sha256=dsoTnilC1BibToVx-KeuTA1x1HDNkZc5ikUN24vV70Y,2071
168
- just_bash/interpreter/builtins/control.py,sha256=3coZITf19HBBlBqMYL-1w3e2dkJc4ZXNohjr_Mc9KR8,3659
169
- just_bash/interpreter/builtins/declare.py,sha256=lbZO4_zwrmkacYUUVGrN8FGnqRVHo2s3HkbJ8Bg6EkM,11174
176
+ just_bash/interpreter/builtins/control.py,sha256=4Oj1J2hzsqCpE6ydStIAzKQ0INY2HoGH27miQb2epP4,3497
177
+ just_bash/interpreter/builtins/declare.py,sha256=L5zDt1m1jyGoR7JibBMcRPPNVocPeFY0ZZIGCt5Vr4k,21005
170
178
  just_bash/interpreter/builtins/export.py,sha256=ct_nl9oUiKL0j0exS0n8C0xWazj9whZhLmIg26tk5U0,1715
171
- just_bash/interpreter/builtins/let.py,sha256=Ugrp87HUuVNiUiayGJH_AKwIwKNsZ5we8Iuho2zACvs,1362
172
- just_bash/interpreter/builtins/local.py,sha256=r_bxj_0_YQJJ55ze8yMgyCtIO9RiZ2PkivsQU6ZdDNw,1566
179
+ just_bash/interpreter/builtins/getopts.py,sha256=dqzYlKQC97VfoRfI132VzrS335MCj_QMLVlg0Ly_3O4,5649
180
+ just_bash/interpreter/builtins/let.py,sha256=Y1DdDWCp7BHQFckhKdezSmW5WZOwVlBNrhq55YQ0a6k,1358
181
+ just_bash/interpreter/builtins/local.py,sha256=EWbN_AN7uxcZTjS5UDgbw7xbONI8nP6dIizfcbzrsmw,4139
173
182
  just_bash/interpreter/builtins/mapfile.py,sha256=EKgpzaqzGZ_TdrYYT-MXy4LzTYK_yVBM1P-9icKhjaQ,4821
174
- just_bash/interpreter/builtins/misc.py,sha256=aMRdQBkDsJIK5qS2L4WqsBDy5UNiwrmljm5aTvKdNkE,11124
175
- just_bash/interpreter/builtins/readonly.py,sha256=-zHvpG6WIbVNvgxRLQRKlKb0qZdn9bjPo_3_Ou_gCgg,2287
176
- just_bash/interpreter/builtins/set.py,sha256=MmELFv3vAc21bwqtxZrFkaC4TFcDYBwFBZ7kvoHYfv8,7357
183
+ just_bash/interpreter/builtins/misc.py,sha256=r9OzMvecNSqVwHgOXzoJ400-oZ7b-LY-mCPz04Ao3xU,12054
184
+ just_bash/interpreter/builtins/readonly.py,sha256=k8Wm4rHsqeZaJuhGnAzKgx1L9FyO5LUCEaJZJjhg95g,3371
185
+ just_bash/interpreter/builtins/set.py,sha256=zv0-eOMkVn1FAMSVlD5jB7JE7UmE6Xti2RUi5QMAr1A,9590
177
186
  just_bash/interpreter/builtins/shopt.py,sha256=c43nz8Z0aKonikN-zP3YkmwfGgvL4orlFe8OxOY1lVo,6362
178
187
  just_bash/interpreter/builtins/source.py,sha256=smd2tS-_lX7zHgAtQSPvVRb8fLYwg2vmfTC4dItO3Qk,3775
179
- just_bash/interpreter/builtins/test.py,sha256=y8FB68uji_Xrgv2wNWmi1eVzdK9QaAdHbWLO3XK-CM8,8926
180
- just_bash/interpreter/builtins/unset.py,sha256=FXA1qTkbHfGRuPFkrlTE1_UYr30Zqx4klBRgmibE14Y,1429
188
+ just_bash/interpreter/builtins/test.py,sha256=CR9It5nFilGHO9td1zI21mlq4kaZYJFF3L0Bn3GIdgQ,13548
189
+ just_bash/interpreter/builtins/unset.py,sha256=uod4SS5K0kUQiz1N-v9j-4jvUFiW0pmcTWYUcnxKnJU,3560
181
190
  just_bash/network/__init__.py,sha256=QviRrsoIAuxyCrZn4AYgPW3S9g0X4x_foH2M9-9VIiY,36
182
- just_bash/parser/__init__.py,sha256=Bd4rR74xlPZ2ARjozue2H6lNsSm9Al7UdqE7ubxMgBE,633
183
- just_bash/parser/lexer.py,sha256=IYU4P-OxeoSIJWMEV0GKVN7gB6FkyTv4OROHzN_AxPg,28763
184
- just_bash/parser/parser.py,sha256=QQfo6Zn0uwwoJcK9PHjWcth-KSTv1qTFznssW9N5fUw,79570
191
+ just_bash/parser/__init__.py,sha256=NnVIxkYPqEtOuuOiJJWvLDwmZCK46UiZSWz7au_kdBI,691
192
+ just_bash/parser/lexer.py,sha256=nd7tWkciKyLgutb-xTS1Ezk1HxsHYrnWOW5cH3VCgOQ,39070
193
+ just_bash/parser/parser.py,sha256=KQPQ_w0wQ4Rhf_Szj6MbM1GrBzKeifJtP5a3yAow2Uw,98099
185
194
  just_bash/query_engine/__init__.py,sha256=EflFZo-yX_ZPQkksKCeewx_Gz63JdMs01bc3GUq2H_4,1661
186
195
  just_bash/query_engine/evaluator.py,sha256=L0n5avw3zLPD5OZSRiCbg2mmN-Rb-bk3ip6nVOQKJLM,20539
187
196
  just_bash/query_engine/parser.py,sha256=pHw-il3AoaIbuvL9MBuxgv4BVsPCJjTl3OHEZmqenE8,19098
188
197
  just_bash/query_engine/tokenizer.py,sha256=PfaHJ8Y8N_KkFCiti7iGP4Le4A2JjAhg3OtAMJuNIBo,10161
189
198
  just_bash/query_engine/types.py,sha256=zhUj2FvClAANpWvcvXSyvWBxT-g2jAczCiE7kNQzHrM,7272
190
199
  just_bash/query_engine/builtins/__init__.py,sha256=Rs7TjJ0rjFmL9GyQXBbU4H0k9WLbgDlT31_mhpd-1aw,40315
191
- just_bash-0.1.5.dist-info/METADATA,sha256=xWtbxsqvTCCCk1AZR-K8n81mxinzYx3hPL8VXZBieZQ,12809
192
- just_bash-0.1.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
193
- just_bash-0.1.5.dist-info/RECORD,,
200
+ just_bash-0.1.10.dist-info/METADATA,sha256=5xDJZhgF9TO0Im9qprAyqomg-CYzlCpbg6MqCgrd8VM,14294
201
+ just_bash-0.1.10.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
202
+ just_bash-0.1.10.dist-info/RECORD,,