rmm commited on
Commit
94698a8
·
1 Parent(s): be5e8dd

chore: moved all session state init to relevant modules

Browse files
src/classifier/classifier_image.py CHANGED
@@ -12,6 +12,17 @@ from utils.grid_maker import gridder
12
  from utils.metadata_handler import metadata2md
13
  from input.input_observation import InputObservation
14
 
 
 
 
 
 
 
 
 
 
 
 
15
  def add_classifier_header() -> None:
16
  """
17
  Add brief explainer text about cetacean classification to the tab
 
12
  from utils.metadata_handler import metadata2md
13
  from input.input_observation import InputObservation
14
 
15
+ def init_classifier_session_states() -> None:
16
+ '''
17
+ Initialise the session state variables used in classification
18
+ '''
19
+ if "classify_whale_done" not in st.session_state:
20
+ st.session_state.classify_whale_done = {}
21
+
22
+ if "whale_prediction1" not in st.session_state:
23
+ st.session_state.whale_prediction1 = {}
24
+
25
+
26
  def add_classifier_header() -> None:
27
  """
28
  Add brief explainer text about cetacean classification to the tab
src/input/input_handling.py CHANGED
@@ -370,6 +370,10 @@ def init_input_data_session_states() -> None:
370
  if "files" not in st.session_state:
371
  st.session_state.files = {}
372
 
 
 
 
 
373
 
374
  def add_input_UI_elements() -> None:
375
  '''
 
370
  if "files" not in st.session_state:
371
  st.session_state.files = {}
372
 
373
+ if "public_observations" not in st.session_state:
374
+ st.session_state.public_observations = {}
375
+
376
+
377
 
378
  def add_input_UI_elements() -> None:
379
  '''
src/main.py CHANGED
@@ -22,12 +22,11 @@ from input.input_handling import dbg_show_observation_hashes
22
 
23
  from maps.alps_map import present_alps_map
24
  from maps.obs_map import present_obs_map
25
- from utils.st_logs import setup_logging, parse_log_buffer
26
- from utils.workflow_state import WorkflowFSM, FSM_STATES
27
- from utils.workflow_ui import refresh_progress_display, init_workflow_viz
28
  from hf_push_observations import push_all_observations
29
 
30
- from classifier.classifier_image import cetacean_just_classify, cetacean_show_results_and_review, cetacean_show_results
31
  from classifier.classifier_hotdog import hotdog_classify
32
 
33
 
@@ -55,29 +54,17 @@ g_logger.setLevel(LOG_LEVEL)
55
  st.set_page_config(layout="wide")
56
 
57
  # initialise various session state variables
58
- if "handler" not in st.session_state:
59
- st.session_state['handler'] = setup_logging()
60
-
61
-
62
- if "public_observations" not in st.session_state:
63
- st.session_state.public_observations = {}
64
-
65
- if "classify_whale_done" not in st.session_state:
66
- st.session_state.classify_whale_done = {}
67
-
68
- if "whale_prediction1" not in st.session_state:
69
- st.session_state.whale_prediction1 = {}
70
 
 
71
  if "tab_log" not in st.session_state:
72
  st.session_state.tab_log = None
73
 
74
- if "workflow_fsm" not in st.session_state:
75
- # create and init the state machine
76
- st.session_state.workflow_fsm = WorkflowFSM(FSM_STATES)
77
-
78
  init_input_data_session_states()
79
  init_input_container_states()
80
  init_workflow_viz()
 
81
 
82
 
83
 
 
22
 
23
  from maps.alps_map import present_alps_map
24
  from maps.obs_map import present_obs_map
25
+ from utils.st_logs import parse_log_buffer, init_logging_session_states
26
+ from utils.workflow_ui import refresh_progress_display, init_workflow_viz, init_workflow_session_states
 
27
  from hf_push_observations import push_all_observations
28
 
29
+ from classifier.classifier_image import cetacean_just_classify, cetacean_show_results_and_review, cetacean_show_results, init_classifier_session_states
30
  from classifier.classifier_hotdog import hotdog_classify
31
 
32
 
 
54
  st.set_page_config(layout="wide")
55
 
56
  # initialise various session state variables
57
+ init_logging_session_states() # logging should be early
58
+ init_workflow_session_states()
 
 
 
 
 
 
 
 
 
 
59
 
60
+ # TODO: this is obselete, now we have the st_logs functionality.
61
  if "tab_log" not in st.session_state:
62
  st.session_state.tab_log = None
63
 
 
 
 
 
64
  init_input_data_session_states()
65
  init_input_container_states()
66
  init_workflow_viz()
67
+ init_classifier_session_states()
68
 
69
 
70
 
src/utils/st_logs.py CHANGED
@@ -100,6 +100,16 @@ class StreamlitLogHandler(logging.Handler):
100
  self.log_area.empty() # Clear previous logs
101
  self.buffer.clear()
102
 
 
 
 
 
 
 
 
 
 
 
103
  # Set up logging to capture all info level logs from the root logger
104
  @st.cache_resource
105
  def setup_logging(level:int=logging.INFO, buffer_len:int=15) -> StreamlitLogHandler:
@@ -126,6 +136,7 @@ def setup_logging(level:int=logging.INFO, buffer_len:int=15) -> StreamlitLogHand
126
  # st.session_state['handler'] = handler
127
  return handler
128
 
 
129
  def parse_log_buffer(log_contents: deque) -> List[dict]:
130
  """
131
  Convert log buffer to a list of dictionaries for use with a streamlit datatable.
 
100
  self.log_area.empty() # Clear previous logs
101
  self.buffer.clear()
102
 
103
+
104
+ def init_logging_session_states():
105
+ """
106
+ Initialise the session state variables for logging.
107
+ """
108
+
109
+ if "handler" not in st.session_state:
110
+ st.session_state['handler'] = setup_logging()
111
+
112
+
113
  # Set up logging to capture all info level logs from the root logger
114
  @st.cache_resource
115
  def setup_logging(level:int=logging.INFO, buffer_len:int=15) -> StreamlitLogHandler:
 
136
  # st.session_state['handler'] = handler
137
  return handler
138
 
139
+
140
  def parse_log_buffer(log_contents: deque) -> List[dict]:
141
  """
142
  Convert log buffer to a list of dictionaries for use with a streamlit datatable.
src/utils/workflow_ui.py CHANGED
@@ -1,4 +1,14 @@
1
  import streamlit as st
 
 
 
 
 
 
 
 
 
 
2
 
3
  def refresh_progress_display() -> None:
4
  """
 
1
  import streamlit as st
2
+ from utils.workflow_state import WorkflowFSM, FSM_STATES
3
+
4
+ def init_workflow_session_states():
5
+ """
6
+ Initialise the session state variables for the workflow state machine
7
+ """
8
+
9
+ if "workflow_fsm" not in st.session_state:
10
+ # create and init the state machine
11
+ st.session_state.workflow_fsm = WorkflowFSM(FSM_STATES)
12
 
13
  def refresh_progress_display() -> None:
14
  """