# Endid Python and Command-line client
> NOTE: This package is effectively archived because the Endid.app service has now become a
> native GitHub / Slack integration allowing you to monitor GitHub Actions in Slack with
> zero YAML to manage! See [Endid.app](https://endid.app/) for the latest details.
Command-line utility and Python client for calling the [Endid Slack app](https://endid.app/) to announce that a task has ended!
Endid.app is a simpler more flexible webhook - an informal Slack integration for developers and data scientists.
Find yourself constantly checking terminals, notebooks, or web apps waiting to see if your dev tasks have finished?
Endid supplies a single token for any Slack channel. You can use Endid's simple API or command-line utility to let you know when any process has completed.
You can mute notifications temporarily right within Slack.
## Installation
To install both Python and Command-line clients:
```
pip install endid
```
Endid will install no other dependencies at all.
## Usage
Both clients store last-used tokens and messages on your system, so subsequently calling the bare-bones client with no token will still reach Slack.
Once Endid is installed in Slack, go to any channel (or message history with Endid app bot) and type `/endid`. You will receive a token such as 7c710a188f874520be1f7ab7815c6cd1 which you would use in the examples below.
### Command Line
Supply the token as an argument so a simple message ('Your task has ended!') appears in the Slack channel:
```
endid -t 7c710a188f874520be1f7ab7815c6cd1
```
Next time, just call endid to reuse the same token and Slack channel:
```
endid
```
Supply a custom message (to the saved channel/token):
```
endid -t 7c710a188f874520be1f7ab7815c6cd1 -m 'Here is a message'
```
For more command-line options run `endid -h`
### From Python code
From your Python code, for example in a Jupyter notebook:
```
import endid
endid.call(token='7c710a188f874520be1f7ab7815c6cd1')
```
To use the same token as last time (whether from Python or Command-line):
```
import endid
endid.call()
```
Extra arguments:
`message` - a custom message to display in the Slack channel.
`status` - a status for the event OK | WARN | FAIL | NONE.
`name` - any string to act as an identifier for the event source.
`writeprefs` - whether to write token/message to the preferences file so they can become defaults next time (default=True)
`readprefs` - whether to read token/message from the preferences file (default=True)
`printoutput` - whether to print any success or error messages to the screen (default=False)
The call function returns an `OK` response from the API if everything goes to plan, and error messages if not.
### GitHub Actions
We have a ready-made [GitHub Action](https://github.com/marketplace/actions/endid-action) to easily send a Slack message via Endid.
The great thing is being able to mute notifications right from the Slack channel if they get a bit much, or
to avoid disturbing colleagues while you develop your workflows.
## Installation Troubleshooting
The installation instructions assume you have [pip](https://pip.pypa.io/en/stable/installing/) on your system. This is usually the case for modern Windows and Mac.
If not, you can [install pip](https://pip.pypa.io/en/stable/installing/) first.
Alternatively, download [this file](https://raw.githubusercontent.com/endid-app/endid-python/main/endid/endid.py), rename it to `endid` and place it somewhere in your path. Make it executable too.
If you are using virtualenvs for Python development, `pip install endid` may attempt to install it inside your active virtualenv - which will work fine as long as the virtualenv is active. To install 'globally' `deactivate` the virtualenv first. If you then get a complaint that pip 'could not find an activated virtualenv', first set the
environment variable PIP_REQUIRE_VIRTUALENV=false.
Please do not hesitate to raise a [GitHub Issue](https://github.com/endid-app/endid-python/issues) on this repo, or contact [support@endid.app](support@endid.app) to
resolve installation or usage issues on your system.