weitersager.util   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Test Coverage

Coverage 50%

Importance

Changes 0
Metric Value
wmc 2
eloc 15
dl 0
loc 39
ccs 7
cts 14
cp 0.5
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A configure_logging() 0 15 1
A start_thread() 0 4 1
1
"""
2
weitersager.util
3
~~~~~~~~~~~~~~~~
4
5
Utilities
6
7
:Copyright: 2007-2025 Jochen Kupperschmidt
8
:License: MIT, see LICENSE for details.
9
"""
10
11 1
from __future__ import annotations
12 1
import logging
13 1
from logging import Formatter, StreamHandler
14 1
from threading import Thread
15 1
from typing import Callable
16
17
18 1
def configure_logging(level: str) -> None:
19
    """Configure application-specific loggers.
20
21
    Setting the log level does not affect dependencies' loggers.
22
    """
23
    # Get the parent logger of all application-specific
24
    # loggers defined in the package's modules.
25
    pkg_logger = logging.getLogger(__package__)
26
27
    # Configure handler that writes to STDERR.
28
    handler = StreamHandler()
29
    handler.setFormatter(Formatter('%(asctime)s %(levelname)-8s %(message)s'))
30
    pkg_logger.addHandler(handler)
31
32
    pkg_logger.setLevel(level)
33
34
35 1
def start_thread(target: Callable, name: str | None = None) -> None:
36
    """Create, configure, and start a new thread."""
37
    t = Thread(target=target, name=name, daemon=True)
38
    t.start()
39