Metadata-Version: 2.4
Name: pynotify-annek
Version: 0.2.0
Summary: A terminal UI for sending Teams status notifications
License-Expression: MIT
License-File: LICENSE
Keywords: teams,microsoft-teams,notifications,adaptive-cards,webhook,textual,tui,status
Author: Michael MacKenna
Author-email: mmackenna@unitedfiregroup.com
Requires-Python: >=3.13,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Information Technology
Classifier: Operating System :: OS Independent
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: Terminals
Classifier: Typing :: Typed
Requires-Dist: textual (>=8.2.8,<9.0.0)
Project-URL: Changelog, https://github.com/mmackenna/pynotify-annek/releases
Project-URL: Documentation, https://mmackenna.github.io/pynotify-annek/
Project-URL: Homepage, https://mmackenna.github.io/pynotify-annek/
Project-URL: Issues, https://github.com/mmackenna/pynotify-annek/issues
Project-URL: Repository, https://github.com/mmackenna/pynotify-annek
Description-Content-Type: text/markdown

# pynotify

[![PyPI](https://img.shields.io/pypi/v/pynotify-annek)](https://pypi.org/project/pynotify-annek/)
[![Python versions](https://img.shields.io/pypi/pyversions/pynotify-annek)](https://pypi.org/project/pynotify-annek/)
[![License](https://img.shields.io/pypi/l/pynotify-annek)](https://pypi.org/project/pynotify-annek/)

`pynotify-annek` is a [Textual](https://textual.textualize.io/) terminal UI for sending
an Adaptive Card message to one or more Microsoft Teams channels.

Full documentation: <https://mmackenna.github.io/pynotify-annek/>

## Installation

`pynotify-annek` is published on PyPI: <https://pypi.org/project/pynotify-annek/>

Install the project, then create a user-level channel list:

```sh
pip install pynotify-annek
mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/pynotify"
cp src_script_example/teams_channels.csv.example \
  "${XDG_CONFIG_HOME:-$HOME/.config}/pynotify/channels.csv"
```

The CSV contains only display names and environment-variable names:

```csv
channel_name,webhook_env_var
PreProd Status,PYNOTIFY_PREPROD_WEBHOOK_URL
QA Status,PYNOTIFY_QA_WEBHOOK_URL
```

Set each webhook outside the repository, ideally through the operating system's
secret manager or the shell environment:

```sh
export PYNOTIFY_PREPROD_WEBHOOK_URL='https://…'
export PYNOTIFY_QA_WEBHOOK_URL='https://…'
poetry run pynotify
```

Use `--channels /path/to/channels.csv` or `PYNOTIFY_CHANNELS_FILE` to use a
different channel list. For compatibility, it also accepts a local
`channel_name,webhook_url` CSV. Keep that file outside the repository, do not
commit it, and set its permissions to `600`. The environment-variable format is
recommended because its channel list can be safely committed or distributed.

## Development

```sh
poetry install
pytest
ruff check .
mypy src/pynotify
mkdocs build --strict
```

