Hasan Iqbal
Updated logging library
0c6ddb2 unverified
raw
history blame
2.46 kB
import os
import subprocess
from pathlib import Path
from jinja2 import Environment, FileSystemLoader
from importlib import resources as pkg_resources
from openfactcheck.utils.logging import get_logger
from openfactcheck.templates import report as report_dir
# Get the logger
logger = get_logger(__name__)
# Import latex template
report_template_path = str(pkg_resources.files(report_dir) / "llm_evaluation_report.tex")
def create_latex_report(model_name, report_path):
"""
Fill data in tex templates.
"""
loader = FileSystemLoader(os.path.dirname(report_template_path))
env = Environment(loader=loader)
data = {
"model_name": model_name.replace("_", " "),
"snowballing_barplot": "snowballing_barplot.png",
"snowballing_cm": "snowballing_cm.png",
"selfaware_barplot": "selfaware_barplot.png",
"selfaware_cm": "selfaware_cm.png",
"freshqa_barplot": "freshqa_barplot.png",
"freetext_barplot": "freetext_barplot.png",
}
template = env.get_template(os.path.basename(report_template_path))
latex = template.render(data)
with open(Path(report_path) / ("main.tex"), "w", encoding="utf-8") as f:
f.write(latex)
return None
def compile_pdf(report_path):
"""
Compile the latex file to pdf.
"""
# Change the directory to the report path
original_directory = os.getcwd()
os.chdir(report_path)
try:
try:
# Compile the latex file
subprocess.run(["pdflatex", "main.tex"], timeout=60)
except subprocess.TimeoutExpired:
logger.error("Compilation of the report timed out.")
raise Exception("Compilation of the report timed out.")
# Rename the pdf file
Path("main.pdf").replace("report.pdf")
# Remove the auxiliary files
for file in Path(".").glob("main*"):
file.unlink()
# Change the directory back to the original
os.chdir(original_directory)
except Exception as e:
logger.error(f"Error compiling the report: {e}")
raise Exception(f"Error compiling the report: {e}")
def create_report(model_name, report_path):
"""
Create a pdf report.
"""
logger.debug("Creating the report...")
create_latex_report(model_name, report_path)
logger.debug("Compiling the report...")
compile_pdf(report_path)
return Path(report_path) / "report.pdf"