File size: 3,710 Bytes
abdabaa
22ee398
 
 
 
 
abdabaa
22ee398
 
abdabaa
7fcb613
 
 
 
 
 
abdabaa
22ee398
abdabaa
22ee398
abdabaa
 
 
 
 
22ee398
abdabaa
22ee398
abdabaa
 
 
 
 
 
22ee398
abdabaa
 
22ee398
abdabaa
1d09a74
7fcb613
 
abdabaa
22ee398
abdabaa
7fcb613
abdabaa
7fcb613
abdabaa
7fcb613
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
abdabaa
 
7fcb613
 
abdabaa
 
 
7fcb613
abdabaa
 
22ee398
 
abdabaa
 
22ee398
abdabaa
7fcb613
 
22ee398
 
7fcb613
 
 
abdabaa
22ee398
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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()