Spaces:
Running
Running
| import subprocess | |
| import warnings, os | |
| warnings.filterwarnings("ignore") | |
| os.environ["CURL_CA_BUNDLE"] = "" | |
| from dotenv import load_dotenv | |
| import gradio as gr | |
| load_dotenv() | |
| hf_token = os.environ["HF_TOKEN"] | |
| SCRIPT_DOC_3GPP = "3gpp_tdoc_indexer.py" | |
| SCRIPT_SPEC_3GPP = "3gpp_spec_indexer.py" | |
| SCRIPT_BM25_3GPP = "3gpp_bm25_maker.py" | |
| SCRIPT_SPEC_ETSI = "etsi_spec_indexer.py" | |
| SCRIPT_BM25_ETSI = "etsi_bm25_maker.py" | |
| def get_script_output(script_path, current_log=""): | |
| accumulated_output = current_log | |
| process = subprocess.Popen( | |
| ["python", script_path], | |
| stdout=subprocess.PIPE, | |
| stderr=subprocess.STDOUT, | |
| bufsize=1, | |
| universal_newlines=True | |
| ) | |
| for line in process.stdout: | |
| accumulated_output += line | |
| yield accumulated_output | |
| process.stdout.close() | |
| process.wait() | |
| yield accumulated_output | |
| def index_tdocs(): | |
| log_output = "⏳ Indexation en cours...\n" | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log_output | |
| for log in get_script_output(SCRIPT_DOC_3GPP, log_output): | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log | |
| log_output = log | |
| log_output += "✅ Terminé.\n" | |
| yield gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True), log_output | |
| def index_3gpp_specifications(): | |
| log_output = "⏳ Indexation en cours...\n" | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log_output | |
| for log in get_script_output(SCRIPT_SPEC_3GPP, log_output): | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log | |
| log_output = log | |
| for log in get_script_output(SCRIPT_BM25_3GPP, log_output): | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log | |
| log_output = log | |
| log_output += "✅ Terminé.\n" | |
| yield gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True), log_output | |
| def index_etsi_specifications(): | |
| log_output = "⏳ Indexation en cours...\n" | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log_output | |
| for log in get_script_output(SCRIPT_SPEC_ETSI, log_output): | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log | |
| log_output = log | |
| for log in get_script_output(SCRIPT_BM25_ETSI, log_output): | |
| yield gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False), log | |
| log_output = log | |
| log_output += "✅ Terminé.\n" | |
| yield gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True), log_output | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("# 📄 3GPP Indexer Main Menu") | |
| with gr.Row() as r1: | |
| with gr.Column(): | |
| tdocs_btn = gr.Button("Re-index TDocs", variant="primary") | |
| with gr.Column(): | |
| spec_btn_3gpp = gr.Button("Re-index 3GPP Specifications", variant="primary") | |
| spec_btn_etsi = gr.Button("Re-index ETSI Specifications", variant="primary") | |
| out = gr.Textbox(label="Output", lines=25, autoscroll=True, interactive=False) | |
| tdocs_btn.click(index_tdocs, outputs=[tdocs_btn, spec_btn_3gpp, spec_btn_etsi, out]) | |
| spec_btn_3gpp.click(index_3gpp_specifications, outputs=[tdocs_btn, spec_btn_3gpp, spec_btn_etsi, out]) | |
| spec_btn_etsi.click(index_etsi_specifications, outputs=[tdocs_btn, spec_btn_3gpp, spec_btn_etsi, out]) | |
| demo.queue().launch() |