Skip to content

Commit 83c05e8

Browse files
committed
Change the naming for the log files to use the report type and name. Also, move the assert_enum_value function to the utils.py file to validate enums in the metadata_manager.py and main files.
1 parent 41e1e07 commit 83c05e8

File tree

4 files changed

+111
-99
lines changed

4 files changed

+111
-99
lines changed

report/helpers/utils.py

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
import sys
33
from datetime import datetime
44
import logging
5+
from enum import StrEnum
6+
from typing import Type
57

68
## CHECKS
79
def assert_path(filepath: str):
@@ -17,12 +19,42 @@ def assert_path(filepath: str):
1719
- raises assertion error if filepath is not a string or doesn't exist
1820
"""
1921

20-
assert isinstance(filepath, str), f"filepath must be a string: {filepath}"
22+
assert isinstance(filepath, str), f"Filepath must be a string: {filepath}"
2123
assert os.path.exists(
2224
os.path.abspath(filepath)
23-
), f"filepath does not exist: {os.path.abspath(filepath)}"
25+
), f"Filepath does not exist: {os.path.abspath(filepath)}"
2426

2527

28+
def assert_enum_value(enum_class: Type[StrEnum], value: str, logger: logging.Logger) -> StrEnum:
29+
"""
30+
Validate that the given value is a valid member of the specified enumeration class.
31+
32+
Parameters
33+
----------
34+
enum_class : Type[StrEnum]
35+
The enumeration class to validate against.
36+
value : str
37+
The value to be validated.
38+
logger : logging.Logger
39+
A logger object to track warnings, errors, and info messages.
40+
41+
Returns
42+
-------
43+
StrEnum
44+
The corresponding member of the enumeration if valid.
45+
46+
Raises
47+
------
48+
ValueError
49+
If the value is not a valid member of the enumeration class.
50+
"""
51+
try:
52+
return enum_class[value.upper()]
53+
except KeyError:
54+
expected_values = ", ".join([str(e.value) for e in enum_class])
55+
logger.error(f"Invalid value for {enum_class.__name__}: '{value}'. Expected values are: {expected_values}")
56+
raise ValueError(f"Invalid {enum_class.__name__}: {value}. Expected values are: {expected_values}")
57+
2658
## LOGGING
2759
def get_basename(fname: None | str = None) -> str:
2860
"""
@@ -168,7 +200,7 @@ def init_log(filename: str, display: bool = False, logger_id: str | None = None)
168200
[2023-10-20 10:38:03,074] root: INFO - Loading things
169201
"""
170202
# PRECONDITIONALS
171-
assert isinstance(filename, str), "filename must be a string"
203+
assert isinstance(filename, str), "Filename must be a string"
172204
assert (
173205
isinstance(logger_id, str) or logger_id is None
174206
), "logger_id must be a string or None"
@@ -197,17 +229,27 @@ def init_log(filename: str, display: bool = False, logger_id: str | None = None)
197229
return logger
198230

199231

200-
def get_logger():
232+
def get_logger(log_suffix):
201233
"""
202-
Putting at all together to init the log file.
234+
Initialize the logger with a log file name that includes an optional suffix.
235+
236+
Parameters
237+
----------
238+
log_suffix : str
239+
A string to append to the log file name.
240+
241+
Returns
242+
-------
243+
logging.Logger
244+
An initialized logger instance.
203245
"""
204-
# get log suffix, which will be the current script's base file name
205-
log_suffix = get_basename()
206-
# generate log file name
246+
# Generate log file name
207247
log_file = generate_log_filename(suffix=log_suffix)
208-
# init logger
248+
249+
# Initialize logger
209250
logger = init_log(log_file, display=True)
210-
# log it
251+
252+
# Log the path to the log file
211253
logger.info(f"Path to log file: {log_file}")
212254

213255
return logger

report/main.py

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,28 @@
22
import quarto_reportview as doc_reportview
33
from metadata_manager import MetadataManager
44
from report import ReportType
5-
from helpers.utils import get_logger
5+
from helpers.utils import assert_enum_value
66

77
if __name__ == '__main__':
8-
# Create logging file
9-
logger = get_logger()
10-
118
# Load report object and metadata from YAML file
12-
yaml_manager = MetadataManager(logger)
9+
yaml_manager = MetadataManager()
1310
report, report_metadata = yaml_manager.load_report_metadata('./report_metadata_micw2graph.yaml')
1411

1512
# Create report view
16-
# doc_report = doc_reportview.QuartoReportView(report_metadata['report']['id'],
17-
# report_metadata['report']['name'],
18-
# report=report,
19-
# report_type = ReportType[report_metadata['report']['report_type'].upper()],
20-
# report_format = doc_reportview.ReportFormat[report_metadata['report']['report_format'].upper()],
21-
# columns=None)
22-
# doc_report.generate_report()
23-
# doc_report.run_report()
13+
doc_report = doc_reportview.QuartoReportView(report_metadata['report']['id'],
14+
report_metadata['report']['name'],
15+
report=report,
16+
report_type = assert_enum_value(ReportType, report_metadata['report']['report_type'], report.logger),
17+
report_format = assert_enum_value(doc_reportview.ReportFormat, report_metadata['report']['report_format'], report.logger),
18+
columns=None)
19+
doc_report.generate_report()
20+
doc_report.run_report()
2421

25-
st_report = st_reportview.StreamlitReportView(report_metadata['report']['id'],
26-
report_metadata['report']['name'],
27-
report=report,
28-
report_type = ReportType[report_metadata['report']['report_type'].upper()],
29-
columns=None)
30-
st_report.generate_report()
31-
st_report.run_report()
22+
# st_report = st_reportview.StreamlitReportView(report_metadata['report']['id'],
23+
# report_metadata['report']['name'],
24+
# report=report,
25+
# report_type = assert_enum_value(ReportType, report_metadata['report']['report_type'], report.logger),
26+
# columns=None)
27+
# st_report.generate_report()
28+
# st_report.run_report()
3229

0 commit comments

Comments
 (0)