Skip to main content

Evaluator for common shell variable expressions

Project description

Homepage:

Shellvars Homepage

Download:

Shellvars on PyPI

Documentation:

Shellvars Docs

License:

MIT License

Support:

Mailing list (testing-in-python@lists.idyll.org)

Issue tracker:

Github Issues

Build status:
https://travis-ci.org/testing-cabal/shellvars.svg?branch=master

Shellvars

A Python interpreter for shell variable expressions.

shellvars supports Python 2.6 and up, and should support Jython etc as well.

The following expressions are supported:

  • $NAME

  • ${NAME}

  • ${NAME:-REPLACEMENT}

  • ${NAME-REPLACEMENT}

  • ${NAME:=REPLACEMENT}

  • ${NAME=REPLACEMENT}

  • ${NAME:?[ERRORMSG]}

  • ${NAME?[ERRORMSG]}

  • ${NAME:+REPLACEMENT}

  • ${NAME+REPLACEMENT}

Recursive expressions are supported too. For instance:

>>> from shellvars import evaluate
>>> evaluate('${foo:-${bar:=baz}}', {})
('baz', {'bar': 'baz'})

For details on shell variable syntax, consult your shell or Posix documentation.

Usage

To evaluate an expression call evaluate with the expression and any variables you want available to the expression. Variables keys and values must both be strings. Variables that are missing from your variable dict are considered ‘unset’ in shell terms.

The return is an evaluated string and any variable assignments performed by the expression.

Preserving unset expressions

shellvars has a special mode where expressions that are for unset variables are preserved rather than evaluated. This permits passing them onto a real shell to interpret without needing special quoting from the user. For instance:

>>> from shellvars import SKIP
>>> evaluate('$foo $bar', {'foo': 'baz'}, absent=SKIP)
('baz $bar', {})

Installation

Use pip to install:

pip install shellvars

Development

Install the test dependencies via pip:

pip install .[test]

Push up changes as PR’s to the GitHub repository.

Bug tracker

Use the GitHub issue tracker.

Releasing

Use semver for version decisions.

To release:

  1. Tag the repo e.g. 1.2.3

  2. Build a signed sdist and wheel

  3. Upload to PyPI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shellvars-1.0.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

shellvars-1.0.0-py2.py3-none-any.whl (11.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file shellvars-1.0.0.tar.gz.

File metadata

  • Download URL: shellvars-1.0.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for shellvars-1.0.0.tar.gz
Algorithm Hash digest
SHA256 293b2306f0be24a17865ffdd86eed5a86b2b915ea7609acf5bef504bfa58469d
MD5 4ff81f1f6cb71cb881aa6aa99b4ef794
BLAKE2b-256 5e98d9c87a43868b8a596c31ddb6d35d30b1d6e644eba1b0d85f88c042c86a82

See more details on using hashes here.

File details

Details for the file shellvars-1.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for shellvars-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fe4fd0235b48f4ab7f4aece905974510aa9aab81bb85dc3e89cc7566055a4e26
MD5 0e1a46ef2b1750d821c92ededba228f7
BLAKE2b-256 fca6610f4d0f5ceaaaee2ea9974554bae8299ff8620c709bee7b8dea707cac76

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page