Repository navigation
Releases: bprager/NewYearsCards
Releases · bprager/NewYearsCards
Release list
v1.1.5
Added
- Integrated Deptry into the development chain:
- Added Deptry to dev extras and a
make deptrytarget. - Included Deptry in
make checkand CI (runs after installing dev deps).
- Added Deptry to dev extras and a
Changed
- Removed unused runtime dependency
google-auth-httplib2(was not imported).
CI
- CI pipeline now runs Deptry to audit missing/obsolete dependencies.
v1.1.4
Fixed
- Auto‑encrypted backup: resolve recipients (ENV or file) before creating any backup directories
or temp files; provide clear skip messages when recipients are missing orageis not found. - Ensures a backup is created for every successful
downloadwhen properly configured.
Tests
- Added unit test for missing
AGE_RECIPIENTS_FILEpath to ensure clean skip without creating
backups/<year>/.
v1.1.3
Added
- Country alias for Thailand in Thai script:
ประเทศไทย→TH. Ensures Thai addresses use theTH
template when users provide the country in Thai.
Tests
- Added unit test for the Thai-script alias, confirming
ประเทศไทยmaps toTHand display name
Thailand.
v1.1.2
Added
- Address template for Thailand (
TH), combining district/province (state), city, and ZIP into one line
and uppercasing the last two lines per international addressing conventions. - Country inference aliases for Thailand:
Thailand,TH.
Tests
- Unit tests covering Thailand formatting and country inference.
v1.1.1
Fixed
- Ensure encrypted backup logic never creates
backups/<year>/when encryption is disabled
(noAGE_RECIPIENT/AGE_RECIPIENTS_FILE) or whenageis not present. - Kept
.envloading strictly scoped to the current working directory to avoid
test leakage and accidental env overrides.
Internal
- Synced
__version__withpyproject.tomlto1.1.1. - Minor test hardening and cleanup; all checks green.
v1.1.0
Added
- Encrypted backups with age:
- Auto‑backup runs after successful
download, writing.tgz.agetobackups/<year>/. - Unit tests for auto‑backup, including recipients file usage.
- Make targets
age-backupandage-restorefor manual workflows.
- Auto‑backup runs after successful
- .env configuration for AGE_*:
AGE_RECIPIENT/AGE_RECIPIENTS_FILEfor encryption;AGE_IDENTITYfor restore.- Makefile now reads
.envautomatically;age-backupaccepts recipients file without requiring single recipient.
- Documentation:
docs/GOOGLE_AUTH.mdwith service account setup and a “Test your setup” checklist.- README compacted; clear Google Sheet one‑line headers and US example; service‑account key emphasized with official link.
Changed
- Auto‑backup destination from
backups/tobackups/<year>/. - CLI loads
.envbefore reading AGE_* for reliability; prints helpful skip notes when not configured. - US country aliases expanded (US/USA/United States/U.S. map to
US).
Security
.gitignoreexcludesdata/raw/,data/processed/, and CSVs; plaintext address data stays out of the repo.Keys/*.agekeyignored; only encrypted.agefiles are intended for storage/commit.
v1.0.0
This is the first complete, stable release.
Added
- CI/CD hardening and coverage reporting:
- GitHub Actions workflows for CI and Coverage with stage banners and strict gates.
- Codecov integration with OIDC tokenless uploads (GitHub App) and a guarded token fallback on main.
- Coverage thresholds: project 90%, patch 95%; pytest enforces
--cov-fail-under=90.
- Developer experience:
- Run from source without install or PYTHONPATH (top-level
newyearscardslauncher). - Makefile shortcuts:
check,coverage,run-download,run-build. - Ruff and mypy configured;
make checkprints stage banners and runs lint, mypy, and tests. docs/CI.mdanddocs/SETUP_SHEET.mdwith setup guidance and examples.
- Run from source without install or PYTHONPATH (top-level
- Address formatting:
- Template-driven uppercasing via
uppercase_last_n_lines(e.g., FR, DE, UA). - Country aliases (Unicode-aware), including Ukraine and French Polynesia.
- Fallback YAML parser for
address_formats.ymlif PyYAML is unavailable.
- Template-driven uppercasing via
Changed
- README restructured to emphasize no-install usage and correct CLI invocation (
python newyearscards ...). - Added explicit Google Sheet header template to README and docs to ensure a clean first-time setup.
- Type annotations improved (TypedDict for templates) and lint fixes across tests.
Fixed
- CI badge and Codecov badge now reflect accurate status; private-repo badge uses tokenized URL.
- CLI and address tests expanded to push coverage well above 90% overall.
NewYearsCards v0.2.2
Added
- Developer launcher script
newyearscardsto run CLI without install or PYTHONPATH. - Makefile targets
run-downloadandrun-buildfor no‑install usage. - Ruff configured and added to
[project.optional-dependencies].dev.
Changed
- README clarified with correct command invocations:
- Installed usage, from‑source
python newyearscards ..., anduv runexamples. - Highlighted
.envconfiguration (SHEET_URL required; RAW/PROCESSED dir overrides; ADDRESS_TEMPLATES; SERVICE_ACCOUNT_KEY).
- Installed usage, from‑source
- Minor CLI cleanup and formatting, tests remain green.
NewYearsCards v0.2.1
Added
- Address templates and rules for international formatting:
- New template
USwithout a country line (domestic addressing). - New template
PF(French Polynesia) withzip city stateand country line. - New template
UAand Unicode-aware country aliases (e.g., "україна").
- New template
- Configurable uppercasing via
uppercase_last_n_linesin templates, applied to:FR,DE,UA(uppercases the last two lines, e.g., city/zip and country).default(uppercases the last line, typically the country).
- Unit tests covering:
- UTF‑8 handling (Cyrillic for Ukraine) without ASCII coercion.
- French zip+city uppercased per template.
- Default template uppercasing only the country line.
- US template omitting the country line; last line is
CITY STATE ZIP.
Changed
- Address processing now applies uppercasing based on template settings instead of hardcoding logic in Python.
NewYearsCards v0.2.0
Added
- Comprehensive unit tests covering address processing, Sheets URL parsing, and CLI.
--dry-runforbuild-labelsto preview output without writing files.- Console script wiring in
pyproject.toml(entrynewyearscards). - Core modules:
sheets.py,addresses.py, andconfig.py.
Changed
- Moved non-essential documentation into
docs/and updated references in README. - README and workflow documentation aligned with actual CLI behavior.
- Lazy-load Google auth in downloader to avoid unnecessary runtime deps for non-download commands.