Skip to content

myke.run

Functions that wrap around subprocess.run for added convenience.

Functions

require

require(
    *args: str,
    pip_args: list[str] | None = None,
    skip_check: bool = False,
    **kwargs: str
) -> subprocess.CompletedProcess[str]

Check for the given modules, and install them if they do not exist.

Parameters:

Name Type Description Default
*args str

modules to require.

()
pip_args list[str] | None

args passed to pip.

None
skip_check bool

don't check if module is already installed.

False
**kwargs str

modules to require.

{}

Returns:

Type Description
subprocess.CompletedProcess[str]

...

Examples:

>>> import myke
...
>>> myke.require('module-a==0.1.*', 'module-b==0.1.*', **{
...     'module-c': '0.1.*',
... })

run

run(
    args: str | Sequence[str],
    capture_output: None | bool = False,
    echo: bool | None = True,
    check: bool | None = True,
    env: dict[str, str] | None = None,
    env_update: dict[str, str | None] | None = None,
    shell: bool | None = None,
    **kwargs: Any
) -> subprocess.CompletedProcess[bytes | str]

Thin wrapper around subprocess.run

Parameters:

Name Type Description Default
args str | Sequence[str]

...

required
capture_output None | bool

...

False
echo bool | None

...

True
check bool | None

...

True
env dict[str, str] | None

...

None
env_update dict[str, str | None] | None

...

None
shell bool | None

...

None
**kwargs Any

passed to subprocess.run(...)

{}

Returns:

Type Description
subprocess.CompletedProcess[bytes | str]

...

Examples:

>>> import myke
...
>>> myke.run(["python", "-c", "print('Hello World.')"])
CompletedProcess(args=['python', '-c', "print('Hello World.')"], returncode=0)
>>> myke.run("echo 'Hello World.'")
CompletedProcess(args="echo 'Hello World.'", returncode=0)
>>> p = myke.run("echo 'Hello World.'", capture_output=True, echo=False)
>>> p.stdout
b'Hello World.\n'
>>> p = myke.run("exit 123", check=False)
>>> p.returncode
123

run_stdout

run_stdout(*args: Any, **kwargs: Any) -> str

Shorthand for:

myke.run(..., capture_output=True, text=True, echo=False).stdout.strip()

Parameters:

Name Type Description Default
*args Any

...

()
**kwargs Any

...

{}

Returns:

Type Description
str

...

Examples:

>>> myke.run_stdout("echo 'Hello World.'")
Hello World.

run_stdout_lines

run_stdout_lines(*args: Any, **kwargs: Any) -> list[str]

Similar to...

myke.run_stdout(...)

...except that text is split on newlines and stripped of empty elements.

Parameters:

Name Type Description Default
*args Any

...

()
**kwargs Any

...

{}

Returns:

Type Description
list[str]

...

Examples:

>>> myke.run_stdout("echo '   Hello World.   ' '  ' '   Goodbye World.   '")
['Hello World.', 'Goodbye World.']

sh

sh(
    *args: Any, **kwargs: Any
) -> subprocess.CompletedProcess[bytes | str]

Shorthand for: myke.run(..., shell=True)

Parameters:

Name Type Description Default
*args Any

...

()
**kwargs Any

...

{}

Returns:

Type Description
subprocess.CompletedProcess[bytes | str]

...

sh_stdout

sh_stdout(*args: Any, **kwargs: Any) -> str

Shorthand for: myke.run_stdout(..., shell=True)

Parameters:

Name Type Description Default
*args Any

...

()
**kwargs Any

...

{}

Returns:

Type Description
str

...

sh_stdout_lines

sh_stdout_lines(*args: Any, **kwargs: Any) -> list[str]

Shorthand for: myke.run_stdout_lines(..., shell=True)

Parameters:

Name Type Description Default
*args Any

...

()
**kwargs Any

...

{}

Returns:

Type Description
list[str]

...