MilanM commited on
Commit
65dde49
·
verified ·
1 Parent(s): 303f101

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +98 -41
app.py CHANGED
@@ -8,8 +8,7 @@ import marimo
8
  __generated_with = "0.13.4"
9
  app = marimo.App(
10
  width="full",
11
- app_title="ExcelSheetProcessor-9000",
12
- html_head_file="ExcelSheetProcessor-9000.html",
13
  )
14
 
15
 
@@ -181,15 +180,6 @@ def _(mo, prompt_stack):
181
  return
182
 
183
 
184
- @app.cell
185
- def _(mo, results_stack):
186
- ui_accordion_section_7 = mo.accordion(
187
- {"Section 7: **Run and View Results**": results_stack}
188
- )
189
- ui_accordion_section_7
190
- return
191
-
192
-
193
  @app.cell
194
  def _(client_instantiation_form, os):
195
  if client_instantiation_form.value:
@@ -338,8 +328,6 @@ def _(file, io, mo, os, pd):
338
 
339
  @app.cell
340
  def _(mo, table_dataframe_raw):
341
- _ = table_dataframe_raw
342
-
343
  if not table_dataframe_raw.empty:
344
  apply_header_readjustment = mo.ui.checkbox(label="Activate Header Adjustment")
345
  else:
@@ -348,9 +336,13 @@ def _(mo, table_dataframe_raw):
348
 
349
 
350
  @app.cell
351
- def _(apply_header_readjustment, mo, sheet_selector, table_dataframe_raw):
352
- _ = table_dataframe_raw
 
353
 
 
 
 
354
  if not table_dataframe_raw.empty:
355
  if apply_header_readjustment.value:
356
  header_row = mo.ui.number(
@@ -439,11 +431,10 @@ def _(
439
 
440
  @app.cell
441
  def _(mo, pd, table_column_names, table_dataframe):
442
- _ = table_dataframe
443
-
444
  if not table_dataframe.empty:
445
  center_column_text = {col: "center" for col in table_column_names}
446
  table = mo.ui.table(table_dataframe,
 
447
  initial_selection=[0],
448
  wrapped_columns=table_column_names,
449
  text_justify_columns=center_column_text,
@@ -462,8 +453,6 @@ def _(mo, pd, table_column_names, table_dataframe):
462
 
463
  @app.cell
464
  def _(create_parameter_table, table_column_names, table_dataframe):
465
- _ = table_dataframe
466
-
467
  if not table_dataframe.empty:
468
  column_selector = create_parameter_table(
469
  label="Select the Columns to Process",
@@ -590,8 +579,15 @@ def _(GenParams, ModelInference, ast, client, llm_parameters, selected_model):
590
 
591
 
592
  @app.cell
593
- def _(load_templates):
594
- template_folder = "./prompt_templates"
 
 
 
 
 
 
 
595
  templates = load_templates(template_folder)
596
  return (templates,)
597
 
@@ -603,8 +599,14 @@ def _(mo):
603
 
604
 
605
  @app.cell
606
- def _(mo, prompt_number_slider, template_selector_stack):
607
- prompt_setup_stack = mo.hstack([prompt_number_slider, template_selector_stack], justify="space-around")
 
 
 
 
 
 
608
  return (prompt_setup_stack,)
609
 
610
 
@@ -614,6 +616,35 @@ def _(mo):
614
  return get_pt_state, set_pt_state
615
 
616
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
617
  @app.cell
618
  def _(mo, prompt_number_slider, set_pt_state, templates):
619
  def update_state_from_templates(value):
@@ -635,18 +666,29 @@ def _(mo, prompt_number_slider, set_pt_state, templates):
635
  )
636
 
637
  template_selectors = [create_template_dropdowns(i) for i in range(1, prompt_number_slider.value+1)]
638
- template_selector_stack = mo.hstack(template_selectors, wrap=True, justify="start")
639
  return (template_selector_stack,)
640
 
641
 
642
  @app.cell
643
- def _(fields_to_process, mo, prompt_number_slider):
644
  if fields_to_process:
645
  variable_names = [key for key in fields_to_process[0].keys()
646
  if key != "_marimo_row_id" and key != "upload_a_file"]
647
  else:
648
  variable_names = []
649
-
 
 
 
 
 
 
 
 
 
 
 
650
  def create_stats_from_variables(variable_names):
651
  """
652
  Creates mo.stat objects for each variable name in the list.
@@ -654,7 +696,7 @@ def _(fields_to_process, mo, prompt_number_slider):
654
  Values display the variable name itself.
655
  """
656
  stats = []
657
-
658
  for i, var_name in enumerate(variable_names):
659
  stat = mo.stat(
660
  value=f"{{{var_name}}}",
@@ -662,23 +704,18 @@ def _(fields_to_process, mo, prompt_number_slider):
662
  bordered=True
663
  )
664
  stats.append(stat)
665
-
666
- return mo.sidebar(stats, width="525")
667
 
668
- def is_disabled(button_num):
669
- return prompt_number_slider.value < button_num
670
- return create_stats_from_variables, is_disabled, variable_names
671
 
672
 
673
  @app.cell
674
  def _(create_stats_from_variables, variable_names):
675
  if variable_names:
676
- prompt_input_variables = create_stats_from_variables(variable_names)
677
  else:
678
- prompt_input_variables = None
679
-
680
- prompt_input_variables
681
- return
682
 
683
 
684
  @app.cell
@@ -691,12 +728,12 @@ def _(get_pt_state, mo, prompt_number_slider):
691
 
692
  prompt_column_label = mo.ui.text(label=f"**Add output column name for Prompt {num}:**", value=f"Added Column {num}")
693
  prompt_editor = mo.ui.code_editor(value=get_template_content(num), language="python", min_height=300, theme="dark")
694
-
695
  return [
696
  prompt_column_label,
697
  prompt_editor
698
  ]
699
-
700
  prompts_raw = [create_prompt(i) for i in range(1, prompt_number_slider.value+1)]
701
  return (prompts_raw,)
702
 
@@ -842,9 +879,28 @@ def _(
842
 
843
 
844
  @app.cell
845
- def _(table_dataframe):
846
- _ = table_dataframe
 
 
 
 
 
 
 
 
 
 
847
 
 
 
 
 
 
 
 
 
 
848
  if not table_dataframe.empty:
849
  results_table = table_dataframe.copy()
850
  else:
@@ -868,6 +924,7 @@ def _(
868
  results_table_view = mo.ui.table(results_table)
869
  return (results_table_view,)
870
 
 
871
  @app.cell
872
  def _(mo, prompts_raw):
873
  prompts = [mo.vstack([prompt[0], prompt[1]]) for prompt in prompts_raw]
 
8
  __generated_with = "0.13.4"
9
  app = marimo.App(
10
  width="full",
11
+ app_title="watsonx-SheetProcessor-9000",
 
12
  )
13
 
14
 
 
180
  return
181
 
182
 
 
 
 
 
 
 
 
 
 
183
  @app.cell
184
  def _(client_instantiation_form, os):
185
  if client_instantiation_form.value:
 
328
 
329
  @app.cell
330
  def _(mo, table_dataframe_raw):
 
 
331
  if not table_dataframe_raw.empty:
332
  apply_header_readjustment = mo.ui.checkbox(label="Activate Header Adjustment")
333
  else:
 
336
 
337
 
338
  @app.cell
339
+ def _(mo):
340
+ show_variable_sidebar = mo.ui.checkbox(label="Show Sidebar with Input Variables", value=False)
341
+ return (show_variable_sidebar,)
342
 
343
+
344
+ @app.cell
345
+ def _(apply_header_readjustment, mo, sheet_selector, table_dataframe_raw):
346
  if not table_dataframe_raw.empty:
347
  if apply_header_readjustment.value:
348
  header_row = mo.ui.number(
 
431
 
432
  @app.cell
433
  def _(mo, pd, table_column_names, table_dataframe):
 
 
434
  if not table_dataframe.empty:
435
  center_column_text = {col: "center" for col in table_column_names}
436
  table = mo.ui.table(table_dataframe,
437
+ show_column_summaries=False,
438
  initial_selection=[0],
439
  wrapped_columns=table_column_names,
440
  text_justify_columns=center_column_text,
 
453
 
454
  @app.cell
455
  def _(create_parameter_table, table_column_names, table_dataframe):
 
 
456
  if not table_dataframe.empty:
457
  column_selector = create_parameter_table(
458
  label="Select the Columns to Process",
 
579
 
580
 
581
  @app.cell
582
+ def _(mo):
583
+ prompt_template_folders = get_subfolder_paths("watsonx Sheet Processor MNB/prompt_templates", depth=1)
584
+ prompt_template_model_paths = mo.ui.dropdown(options=prompt_template_folders, label="Prompt Template Variants *(Select Based on your Model)*")
585
+ return (prompt_template_model_paths,)
586
+
587
+
588
+ @app.cell
589
+ def _(load_templates, prompt_template_model_paths):
590
+ template_folder = str(prompt_template_model_paths.value)
591
  templates = load_templates(template_folder)
592
  return (templates,)
593
 
 
599
 
600
 
601
  @app.cell
602
+ def _(mo, prompt_number_slider, prompt_template_model_paths):
603
+ prompt_mechanics_stack = mo.vstack([prompt_number_slider, prompt_template_model_paths], align="start")
604
+ return (prompt_mechanics_stack,)
605
+
606
+
607
+ @app.cell
608
+ def _(mo, prompt_mechanics_stack, template_selector_stack):
609
+ prompt_setup_stack = mo.hstack([prompt_mechanics_stack, template_selector_stack], justify="space-around")
610
  return (prompt_setup_stack,)
611
 
612
 
 
616
  return get_pt_state, set_pt_state
617
 
618
 
619
+ @app.function
620
+ def get_subfolder_paths(base_path, depth=1):
621
+ """Lists subfolder paths up to specified depth.
622
+
623
+ Args:
624
+ base_path: Directory to search in
625
+ depth: Subdirectory levels to traverse (default: 1)
626
+
627
+ Returns:
628
+ Dict with folder names as keys and paths as values
629
+ """
630
+ import os
631
+
632
+ result = {}
633
+ if depth <= 0 or not os.path.isdir(base_path):
634
+ return result
635
+
636
+ for entry in os.scandir(base_path):
637
+ if entry.is_dir():
638
+ result[entry.name] = entry.path
639
+ if depth > 1:
640
+ # Recursively get subdirectories
641
+ subfolders = get_subfolder_paths(entry.path, depth - 1)
642
+ # Update result with subfolders
643
+ result.update(subfolders)
644
+
645
+ return result
646
+
647
+
648
  @app.cell
649
  def _(mo, prompt_number_slider, set_pt_state, templates):
650
  def update_state_from_templates(value):
 
666
  )
667
 
668
  template_selectors = [create_template_dropdowns(i) for i in range(1, prompt_number_slider.value+1)]
669
+ template_selector_stack = mo.vstack(template_selectors, align="start")
670
  return (template_selector_stack,)
671
 
672
 
673
  @app.cell
674
+ def _(fields_to_process):
675
  if fields_to_process:
676
  variable_names = [key for key in fields_to_process[0].keys()
677
  if key != "_marimo_row_id" and key != "upload_a_file"]
678
  else:
679
  variable_names = []
680
+ return (variable_names,)
681
+
682
+
683
+ @app.cell
684
+ def _(prompt_number_slider):
685
+ def is_disabled(button_num):
686
+ return prompt_number_slider.value < button_num
687
+ return (is_disabled,)
688
+
689
+
690
+ @app.cell
691
+ def _(mo):
692
  def create_stats_from_variables(variable_names):
693
  """
694
  Creates mo.stat objects for each variable name in the list.
 
696
  Values display the variable name itself.
697
  """
698
  stats = []
699
+
700
  for i, var_name in enumerate(variable_names):
701
  stat = mo.stat(
702
  value=f"{{{var_name}}}",
 
704
  bordered=True
705
  )
706
  stats.append(stat)
 
 
707
 
708
+ return mo.sidebar(stats, width="375")
709
+ return (create_stats_from_variables,)
 
710
 
711
 
712
  @app.cell
713
  def _(create_stats_from_variables, variable_names):
714
  if variable_names:
715
+ prompt_input_variables_sidebar = create_stats_from_variables(variable_names)
716
  else:
717
+ prompt_input_variables_sidebar = None
718
+ return (prompt_input_variables_sidebar,)
 
 
719
 
720
 
721
  @app.cell
 
728
 
729
  prompt_column_label = mo.ui.text(label=f"**Add output column name for Prompt {num}:**", value=f"Added Column {num}")
730
  prompt_editor = mo.ui.code_editor(value=get_template_content(num), language="python", min_height=300, theme="dark")
731
+
732
  return [
733
  prompt_column_label,
734
  prompt_editor
735
  ]
736
+
737
  prompts_raw = [create_prompt(i) for i in range(1, prompt_number_slider.value+1)]
738
  return (prompts_raw,)
739
 
 
879
 
880
 
881
  @app.cell
882
+ def _(mo, results_stack):
883
+ ui_accordion_section_7 = mo.accordion(
884
+ {"Section 7: **Run and View Results**": results_stack}
885
+ )
886
+ ui_accordion_section_7
887
+ return
888
+
889
+
890
+ @app.cell
891
+ def _(show_variable_sidebar):
892
+ show_variable_sidebar.right()
893
+ return
894
 
895
+
896
+ @app.cell
897
+ def _(prompt_input_variables_sidebar, show_variable_sidebar):
898
+ show_variable_sidebar.value is not False and prompt_input_variables_sidebar
899
+ return
900
+
901
+
902
+ @app.cell
903
+ def _(table_dataframe):
904
  if not table_dataframe.empty:
905
  results_table = table_dataframe.copy()
906
  else:
 
924
  results_table_view = mo.ui.table(results_table)
925
  return (results_table_view,)
926
 
927
+
928
  @app.cell
929
  def _(mo, prompts_raw):
930
  prompts = [mo.vstack([prompt[0], prompt[1]]) for prompt in prompts_raw]