US year-file cuts can pair one cut's tables with another's stamp, and the stamp lacks the year
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start in tax_benefit_models.us.datasets.create_datasets and compare it with the UK path that #601 changed, which uses policyengine.provenance.year_file_stamp.temporary_year_file and publish_year_file. Port that write-to-temp, re-check, stamp, os.replace flow to the US create path, and add "year" to the stamp by raising legacy_inputs.YEAR_FILE_STAMP_REVISION to 3 and passing the year into year_file_stamp_problem. Update docs/microsim.md "Year files". The work is done when a failed or interleaved cut leaves existing year files intact and a copied year file fails the check.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
tax_benefit_models.us.datasets.create_datasets writes each US year file at its final path and stamps it afterwards (#593). Two problems follow.
Interleaved cuts mix one cut's tables with another's stamp. Two processes cutting the same year files in one data folder can interleave:
- P1 saves the tables of
pop_year_2026.h5. - P2 saves its own tables there, then stamps them.
- P1 stamps the file.
The file then holds P2's tables under P1's stamp. Every later ensure_datasets in P1's environment takes the file as current and reuses it. This happens, for example, when two sources share a name (two pop.h5 files) or when two environments with different package versions share a data folder.
A failed cut destroys good year files. When the source changes mid-cut (DatasetMaterializationError), or any later step fails, the year files already at those paths have been overwritten and left unstamped.
The stamp lacks the year. A year file copied or renamed to another year's name passes the check and is taken for that year.
The independent review of #601 found the first two problems for UK year files. #601 fixed them there with policyengine.provenance.year_file_stamp.temporary_year_file / publish_year_file, and added the year to the UK stamp.
Fix
Port #601's approach to the US create path:
- Write each year file, with its tables and renames record, to a hidden temporary file beside its path.
- Re-check the source, then stamp each temporary file and
os.replaceit onto its path. - Remove the temporaries in a
finally. - Record
"year"in the US stamp. This raiseslegacy_inputs.YEAR_FILE_STAMP_REVISIONto 3, andyear_file_stamp_problemtakes the year. - Saved outputs that record a year-file stamp (#594) follow the revision.
- Update docs/microsim.md "Year files", where the "takes no lock" limit changes.
- Lingua principale
- Python
- Stelle
- 8
- Fork
- 10
- Merge medio
- 19h 40m
- PR unite (30g)
- 37
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di PolicyEngine/policyengine.py
-
Raise the simulation cache memory warning to 16 GiBForse già presa @anth-volk l’ha presa 16 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
PolicyEngine/policyengine.py#549 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
PolicyEngine/policyengine.py#473 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
PolicyEngine/policyengine.py#436 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Certify populace-uk as the UK certified defaultForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
PolicyEngine/policyengine.py#408 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 32/100
PolicyEngine/policyengine.py#636 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di PolicyEngine/policyengine.py
Issue simili
-
docs: the dev-setup table and AGENTS.md name the reviewed_by guard that CI's Changelog job runsApertaarea: tools documentation good first issue ready for a contributor
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
eyalgolan/statecraft-israel#873 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Add cover art to song rowsApertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 5 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno