Initial commit

This commit is contained in:
2025-07-04 19:26:39 +02:00
commit c8682d4801
248 changed files with 12519 additions and 0 deletions

View File

@ -0,0 +1,14 @@
import logging
import sys
logger = logging.getLogger("data")
# Configure the main logger for the data package
if not logger.handlers:
handler = logging.StreamHandler(sys.stdout)
formatting = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatting)
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug("Data logger registered.")

View File

@ -0,0 +1,24 @@
import logging
from os.path import getsize
logger = logging.getLogger("data.basemanager")
class BaseManager:
"""Base data file manager."""
def __init__(self, path: str):
self._path = path
logger.info(f"New file manager initialized for file {path}")
def get_info(self) -> dict:
"""Get basic information about the file."""
try:
data = {"size": getsize(self._path)}
return data
except IOError:
logger.error("Could not get file size.")
return {"size": -1}

View File

@ -0,0 +1,28 @@
import csv
import logging
from data.basemanager import BaseManager
logger = logging.getLogger("data.csvmanager")
class CSVManager(BaseManager):
"""Data manager for CSV files."""
def get_info(self) -> dict:
data = super().get_info()
try:
with open(self._path, "r", encoding="utf-8") as file:
reader = csv.reader(file)
for idx, _ in enumerate(reader):
pass
data["rows"] = idx
return data
except IOError:
logger.error("Could not decode CSV, IO error occurred.")
return data
except UnicodeDecodeError:
logger.error("CSV is not encoded in UTF8, skipping.")
return data