jisujang's picture
first
a005c19
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