Spaces:
Runtime error
Runtime error
| import json | |
| from sheet_manager.sheet_crud.sheet_crud import SheetManager | |
| import json | |
| from typing import Optional, Dict | |
| def update_benchmark_json( | |
| model_name: str, | |
| benchmark_data: dict, | |
| worksheet_name: str = "metric", | |
| target_column: str = "benchmark" # ํ๊ฒ ์นผ๋ผ ํ๋ผ๋ฏธํฐ ์ถ๊ฐ | |
| ): | |
| """ | |
| ํน์ ๋ชจ๋ธ์ ๋ฒค์น๋งํฌ ๋ฐ์ดํฐ๋ฅผ JSON ํํ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. | |
| Args: | |
| model_name (str): ์ ๋ฐ์ดํธํ ๋ชจ๋ธ ์ด๋ฆ | |
| benchmark_data (dict): ์ ๋ฐ์ดํธํ ๋ฒค์น๋งํฌ ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ | |
| worksheet_name (str): ์์ ํ ์ํฌ์ํธ ์ด๋ฆ (๊ธฐ๋ณธ๊ฐ: "metric") | |
| target_column (str): ์ ๋ฐ์ดํธํ ํ๊ฒ ์นผ๋ผ ์ด๋ฆ (๊ธฐ๋ณธ๊ฐ: "benchmark") | |
| """ | |
| sheet_manager = SheetManager(worksheet_name=worksheet_name) | |
| # ๋์ ๋๋ฆฌ๋ฅผ JSON ๋ฌธ์์ด๋ก ๋ณํ | |
| json_str = json.dumps(benchmark_data, ensure_ascii=False) | |
| # ๋ชจ๋ธ๋ช ์ ๊ธฐ์ค์ผ๋ก ์ง์ ๋ ์นผ๋ผ ์ ๋ฐ์ดํธ | |
| row = sheet_manager.update_cell_by_condition( | |
| condition_column="Model name", # ๋ชจ๋ธ๋ช ์ด ์๋ ์นผ๋ผ | |
| condition_value=model_name, # ์ฐพ์ ๋ชจ๋ธ๋ช | |
| target_column=target_column, # ์ ๋ฐ์ดํธํ ํ๊ฒ ์นผ๋ผ | |
| target_value=json_str # ์ ๋ฐ์ดํธํ JSON ๊ฐ | |
| ) | |
| if row: | |
| print(f"Successfully updated {target_column} data for model: {model_name}") | |
| else: | |
| print(f"Model {model_name} not found in the sheet") | |
| def get_benchmark_dict( | |
| model_name: str, | |
| worksheet_name: str = "metric", | |
| target_column: str = "benchmark", | |
| save_path: Optional[str] = None | |
| ) -> Dict: | |
| """ | |
| ์ํธ์์ ํน์ ๋ชจ๋ธ์ ๋ฒค์น๋งํฌ JSON ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋์ ๋๋ฆฌ๋ก ๋ณํํฉ๋๋ค. | |
| Args: | |
| model_name (str): ๊ฐ์ ธ์ฌ ๋ชจ๋ธ ์ด๋ฆ | |
| worksheet_name (str): ์์ ํ ์ํฌ์ํธ ์ด๋ฆ (๊ธฐ๋ณธ๊ฐ: "metric") | |
| target_column (str): ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์นผ๋ผ ์ด๋ฆ (๊ธฐ๋ณธ๊ฐ: "benchmark") | |
| save_path (str, optional): ๋์ ๋๋ฆฌ๋ฅผ ์ ์ฅํ JSON ํ์ผ ๊ฒฝ๋ก | |
| Returns: | |
| Dict: ๋ฒค์น๋งํฌ ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ. ๋ฐ์ดํฐ๊ฐ ์๊ฑฐ๋ JSON ํ์ฑ ์คํจ์ ๋น ๋์ ๋๋ฆฌ ๋ฐํ | |
| """ | |
| sheet_manager = SheetManager(worksheet_name=worksheet_name) | |
| try: | |
| # ๋ชจ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ | |
| data = sheet_manager.sheet.get_all_records() | |
| # ํด๋น ๋ชจ๋ธ ์ฐพ๊ธฐ | |
| target_row = next( | |
| (row for row in data if row.get("Model name") == model_name), | |
| None | |
| ) | |
| if not target_row: | |
| print(f"Model {model_name} not found in the sheet") | |
| return {} | |
| # ํ๊ฒ ์นผ๋ผ์ JSON ๋ฌธ์์ด ๊ฐ์ ธ์ค๊ธฐ | |
| json_str = target_row.get(target_column) | |
| if not json_str: | |
| print(f"No data found in {target_column} for model: {model_name}") | |
| return {} | |
| # JSON ๋ฌธ์์ด์ ๋์ ๋๋ฆฌ๋ก ๋ณํ | |
| result_dict = json.loads(json_str) | |
| # ๊ฒฐ๊ณผ ์ ์ฅ (save_path๊ฐ ์ ๊ณต๋ ๊ฒฝ์ฐ) | |
| if save_path: | |
| with open(save_path, 'w', encoding='utf-8') as f: | |
| json.dump(result_dict, f, ensure_ascii=False, indent=2) | |
| print(f"Successfully saved dictionary to: {save_path}") | |
| return result_dict | |
| except json.JSONDecodeError: | |
| print(f"Failed to parse JSON data for model: {model_name}") | |
| return {} | |
| except Exception as e: | |
| print(f"Error occurred: {str(e)}") | |
| return {} | |
| def str2json(json_str): | |
| """ | |
| ๋ฌธ์์ด์ JSON ๊ฐ์ฒด๋ก ๋ณํํฉ๋๋ค. | |
| Args: | |
| json_str (str): JSON ํ์์ ๋ฌธ์์ด | |
| Returns: | |
| dict: ํ์ฑ๋ JSON ๊ฐ์ฒด, ์คํจ์ None | |
| """ | |
| try: | |
| return json.loads(json_str) | |
| except json.JSONDecodeError as e: | |
| print(f"JSON Parsing Error: {e}") | |
| return None | |
| except Exception as e: | |
| print(f"Unexpected Error: {e}") | |
| return None |