2023-04-15 15:17:33 +00:00
|
|
|
import gc
|
2024-06-03 13:04:47 +00:00
|
|
|
import logging
|
2023-10-12 17:24:35 +00:00
|
|
|
import sys
|
2024-02-28 13:27:35 +00:00
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
from rich.console import Console
|
2024-06-03 13:04:47 +00:00
|
|
|
from rich.logging import RichHandler
|
2023-04-15 15:17:33 +00:00
|
|
|
|
2023-09-10 14:27:09 +00:00
|
|
|
from .utils.config import logging_settings, main_settings, read_config
|
2024-06-03 13:04:47 +00:00
|
|
|
from .utils.shared import DEBUG, DEBUG_LOGGING
|
2024-01-22 08:36:14 +00:00
|
|
|
|
2023-09-10 14:27:09 +00:00
|
|
|
read_config()
|
2024-02-28 13:27:35 +00:00
|
|
|
|
2024-04-09 08:32:17 +00:00
|
|
|
console: Console = Console()
|
2024-02-28 13:27:35 +00:00
|
|
|
def init_logging():
|
|
|
|
log_file = main_settings['log_file']
|
|
|
|
|
|
|
|
if log_file.is_file():
|
|
|
|
last_log_file = Path(log_file.parent, "prev." + log_file.name)
|
|
|
|
|
|
|
|
with log_file.open("r", encoding="utf-8") as current_file:
|
|
|
|
with last_log_file.open("w", encoding="utf-8") as last_file:
|
|
|
|
last_file.write(current_file.read())
|
|
|
|
|
|
|
|
rich_handler = RichHandler(rich_tracebacks=True, console=console)
|
|
|
|
rich_handler.setLevel(logging_settings['log_level'] if not DEBUG_LOGGING else logging.DEBUG)
|
|
|
|
|
|
|
|
file_handler = logging.FileHandler(log_file)
|
|
|
|
file_handler.setLevel(logging.DEBUG)
|
|
|
|
|
|
|
|
# configure logger default
|
|
|
|
logging.basicConfig(
|
|
|
|
level=logging.DEBUG,
|
|
|
|
format=logging_settings['logging_format'],
|
|
|
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
|
|
handlers=[
|
|
|
|
file_handler,
|
|
|
|
rich_handler,
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
init_logging()
|
|
|
|
|
2023-06-20 15:07:32 +00:00
|
|
|
from . import cli
|
2023-04-18 07:02:03 +00:00
|
|
|
|
2024-01-16 10:09:01 +00:00
|
|
|
if DEBUG:
|
2024-04-17 15:24:51 +00:00
|
|
|
sys.setrecursionlimit(300)
|
2023-09-10 14:27:09 +00:00
|
|
|
|
2024-01-16 09:37:22 +00:00
|
|
|
|
2023-09-10 14:27:09 +00:00
|
|
|
if main_settings['modify_gc']:
|
2023-04-04 20:07:56 +00:00
|
|
|
"""
|
|
|
|
At the start I modify the garbage collector to run a bit fewer times.
|
|
|
|
This should increase speed:
|
|
|
|
https://mkennedy.codes/posts/python-gc-settings-change-this-and-make-your-app-go-20pc-faster/
|
|
|
|
"""
|
|
|
|
# Clean up what might be garbage so far.
|
|
|
|
gc.collect(2)
|
|
|
|
|
|
|
|
allocs, gen1, gen2 = gc.get_threshold()
|
|
|
|
allocs = 50_000 # Start the GC sequence every 50K not 700 allocations.
|
|
|
|
gen1 = gen1 * 2
|
|
|
|
gen2 = gen2 * 2
|
|
|
|
gc.set_threshold(allocs, gen1, gen2)
|
2024-02-28 13:27:35 +00:00
|
|
|
|
|
|
|
|