src\wily\__init__.py
-- -- --- --- --- --- --- --- ------- ------- ------- | """
-- -- --- --- --- --- --- --- ------- ------- ------- | 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]