1
1
import click
2
+ import questionary
2
3
from rich .console import Console
4
+ from rich .pretty import pretty_repr
3
5
from rich .table import Column , Table
4
6
5
7
from cli .client import init_client
@@ -18,6 +20,47 @@ def models(ctx, web):
18
20
launch_web_or_invoke ("models" , ctx , web , list_models )
19
21
20
22
23
+ STRING_REPLACEMENTS = {
24
+ "\\ n" : "\n " ,
25
+ "\\ t" : "\t " ,
26
+ '\\ "' : '"' ,
27
+ }
28
+
29
+
30
+ def json_string_to_string (s : str ) -> str :
31
+ for key , val in STRING_REPLACEMENTS .items ():
32
+ s = s .replace (key , val )
33
+ return s
34
+
35
+
36
+ @models .command ("calculate-metrics" )
37
+ def metrics ():
38
+ client = init_client ()
39
+ models = client .models
40
+ prompt_to_id = {f"{ m .id } : { m .name } " : m .id for m in models }
41
+ ans = questionary .select (
42
+ "What model do you want to run metrics for?" ,
43
+ choices = list (prompt_to_id .keys ()),
44
+ ).ask ()
45
+ model_id = prompt_to_id [ans ]
46
+ jobs = client .validate .metrics (model_id )
47
+ console = Console ()
48
+ with console .status ("Calculating metrics" ):
49
+ for job in jobs :
50
+ job .sleep_until_complete (False )
51
+
52
+ if len (job .errors ()) == 0 :
53
+ status = job .status ()
54
+ click .echo (click .style ("Done" , fg = "green" ))
55
+ console .print (pretty_repr (status ))
56
+ else :
57
+ click .echo (
58
+ click .style ("Encountered errors during running" , fg = "green" )
59
+ )
60
+ for error in job .errors ():
61
+ click .echo (json_string_to_string (error ))
62
+
63
+
21
64
@models .command ("list" )
22
65
def list_models ():
23
66
"""List your Models"""
0 commit comments