Metadata-Version: 2.4
Name: opssignal
Version: 1.0.0b1
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: System :: Systems Administration
Requires-Dist: opssignal-aws==1.0.0b1 ; extra == 'all'
Requires-Dist: opssignal-gcp==1.0.0b1 ; extra == 'all'
Requires-Dist: opssignal-azure==1.0.0b1 ; extra == 'all'
Requires-Dist: opssignal-aws==1.0.0b1 ; extra == 'aws'
Requires-Dist: opssignal-azure==1.0.0b1 ; extra == 'azure'
Requires-Dist: opssignal-gcp==1.0.0b1 ; extra == 'gcp'
Provides-Extra: all
Provides-Extra: aws
Provides-Extra: azure
Provides-Extra: gcp
Summary: Cross-language operational signal SDK for backend applications
Keywords: notifications,alerting,slack,webhook,observability,airflow
License: Apache-2.0
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://adithyapathipaka.github.io/OpsSignal/
Project-URL: Homepage, https://github.com/adithyapathipaka/OpsSignal
Project-URL: Issues, https://github.com/adithyapathipaka/OpsSignal/issues
Project-URL: Source, https://github.com/adithyapathipaka/OpsSignal

# opssignal

Turn application and workflow events into routed operational notifications:
Slack, webhooks, PagerDuty, Microsoft Teams, Opsgenie, email and the console,
from one event model. The routing, retry and delivery logic is a Rust core,
so it behaves the same from Python, the CLI and the C library.

> **Status: beta.** The Python bindings with the Airflow and dbt adapters are
> the tested path today.

## Install

```bash
pip install --pre opssignal          # local and https:// configs
pip install --pre 'opssignal[aws]'   # + S3, AppConfig, DynamoDB, Secrets Manager, SES
pip install --pre 'opssignal[gcp]'   # + Cloud Storage, Firestore, Secret Manager
pip install --pre 'opssignal[azure]' # + Blob Storage, App Configuration, Cosmos DB, Key Vault
pip install --pre 'opssignal[all]'   # all three clouds
```

Wheels cover CPython 3.9 and later on Linux (x86_64, aarch64, glibc and
musl), macOS on Apple Silicon and Windows x86_64. Other platforms, such as
Intel Macs, build from the sdist, which needs a Rust toolchain.

## Send a signal

```python
import opssignal

opssignal.notify(
    source="billing-api",
    event_type="payment_failed",
    title="Card declined for order 1042",
    severity="error",
)
```

## Airflow

```python
from opssignal.integrations.airflow import failure_callback

default_args = {"on_failure_callback": failure_callback}
```

## Route it

Point `SIGNAL_CONFIG` at a `signal.yaml` (a local path, `https://`, `s3://`,
`gs://`, `az://` and more), or put one in the working directory:

```yaml
providers:
  slack:
    webhook_url: "${SLACK_WEBHOOK_URL}"

routes:
  - match:
      severity: [error, critical]
      environment: prod
    providers: [slack]
```

No config, or no matching route? Signals go to the console, so nothing is
silently dropped.

## Links

- Documentation: https://adithyapathipaka.github.io/OpsSignal/
- Source and issues: https://github.com/adithyapathipaka/OpsSignal
- License: Apache-2.0

