davidmezzetti commited on
Commit
e748e0f
1 Parent(s): 0c57aea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -1
app.py CHANGED
@@ -8,6 +8,7 @@ import os
8
  import re
9
 
10
  import nltk
 
11
 
12
  import pandas as pd
13
  import streamlit as st
@@ -171,6 +172,73 @@ class Application:
171
 
172
  self.workflow = Workflow(tasks)
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  def find(self, key):
175
  """
176
  Lookup record from cached data by uid key.
@@ -271,12 +339,19 @@ class Application:
271
  st.sidebar.markdown("---")
272
 
273
  with st.sidebar:
 
 
274
  # Build or re-build workflow when build button clicked
275
- build = st.button("Build", help="Build the workflow and run within this application")
276
  if build:
277
  with st.spinner("Building workflow...."):
278
  self.build(components)
279
 
 
 
 
 
 
280
  with st.expander("Data", expanded=not self.data):
281
  data = st.text_area("Input", height=10)
282
 
 
8
  import re
9
 
10
  import nltk
11
+ import yaml
12
 
13
  import pandas as pd
14
  import streamlit as st
 
172
 
173
  self.workflow = Workflow(tasks)
174
 
175
+ def yaml(self, components):
176
+ """
177
+ Builds a yaml string for components.
178
+
179
+ Args:
180
+ components: list of components to export to YAML
181
+
182
+ Returns:
183
+ YAML string
184
+ """
185
+
186
+ # pylint: disable=W0108
187
+ data = {}
188
+ tasks = []
189
+ name = None
190
+
191
+ for component in components:
192
+ component = dict(component)
193
+ name = wtype = component.pop("type")
194
+
195
+ if wtype == "summary":
196
+ data["summary"] = {"path": component.pop("path")}
197
+ tasks.append({"action": "summary"})
198
+
199
+ elif wtype == "segment":
200
+ data["segmentation"] = component
201
+ tasks.append({"action": "segmentation"})
202
+
203
+ elif wtype == "service":
204
+ config = dict(**component)
205
+ config["task"] = "service"
206
+ tasks.append(config)
207
+
208
+ elif wtype == "tabular":
209
+ data["tabular"] = component
210
+ tasks.append({"action": "tabular"})
211
+
212
+ elif wtype == "textract":
213
+ data["textractor"] = component
214
+ tasks.append({"action": "textractor", "task": "url"})
215
+
216
+ elif wtype == "transcribe":
217
+ data["transcription"] = {"path": component.pop("path")}
218
+ tasks.append({"action": "transcription", "task": "url"})
219
+
220
+ elif wtype == "translate":
221
+ data["translation"] = {}
222
+ tasks.append({"action": "translation", "args": list(component.values())})
223
+
224
+ elif wtype == "embeddings":
225
+ index = component.pop("index")
226
+ upsert = component.pop("upsert")
227
+
228
+ data["embeddings"] = component
229
+ data["writable"] = True
230
+
231
+ if index:
232
+ data["path"] = index
233
+
234
+ name = "index"
235
+ tasks.append({"action": "upsert" if upsert else "index"})
236
+
237
+ # Add in workflow
238
+ data["workflow"] = {name: {"tasks": tasks}}
239
+
240
+ return (name, yaml.dump(data))
241
+
242
  def find(self, key):
243
  """
244
  Lookup record from cached data by uid key.
 
339
  st.sidebar.markdown("---")
340
 
341
  with st.sidebar:
342
+ col1, col2 = st.columns(2)
343
+
344
  # Build or re-build workflow when build button clicked
345
+ build = col1.button("Build", help="Build the workflow and run within this application")
346
  if build:
347
  with st.spinner("Building workflow...."):
348
  self.build(components)
349
 
350
+ # Generate API configuration
351
+ _, config = self.yaml(components)
352
+
353
+ col2.download_button("Export", config, file_name="workflow.yml", mime="text/yaml", help="Export the API workflow as YAML")
354
+
355
  with st.expander("Data", expanded=not self.data):
356
  data = st.text_area("Input", height=10)
357