Skip to main content

Python subprocess replacement

Project description

Logo Version Downloads Status Python Versions Coverage Status

sh is a full-fledged subprocess replacement for Python 3.10 - 3.14, and PyPy that allows you to call any program as if it were a function:

from sh import git
print(git("status", "--short"))

sh is not a collection of system commands implemented in Python.

sh relies on various Unix system calls and only works on Unix-like operating systems - Linux, macOS, BSDs etc. Specifically, Windows is not supported.

Complete documentation here

Full documentation on a single page for LLM-assisted coding here

Installation

$> pip install sh

Support

Developers

Open the repo in a devcontainer in VScode, or in a codespace on Github.

Open in GitHub Codespaces

Testing

Tests are run by tox against all supported Python versions. To run, make the following target:

$> make test

To run a single test:

$> make test='FunctionalTests.test_background' test_one

Docs

To build the docs, make sure you’ve run poetry install to install the dev dependencies, then:

$> cd docs
$> make html

This will generate the docs in docs/build/html. You can open the index.html file in your browser to view the docs.

Coverage

First run all of the tests:

$> SH_TESTS_RUNNING=1 coverage run --source=sh -m pytest

This will aggregate a .coverage. You may then visualize the report with:

$> coverage report

Or generate visual html files with:

$> coverage html

Which will create ./htmlcov/index.html that you may open in a web browser.

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

sh-2.4.0.tar.gz (136.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sh-2.4.0-py3-none-any.whl (48.6 kB view details)

Uploaded Python 3

File details

Details for the file sh-2.4.0.tar.gz.

File metadata

  • Download URL: sh-2.4.0.tar.gz
  • Upload date:
  • Size: 136.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for sh-2.4.0.tar.gz
Algorithm Hash digest
SHA256 a250aef68509ed93419c9a1d90b0647cd5cbe26107ba94d3717ef5b6d595ffd9
MD5 3c11c9c853bf3d326dab0167e9610187
BLAKE2b-256 e9c8137093889a8b8c9a66c9b46079cf2a0e155a8be027df212a4041e3b7b09c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sh-2.4.0.tar.gz:

Publisher: main.yml on amoffat/sh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sh-2.4.0-py3-none-any.whl.

File metadata

  • Download URL: sh-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 48.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for sh-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 98eba32eeb5ecdd310668737d7461e668afc42b273550d0bc198a1c5c2b1ab36
MD5 22137d180a7416a9a412b6138086f0d0
BLAKE2b-256 23dd6b9aceecddbb3df894003d6a5005bd90bce3cf4743c28c406ebecc8d80f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sh-2.4.0-py3-none-any.whl:

Publisher: main.yml on amoffat/sh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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