DocIndexer / app.py
om4r932's picture
Update app.py
1d09a74 verified
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()