logging improvements

This commit is contained in:
2025-09-29 20:11:16 +02:00
parent 9b86007e34
commit 5469a01c09
9 changed files with 124 additions and 56 deletions

View File

@@ -15,6 +15,7 @@
## Changelog ## Changelog
<2025-09-29> V0.2.4 - Improved logging and log readability
<2025-09-28> V0.2.3 - Added logging for version file and --filemode path to the decider <2025-09-28> V0.2.3 - Added logging for version file and --filemode path to the decider
<2025-09-28> V0.2.0 - Added librefit for standard functions <2025-09-28> V0.2.0 - Added librefit for standard functions
<2025-09-28> V0.1.0 - Added the creation of multiple numbered directories in a given directory with the pattern default directory_n <2025-09-28> V0.1.0 - Added the creation of multiple numbered directories in a given directory with the pattern default directory_n

10
refit/pyproject.toml Normal file
View File

@@ -0,0 +1,10 @@
[build-system]
requires = ["setuptools>=61.0.0"]
build-backend = "setuptools.build_meta"
[project]
name = "refit"
version = "0.0.1"
[tool.setuptools.packages]
find = { where = ["src"] }

0
refit/src/__init__.py Normal file
View File

View File

@@ -3,9 +3,14 @@ from .refit_logger import logger
def get_standard_name_number(current_number, number_str_length): def get_standard_name_number(current_number, number_str_length):
"""returns a number string filled to the length of the input number""" """returns a number string filled to the length of the input number"""
logger.debug(
f"FUNC: get_standard_name_number() index={current_number} string_length={number_str_length}"
)
current_number = str(current_number) current_number = str(current_number)
standard_name_number = str.zfill(current_number, number_str_length) standard_name_number = str.zfill(current_number, number_str_length)
logger.debug(f"standard_name_number={standard_name_number}") logger.debug(
f"FUNC: get_standard_name_number() return value= '{standard_name_number}'"
)
return standard_name_number return standard_name_number
@@ -14,36 +19,46 @@ def get_standard_folder_name(name):
given name to the argument --name as astring""" given name to the argument --name as astring"""
logger.debug("get_standard_folder_name() call") logger.debug("get_standard_folder_name() call")
if name is None: if name is None:
logger.warning("No name assigned, continue with default.")
standard_folder_name = "directory" standard_folder_name = "directory"
logger.info(
f"No name for folder assigned, continue with default value '{standard_folder_name}'."
)
else: else:
logger.debug(f"{name}, Type: {type(name)}, Length: {len(name)}") logger.debug(
f"FUNC: get_standard_folder_name() Properties of name='{name}': Type: {type(name)}, Length: {len(name)}"
)
# Checks if multiple names are passed to the --name argument # Checks if multiple names are passed to the --name argument
# if so, only the first one gets used. # if so, only the first one gets used.
if len(name) > 1: if len(name) > 1:
_NAMES_WARNING = f"{len(name)} names given, only one required.\nContinuing with '{name[0]}' as name." _NAMES_WARNING = f"{len(name)} names given, only one required.\nContinuing with '{name[0]}' as name."
logger.warning(_NAMES_WARNING) logger.warning("FUNC: get_standard_folder_name()" + _NAMES_WARNING)
print(_NAMES_WARNING) print(_NAMES_WARNING)
standard_folder_name = name[0] standard_folder_name = name[0]
logger.debug(f"{standard_folder_name}, Type: {type(standard_folder_name)}") logger.debug(
f"FUNC: get_standard_folder_name() Properties of folder name '{standard_folder_name}': Type: {type(standard_folder_name)}"
)
else: else:
standard_folder_name = name[0] standard_folder_name = name[0]
logger.debug("Continuing with expected input") logger.debug("Continuing with expected input")
logger.debug("get_standard_folder_name() exit.") logger.debug("FUNC: get_standard_folder_name() exit.")
return standard_folder_name return standard_folder_name
def get_standard_file_name(name): def get_standard_file_name(name):
"""Returns the default file name if none is provided.""" """Returns the default file name if none is provided."""
logger.debug("running get_standard_file_name()") logger.debug(
f"FUNC: get_standard_file_name() MSG: entered function with name='{name}'"
)
if name is None: if name is None:
logger.warning("No name assigned, continue with default")
standard_file_name = "file" standard_file_name = "file"
logger.info(
f"No file name assigned, continue with default value '{standard_file_name}'"
)
else: else:
if len(name) > 1: if len(name) > 1:
_NAMES_WARNING = f"{len(name)} names given, only one required.\nContinuing with '{name[0]}' as name." _NAMES_WARNING = f"{len(name)} names given, only one required.\nContinuing with '{name[0]}' as name."
logger.warning(_NAMES_WARNING) logger.warning(_NAMES_WARNING)
@@ -53,7 +68,9 @@ def get_standard_file_name(name):
logger.debug(f"{standard_file_name}, Type: {type(standard_file_name)}") logger.debug(f"{standard_file_name}, Type: {type(standard_file_name)}")
else: else:
standard_file_name = name[0] standard_file_name = name[0]
logger.debug("Continuing with expected input") logger.debug(
f"FUNC: get_standard_file_name MSG: Continuing with expected input: '{standard_file_name}'"
)
logger.debug("exiting get_standard_file_name()") logger.debug("FUNC get_standard_file_name() MSG: Exit")
return standard_file_name return standard_file_name

View File

@@ -1,9 +1,10 @@
import argparse
import os import os
from .refit_logger import logger from .refit_logger import logger
from . import librefit from . import librefit
logger.debug("Initiated refit_create.py") # logger.debug("Initiated refit_create.py")
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
@@ -29,27 +30,38 @@ class Refit_Create:
"""Checks if the input is valid and returns either True or """Checks if the input is valid and returns either True or
throws an error in log and terminal.""" throws an error in log and terminal."""
logger.debug("in create_input_valid()") logger.debug(f"Start create_input_valid() value= {self.input}")
if self.input is None: if self.input is None:
logger.warning(f"{self.input} cannot be None") logger.warning(f"{self.input} cannot be None")
print("Input argument missing. Use 'refit create -h' for help") print("Input argument missing. Use 'refit create -h' for help")
raise ValueError("Input missing") raise ValueError("Input missing")
return True else:
logger.debug(
f"Exiting create_input_valid() with valid input. value= {self.input}"
)
return True
def create_n_folders(self, n, input, name): def create_n_folders(self, n, input, name):
"""Creates an set ammount of folders. Using the default directory """Creates an set ammount of folders. Using the default directory
name if no other is provided.""" name if no other is provided."""
logger.debug("in create_n_folders()") logger.debug(f"FUNC: create_n_folders() ARGS: n={n} input={input} name={name}")
# Creating the length of the suffix number_string. # Creating the length of the suffix number_string.
length_n = len(str(n)) length_n = len(str(n))
logger.debug(
f"FUNC: create_n_folders() MSG: Length of numbering string added to the name:{length_n}"
)
# Get either the default folder name or the input name as string. # Get either the default folder name or the input name as string.
logger.debug(
f"FUNC: create_n_folders() MSG: Type of name value: {type(name)} name={name}"
)
folder_name = librefit.get_standard_folder_name(name) folder_name = librefit.get_standard_folder_name(name)
logger.debug(f"Length of numbering string:{length_n}") logger.debug(
logger.debug(f"Folder name: {folder_name}") f"FUNC: create_n_folders() MSG: Folder name: {folder_name} post get_standard_folder_name() call"
)
while n > 0: while n > 0:
# iterating down for the files number. # iterating down for the files number.
@@ -60,26 +72,25 @@ class Refit_Create:
# Creating path for the folder # Creating path for the folder
temp_name = f"{folder_name}_{number_string}" temp_name = f"{folder_name}_{number_string}"
logger.debug(f"temp_name= {temp_name}")
folder_creation_path = os.path.join(input, temp_name) folder_creation_path = os.path.join(input, temp_name)
logger.debug(f"Created: {folder_creation_path}")
# Creating folder and subtracting n by one for the number_string # Creating folder and subtracting n by one for the number_string
os.mkdir(folder_creation_path) os.mkdir(folder_creation_path)
n -= 1 n -= 1
def rf_create_decider(self): def rf_create_decider(self):
"""Coordination of the 'create' sub command""" """Coordination of the 'create' sub command"""
logger.debug("FUNC: rf_create_decider() MSG: Entered decider function")
if self.create_input_valid(): if self.create_input_valid():
logger.debug("valid input -> continue") logger.debug(f"Valid input. value={self.input}")
if self.filemode: if self.filemode:
logger.debug("filemode active") logger.debug("DECISION if filemode")
else: else:
logger.debug(
f"DIR-MODE | ARGS: n={self.n} input={self.input} name={self.name}"
)
self.create_n_folders(self.n, self.input, self.name) self.create_n_folders(self.n, self.input, self.name)
logger.debug(
"End of run---------------------------------------------------------"
)
def __call__(self): def __call__(self):
"""Gets called when the object is treated as an function""" """Gets called when the object is treated as an function"""

View File

@@ -1,16 +0,0 @@
import librefit
def test_get_default_file_name():
"""Tests if the function returns the correct value"""
default_name = librefit.get_standard_file_name()
assert "file" in default_name
def test_get_default_folder_name():
"""Test if the default directory name gets returned"""
default_name = librefit.get_standard_folder_name()
assert "directory" in default_name
def test_get_standard_name_number():
"""Tests if the number function returns the correctly formatted string."""
name_number = librefit.get_standard_name_number(20,3)
assert "020" in name_number

View File

@@ -11,29 +11,30 @@ CONFIG_FILE = "version.cfg"
def read_version_config(): def read_version_config():
logger.debug(f"Start read_version_config() with config file: {CONFIG_FILE}")
config = configparser.ConfigParser() config = configparser.ConfigParser()
logger.debug("reading config file")
config.read(CONFIG_FILE) config.read(CONFIG_FILE)
logger.debug("config file read")
if not os.path.exists(CONFIG_FILE): if not os.path.exists(CONFIG_FILE):
logger.error("Could not find path") logger.error(
return "" f"Func: read_version_config() MSG: Could not find config file '{CONFIG_FILE}'"
)
return "x.x.x"
if "VERSION" not in config: if "VERSION" not in config:
logger.error("Could not find VERSION in config file") logger.error(f"Could not find VERSION-variable in config file '{CONFIG_FILE}'")
return "" return "x.x.x"
try: try:
v = config["VERSION"] v = config["VERSION"]
major = v.get("major", "0") major = v.get("major", "0")
minor = v.get("minor", "0") minor = v.get("minor", "0")
patch = v.get("patch", "0") patch = v.get("patch", "0")
logger.debug(f"output: {major}.{minor}.{patch}") logger.debug(f"Config file read successfully. Version: {major}.{minor}.{patch}")
return f"{major}.{minor}.{patch}" return f"{major}.{minor}.{patch}"
except Exception: except Exception:
logger.warning("Couldnt read version") logger.warning("Couldn not read version from config file")
return "" return "x.x.x"
REFIT_VERSION = f"Refit Beta {read_version_config()}" REFIT_VERSION = f"Refit Beta {read_version_config()}"
@@ -78,11 +79,11 @@ args = parser.parse_args()
# Dispatcher # Dispatcher
# determines what code gets addressed based of the users choosen flags. # determines what code gets addressed based of the users choosen flags.
if hasattr(args, "command_class"): if hasattr(args, "command_class"):
logger.debug("In hasattr()") logger.debug(f"In dispatcher with args: {args}")
Refit_Create = args.command_class Refit_Create = args.command_class
create_command_instance = Refit_Create(args) create_command_instance = Refit_Create(args)
create_command_instance() create_command_instance()
else: else:
parser.print_help() parser.print_help()
logger.info("No input, exiting with error:1") logger.info("No input, exiting with exit code: 1")
sys.exit(1) sys.exit(1)

View File

@@ -1,5 +1,5 @@
[VERSION] [VERSION]
major = 0 major = 0
minor = 2 minor = 2
patch = 3 patch = 4

44
refit/test_librefit.py Normal file
View File

@@ -0,0 +1,44 @@
from src.modules.librefit import (
get_standard_folder_name,
get_standard_name_number,
get_standard_file_name,
)
def test_get_default_file_name():
"""Tests if the function returns the correct value"""
default_name = get_standard_file_name(None)
assert "file" in default_name
def test_get_default_folder_name():
"""Test if the default directory name gets returned"""
default_name = get_standard_folder_name(None)
assert "directory" in default_name
def test_get_standard_name_number():
"""Tests if the number function returns the correctly formatted string."""
name_number = get_standard_name_number(20, 3)
assert "020" in name_number
def test_get_filename():
"""Tests if a passed filename is returned properly"""
filename = get_standard_file_name(["testname"])
assert "testname" in filename
def test_get_folder_name():
"""Tests if the function returns the passed folder name correctly"""
folder_name = ["folder"]
return_folder_name = get_standard_folder_name(folder_name)
assert "folder" in return_folder_name
def test_folder_name_list():
"""The function is supposed to only return the first name of the
passed list"""
folder_names = ["folder1", "folder2", "folder3"]
return_folder_name = get_standard_folder_name(folder_names)
assert "folder1" in return_folder_name