Skip to content

Commit 0357637

Browse files
authored
Concurrency & spinner fix (#141)
* demo service wip * Removed verbose logic for spinner * Close open spinners * pyproject
1 parent 2d31cfa commit 0357637

13 files changed

Lines changed: 69 additions & 82 deletions

File tree

openad/api.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ def __init__(self, name="No Name"):
2222
# import openad.app.main as main_app
2323

2424
self.main_app = self._load_main()
25-
self.main_app.GLOBAL_SETTINGS["VERBOSE"] = False
2625
self.name = name
2726

2827
def _load_main(self):

openad/app/global_var_lib.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,6 @@
4747
# - web: not yet used
4848
"display": None,
4949
#
50-
# Setting verbose to false will hide spinners
51-
# and some other non-essential output
52-
# Todo: this is diplocate of "display" is "notebook" (to be confirmed)
53-
"VERBOSE": True,
54-
#
5550
# The width in characters we limit the printed output to.
5651
"max_print_width": 150,
5752
#

openad/core/grammar.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,8 @@
4545

4646
# Helpers
4747
from openad.helpers.general import is_notebook_mode
48-
from openad.helpers.output import output_error, output_text
48+
from openad.helpers.output import output_error
4949
from openad.helpers.output_msgs import msg
50-
from openad.helpers.spinner import spinner
5150
from openad.openad_model_plugin.openad_model_toolkit import service_grammar_add
5251

5352
from openad.openad_model_plugin.catalog_model_services import get_cataloged_service_defs, service_catalog_grammar
@@ -1031,8 +1030,6 @@ def create_statements(cmd_pointer):
10311030

10321031
# cmd_pointer.current_statements.extend(service_statements)
10331032

1034-
spinner.stop() # Spinner may be started from within get_cataloged_service_defs -> get_short_status -> maybe_refresh_auth
1035-
10361033
cmd_pointer.current_help.help_model_services.clear()
10371034
cmd_pointer.current_help.help_model_services.extend(temp_help)
10381035
cmd_pointer.current_help.reset_help()
@@ -1410,7 +1407,11 @@ def output_train_statements(cmd_pointer):
14101407
for training_file in glob.glob(
14111408
os.path.expanduser(str(os.path.expanduser(cmd_pointer.home_dir + "/prompt_train/")) + "/*")
14121409
):
1413-
os.remove(training_file)
1410+
# Fail silently when runnning concurrent sessions
1411+
try:
1412+
os.remove(training_file)
1413+
except Exception: # pylint: disable=broad-except
1414+
pass
14141415

14151416
while i < len(grammar_help):
14161417
training_statements.append(

openad/helpers/spinner.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from time import sleep
1717
from openad.helpers.general import is_notebook_mode
1818
from openad.helpers.output import output_text
19+
from openad.app.global_var_lib import GLOBAL_SETTINGS
1920

2021

2122
if is_notebook_mode():
@@ -25,13 +26,11 @@
2526

2627

2728
class Spinner(Halo):
28-
verbose = True
2929

30-
def __init__(self, verbose=True):
31-
self.verbose = verbose
30+
def __init__(self):
3231

3332
# Fancy spinner, but requires more CPU, blocking the main thread
34-
# To do: see is separating thread for spinner resolves this
33+
# To do: see if separating thread for spinner resolves this
3534
wave_spinner = {
3635
"interval": 700,
3736
"frames": [
@@ -47,7 +46,7 @@ def __init__(self, verbose=True):
4746
],
4847
}
4948

50-
if self.verbose is True:
49+
if GLOBAL_SETTINGS["display"] != "api":
5150
super().__init__(spinner="triangle", color="white", interval=700)
5251

5352
# Fancy spinner
@@ -57,7 +56,7 @@ def __init__(self, verbose=True):
5756
# https://github.com/sindresorhus/cli-spinners/blob/dac4fc6571059bb9e9bc204711e9dfe8f72e5c6f/spinners.json
5857

5958
def start(self, text=None, no_format=False):
60-
if self.verbose is True:
59+
if GLOBAL_SETTINGS["display"] != "api":
6160
if no_format:
6261
text = output_text(text, return_val=True, jup_return_format="plain") if text else None
6362
else:
@@ -67,24 +66,24 @@ def start(self, text=None, no_format=False):
6766
super().start(text)
6867

6968
def succeed(self, *args, **kwargs):
70-
if self.verbose is True:
69+
if GLOBAL_SETTINGS["display"] != "api":
7170
return super().succeed(*args, **kwargs)
7271

7372
def info(self, *args, **kwargs):
74-
if self.verbose is True:
73+
if GLOBAL_SETTINGS["display"] != "api":
7574
super().info(*args, **kwargs)
7675
return super().start(*args, **kwargs)
7776

7877
def warn(self, *args, **kwargs):
79-
if self.verbose is True:
78+
if GLOBAL_SETTINGS["display"] != "api":
8079
return super().warn(*args, **kwargs)
8180

8281
def fail(self, *args, **kwargs):
83-
if self.verbose is True:
82+
if GLOBAL_SETTINGS["display"] != "api":
8483
return super().fail(*args, **kwargs)
8584

8685
def stop(self):
87-
if self.verbose is True:
86+
if GLOBAL_SETTINGS["display"] != "api":
8887
return super().stop()
8988

9089
def countdown(
@@ -108,15 +107,15 @@ def countdown(
108107
"""
109108

110109
msg = msg or "Waiting {sec} seconds before retrying"
111-
spinner.start(msg.format(sec=seconds))
110+
self.start(msg.format(sec=seconds))
112111
sleep(1)
113112
if seconds > 1:
114113
self.countdown(seconds - 1, msg, stop_msg)
115114
else:
116115
if stop_msg:
117-
spinner.start(stop_msg)
116+
self.start(stop_msg)
118117
else:
119-
spinner.stop()
118+
self.stop()
120119
return True
121120

122121

openad/llm_assist/llm_interface.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
from openad.helpers.credentials import write_credentials, get_credentials
1818
from openad.app.global_var_lib import GLOBAL_SETTINGS
19-
from openad.helpers.spinner import Spinner
19+
from openad.helpers.spinner import spinner
2020

2121
# Constants
2222
TRAINING_LLM_DIR = "/prompt_train/"
@@ -127,23 +127,22 @@ def how_do_i(cmd_pointer, parser):
127127
else:
128128
from halo import Halo # pylint: disable=import-outside-toplevel
129129

130-
newspin = Spinner(GLOBAL_SETTINGS["VERBOSE"])
131-
newspin.start("Processing Request ")
130+
spinner.start("Processing Request ")
132131
# Now we are asking the prompt a Question
133132

134133
try:
135134
# text = cmd_pointer.llm_handle.how_to_search(CHAT_PRIMER + " ".join(parser["Chat_String"]) + CHAT_PRIMER_SUFFIX)
136135
text = cmd_pointer.llm_handle.how_to_search(CHAT_PRIMER + " ".join(parser["Chat_String"]))
137136
except Exception as e:
138-
newspin.fail("Running Request Failed")
137+
spinner.fail("Running Request Failed")
139138
output_text(
140139
"Unable to Execute request. check LLM credentials and or Connectivity",
141140
return_val=False,
142141
pad=1,
143142
edge=True,
144143
)
145144
return False
146-
newspin.succeed("See Answer Below.")
145+
spinner.succeed("See Answer Below.")
147146
text = clean_up_llm_text(cmd_pointer, text)
148147

149148
if GLOBAL_SETTINGS["display"] == "notebook":

openad/openad_model_plugin/catalog_model_services.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ def get_cataloged_service_defs() -> Dict[str, dict]:
143143
logger.warning(f"remote service defs not found, sevice not available | {name=}")
144144
service_definitions[name] = remote_definitions
145145

146+
spinner.stop()
146147
return service_definitions
147148

148149

@@ -1217,7 +1218,6 @@ def service_catalog_grammar(statements: list, help: list):
12171218
- <cmd>model service demo</cmd>
12181219
- <cmd>model service demo restart</cmd>
12191220
- <cmd>model service demo debug</cmd>
1220-
12211221
""",
12221222
)
12231223
)

openad/openad_model_plugin/openad_model_toolkit.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@
1919
from openad.openad_model_plugin.catalog_model_services import Dispatcher
2020
from openad.app.global_var_lib import GLOBAL_SETTINGS
2121
from openad.smols.smol_batch_files import merge_molecule_property_data
22-
from openad.helpers.spinner import Spinner
23-
24-
spinner = Spinner(GLOBAL_SETTINGS["VERBOSE"])
22+
from openad.helpers.spinner import spinner
2523

2624
from pyparsing import ( # replaceWith,; Combine,; pyparsing_test,; ParseException,
2725
CaselessKeyword,

openad/openad_model_plugin/services.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,6 @@ def get_remote_service_definitions(self, name: str) -> list | None:
369369
# @auth
370370
def refresh_remote_service(self, service_name, endpoint, auth_token) -> bool:
371371
"""Refresh remote service with new auth token"""
372-
output_warning(f"Refreshing remote service: {service_name}")
373372
logger.debug(f"refreshing remote service | {service_name=}")
374373
if service_name not in self.list():
375374
output_error(f"Service <yellow>{service_name}</yellow> not found in catalog")
@@ -447,6 +446,7 @@ def maybe_refresh_auth(self, service_name, service_data):
447446
update_lookup_table(auth_group=auth_group_name, service=service_name, api_key=auth_token)
448447
elif "authorization" in params_lower:
449448
self.refresh_remote_service(service_name, endpoint, auth_token)
449+
spinner.stop()
450450

451451
def get_service_cache(self) -> LruCache[dict]:
452452
return REMOTE_SERVICES_CACHE

openad/smols/smol_batch_files.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from openad.app.global_var_lib import GLOBAL_SETTINGS
2020
from openad.helpers.output import output_error, output_warning, output_success, output_text
2121
from openad.helpers.output_msgs import msg
22-
from openad.helpers.spinner import Spinner
22+
from openad.helpers.spinner import spinner
2323
from openad.helpers.paths import parse_path
2424
from openad.plugins.style_parser import style
2525

@@ -235,7 +235,6 @@ def _enrich_with_pubchem_data(cmd_pointer, molset):
235235

236236
output_molset = []
237237

238-
spinner = Spinner(GLOBAL_SETTINGS["VERBOSE"])
239238
spinner.start("Fetching from PubChem")
240239

241240
for i, smol in enumerate(molset):

openad/user_toolkits/RXN/fn_reactions/fn_predict_reaction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def predict_reaction(inputs: dict, cmd_pointer):
164164

165165
output_text("<green>Reaction:</green> " + sources + " ----> " + x_y, return_val=False)
166166
output_text("<green>Confidence:</green> " + str(confidence), return_val=False)
167-
if GLOBAL_SETTINGS["display"] == "notebook" or GLOBAL_SETTINGS["VERBOSE"] == False:
167+
if GLOBAL_SETTINGS["display"] == "notebook" or GLOBAL_SETTINGS["display"] == "api":
168168
return get_reaction_from_smiles(predict_reaction_results["response"]["payload"]["attempts"][0]["smiles"])
169169
else:
170170
output_text("", return_val=False)

0 commit comments

Comments
 (0)