twinkle-toes commited on
Commit
6edb968
1 Parent(s): 18fb5f7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -8
app.py CHANGED
@@ -10,15 +10,18 @@ class Validator:
10
  self.valid = True
11
  self.obj = obj
12
 
13
- def validate_key(self, key, ty):
14
  if key not in self.obj:
15
- self.valid = False
16
  return False
17
  if not isinstance(self.obj[key], ty):
18
- self.valid = False
19
  return False
20
  return True
21
 
 
 
 
 
 
22
  def validate_key_if_present(self, key, ty):
23
  if key in self.obj and not isinstance(self.obj[key], ty):
24
  self.valid = False
@@ -47,9 +50,13 @@ class Validator:
47
  def validate_prompt_order(self):
48
  self.validate_key("character_id", str)
49
  if self.validate_key("order", list):
50
- for s in self.obj["order"]:
51
- if not Validator.is_valid_ordering(s):
52
- self.valid = False
 
 
 
 
53
 
54
  def validate_ordering(self):
55
  self.validate_key("identifier", str)
@@ -94,10 +101,16 @@ class Validator:
94
  continue
95
  known_prompt_ids.add(prompt["identifier"])
96
  seen_cid0 = False
97
- if self.validate_key("prompt_order", list):
98
  for order in self.obj["prompt_order"]:
99
  if Validator.is_valid_prompt_order(order) and order["character_id"] == "100000" and all(lambda o: o["identifier"] in known_prompt_ids for o in order["order"]):
100
  seen_cid0 = True
 
 
 
 
 
 
101
  if not seen_cid0:
102
  self.valid = False
103
 
@@ -119,6 +132,12 @@ class Validator:
119
  v.validate_prompt_order()
120
  return v.valid
121
 
 
 
 
 
 
 
122
  @classmethod
123
  def is_valid_ordering(cls, ordering):
124
  v = cls(ordering)
@@ -186,7 +205,7 @@ with gr.Blocks() as demo:
186
  gr.Markdown("Preset loaded and validated")
187
  prompt_map = {p["identifier"]: p for p in preset["prompts"]}
188
  gr.Markdown("# Preset")
189
- for order in next(o for o in preset["prompt_order"] if o["character_id"] == "100000")["order"]:
190
  prompt = prompt_map[order["identifier"]]
191
  render_prompt(prompt, order["enabled"])
192
  with gr.Accordion("# All prompts", open=False):
 
10
  self.valid = True
11
  self.obj = obj
12
 
13
+ def try_validate_key(self, key, ty):
14
  if key not in self.obj:
 
15
  return False
16
  if not isinstance(self.obj[key], ty):
 
17
  return False
18
  return True
19
 
20
+ def validate_key(self, key, ty):
21
+ r = self.try_validate_key(self, key, ty)
22
+ self.valid = r
23
+ return r
24
+
25
  def validate_key_if_present(self, key, ty):
26
  if key in self.obj and not isinstance(self.obj[key], ty):
27
  self.valid = False
 
50
  def validate_prompt_order(self):
51
  self.validate_key("character_id", str)
52
  if self.validate_key("order", list):
53
+ if not Validator.is_valid_prompt_order_list(self.obj["order"]):
54
+ self.valid = False
55
+
56
+ def validate_prompt_order_list(self):
57
+ for s in self.obj["order"]:
58
+ if not Validator.is_valid_ordering(s):
59
+ self.valid = False
60
 
61
  def validate_ordering(self):
62
  self.validate_key("identifier", str)
 
101
  continue
102
  known_prompt_ids.add(prompt["identifier"])
103
  seen_cid0 = False
104
+ if self.try_validate_key("prompt_order", list):
105
  for order in self.obj["prompt_order"]:
106
  if Validator.is_valid_prompt_order(order) and order["character_id"] == "100000" and all(lambda o: o["identifier"] in known_prompt_ids for o in order["order"]):
107
  seen_cid0 = True
108
+ elif self.validate_key("prompt_order", dict):
109
+ if not Validator.is_valid_prompt_order_list(self.obj["prompt_order"]):
110
+ self.valid = False
111
+ else:
112
+ if all(lambda o: o["identifier"] in known_prompt_ids for o in self.obj["prompt_order"]):
113
+ seen_cid0 = True
114
  if not seen_cid0:
115
  self.valid = False
116
 
 
132
  v.validate_prompt_order()
133
  return v.valid
134
 
135
+ @classmethod
136
+ def is_valid_prompt_order_list(cls, prompt_order_list):
137
+ v = cls(prompt_order_list)
138
+ v.validate_prompt_order_list()
139
+ return v.valid
140
+
141
  @classmethod
142
  def is_valid_ordering(cls, ordering):
143
  v = cls(ordering)
 
205
  gr.Markdown("Preset loaded and validated")
206
  prompt_map = {p["identifier"]: p for p in preset["prompts"]}
207
  gr.Markdown("# Preset")
208
+ for order in (next(o for o in preset["prompt_order"] if o["character_id"] == "100000")["order"] if isinstance(preset["prompt_order"], list) else preset["prompt_order"]):
209
  prompt = prompt_map[order["identifier"]]
210
  render_prompt(prompt, order["enabled"])
211
  with gr.Accordion("# All prompts", open=False):