cadCAD/utils/engine.py

45 lines
1.2 KiB
Python

from datetime import datetime
flatten = lambda l: [item for sublist in l for item in sublist]
def flatmap(f, items):
return list(map(f, items))
def datetime_range(start, end, delta, dt_format='%Y-%m-%d %H:%M:%S'):
reverse_head = end
[start, end] = [datetime.strptime(x, dt_format) for x in [start, end]]
def _datetime_range(start, end, delta):
current = start
while current < end:
yield current
current += delta
reverse_tail = [dt.strftime(dt_format) for dt in _datetime_range(start, end, delta)]
return reverse_tail + [reverse_head]
def last_index(l):
return len(l)-1
def retrieve_state(l, offset):
return l[last_index(l) + offset + 1]
# def exo_proc_trigger(mech_step, update_f, y):
# if mech_step == 1:
# return update_f
# else:
# return lambda step, sL, s, _input: (y, s[y])
# def apply_exo_proc(s, x, y):
# if s['mech_step'] == 1:
# return x
# else:
# return s[y]
# def es5p2(step, sL, s, _input): # accept timedelta instead of timedelta params
# y = 'timestamp'
# x = ep_time_step(s, s['timestamp'], seconds=1)
# return (y, x)