Coverage for kiirastuli/__init__.py: 93.02%
39 statements
« prev ^ index » next coverage.py v7.0.1, created at 2023-01-02 20:15 +0100
« prev ^ index » next coverage.py v7.0.1, created at 2023-01-02 20:15 +0100
1"""Purgatory (Finnish: kiirastuli) - purge like hell to stay out of trouble."""
2import datetime as dti
3import logging
4import os
5import pathlib
6from typing import List, no_type_check
8# [[[fill git_describe()]]]
9__version__ = '2022.10.23+parent.d04133d9'
10# [[[end]]] (checksum: 18fdfd17580575137d602b77a9411178)
11__version_info__ = tuple(
12 e if '-' not in e else e.split('-')[0] for part in __version__.split('+') for e in part.split('.') if e != 'parent'
13)
15APP_NAME = 'Purgatory (Finnish: kiirastuli) - purge like hell to stay out of trouble.'
16APP_ALIAS = 'kiirastuli'
17APP_ENV = 'KIIRASTULI'
18COMMA = ','
19DEBUG = bool(os.getenv(f'{APP_ENV}_DEBUG', ''))
20VERBOSE = bool(os.getenv(f'{APP_ENV}_VERBOSE', ''))
21QUIET = False
22STRICT = bool(os.getenv(f'{APP_ENV}_STRICT', ''))
23ENCODING = 'utf-8'
24ENCODING_ERRORS_POLICY = 'ignore'
25DEFAULT_CONFIG_NAME = '.kiirastuli.json'
26DEFAULT_LF_ONLY = 'YES'
27log = logging.getLogger() # Module level logger is sufficient
28LOG_FOLDER = pathlib.Path('logs')
29LOG_FILE = f'{APP_ALIAS}.log'
30LOG_PATH = pathlib.Path(LOG_FOLDER, LOG_FILE) if LOG_FOLDER.is_dir() else pathlib.Path(LOG_FILE)
31LOG_LEVEL = logging.INFO
33TS_FORMAT_LOG = '%Y-%m-%dT%H:%M:%S'
34TS_FORMAT_PAYLOADS = '%Y-%m-%d %H:%M:%S.%f UTC'
36__all__: List[str] = [
37 'APP_ALIAS',
38 'APP_NAME',
39 'COMMA',
40 'DEBUG',
41 'log',
42 'parse_csl',
43]
46def parse_csl(csl: str) -> List[str]:
47 """DRY."""
48 return [fmt.strip().lower() for fmt in csl.split(COMMA) if fmt.strip()]
51@no_type_check
52def formatTime_RFC3339(self, record, datefmt=None): # noqa
53 """HACK A DID ACK we could inject .astimezone() to localize ..."""
54 return dti.datetime.fromtimestamp(record.created, dti.timezone.utc).isoformat() # pragma: no cover
57@no_type_check
58def init_logger(name=None, level=None):
59 """Initialize module level logger"""
60 global log # pylint: disable=global-statement
62 log_format = {
63 'format': '%(asctime)s %(levelname)s [%(name)s]: %(message)s',
64 'datefmt': TS_FORMAT_LOG,
65 # 'filename': LOG_PATH,
66 'level': LOG_LEVEL if level is None else level,
67 }
68 logging.Formatter.formatTime = formatTime_RFC3339
69 logging.basicConfig(**log_format)
70 log = logging.getLogger(APP_ENV if name is None else name)
71 log.propagate = True
74init_logger(name=APP_ENV, level=logging.DEBUG if DEBUG else None)