Spaces:
Runtime error
Runtime error
| from typing import Dict, List, Tuple | |
| import re | |
| import tempfile | |
| from pathlib import Path | |
| import pandas as pd | |
| import requests | |
| from pandas import DataFrame | |
| # --- Constants --- | |
| DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space" | |
| QUESTIONS_URL = f"{DEFAULT_API_URL}/questions" | |
| SUBMIT_URL = f"{DEFAULT_API_URL}/submit" | |
| FILE_PATH = f"{DEFAULT_API_URL}/files/" | |
| def process_file(task_id: str, question_text: str) -> str: | |
| """ | |
| Attempt to download a file associated with a task from the API. | |
| - If the file exists (HTTP 200), it is saved to a temp directory and the local file path is returned. | |
| - If no file is found (HTTP 404), returns None. | |
| - For all other HTTP errors, the exception is propagated to the caller. | |
| """ | |
| file_url = f"{FILE_PATH}{task_id}" | |
| try: | |
| response = requests.get(file_url, timeout=30) | |
| response.raise_for_status() | |
| except requests.exceptions.RequestException as exc: | |
| print(f"Exception in download_file>> {str(exc)}") | |
| return question_text # Unable to get the file | |
| # Determine filename from 'Content-Disposition' header, fallback to task_id | |
| content_disposition = response.headers.get("content-disposition", "") | |
| filename = task_id | |
| match = re.search(r'filename="([^"]+)"', content_disposition) | |
| if match: | |
| filename = match.group(1) | |
| # Save file in a temp directory | |
| temp_storage_dir = Path(tempfile.gettempdir()) / "gaia_cached_files" | |
| temp_storage_dir.mkdir(parents=True, exist_ok=True) | |
| file_path = temp_storage_dir / filename | |
| file_path.write_bytes(response.content) | |
| return ( | |
| f"{question_text}\n\n" | |
| f"---\n" | |
| f"A file was downloaded for this task and saved locally at:\n" | |
| f"{str(file_path)}\n" | |
| f"---\n\n" | |
| ) |