-- -- --- --- --- --- --- --- ------- ------- ------- |
"""
-- -- --- --- --- --- --- --- ------- ------- ------- |
A Python application for tracking, reporting on timing and complexity in tests and applications.
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
B BB*
-- -- --- --- --- --- --- --- ------- ------- ------- |
BBBB BBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
BBBBBB%$%*SBBB&
-- -- --- --- --- --- --- --- ------- ------- ------- |
BBBBS&@$@$SBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
BBS@$$$$@@$#BBB. .
-- -- --- --- --- --- --- --- ------- ------- ------- |
BB&$$@@@@@@$$@#! !..
-- -- --- --- --- --- --- --- ------- ------- ------- |
B&$*$@@@*.@@@$$@&&@&$ BB
-- -- --- --- --- --- --- --- ------- ------- ------- |
%$$!$@$@$$@@@@@@@@@$$B SBBBBS###B
-- -- --- --- --- --- --- --- ------- ------- ------- |
%$@@$$$$@@$$$@&$@@@$$ SBBBBBBBBSSSSSB
-- -- --- --- --- --- --- --- ------- ------- ------- |
%$@#BBBBBBS&&@@@@@$$$%#BBBBBBBBBBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
*@BBBBBBBBBBBBS@$@@@@@@@%SBBBBBBBBBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
@$$@BBBBBBBBBBB#@$@@@@@@@@$#BBBBBBBBBB BBBBBBBBBBB BBB BBBBBBBBBBBB BBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
@$$$SBBBBSSS&! *@@@@@@@@@$$#BBBBB# BBBBBBBBBBB BBB BBBBBBBBBBBB BBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
@$@$$@&&$@&%S $@@@@@@@@@@@$$# BBBBBB BBBBB BBB BBBB BBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
@$$$$$$$$&BBB. $#&&@@@@@@@@@$ BBBBB BBBBBBB BBB BB BBBBB BBB BBB BB BB
-- -- --- --- --- --- --- --- ------- ------- ------- |
%%$$@@$$@@*!@@*!*$@@@@@$$* BBBBB BBBBBBB BBB BBBBBB BBBBB BBBBBBBBB BBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
$$$$$$$@&* .$@@@$$ BBBBB BBB BBBBB BBB BBBBBB BBBBB BBBBB BBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
%$$@@ $@@$$ BBBBB BBB BBBBB BBB BBBB BBBBB BBBBB BBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
$$@* @@$$ BBBBB BB BBBBBBBB BBBB BBBBB BBBBB BBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
%@$ %@@$% BBBBBBB BBBBBB BBBB BBBBB BBBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
@! %@@$$@$$$$$$$$ BBBBB BBBBBB BBBB BBBBB BBBBBB BBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
$@! !@@@@@@@@@@@@@@$$$$$$ BBBBB BBBB BBBBBBBB BBBBBBBBB BBBBB BBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
$$@@*. !$&@@@@@@@@@@@@@@@@@@@@@@S BBB BBB BBBBBBBB BBBBBBBBB BBBB BBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
$$@@@@@@@&@@@@@@@@@@@@@@@@@@&&&&@!!$@ BBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
*$$@@@@@@@@@@@@@@@@@@@@@@@@@@@$ .*@! % BBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
@$$@@@@@@@$*@@@@@@@@$$$@@@@@@@&&% . . BB BBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
%$@@$$@@@% $@@@$$$$$$$@@@@@$*%@@* BBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
$$$$$@@$ $@@#BBBBBB@@@&&@%!......... BBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
*&SBBBBBB $BBBBBBB#@&@$$$%%*!........
-- -- --- --- --- --- --- --- ------- ------- ------- |
BBBBBBBB* #BBBBBBB*
-- -- --- --- --- --- --- --- ------- ------- ------- |
BBBBBBBB BBBBBBBB
-- -- --- --- --- --- --- --- ------- ------- ------- |
%$%%BBBBBBS%$$$$$$$$%&BBBBBBS@$$$$$%%$$$$$$%$$$&B*%
-- -- --- --- --- --- --- --- ------- ------- ------- |
%%$%$&&S#&$$@@@@@@@@@$$@&&&@$@@@@@@@@@@@@@@@@$$%%$$
-- -- --- --- --- --- --- --- ------- ------- ------- |
.%%$$$$%%%$%%%%***%%%%%$%%$$$$$%%$%*&
-- -- --- --- --- --- --- --- ------- ------- ------- |
"""
-- -- --- --- --- --- --- --- ------- ------- ------- |
import datetime
-- -- --- --- --- --- --- --- ------- ------- ------- |
import logging
-- -- --- --- --- --- --- --- ------- ------- ------- |
import tempfile
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
import colorlog
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
__version__ = "1.24.2"
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
_, WILY_LOG_NAME = tempfile.mkstemp(suffix="wily_log")
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
_handler = colorlog.StreamHandler()
-- -- --- --- --- --- --- --- ------- ------- ------- |
_handler.setFormatter(colorlog.ColoredFormatter("%(log_color)s%(message)s"))
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
_filehandler = logging.FileHandler(WILY_LOG_NAME, mode="w+")
-- -- --- --- --- --- --- --- ------- ------- ------- |
_filehandler.setLevel(logging.DEBUG)
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
logger = colorlog.getLogger(__name__)
-- -- --- --- --- --- --- --- ------- ------- ------- |
logger.addHandler(_handler)
-- -- --- --- --- --- --- --- ------- ------- ------- |
logger.addHandler(_filehandler)
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
""" Max number of characters of the Git commit to print """
-- -- --- --- --- --- --- --- ------- ------- ------- |
MAX_MESSAGE_WIDTH = 50
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
def format_date(timestamp: float) -> str:
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
"""Reusable timestamp -> date."""
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
return datetime.date.fromtimestamp(timestamp).isoformat()
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
def format_datetime(timestamp: float) -> str:
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
"""Reusable timestamp -> datetime."""
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
return datetime.datetime.fromtimestamp(timestamp).isoformat()
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- -- --- --- --- --- --- --- ------- ------- ------- |
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
def format_revision(sha: str) -> str:
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
"""Return a shorter git sha."""
-- 01 000 000 000 000 000 000 0000.00 0000.00 0000.00 |
return sha[:7]