Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/amitt001/delegator.py
Subprocesses for Humans 2.0.
https://github.com/amitt001/delegator.py
python subprocess
Last synced: 25 days ago
JSON representation
Subprocesses for Humans 2.0.
- Host: GitHub
- URL: https://github.com/amitt001/delegator.py
- Owner: amitt001
- License: mit
- Created: 2017-01-14T23:33:04.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-01T23:31:42.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T12:22:01.475Z (7 months ago)
- Topics: python, subprocess
- Language: Python
- Size: 65.4 KB
- Stars: 1,688
- Watchers: 50
- Forks: 92
- Open Issues: 10
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- awesome-discoveries - Delegator.py - subprocesses for Humans 2.0 _(`Python`)_ (Libraries)
README
Delegator.py — Subprocesses for Humans 2.0
=======================================.. image:: https://img.shields.io/pypi/v/delegator.py.svg
:target: https://pypi.python.org/pypi/delegator.py.. image:: https://img.shields.io/pypi/l/delegator.py.svg
:target: https://pypi.python.org/pypi/delegator.py.. image:: https://img.shields.io/pypi/wheel/delegator.py.svg
:target: https://pypi.python.org/pypi/delegator.py.. image:: https://img.shields.io/pypi/pyversions/delegator.py.svg
:target: https://pypi.python.org/pypi/delegator.py.. image:: https://img.shields.io/badge/SayThanks.io-☼-1EAEDB.svg
:target: https://saythanks.io/to/kennethreitz**Delegator.py** is a simple library for dealing with subprocesses, inspired
by both `envoy `_ and `pexpect `_ (in fact, it depends on it!).This module features two main functions ``delegator.run()`` and ``delegator.chain()``. One runs commands, blocking or non-blocking, and the other runs a chain of commands, separated by the standard unix pipe operator: ``|``.
Basic Usage
-----------Basic run functionality:
.. code:: pycon
>>> c = delegator.run('ls')
>>> print c.out
README.rst delegator.py>>> c = delegator.run('long-running-process', block=False)
>>> c.pid
35199
>>> c.block()
>>> c.return_code
0Commands can be passed in as lists as well (e.g. ``['ls', '-lrt']``), for parameterization.
Basic chain functionality:
.. code:: pycon
# Can also be called with ([['fortune'], ['cowsay']]).
# or, delegator.run('fortune').pipe('cowsay')>>> c = delegator.chain('fortune | cowsay')
>>> print c.out
_______________________________________
/ Our swords shall play the orators for \
| us. |
| |
\ -- Christopher Marlowe /
---------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||Expect functionality is built-in too, on non-blocking commands:
.. code:: pycon
>>> c.expect('Password:')
>>> c.send('PASSWORD')
>>> c.block()Other functions:
.. code:: pycon
>>> c.kill()
>>> c.send('SIGTERM', signal=True)# Only available when block=True, otherwise, use c.out.
>>> c.err
''# Direct access to pipes.
>>> c.std_err
', mode 'rU' at 0x10a5351e0># Adjust environment variables for the command (existing will be overwritten).
>>> c = delegator.chain('env | grep NEWENV', env={'NEWENV': 'FOO_BAR'})
>>> c.out
NEWENV=FOO_BARInstallation
------------::
$ pip install delegator.py
✨🍰✨