snakemake-logger-plugin-panoptes
A Snakemake 9 logger plugin that forwards
workflow events to a running panoptes
server, replacing the legacy --wms-monitor integration that was removed in
Snakemake 9.
Requirements
Install
# via PyPI
pip install snakemake-logger-plugin-panoptes
# or via bioconda
conda install -c conda-forge -c bioconda snakemake-logger-plugin-panoptes
After installing, Snakemake should advertise the plugin in --help:
snakemake --help | grep logger-panoptes
# --logger-panoptes-address VALUE
# --logger-panoptes-timeout VALUE
Use
Start a panoptes server, then run Snakemake with the plugin enabled:
snakemake \
--cores 1 \
--logger panoptes \
--logger-panoptes-address http://127.0.0.1:5000
You can also point at the address via an environment variable:
export SNAKEMAKE_LOGGER_PANOPTES_ADDRESS=http://127.0.0.1:5000
snakemake --cores 1 --logger panoptes
Settings
| Flag | Env var | Default | Description |
|---|---|---|---|
--logger-panoptes-address |
SNAKEMAKE_LOGGER_PANOPTES_ADDRESS |
(required) | Base URL of the panoptes server. |
--logger-panoptes-timeout |
— | 10.0 |
Per-request HTTP timeout in seconds. |
--logger-panoptes-workflow-id |
SNAKEMAKE_LOGGER_PANOPTES_WORKFLOW_ID |
(auto uuid) | Stable workflow id. Re-running with the same id reuses and resets the existing panoptes workflow instead of creating a new one. |
Give a run a stable id so re-runs update the same panoptes entry instead of piling up new ones:
snakemake \
--cores 1 \
--logger panoptes \
--logger-panoptes-address http://127.0.0.1:5000 \
--logger-panoptes-workflow-id my-pipeline
How it works
On workflow start the plugin calls GET /create_workflow to register a new
workflow with the panoptes server and remembers the returned workflow id. When
--logger-panoptes-workflow-id is set it is passed along, and the server reuses
(and resets) any existing workflow with that id so re-runs land on the same id. It
then translates Snakemake LogEvent
records (JOB_INFO, JOB_STARTED, JOB_FINISHED, JOB_ERROR, SHELLCMD,
PROGRESS, ERROR, RUN_INFO) into the JSON message format that panoptes'
/update_workflow_status endpoint already understands.
Network errors are logged but never crash the workflow.
If the panoptes server is served over HTTPS with a certificate signed by a
private/corporate CA, point the plugin at the CA bundle via one of
REQUESTS_CA_BUNDLE, SSL_CERT_FILE, or CURL_CA_BUNDLE (checked in that
order); the plugin uses it to verify the connection.
For a working example workflow that uses this plugin, see snakemake_example_workflow.
Development
pip install -e '.[dev]' # editable install with test deps (quote .[dev] for zsh)
pytest
License
MIT
Metadata
Release files for snakemake-logger-plugin-panoptes 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| snakemake_logger_plugin_panoptes-0.3.0.tar.gz | 9.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| snakemake_logger_plugin_panoptes-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / snakemake_logger_plugin_panoptes-0.3.0.tar.gz
| Download URL | snakemake_logger_plugin_panoptes-0.3.0.tar.gz |
|---|---|
| Size | 9.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
246b1a5b064718aa685cc71272c2234829403c3e30ed70a5ce39d23e76fd3b74
|
|
BLAKE2b-256 checksum How to use checksums |
b832bcd071899d552401a18e173441daedc8e8528f944c49a9fe8e7b59bb1ec0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / snakemake_logger_plugin_panoptes-0.3.0-py3-none-any.whl
| Download URL | snakemake_logger_plugin_panoptes-0.3.0-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fcb889d7a6f00204f1f32cc28cd16d4022038d3edcff6245ddb9fe16c32c87d1
|
|
BLAKE2b-256 checksum How to use checksums |
3a9d1680499ba0061c7ba9e62c402e5770a77c22e75a5ed6b9b135d8922bc7eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|