Skip to content

Commit d209a9c

Browse files
nmdefriesaysim319
authored andcommitted
don't modify num_export_days; define start/end date in terms of it and lag
1 parent 5532aac commit d209a9c

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

google_symptoms/delphi_google_symptoms/date_utils.py

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,37 +27,28 @@ def generate_patch_dates(params: Dict) -> Dict[date, Tuple[date]]:
2727
"""
2828
issue_date = datetime.strptime(params["patch"]["start_issue"], "%Y-%m-%d")
2929
end_date = datetime.strptime(params["patch"]["end_issue"], "%Y-%m-%d")
30-
num_export_days = _generate_num_export_days(params)
30+
num_export_days = params["validation"]["common"].get("span_length", 14)
3131

3232
patch_dates = dict()
3333
while issue_date <= end_date:
34-
# negate the subtraction done within generate_query_dates
35-
expected_start_dt = issue_date - timedelta(days=num_export_days - PAD_DAYS + 1)
36-
daterange = generate_query_dates(expected_start_dt, issue_date, num_export_days, True)
37-
patch_dates[issue_date] = tuple(daterange)
38-
issue_date += timedelta(days=1)
39-
return patch_dates
34+
global_max_expected_lag = get_max_lag(params)
35+
export_end_date = issue_date - timedelta(days=global_max_expected_lag + 1)
36+
export_start_date = issue_date - timedelta(days=num_export_days + global_max_expected_lag + 1)
4037

38+
patch_dates[issue_date] = {
39+
"export_start_date": export_start_date,
40+
"export_end_date": export_end_date,
41+
"num_export_days": num_export_days,
42+
}
4143

42-
def _generate_num_export_days(params: Dict) -> int:
43-
"""
44-
Generate dates for exporting with possible lag.
44+
issue_date += timedelta(days=1)
4545

46-
Parameters
47-
----------
48-
params: dictionary parsed from params.json
46+
return patch_dates
4947

50-
Returns
51-
-------
52-
number of export days
53-
"""
54-
# Calculate number of days based on what's missing from the API and
55-
# what the validator expects.
48+
def get_max_lag(params: Dict) -> int:
49+
"""Determine reporting lag for data source"""
5650
max_expected_lag = lag_converter(params["validation"]["common"].get("max_expected_lag", {"all": 4}))
57-
global_max_expected_lag = max(list(max_expected_lag.values()))
58-
num_export_days = params["validation"]["common"].get("span_length", 14) + global_max_expected_lag
59-
return num_export_days
60-
51+
return max(list(max_expected_lag.values()))
6152

6253
def generate_num_export_days(params: Dict, logger) -> [int]:
6354
"""
@@ -98,7 +89,8 @@ def generate_num_export_days(params: Dict, logger) -> [int]:
9889
num_export_days = (export_end_date - FULL_BKFILL_START_DATE).days + 1
9990
else:
10091
latest_date_diff = (datetime.today() - to_datetime(min(gs_metadata.max_time))).days + 1
101-
expected_date_diff = _generate_num_export_days(params)
92+
global_max_expected_lag = get_max_lag(params)
93+
expected_date_diff = params["validation"]["common"].get("span_length", 14) + global_max_expected_lag
10294

10395
if latest_date_diff > expected_date_diff:
10496
logger.info(f"Missing dates from: {to_datetime(min(gs_metadata.max_time)).date()}")
@@ -138,3 +130,4 @@ def generate_query_dates(
138130
retrieve_dates = [start_date - timedelta(days=PAD_DAYS - 1), export_end_date]
139131

140132
return retrieve_dates
133+

0 commit comments

Comments
 (0)