Metadata-Version: 2.4
Name: robo-email
Version: 0.1.15
Summary: Reusable HTML email report rendering and local delivery utilities
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.12,<3.13
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: matplotlib (==3.11.2)
Description-Content-Type: text/markdown

# robo-email

Reusable email report rendering and delivery utilities for automation projects.

The application remains responsible for its report data, branding/template, recipient source, environment configuration, and subject. `robo-email` provides Outlook-compatible rendering and generic PowerShell SMTP delivery.


## Publishing

For maintainers, preview a protected release with `python tools/release.py --dry-run`; use `--publish` to prepare the version with Poetry and request the GitHub/PyPI release. See [private compiled-release instructions](COMPILED_WHEELS.md).

## Setup help

From the project directory:

```powershell
py -3.12 .\tools\setup_venv.py --help
```

This setup supports `-h` and `--help`; it has no additional command-line options.
Help lists supported choices and defaults without creating an environment or
installing packages. Unknown options are rejected before setup begins.

## Poetry ownership

Setup asks Poetry to create or reuse the project environment and runs Poetry
lock/check/install for project dependencies. Existing environments are preserved.
Pip is used only to bootstrap the pinned Poetry tool; project libraries are
managed through the manifest and lockfile.

Setup is self-contained in `tools/setup_venv.py`; no separate
`poetry_environment.py` or workspace parent tools are required. It retains
automatic Poetry 2.5.1 bootstrap, existing environment reuse, Python 3.12
validation, foreign environment isolation, target verification, lock/check/install,
shared user-owned Poetry for publishing, dependency checks and activation guidance.
The tool environment defaults to `~/.robo/poetry/poetry-2.5.1`; set
`ROBO_POETRY_HOME` to override its parent directory. Project dependencies remain
in this project's `.venv`. No administrator rights are required.

## Compiled distribution (maintainers)

Use `python scripts/github/build_compiled_wheel.py --plan` to review the protection
inventory and `python scripts/github/build_compiled_wheel.py` to build an audited native
wheel. See [compiled distributions](COMPILED_WHEELS.md) for requirements,
platform builds, readable entry-point exceptions and release instructions.

## Repository environment setup

From this repository, run `python scripts/setup.py --help` to see every supported option,
then `python scripts/setup.py` with Python 3.12. Setup uses Poetry 2.5.1 and preserves
the existing repository-specific installation and validation steps.

## Setup security updates

Run `python scripts/setup.py` with Python 3.12 to secure the project environment.
Setup verifies pip is at least 26.2.2, upgrading older pip through the official
SHA256-pinned wheel before downloading Poetry. Newer stable pip is preserved.
Poetry 2.5.1 tooling requires certifi>=2026.10.19. Existing external Poetry tools
with an outdated CA bundle are not used or modified; setup creates a secure
bootstrap environment where allowed. Appian setup needs `--bootstrap-poetry`
when no secure external Poetry installation is available.

Project dependencies and lockfiles stay under Poetry management. If certifi is
already locked below the security minimum, setup updates that lock through Poetry
and stops if the project constraints cannot resolve a safe version. A project
without certifi in its lockfile does not need to add it solely for the Poetry tool.
Downloads or verification failures stop setup before it reports success.

## Standalone setup

Environment creation, secure tooling bootstrap and Poetry validation are included in the project setup implementation. Run `python scripts/setup.py --help`; a separate environment helper module is not required. Project setup options and existing environment names are preserved.

