Skip to content

main

main(config_file_path)

Load config, setup logger, initialise GPS_Generator class and run it

Parameters:

Name Type Description Default
config_file_path str

Relative path to config file spceified as the second parameter in terminal command

required
Source code in gps_synth/main.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def main(config_file_path: str) -> None:
    """
    Load config, setup logger, initialise GPS_Generator class and run it

    Args:
        config_file_path (str): Relative path to config file spceified as the second parameter in terminal command
    """

    base_dir = os.getcwd()

    with open(str(config_file_path), "r", encoding="utf-8") as f_in:
        config = yaml.safe_load(f_in)

    set_up_logger(config, base_dir)

    logger = logging.getLogger(__name__)

    logger.info("Run main.py")

    GPS_GENERATOR = class_getter(
        config["INIT"]["GPS_GENERATOR_PATH"], config["INIT"]["GPS_GENERATOR_CLASS"]
    )

    GPS_GENERATOR = GPS_GENERATOR(config, base_dir)

    GPS_GENERATOR.run()

set_up_logger(config, base_dir)

The function creates a log_dir folder (by appending sub-path to the base/parent path) to store logs and sets up a logger

Parameters:

Name Type Description Default
config Any

YAML object with all specified config params

required
base_dir str

The string path to GPS_Generator folder

required
Source code in gps_synth/main.py
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
def set_up_logger(config: Any, base_dir: str) -> None:
    """
    The function creates a log_dir folder (by appending sub-path to the base/parent path) to store logs
    and sets up a logger

    Args:
        config (Any): YAML object with all specified config params
        base_dir (str): The string path to GPS_Generator folder
    """

    log_dir = os.path.join(base_dir, config["LOGGING"]["LOG_DIR"])
    check_or_create_dir(log_dir)

    log_file_path = os.path.join(
        log_dir, f"{datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S')}.log"
    )
    logging.getLogger(__name__)
    logging.basicConfig(
        format=config["LOGGING"]["FORMAT"],
        handlers=[logging.FileHandler(log_file_path, "w"), logging.StreamHandler()],
        datefmt=config["LOGGING"]["DATEFMT"],
        level=config["LOGGING"]["LEVEL"],
    )