Metadata-Version: 2.4
Name: estrellio-weekly-report-processor
Version: 0.1.0
Summary: Structured Markdown weekly report processing and export
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Weekly report processor

A standard-library-only Python package for structured Markdown weekly reports:
XLSX and Outlook-friendly HTML export, weekly archiving, status sorting, and
missing-field completion. Python 3.10 or newer. MIT license.

## Install and use

```sh
pip install estrellio-weekly-report-processor
weekly-report -i report.md
weekly-report archive_weekly_progress -i report.md --output archived.md
weekly-report -i report.md --config layout.json --banner-week-offset -1
```

The default operation exports both XLSX and HTML beside the input. Explicit
conversion commands choose one format. Maintenance commands rewrite the input
unless `--output` is supplied. They never invoke Git. Errors return a nonzero
exit status; successful commands print the generated paths.

Input and output paths are relative to the working directory. Image references
are resolved relative to the input Markdown. There is no automatic repository,
local configuration, or environment-profile discovery. `--config` explicitly
selects a JSON layout; a missing or invalid file fails. Without it, code defaults
apply. See `tests/fixtures/sample.md` for the heading structure and
`tests/fixtures/layout.json` for layout options.

## Python interface

```python
from weekly_report_processor import convert_report_markdown_to_excel
convert_report_markdown_to_excel("report.md", "report.xlsx")
```

Public functions also support HTML rendering, Markdown parsing/rendering,
archiving, sorting and field completion. `ReportLayoutConfig` carries formatting,
structure and optional project policy. A configuration can supply:

```json
{
  "project_rules": [["Example", "Example "]],
  "default_project": "Other",
  "project_order": ["Example", "Other"],
  "variants": [["Complete report", null], ["Example report", "Example"]]
}
```

Rules use the first case-sensitive title substring match. Unknown projects sort
stably after explicitly ordered ones. A null variant project exports all tasks;
a named variant filters tasks and summary entries. Other report sections are
preserved. Variant titles become filename suffixes and must be unique,
filename-safe names. The default policy has no named projects or variants and
produces one unfiltered report per requested format. Configuration is loaded
per call; no global project registry is modified.

## Development and release

Run `python -m pytest -q tests`. Build with `python -m build --wheel`, check with
`python -m twine check --strict dist/*.whl` and `python scripts/check_dist.py dist`.
Install the exact wheel and pytest in a separate virtual environment, then run
`python scripts/verify_install.py 0.1.0` with that environment's interpreter.
The verifier copies tests outside the checkout and uses isolated Python mode.

Source is maintained in a private GitHub repository. Only the pure Python wheel
is published. Version tags trigger the `publish.yml` workflow after Linux and
Windows installation tests on Python 3.10 and 3.12. Publishing uses the `pypi`
environment and PyPI Trusted Publishing.
