Skip to main content

Modular notifications: drpython.telegram, drpython.email & drpython.database

Project description

drpython

Modular notifications for Python projects: simple helpers for Telegram bots and SMTP email.

This library provides three utilities:

  • drpython.telegram: send messages via a Telegram bot.
  • drpython.email: send emails via an SMTP server.
  • drpython.database: append-friendly helpers for CSV, Excel (.xlsx), and JSON.

Both modules expose a light class (TelegramNotifier, EmailNotifier) and a convenience function (notify_telegram, notify_email).

Installation

  • Using uv (recommended for projects):

    uv add drpython
    
  • Using pip:

    pip install drpython
    

Quickstart

You can pass credentials directly to the functions/classes, or supply them via environment variables. If you keep secrets in a .env file, load it with python-dotenv before calling the notifiers.

from dotenv import load_dotenv
load_dotenv()  # Only needed if using a .env file

Telegram

Environment variables used:

  • DRPYTHON_TELEGRAM_TOKEN
  • DRPYTHON_CHAT_ID

Send a Telegram message using environment variables:

from drpython.telegram import notify_telegram

ok = notify_telegram("Hello from drpython!", parse_mode="HTML")
print(ok)  # True if sent

Or pass credentials explicitly:

from drpython.telegram import TelegramNotifier

bot = TelegramNotifier(token="<BOT_TOKEN>", chat_id="<CHAT_ID>")
ok = bot.send("<b>Bold</b> and <i>italic</i>", parse_mode="HTML", disable_notification=False)
print(ok)

Email (SMTP)

Environment variables used:

  • DRPYTHON_SMTP_HOST (e.g., smtp.gmail.com)
  • DRPYTHON_SMTP_PORT (default 587)
  • DRPYTHON_SMTP_USER
  • DRPYTHON_SMTP_PASSWORD
  • DRPYTHON_SMTP_FROM (defaults to user)

Send an email using environment variables:

from drpython.email import notify_email

ok = notify_email(
    to="recipient@example.com",
    subject="Greetings",
    body="Hello from drpython!",
    html=False,  # set True to send HTML
)
print(ok)

Database (CSV, Excel, JSON)

Convenience functions to append or create tabular data files from a list of dictionaries. Dependencies pandas and openpyxl are included.

Functions:

  • add_to_csv(data, filename, *, encoding='utf-8', index=False, append=True, **kwargs)
  • add_to_excel(data, filename, *, sheet_name='Sheet1', index=False, append=True, **kwargs)
  • add_to_json(data, filename, *, append=True, indent=2, **kwargs)

Example:

from drpython.database import add_to_csv, add_to_excel, add_to_json

data = [
    {"id": 1, "name": "Alice", "score": 95},
    {"id": 2, "name": "Bob",   "score": 87},
]

# CSV: appends if file exists, otherwise creates; controls header/index
add_to_csv(data, "users.csv", append=True, index=False)

# Excel (.xlsx): appends to an existing sheet starting at next row; creates otherwise
add_to_excel(data, "users.xlsx", sheet_name="Users", append=True, index=False)

# JSON: writes a proper JSON array; appends safely if file exists and is valid JSON
add_to_json(data, "users.json", append=True, indent=2)

Or pass credentials explicitly and use the class:

from drpython.email import EmailNotifier

mailer = EmailNotifier(
    host="smtp.example.com",
    port=587,
    user="user@example.com",
    password="app_password",
    from_addr="user@example.com",
)

ok = mailer.send(
    to=["recipient@example.com", "other@example.com"],
    subject="Attachments and HTML",
    body="<b>Hello</b> world",
    html=True,
    cc="cc@example.com",
    bcc=["bcc1@example.com", "bcc2@example.com"],
    attachments=["path/to/file.pdf"],
)
print(ok)

Using .env

If you prefer a .env file, create it and load it in your app:

# Telegram
DRPYTHON_TELEGRAM_TOKEN=your-bot-token
DRPYTHON_CHAT_ID=your-chat-id

# SMTP
DRPYTHON_SMTP_HOST=smtp.example.com
DRPYTHON_SMTP_PORT=587
DRPYTHON_SMTP_USER=user@example.com
DRPYTHON_SMTP_PASSWORD=app_password
DRPYTHON_SMTP_FROM=user@example.com

Then load it:

from dotenv import load_dotenv
load_dotenv()

Never commit real tokens or passwords to source control.

Notes

  • Commands above are shown for Windows PowerShell.
  • notify_telegram uses requests.get and returns True/False based on Telegram API response.
  • notify_email uses smtplib.SMTP and returns True/False based on send success.
  • Data helpers rely on pandas (and openpyxl for Excel) which are installed automatically.
  • If you encounter build/publish issues, ensure your pyproject.toml includes a src/drpython wheel target and excludes .env from distributions.

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

drpython-0.1.7.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

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

drpython-0.1.7-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: drpython-0.1.7.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for drpython-0.1.7.tar.gz
Algorithm Hash digest
SHA256 9f603f32dcc78ae9f574d5fbcae36b30c2d8af05b3d4c03169ef84f304567303
MD5 62f3c027610a7f50823384bdab92d376
BLAKE2b-256 ddc11c2d7dfe9ec3c9cc8d81b590bfa2107ea3eaf7127369ddd4866f508679e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: drpython-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for drpython-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 9706bbc5419c357bf5a92d7f0b34b768d535fc405c023232cde2ed579ef53a2b
MD5 90b8a8332a7d9b458aba04ab38207028
BLAKE2b-256 73c331ca5f5514d78f1b0d99a4a902c49c63b9b29e296b72abdc31a429acec68

See more details on using hashes here.

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