File size: 2,559 Bytes
8092547
 
3833563
58c39e0
 
8e32a09
58c39e0
9ca668d
58c39e0
8092547
8e32a09
9ca668d
8092547
58c39e0
8092547
ba025b4
9ca668d
 
 
 
 
8092547
 
58c39e0
8092547
58c39e0
 
 
8092547
 
58c39e0
8092547
58c39e0
 
 
 
 
8092547
 
ba025b4
9ca668d
ba025b4
 
 
 
 
9ca668d
58c39e0
92dfaaf
 
 
 
 
125b0cb
92dfaaf
 
 
beb62dc
3833563
ba025b4
beb62dc
 
e7115eb
 
 
 
beb62dc
 
 
 
 
8e32a09
 
8092547
beb62dc
 
ba025b4
 
666860b
92dfaaf
 
 
 
666860b
 
9ca668d
 
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
from os import listdir
from os.path import isfile, join
import html

import gradio as gr
import os
import pipe
from io_utils import get_logs_file

LOG_PATH = "./tmp"
CONFIG_PATH = "./cicd/configs/submitted/"
MAX_FILES_NUM = 20


def get_accordions_of_files(path, files):
    components = [None for _ in range(0, MAX_FILES_NUM)]
    for i in range(0, len(files)):
        if i >= MAX_FILES_NUM:
            break
        with open(join(path, files[i]), "r") as f:
            components[i] = f.read()
    return components


def get_accordions_of_log_files():
    log_files = [
        f for f in listdir(LOG_PATH) if isfile(join(LOG_PATH, f)) and f.endswith("_log")
    ]
    return get_accordions_of_files(LOG_PATH, log_files)


def get_accordions_of_config_files():
    config_files = [
        f
        for f in listdir(CONFIG_PATH)
        if isfile(join(CONFIG_PATH, f)) and f.endswith(".yaml")
    ]
    return get_accordions_of_files(CONFIG_PATH, config_files)


def get_config_files():
    config_files = [
        join(CONFIG_PATH, f)
        for f in listdir(CONFIG_PATH)
        if isfile(join(CONFIG_PATH, f)) and f.endswith(".yaml")
    ]
    return config_files


def get_log_files():
    return [
        join(LOG_PATH, f)
        for f in listdir(LOG_PATH)
        if isfile(join(LOG_PATH, f)) and f.endswith("log")
    ]


def get_jobs_info_in_queue():
    return [f"⌛️job id {html.escape(job[0])}: {html.escape(job[2])}<br/>" for job in pipe.jobs]

def get_queue_status():
    if len(pipe.jobs) > 0 or pipe.current is not None:
        current = pipe.current
        if current is None:
            current = "None"
        return f'<div style="padding-top: 5%">Current job: {html.escape(current)} <br/> Jobs in queue: <br/> {"".join(get_jobs_info_in_queue())}</div>'
    else:
        return '<div style="padding-top: 5%">No jobs in queue, please submit an evaluation task from another tab.</div>'


def get_demo():
    if not os.path.exists(CONFIG_PATH):
        os.makedirs(CONFIG_PATH)
    with gr.Row():
        gr.HTML(        
            value=get_queue_status,
            every=5,
        )
    with gr.Accordion(label="Log Files", open=True):
        with gr.Row():
            gr.Textbox(
                value=get_logs_file, every=0.5, lines=10, visible=True, label="Current Log File"
            )
        with gr.Row():
            gr.Files(value=get_log_files, label="Log Files", every=10)
    with gr.Accordion(label="Config Files", open=False):
        gr.Files(value=get_config_files, label="Config Files", every=10)