|
|
|
|
@ -280,6 +280,19 @@ that the function returns the axes dict unchanged and does not raise. |
|
|
|
|
All three tests use monkeypatching to inject CSV content as in-memory StringIO, following the existing |
|
|
|
|
pattern in `tests/test_political_compass.py` of patching module-level imports. |
|
|
|
|
|
|
|
|
|
## Deployment |
|
|
|
|
|
|
|
|
|
The CSV files (`data/party_ideologies.csv` and `data/coalition_membership.csv`) are **static reference |
|
|
|
|
data committed to git**. They are baked into the Docker image at build time alongside the application |
|
|
|
|
code. No rsync or volume mount is needed. |
|
|
|
|
|
|
|
|
|
The `.gitignore` excludes `data/*.db`, `data/*.bak`, `data/*.json` but not `data/*.csv`, so they can |
|
|
|
|
be tracked without change to the ignore rules. The data volume mount (`DATA_DIR:/home/app/app/data`) |
|
|
|
|
only contains the database file and does not overwrite the baked-in CSVs. |
|
|
|
|
|
|
|
|
|
When party compositions change (e.g., a new party enters parliament), update the CSV, commit, and |
|
|
|
|
redeploy. Typical frequency: once per parliament formation (~4 years). |
|
|
|
|
|
|
|
|
|
## Open Questions |
|
|
|
|
|
|
|
|
|
None. |
|
|
|
|
|