A python 3.6+ API client for the open source status page system Cachet.
The goal of this package is to create a user friendly interface to the Cachet API.
- Resources are returned as objects clearly separating read only properties from the ones we can change. The raw json response is always available in an
attrsproperty - Active use of type hints throughout the entire codebase making code completion a breeze
- Proper pagination under the hood. Method listing resources will return generators. You can configure the start page and page size that fits the situation. Each new page leads to a new http request.
- Client is using a single session regardless of resource type making more complex work a lot faster (connection reuse)
- A very extensive set of tests/unit tests.
- Easy to extend and test
- Documentation
Please don't hesitate opening an issue about anything related to this package.
pip install cachet-client import cachetclient from cachetclient.v1 import enums client = cachetclient.Client( endpoint='https://status.test/api/v1', api_token='secrettoken', )Check if api is responding
if client.ping(): print("Cachet is up and running!")Create and delete a subscriber
sub = client.subscribers.create(email='user@example.test', verify=True) sub.delete()List all subscribers paginated (generator). Each new page is fetched from the server under the hood.
for sub in client.subscribers.list(page=1, per_page=100): print(sub.id, sub.email)Create a component issue
issue = client.incidents.create( name="Something blew up!", message="We are looking into it", status=enums.INCIDENT_INVESTIGATING, # Optional for component issues component_id=mycomponent.id, component_status=enums.COMPONENT_STATUS_MAJOR_OUTAGE, ).. and most other features supported by the Cachet API
Local setup:
python -m virtualenv .venv . .venv/bin/activate pip install -e .This project has a fairly extensive test setup.
- Unit tests are located in
tests/including a fake implementation of the Cachet API. - A simpler test script under
extras/live_run.pythat needs a running test instance of Cachet.
pip install -r tests/requirements.txt tox # Optionally tox -e pep8 # for pep8 run only tox -e py36 # tests only # Running tests with pytest also works, but this works poorly in combination with environment variables for the live test script (tox separates environments) pytest tests/Do not run this script against a system in production. This is only for a test service. Cachet can easily be set up locally with docker: https://github.com/CachetHQ/Docker
Optionally we can run cachet from source: https://github.com/CachetHQ/Docker
A local setup is also located in the root or the repo (docker-compose.yaml).
You need to set the following environment variables.
CACHET_ENDPOINT CACHET_API_TOKENRunning tests:
python extras/live_run.py ... ================================================= Number of tests : 10 Successful : 10 Failure : 0 Percentage passed : 100.0% =================================================pip install -r docs/requirements.txt python setup.py build_sphinxDo not hesitate opening issues or submit completed or partial pull requests. Contributors of all experience levels are welcome.
This project is sponsored by zetta.io
