A reusable fetch-if-not-cached data-sourcing helper, the mechanism that turns hardcoded paths into data-product handles.
Scope: generalize the one live network fetcher (COVID19_USA:model_input/preprocess/preprocess_nhsn_age5band.py, CDC Socrata paginated fetch) and the skip_if_exists cache into a resolver: given a data-product handle (URL or source plus parser), fetch if not cached locally, transform, and expose a local path. Replaces git-committed artifacts and the manual cache.
Namespace: process (or a shared utility).
DECISION for @pearsonca: cache/artifact-store contract (cache dir, content-hash keys, re-fetch policy).
Depends on: nothing. Blocks: the parameter, calibration, and reporting-regime modules.
Acceptance: the resolver fetches and caches a real dataset (mockable in tests); the cache contract is documented; unit tests with a stubbed source.
Part of #14.
A reusable fetch-if-not-cached data-sourcing helper, the mechanism that turns hardcoded paths into data-product handles.
Scope: generalize the one live network fetcher (
COVID19_USA:model_input/preprocess/preprocess_nhsn_age5band.py, CDC Socrata paginated fetch) and theskip_if_existscache into a resolver: given a data-product handle (URL or source plus parser), fetch if not cached locally, transform, and expose a local path. Replaces git-committed artifacts and the manual cache.Namespace: process (or a shared utility).
DECISION for @pearsonca: cache/artifact-store contract (cache dir, content-hash keys, re-fetch policy).
Depends on: nothing. Blocks: the parameter, calibration, and reporting-regime modules.
Acceptance: the resolver fetches and caches a real dataset (mockable in tests); the cache contract is documented; unit tests with a stubbed source.
Part of #14.