|
1 | 1 | import argparse |
2 | 2 | import calendar |
3 | | -import datetime |
| 3 | +from datetime import datetime, timedelta |
4 | 4 | import itertools |
5 | 5 | import json |
6 | 6 | import logging |
7 | 7 | import os |
8 | | -import sys |
9 | 8 | import time |
10 | 9 |
|
11 | 10 | import ee |
@@ -34,7 +33,7 @@ def arg_valid_date(input_date): |
34 | 33 |
|
35 | 34 | """ |
36 | 35 | try: |
37 | | - return datetime.datetime.strptime(input_date, '%Y-%m-%d') |
| 36 | + return datetime.strptime(input_date, '%Y-%m-%d') |
38 | 37 | except ValueError: |
39 | 38 | msg = f'Not a valid date: "{input_date}".' |
40 | 39 | raise argparse.ArgumentTypeError(msg) |
@@ -95,7 +94,7 @@ def date_range(start_dt, end_dt, days=1, skip_leap_days=False): |
95 | 94 | while curr_dt <= end_dt: |
96 | 95 | if not skip_leap_days or curr_dt.month != 2 or curr_dt.day != 29: |
97 | 96 | yield curr_dt |
98 | | - curr_dt += datetime.timedelta(days=days) |
| 97 | + curr_dt += timedelta(days=days) |
99 | 98 |
|
100 | 99 |
|
101 | 100 | def delay_task(delay_time=0, max_ready=-1): |
@@ -187,7 +186,8 @@ def get_ee_assets(asset_id, start_dt=None, end_dt=None, retries=6): |
187 | 186 | raise Exception('\nThe collection or folder does not exist, exiting') |
188 | 187 | except Exception as e: |
189 | 188 | logging.warning( |
190 | | - f' Error getting asset list, retrying ({i}/{retries})\n {e}') |
| 189 | + f' Error getting asset list, retrying ({i}/{retries})\n {e}' |
| 190 | + ) |
191 | 191 | time.sleep((i+1) ** 2) |
192 | 192 |
|
193 | 193 | if asset_id_list is None: |
@@ -224,17 +224,20 @@ def get_ee_tasks(states=['RUNNING', 'READY'], verbose=False, retries=6): |
224 | 224 | break |
225 | 225 | except Exception as e: |
226 | 226 | logging.warning( |
227 | | - f' Error getting task list, retrying ({i}/{retries})\n {e}') |
| 227 | + f' Error getting task list, retrying ({i}/{retries})\n {e}' |
| 228 | + ) |
228 | 229 | time.sleep((i+1) ** 2) |
229 | 230 | if task_list is None: |
230 | 231 | raise Exception('\nUnable to retrieve task list, exiting') |
231 | 232 |
|
232 | 233 | task_list = sorted( |
233 | 234 | [task for task in task_list if task['state'] in states], |
234 | | - key=lambda t: (t['state'], t['description'], t['id'])) |
| 235 | + key=lambda t: (t['state'], t['description'], t['id']) |
| 236 | + ) |
235 | 237 | # task_list = sorted([ |
236 | 238 | # [t['state'], t['description'], t['id']] for t in task_list |
237 | | - # if t['state'] in states]) |
| 239 | + # if t['state'] in states |
| 240 | + # ]) |
238 | 241 |
|
239 | 242 | # Convert the task list to a dictionary with the task name as the key |
240 | 243 | return {task['description']: task for task in task_list} |
@@ -263,18 +266,16 @@ def print_ee_tasks(tasks): |
263 | 266 |
|
264 | 267 | for desc, task in tasks.items(): |
265 | 268 | if task['state'] == 'RUNNING': |
266 | | - start_dt = datetime.datetime.utcfromtimestamp( |
267 | | - task['start_timestamp_ms'] / 1000) |
268 | | - update_dt = datetime.datetime.utcfromtimestamp( |
269 | | - task['update_timestamp_ms'] / 1000) |
| 269 | + start_dt = datetime.utcfromtimestamp(task['start_timestamp_ms'] / 1000) |
| 270 | + update_dt = datetime.utcfromtimestamp(task['update_timestamp_ms'] / 1000) |
270 | 271 | logging.debug(' {:8s} {} {:0.2f} {}'.format( |
271 | 272 | task['state'], task['description'], |
272 | 273 | (update_dt - start_dt).total_seconds() / 3600, |
273 | | - task['id'])) |
| 274 | + task['id']) |
| 275 | + ) |
274 | 276 | # elif task['state'] in states: |
275 | 277 | else: |
276 | | - logging.debug(' {:8s} {}'.format( |
277 | | - task['state'], task['description'])) |
| 278 | + logging.debug(' {:8s} {}'.format(task['state'], task['description'])) |
278 | 279 |
|
279 | 280 | logging.debug(f' Tasks: {len(tasks)}\n') |
280 | 281 |
|
@@ -337,7 +338,6 @@ def get_info(ee_obj, max_retries=4): |
337 | 338 |
|
338 | 339 | def ee_task_start(task, n=6): |
339 | 340 | """Make an exponential backoff Earth Engine request""" |
340 | | - output = None |
341 | 341 | for i in range(1, n): |
342 | 342 | try: |
343 | 343 | task.start() |
@@ -543,8 +543,7 @@ def point_coll_value(coll, xy, scale=1): |
543 | 543 | col_dict[k] = i + 4 |
544 | 544 | info_dict[k] = {} |
545 | 545 | for row in output[1:]: |
546 | | - date = datetime.datetime.utcfromtimestamp(row[3] / 1000.0).strftime( |
547 | | - '%Y-%m-%d') |
| 546 | + date = datetime.utcfromtimestamp(row[3] / 1000.0).strftime('%Y-%m-%d') |
548 | 547 | for k, v in col_dict.items(): |
549 | 548 | info_dict[k][date] = row[col_dict[k]] |
550 | 549 | return info_dict |
|
0 commit comments