Spaces:
Running
Running
import pandas as pd | |
import io | |
import logging | |
from typing import List | |
from .schemas import KeyIssue # Import the Pydantic model | |
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() | |
# Use Pydantic's .model_dump() for robust serialization | |
data = [ki.model_dump() for ki in key_issues] | |
df = pd.DataFrame(data) | |
# Optional: Reorder or rename columns if needed | |
# df = df[['id', 'title', 'description', 'challenges', 'potential_impact']] # Example reordering | |
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: | |
# Use BytesIO object as the target file | |
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 | |
# Removed: format_df (HTML specific, less relevant for Excel output) | |
# Removed: init_app (handled by config.py) | |
# Removed: get_model (handled by llm_interface.py) | |
# Removed: clear_memory (handle state/memory management within LangGraph setup if needed) | |
# Removed: _set_env (handled by config.py and dotenv) | |
# Kept: format_doc (renamed to format_doc_for_llm in graph_operations.py) | |
# Removed: update_doc_history (reducer logic should be handled in LangGraph state definition/nodes) |