Coverage for / opt / hostedtoolcache / Python / 3.12.13 / x64 / lib / python3.12 / site-packages / fcp7xml_to_unreal / __init__.py: 82%
33 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-17 22:47 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-17 22:47 +0000
1"""Process editorial XML from Adobe Premiere for import into Unreal Engine."""
3import importlib.metadata
4import logging
5import os
6import sys
8import yaml
10__version__ = importlib.metadata.version(__package__)
12config = {}
15def setup_logger(log_level: str = "INFO") -> logging.Logger:
16 """
17 Configure and return a logger instance.
18 """
19 logger = logging.getLogger(__name__)
20 logger.setLevel(log_level)
22 # Create console handler
23 console_handler = logging.StreamHandler(sys.stdout)
24 console_handler.setLevel(log_level)
26 if log_level == "DEBUG":
27 # Create detailed formatter for debug log messages
28 formatter = logging.Formatter(
29 fmt="%(asctime)s [%(levelname)s] %(name)s: %(filename)s:%(lineno)d - %(message)s",
30 datefmt="%Y-%m-%d %H:%M:%S",
31 )
32 elif log_level == "ERROR":
33 # Create formatter for error log messages
34 formatter = logging.Formatter(
35 fmt="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
36 datefmt="%Y-%m-%d %H:%M:%S",
37 )
38 else:
39 # Default to simple formatter for info and warning log messages
40 formatter = logging.Formatter(
41 fmt="%(asctime)s [%(levelname)s] - %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
42 )
43 console_handler.setFormatter(formatter)
45 # Avoid adding multiple handlers if logger already configured
46 if not logger.handlers:
47 logger.addHandler(console_handler)
49 return logger
52log_level = os.getenv("LOGLEVEL", "INFO").upper()
54logger = setup_logger(log_level=log_level)
56with open(os.path.join(os.path.dirname(__file__), "config.yaml")) as file:
57 internal_config = yaml.safe_load(file)
58 logger.info("using internal config.yaml.")
59 config = internal_config
61# optional local config, when found in current directory
62if os.path.isfile("config.yaml"):
63 with open("config.yaml") as local_file:
64 logger.info("using additional local config.yaml.")
65 local_config = yaml.safe_load(local_file)
66 config = internal_config | local_config
68logger.debug(f"using config: {config}")