Skip to content

Instantly share code, notes, and snippets.

@misebox
Created August 21, 2019 15:24
Show Gist options
  • Save misebox/0f42f2331e918907d9c8a07e06c6557d to your computer and use it in GitHub Desktop.
Save misebox/0f42f2331e918907d9c8a07e06c6557d to your computer and use it in GitHub Desktop.
A Simple CLI tool foundation
from datetime import datetime
import functools
import logging
import sys
logger = logging.getLogger(__name__)
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
_deep = 0
def stopwatch(fn):
@functools.wraps(fn)
def _inner(*args, **kwargs):
global _deep
t1 = datetime.now()
logger.info(f'[{t1}] {"." * _deep}|+ {fn.__name__} {(args, kwargs) if args or kwargs else ""}')
_deep += 1
ret = fn(*args, **kwargs)
_deep -= 1
t2 = datetime.now()
ms = int((t2 - t1).total_seconds() * 10 ** 3)
logger.info(f'[{t2}] {"." * _deep}|- {fn.__name__} ({ms:,} ms)')
return ret
return _inner
@stopwatch
def main(args):
pass
if __name__ == '__main__':
main(sys.argv[1:])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment