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