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
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)