@@ -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
6253def 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