skip to navigation
skip to content

cmdinter 1.0.7

A "command interface" for functions.

# cmdinter

## Description

This is a library that can be used to apply a *command interface* to functions.
It's main purpose is to apply the *returncode* convention to python functions
and to give you some control on how to run these functions. E.g. if you need to
run a function silently (no stdout), if you need to return the stdout that a
function produces or if you need to prevent a function from throwing errors.

`cmdinter` was created for the [buildlib](https://pypi.python.org/pypi/buildlib)
package.

## API

### CmdFuncResult

A *cmd function* should return a `CmdFuncResult` object.

```python
class CmdFuncResult(NamedTuple):
returncode: int
summary: str
value: Any
```

`summary`, contains a cmd summary with a Status flag (see Status below).
E.g.:

```
[OK] Run apt-get install.
[Error] pip install package x.
[Skip] Mount hard drive. Drive alrady mounted.
```

`returncode` Unix returncode convention...

`returnvalue` The value the function returns. That would be what you usually
return via the `return` keyword.

### Status

Status flags that can be used as `summary` prefix.

```python
class Status(object):
ok: str = '[OK]'
error: str = '[ERROR]'
skip: str = '[SKIP]'
```

### run_cmd()

This function can be used in case you want to run a child function as a command.
You run it like this

```python
result: CmdResult = run_cmd(
silent=True,
return_stdout=True,
catch_err=False,
)(
func=my_func,
args=my_args,
kwargs=my_kwargs,
)
```

This is from the source code:

```python
def run_cmd(
silent: bool = False,
return_stdout: bool = False,
catch_err: bool = False,
) -> Callable:
"""
This function works in combination with functions that return a
'CmdFuncResult' object. With `run_cmd()` you get a some more control over
these functions.

Call it like this:

run_cmd(silent=True, return_stdout=True)(my_func, args, kwargs)

The curried function returns a `CmdResult` object.

@silent: Mute child output of child function if set to True.
@return_stdout: Return stdout of child function.
@catch_err: Catch errors that are raised by child functions and return error
message with 'CmdResult' object.
"""
# ...
```


### CmdResult

A function that is run via the `run_cmd()` function returns a `CmdResult`
object.

```python
class CmdResult(NamedTuple):
returnvalue: Any
returncode: int
summary: str
output: Optional[str]
error: Optional[str]
traceback: Optional[str]
```

The `CmdResult` object is an extended version of `CmdFuncResult`.

`output` In case you return stdout from a child function, it's stored here.

`error` In case use the `catch_err` option to catch errors from a child function, it's stored here.

`traceback` Error traceback is stored here.


 
File Type Py Version Uploaded on Size
cmdinter-1.0.7-py3-none-any.whl (md5) Python Wheel 3.6 2017-10-12 5KB