Spaces:
Build error
Build error
| import warnings | |
| import streamlit as st | |
| warnings.filterwarnings("ignore", category=UserWarning, module="streamlit") | |
| import pandas as pd | |
| import json | |
| import os | |
| from huggingface_hub import HfApi, login | |
| from streamlit_cookies_manager import EncryptedCookieManager | |
| st.set_page_config( | |
| page_title="Holistic AI - ML Verticals papers", | |
| page_icon="👋", | |
| layout='wide' | |
| ) | |
| def program(): | |
| st.title("Papers") | |
| dataset_name = "holistic-ai/mitigation_ml_bias_strategies" | |
| token = os.getenv("HF_TOKEN") | |
| api = HfApi() | |
| login(token) | |
| repo_path = api.snapshot_download(repo_id=dataset_name, repo_type="dataset") | |
| dirnames = [dirname for dirname in os.listdir(repo_path) if not dirname.startswith(".")] | |
| dirnames = sorted(dirnames, key=lambda x:len(x)) | |
| st.sidebar.title("Namespaces") | |
| selected_namespace = st.sidebar.selectbox("Select Namespace", dirnames) | |
| selected_paper_type = st.sidebar.selectbox("Select Paper Type", ['Metrics',"Mitigators"]) | |
| if selected_namespace: | |
| if selected_paper_type=='Metrics': | |
| with open(f'{repo_path}/{selected_namespace}/grouped_metrics.json') as file: | |
| data = json.load(file) | |
| elif selected_paper_type=='Mitigators': | |
| with open(f'{repo_path}/{selected_namespace}/grouped_mitigators.json') as file: | |
| data = json.load(file) | |
| task_names = list(data.keys()) | |
| st.sidebar.title("Tasks") | |
| selected_task = st.sidebar.selectbox("Select a Task", task_names) | |
| if selected_task: | |
| st.header(selected_task) | |
| results = data[selected_task] | |
| rec = {str(r['id']): r for r in results['recommendations']} | |
| for group in results['groups']: | |
| ids = [i.strip() for i in group['ids'].split(",")] | |
| selected_rec = [rec[i] for i in ids] | |
| selected_rec = pd.DataFrame(selected_rec) | |
| selected_rec['date'] = pd.to_datetime(selected_rec.apply(lambda x:x['metadata']['date'], axis=1)) | |
| selected_rec = selected_rec.sort_values(by='date', ascending=False).to_dict('records') | |
| rec2html = ''.join([f"""<tr><td style="border: 1px solid #ddd; padding: 8px;">{i+1}</td><td style="border: 1px solid #ddd; padding: 8px;"><a href="{rec['metadata']['id']}" target="_blank">{rec['title']}</a></td><td style="border: 1px solid #ddd; padding: 8px;">{rec['metadata']['date']}</td></tr>""" for i, rec in enumerate(selected_rec)]) | |
| title = group['title'].split(':', 1)[1].strip() | |
| st.markdown(f""" | |
| <div style="border: 1px solid #ccc; padding: 10px; margin: 10px 0; border-radius: 5px; width: 100%;"> | |
| <p><b>{title}</b></p> | |
| <p>{group['recommendation']}</p> | |
| <table style="width: 100%; border-collapse: collapse;"> | |
| <thead> | |
| <tr> | |
| <th style="border: 1px solid #ddd; padding: 8px;">Index</th> | |
| <th style="border: 1px solid #ddd; padding: 8px;">Paper</th> | |
| <th style="border: 1px solid #ddd; padding: 8px;">Year</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| {rec2html} | |
| </tbody> | |
| </table> | |
| </div> | |
| """, unsafe_allow_html=True) | |
| SECRET_KEY = os.getenv('SECRET_KEY') | |
| cookies = EncryptedCookieManager( | |
| prefix="login", | |
| password=os.getenv('COOKIES_PASSWORD') | |
| ) | |
| if not cookies.ready(): | |
| st.stop() | |
| def main(): | |
| # Título de la aplicación | |
| st.title("Holistic AI - ML Papers") | |
| if not cookies.get("authenticated"): | |
| # Entrada de la clave secreta | |
| user_key = st.text_input("Password:", type="password") | |
| if st.button("Login"): | |
| # Verificar si la clave ingresada coincide con la clave secreta | |
| if user_key == SECRET_KEY: | |
| cookies.__setitem__("authenticated", "True") | |
| st.experimental_rerun() | |
| else: | |
| st.error("Access not granted. Incorrect Password.") | |
| else: | |
| program() | |
| if __name__ == "__main__": | |
| main() |