Skip to main content

A simple notification library for Google Cloud projects. Sends alerts via Email and Google Chat.

Project description

GCP Notifier

Upload Python Package

Synchronous Usage

Import and use in your Python code:

from gcp_notifier import notify, notify_on_failure

# Send a notification (choose channels: "email", "gchat", or both)
notify(
  subject="Alert Subject",
  body="Alert body text",
  channels=["email", "gchat"]  # or ["email"] or ["gchat"]
)

# Use as tenacity retry_error_callback
from tenacity import retry, stop_after_attempt

@retry(stop=stop_after_attempt(3), retry_error_callback=notify_on_failure)
def always_fails():
  # This function will always fail, triggering notify_on_failure after retries
  raise ValueError("This is a test error for notification.")

always_fails()

Async Usage

You can send notifications asynchronously using the async API.

Async notify example

import asyncio  # only if running a script, otherwise, do not import
from gcp_notifier import async_notify

async def main():
  await async_notify(
    subject="Async Alert",
    body="This is an async alert!",
    channels=["email", "gchat"]
  )

asyncio.run(main()) # if running a script
await main()        # if using a notebook

Async tenacity error callback example

import asyncio  # only if running a script, otherwise, do not import
from gcp_notifier import async_notify_on_failure
from tenacity import retry, stop_after_attempt

@retry(stop=stop_after_attempt(3), retry_error_callback=async_notify_on_failure)
async def always_fails_async():
  raise ValueError("This is a test error for async notification.")

asyncio.run(always_fails_async())   # if running a script
await always_fails_async()          # if using a notebook

Retrieving Secrets

The same Secret Manager access the library uses internally is exposed as a public helper. project_id defaults to the project detected from the ambient credentials (google.auth.default()), so in most cases you only pass the secret ID.

from gcp_notifier import get_secret

# Uses the auto-detected project
api_key = get_secret("MY_API_KEY")

# Or target a specific project / version explicitly
db_password = get_secret(
    "DB_PASSWORD",
    project_id="my-other-project",
    version_id="3",
)

Raises ValueError if secret_id is empty, or if no project_id is provided and none can be detected from the environment.

Installation

Install from PyPI (recommended):

pip install gcp-notifier

For async features (async_notify, async_notify_on_failure), install with the optional async dependencies:

pip install 'gcp-notifier[async]'

This will install the package plus the required async libraries (aiosmtplib, httpx).

Quick Start

  1. Install the package (see Installation above).

  2. The account (personal or service) running this code must have the 'Secret Manager Secret Accessor' role in your GCP project.

  3. The required secrets must be in the same GCP project where your Python script or notebook is running.

  4. Add your required secrets to Google Secret Manager in your GCP project:

    • GCHAT_WEBHOOK_URL (for Google Chat)
    • EMAIL_SENDER (sender email address for Email)
    • EMAIL_PASSWORD (password or app password for sender)
    • EMAIL_RECIPIENTS (comma-separated list of recipient email addresses)
  5. Import and use notify in your code as shown below.

Building and Publishing

This project uses a modern Python packaging workflow with pyproject.toml.

To build the package:

python -m pip install --upgrade build
python -m build

To check and upload to PyPI:

python -m pip install --upgrade twine
twine check dist/*
twine upload dist/*

See the Python Packaging User Guide for more details.

Changelog

See CHANGELOG.md for the release history.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gcp_notifier-0.1.7.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gcp_notifier-0.1.7-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file gcp_notifier-0.1.7.tar.gz.

File metadata

  • Download URL: gcp_notifier-0.1.7.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gcp_notifier-0.1.7.tar.gz
Algorithm Hash digest
SHA256 db829118f2d6c8640d6071e494d1f140c370dc1d11d983accea65fe38e2df2fd
MD5 7843dba7d9d03285c1423393b54edae7
BLAKE2b-256 7707354bde4418f90a838808b91a42bd30482ff1f7fc10fe8574327cbe4ad608

See more details on using hashes here.

Provenance

The following attestation bundles were made for gcp_notifier-0.1.7.tar.gz:

Publisher: python-publish.yml on marcellusmontilla/gcp_notifier

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gcp_notifier-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: gcp_notifier-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gcp_notifier-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d1ae1c816388595a1f7f7416de31f8116527d1f7df8e3be1b2be4cfc1e353155
MD5 017d0e9627ea40630c2c8afd650a78f5
BLAKE2b-256 193e65eef22d7d70236bdd9e5d5257a72c842bd20bdcc605eb053ecf2c0e0250

See more details on using hashes here.

Provenance

The following attestation bundles were made for gcp_notifier-0.1.7-py3-none-any.whl:

Publisher: python-publish.yml on marcellusmontilla/gcp_notifier

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page