AlexNijjar
commited on
Commit
β’
8c8c629
1
Parent(s):
98b751c
Colorize
Browse files
app.py
CHANGED
@@ -45,13 +45,19 @@ class State:
|
|
45 |
|
46 |
# enum
|
47 |
class Status(Enum):
|
48 |
-
IN_PROGRESS = "In Progress"
|
49 |
-
DONE = "Done"
|
50 |
-
BROKEN = "Broken"
|
51 |
|
52 |
-
def get_alt_time_text(self):
|
53 |
return "β" if self == Status.BROKEN else "N/A"
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
wandb_api = wandb.Api()
|
57 |
demo = gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}")
|
@@ -123,6 +129,15 @@ def fetch_wandb_data():
|
|
123 |
data = dict(sorted(data.items()))
|
124 |
|
125 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
def refresh():
|
127 |
fetch_wandb_data()
|
128 |
demo.clear()
|
@@ -131,6 +146,7 @@ def refresh():
|
|
131 |
with demo:
|
132 |
with gr.Accordion(f"Validator States (Last updated: {now.strftime('%Y-%m-%d %I:%M:%S %p')} EST)"):
|
133 |
elements: list[tuple] = []
|
|
|
134 |
|
135 |
for source_validator_uid, state in data.items():
|
136 |
status = Status.IN_PROGRESS
|
@@ -144,26 +160,26 @@ def refresh():
|
|
144 |
eta_date = now + time_left
|
145 |
eta_time = eta_date.strftime("%Y-%m-%d %I:%M:%S %p") if eta > 0 else status.get_alt_time_text()
|
146 |
|
|
|
|
|
147 |
elements.append((
|
148 |
source_validator_uid,
|
149 |
HOTKEYS_TO_KNOWN_VALIDATORS.get(state.hotkey, state.hotkey),
|
150 |
-
state.version,
|
151 |
-
status.
|
152 |
state.benchmarks + state.invalid,
|
153 |
state.submissions,
|
154 |
state.invalid,
|
155 |
-
f"
|
156 |
-
eta_time,
|
157 |
-
time_left if eta > 0 else status.get_alt_time_text()
|
158 |
))
|
159 |
|
160 |
gr.components.Dataframe(
|
161 |
elements,
|
162 |
headers=["UID", "Name", "Version", "Status", "Tested", "Submissions", "Invalid", "Avg. Benchmark Time", "ETA (Eastern Time)", "ETA Remaining"],
|
163 |
-
datatype=["number", "markdown", "markdown", "markdown", "number", "number", "number", "
|
164 |
elem_id="state-table",
|
165 |
-
interactive=False,
|
166 |
-
visible=True,
|
167 |
)
|
168 |
|
169 |
|
|
|
45 |
|
46 |
# enum
|
47 |
class Status(Enum):
|
48 |
+
IN_PROGRESS = ("In Progress", "orange")
|
49 |
+
DONE = ("Done", "springgreen")
|
50 |
+
BROKEN = ("Broken", "red")
|
51 |
|
52 |
+
def get_alt_time_text(self) -> str:
|
53 |
return "β" if self == Status.BROKEN else "N/A"
|
54 |
|
55 |
+
def name(self):
|
56 |
+
return self.value[0]
|
57 |
+
|
58 |
+
def color(self):
|
59 |
+
return self.value[1]
|
60 |
+
|
61 |
|
62 |
wandb_api = wandb.Api()
|
63 |
demo = gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}")
|
|
|
129 |
data = dict(sorted(data.items()))
|
130 |
|
131 |
|
132 |
+
def get_latest_version() -> str:
|
133 |
+
latest_version = "0.0.0"
|
134 |
+
for source_validator_uid, state in data.items():
|
135 |
+
version = state.version
|
136 |
+
if version > latest_version:
|
137 |
+
latest_version = version
|
138 |
+
return latest_version
|
139 |
+
|
140 |
+
|
141 |
def refresh():
|
142 |
fetch_wandb_data()
|
143 |
demo.clear()
|
|
|
146 |
with demo:
|
147 |
with gr.Accordion(f"Validator States (Last updated: {now.strftime('%Y-%m-%d %I:%M:%S %p')} EST)"):
|
148 |
elements: list[tuple] = []
|
149 |
+
latest_version = get_latest_version()
|
150 |
|
151 |
for source_validator_uid, state in data.items():
|
152 |
status = Status.IN_PROGRESS
|
|
|
160 |
eta_date = now + time_left
|
161 |
eta_time = eta_date.strftime("%Y-%m-%d %I:%M:%S %p") if eta > 0 else status.get_alt_time_text()
|
162 |
|
163 |
+
average_time_text = f"{timedelta(seconds=int(state.average_benchmark_time))}" if state.average_benchmark_time else status.get_alt_time_text(),
|
164 |
+
|
165 |
elements.append((
|
166 |
source_validator_uid,
|
167 |
HOTKEYS_TO_KNOWN_VALIDATORS.get(state.hotkey, state.hotkey),
|
168 |
+
f"<span style='color: {'springgreen' if state.version == latest_version else 'red'}'>{state.version}</span>",
|
169 |
+
f"<span style='color: {status.color()}'>{status.name()}</span>",
|
170 |
state.benchmarks + state.invalid,
|
171 |
state.submissions,
|
172 |
state.invalid,
|
173 |
+
f"<span style='color: {'orange' if state.average_benchmark_time > 600 else 'springgreen'}'>{average_time_text[0]}</span>",
|
174 |
+
f"<span style='color: {'orange' if eta > 43200 else 'springgreen'}'>{eta_time}</span>",
|
175 |
+
f"<span style='color: {'orange' if eta > 43200 else 'springgreen'}'>{time_left if eta > 0 else status.get_alt_time_text()}</span>"
|
176 |
))
|
177 |
|
178 |
gr.components.Dataframe(
|
179 |
elements,
|
180 |
headers=["UID", "Name", "Version", "Status", "Tested", "Submissions", "Invalid", "Avg. Benchmark Time", "ETA (Eastern Time)", "ETA Remaining"],
|
181 |
+
datatype=["number", "markdown", "markdown", "markdown", "number", "number", "number", "markdown", "markdown", "markdown"],
|
182 |
elem_id="state-table",
|
|
|
|
|
183 |
)
|
184 |
|
185 |
|