| import pandas as pd |
| import io |
| from functools import lru_cache |
| from pydantic import BaseModel |
| import requests |
|
|
| class FileBean(BaseModel): |
| name: str |
| url: str |
| source: str |
| accessToken: str = None |
| fileId: str = None |
|
|
| def __hash__(self): |
| return hash((self.fileId)) |
|
|
| @lru_cache |
| def get_dataframes(fb: FileBean): |
| with open(fb.url, "rb") as f: |
| file = f.read() |
|
|
| if fb.name.endswith('.xls') or fb.name.endswith('.xlsx'): |
| return pd.read_excel(file, sheet_name=None) |
| elif fb.name.endswith('.csv'): |
| return {fb.name: pd.read_csv(io.BytesIO(file))} |
| else: |
| raise {"msg": "File type not supported.", "success": False} |
|
|
|
|