semvec/pypi-packages huggingface dataset:
amnes 20.5.1
Adaptive Meta-Framework for Network Experiment Studies.
Requires Python: >=3.8,<4

# Adaptive Meta-Framework for Network Experiment Studies (AMNES)

AMNES is a highly modular tool that aims to simplify the execution of reproducible
network experiments of all kinds.
With its easy configurability, the possibility to develop comprehensive extensions and
the connectivity to different storage backends, this framework helps you to spend less
time on testbed configuration and more time on your network research.

---

_For Usage and Development Guide consult [AMNES Documentation](https://amnes.gitlab.io/amnes/)._
runchecked 0.1.1
Python utility library to run commands in a checked fashion and report the result to Healthchecks.io
Requires Python: >=3.6

# Run Checked

I ran into the struggle, that when running backups via cron I was never quite sure if they succeeded.
Sure, I could rely on the cron error mails, but those are not generated when host is down entirely.
On my journey to a solution I stumbled across a nice tool called [Healthchecks.io](https://healthchecks.io/docs/).
It does two things: Alerting when the cron job fails and when the corn job was not executed according to its schedule.

First, I tried wrapping my more complex backup scripts into bash scripts - monitoring the exit code of commands and piping stdout into a variable to maintain the log in Healthchecks.
However, this proved to be quite difficult. Thus I wrote a small Python script to wrap my commands, gather stdout and stderr, and finally report everything back the my Healthchecks instance.


## How to use

This is no ready-made script. It is rather intended to be used as a library, to provide quick utility functions.

```python
from runchecked import HealthCheckedContext

with HealthCheckedContext(
    "...Your Healthchecks ping-back url here...",
    working_dir=".",  # Optionally set the general working directory
    enable_tty_output=None,  # Explicitly activate or deactive the echo to stdout. When left to None, it tries auto-detecting if the shell session is interactive
) as ctx:
    # Log some infos
    ctx.log.info("Backup started")

    # Set some environment variables global to the context
    ctx.set_env("Hello", "World")

    # Get the environment variable
    ctx.log.debug("Hello %s", ctx.get_env("Hello"))

    # Run some commands
    return_code = ctx.run(
      ["ls", "-alh", "."],  # commands are passed in the same way as in Python's `subprocess` library
      allow_fail=False,  # When true the context is not terminated, if the program exits with anything but 0
      timeout=None,  # Optional time for the program in seconds
      pass_env=True,  # If False only the system environment variables are passed, but not the context ones
    )
```

## License

[MIT License](./LICENSE) (c) Martin Peters *aka* FreakyBytes