HumaniBench / src /display /formatting.py
wandra13's picture
Enhance leaderboard functionality and UI in app.py; add overall score formatting and type badges. Update CSS for improved table layout and responsiveness. Refactor data handling for better sorting and display.
c7b6308
Raw
History Blame Contribute Delete
2.21 kB
def make_clickable_model(model_name, link=None):
if link:
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline; text-decoration-style: dotted;">{model_name}</a>'
return model_name
def format_score(value, decimals=2):
if value is None:
return "--"
return f"{value:.{decimals}f}"
def format_percentage(value, decimals=1, colored=True, inverted=False):
if value is None:
return "--"
pct = f"{value:.{decimals}f}%"
if not colored:
return pct
if inverted:
# lower is better (e.g. Bias, Hallucination)
if value <= 5:
color = "#4ade80"
elif value <= 15:
color = "#fbbf24"
else:
color = "#f87171"
else:
if value >= 75:
color = "#4ade80"
elif value >= 60:
color = "#fbbf24"
else:
color = "#f87171"
return f'<span style="color:{color};font-weight:600;">{pct}</span>'
def format_overall(value, decimals=1):
if value is None:
return "--"
pct = f"{value:.{decimals}f}%"
return f'<span class="overall-score">{pct}</span>'
def format_type_badge(type_str):
if type_str == "Open":
return '<span class="badge badge-open">Open</span>'
elif type_str == "Closed":
return '<span class="badge badge-closed">Closed</span>'
return type_str
# retained for backward compatibility with src/submission and src/populate
def model_hyperlink(link, model_name):
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{model_name}</a>'
def styled_error(error):
return f"<p style='color: red; font-size: 20px; text-align: center;'>{error}</p>"
def styled_warning(warn):
return f"<p style='color: orange; font-size: 20px; text-align: center;'>{warn}</p>"
def styled_message(message):
return f"<p style='color: green; font-size: 20px; text-align: center;'>{message}</p>"
def has_no_nan_values(df, columns):
return df[columns].notna().all(axis=1)
def has_nan_values(df, columns):
return df[columns].isna().any(axis=1)