There is probably a cleaner OOP way to track these datasets.
A Dataset should include fields like first available time, last available time, known missing dates, spatial domain, time zone, etc. It should also have methods that specify the path for a given snapshot (relative to a "data path" environment variable), download the data from source, etc.
We can think about whether different variables from the same dataset should just be treated as different datasets, or whether we should have a Dataset and Variable class.
There is probably a cleaner OOP way to track these datasets.
Lots of other design questions to think about