| | import pandas as pd |
| | import io |
| | import logging |
| | from typing import List |
| | from .schemas import KeyIssue |
| |
|
| | logger = logging.getLogger(__name__) |
| |
|
| | def key_issues_to_dataframe(key_issues: List[KeyIssue]) -> pd.DataFrame: |
| | """Converts a list of KeyIssue objects into a Pandas DataFrame.""" |
| | if not key_issues: |
| | return pd.DataFrame() |
| | |
| | data = [ki.model_dump() for ki in key_issues] |
| | df = pd.DataFrame(data) |
| | |
| | |
| | return df |
| |
|
| | def dataframe_to_excel_bytes(df: pd.DataFrame) -> bytes: |
| | """Converts a Pandas DataFrame to Excel format in memory (bytes).""" |
| | logger.info("Generating Excel file from DataFrame...") |
| | output = io.BytesIO() |
| | try: |
| | |
| | with pd.ExcelWriter(output, engine='openpyxl') as writer: |
| | df.to_excel(writer, index=False, sheet_name='Key Issues') |
| | excel_data = output.getvalue() |
| | logger.info("Excel file generated successfully.") |
| | return excel_data |
| | except Exception as e: |
| | logger.error(f"Failed to generate Excel file: {e}", exc_info=True) |
| | raise RuntimeError("Failed to create Excel output.") from e |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |