A library for expanding shell ASTs
Project description
sh-expand
A python library for expanding shell ASTs that can be used to construct sound analyses for shell scripts (after having expanded the AST).
Design
There are two implementations of shell expansion:
expand.pydoes an in-python expansion of simple & safe AST nodes. It doesn't support bashisms.bash_expand.pyexpands by conservatively echoing safe commands to a bash process containing the current shell state.
Both, when called via expand_command, recurse down into the words of a shasta AST node to
expand, leave the word as is, or raise an ExpansionError. Examples:
- Process substitutions are unsafe.
- Simple variable substitutions are safe.
- Assignments are considered unsafe, since in Pash they indicate an unparallelizable region.
expand.py interprets the ArgChars libdash parses (ex: for variable and process substitutions)
to check and expand words.
Libbash does not parse ArgChars, so bash_expand.py instead conservatively checks
for the presence of potentially expandable or unsafe literal characters (see should_expand_var)
before expanding.
Not having proper ArgChar parsing causes false positive unsafe errors,
so expand.py should eventually be extended to support bash-only AST nodes,
and libbash and shasta extended to parse ArgChars.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sh_expand-0.2.6-py3-none-any.whl.
File metadata
- Download URL: sh_expand-0.2.6-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcc72c732b204729eda9330b077f4f23378bf0681877863f9009cba72ac0fae7
|
|
| MD5 |
ffb20ad42d62eec324d63077dc7f1cfc
|
|
| BLAKE2b-256 |
f91756d6d67b407035de6718571ef9d01d5e9224b265c885f573be868f1df8dd
|