1
0
mirror of https://github.com/gsi-upm/soil synced 2025-07-14 16:52:22 +00:00
soil/soil/utils.py
J. Fernando Sánchez d1006bd55c WIP: exporters
2019-04-29 18:47:15 +02:00

38 lines
1.0 KiB
Python

import logging
import time
import os
from contextlib import contextmanager
logger = logging.getLogger('soil')
logger.setLevel(logging.INFO)
@contextmanager
def timer(name='task', pre="", function=logger.info, to_object=None):
start = time.time()
function('{}Starting {} at {}.'.format(pre, name,
time.strftime("%X", time.gmtime(start))))
yield start
end = time.time()
function('{}Finished {} at {} in {} seconds'.format(pre, name,
time.strftime("%X", time.gmtime(end)),
str(end-start)))
if to_object:
to_object.start = start
to_object.end = end
def safe_open(path, *args, **kwargs):
outdir = os.path.dirname(path)
if outdir and not os.path.exists(outdir):
os.makedirs(outdir)
return open(path, *args, **kwargs)
def open_or_reuse(f, *args, **kwargs):
try:
return safe_open(f, *args, **kwargs)
except TypeError:
return f