#!/usr/bin/env python import gradio as gr import pandas as pd from gradio_calendar import Calendar from papers import PaperList, get_df DESCRIPTION = "# [Daily Papers](https://huggingface.co/papers)" with open("last_updated.txt") as f: last_updated = f.read() paper_list = PaperList(get_df()) def update_num_papers(df: pd.DataFrame) -> str: return f"{len(df)} / {len(paper_list.df_raw)}" with gr.Blocks(css="style.css") as demo: gr.Markdown(DESCRIPTION) with gr.Group(): with gr.Row(): start_date = Calendar(label="Start date", type="datetime", value="2023-05-05") end_date = Calendar(label="End date", type="datetime") search_title = gr.Textbox(label="Search by title") num_papers = gr.Textbox(label="Number of papers", value=update_num_papers(paper_list.df_raw), interactive=False) df = gr.Dataframe( value=paper_list.df_prettified, datatype=paper_list.column_datatype, type="pandas", interactive=False, height=1000, elem_id="table", column_widths=["10%", "10%", "60%", "10%", "10%"], wrap=True, ) gr.Markdown(value=f"Last updated: {last_updated}", elem_id="last-updated") gr.on( triggers=[start_date.change, end_date.change, search_title.submit], fn=paper_list.search, inputs=[start_date, end_date, search_title], outputs=df, api_name=False, ).then( fn=update_num_papers, inputs=df, outputs=num_papers, queue=False, api_name=False, ) if __name__ == "__main__": demo.queue(api_open=False).launch(show_api=False)