From ff55a0e0d6fb922ed9bde2f46d7f2c75d2cf1c77 Mon Sep 17 00:00:00 2001 From: Jason Thomas Date: Sun, 24 Dec 2023 14:58:08 -0700 Subject: [PATCH] Move openc3_script_sleep and fix wait() in python --- .../scripts/running_script.py | 7 +++--- openc3/lib/openc3/script/api_shared.rb | 11 +++++++++ openc3/lib/openc3/script/script.rb | 10 -------- openc3/python/openc3/script/__init__.py | 23 +++++++++++++++++++ openc3/python/openc3/script/api_shared.py | 17 ++++++++++---- openc3/python/openc3/script/telemetry.py | 2 +- .../python/openc3/utilities/script_shared.py | 8 ------- 7 files changed, 51 insertions(+), 27 deletions(-) diff --git a/openc3-cosmos-script-runner-api/scripts/running_script.py b/openc3-cosmos-script-runner-api/scripts/running_script.py index 8f7c473708..9911dded67 100644 --- a/openc3-cosmos-script-runner-api/scripts/running_script.py +++ b/openc3-cosmos-script-runner-api/scripts/running_script.py @@ -24,7 +24,7 @@ # sleep in a script - returns true if canceled mid sleep -def openc3_script_sleep(sleep_time=None): +def _openc3_script_sleep(sleep_time=None): if RunningScript.disconnect: return True @@ -73,11 +73,12 @@ def openc3_script_sleep(sleep_time=None): return False -openc3.utilities.script_shared.openc3_script_sleep = openc3_script_sleep +import openc3.script.api_shared + +setattr(openc3.script.api_shared, "openc3_script_sleep", _openc3_script_sleep) import os from io import StringIO -from inspect import getsourcefile import ast import json import uuid diff --git a/openc3/lib/openc3/script/api_shared.rb b/openc3/lib/openc3/script/api_shared.rb index 91d27aed85..1fcb6fd1f9 100644 --- a/openc3/lib/openc3/script/api_shared.rb +++ b/openc3/lib/openc3/script/api_shared.rb @@ -525,6 +525,17 @@ def require_utility(procedure_name) # Private implementation details ########################################################################### + # This must be here for custom microservices that might block. + # Overriden by running_script.rb for script sleep + def openc3_script_sleep(sleep_time = nil) + if sleep_time + sleep(sleep_time) + else + prompt("Press any key to continue...") + end + return false + end + # Creates a string with the parameters upcased def _upcase(target_name, packet_name, item_name) "#{target_name.upcase} #{packet_name.upcase} #{item_name.upcase}" diff --git a/openc3/lib/openc3/script/script.rb b/openc3/lib/openc3/script/script.rb index 7423d60224..63d50a6bd1 100644 --- a/openc3/lib/openc3/script/script.rb +++ b/openc3/lib/openc3/script/script.rb @@ -93,16 +93,6 @@ def shutdown_script $script_runner_api_server = nil end - # This isn't part of the public API because users should use wait() - def openc3_script_sleep(sleep_time = nil) - if sleep_time - sleep(sleep_time) - else - prompt("Press any key to continue...") - end - return false - end - # Internal method used in scripts when encountering a hazardous command def prompt_for_hazardous(target_name, cmd_name, hazardous_description) loop do diff --git a/openc3/python/openc3/script/__init__.py b/openc3/python/openc3/script/__init__.py index 689f67204e..7beec2375b 100644 --- a/openc3/python/openc3/script/__init__.py +++ b/openc3/python/openc3/script/__init__.py @@ -42,6 +42,29 @@ def disconnect_script(): # TODO: Add public apis equivalent from ruby script.rb + +def prompt( + string, + text_color: None, + background_color: None, + font_size: None, + font_family: None, + details: None, +): + print(f"{string}: ") + if details: + print(f"Details: {details}\n") + return input() + + +def step_mode(): + pass + + +def run_mode(): + pass + + ########################################################################### # END PUBLIC API ########################################################################### diff --git a/openc3/python/openc3/script/api_shared.py b/openc3/python/openc3/script/api_shared.py index 30d8843284..f2c9c4ee1e 100644 --- a/openc3/python/openc3/script/api_shared.py +++ b/openc3/python/openc3/script/api_shared.py @@ -20,14 +20,14 @@ import sys import time - from contextlib import contextmanager import openc3.script -from openc3.utilities.script_shared import openc3_script_sleep -from .telemetry import * from .exceptions import CheckError -from openc3.utilities.extract import * -from openc3.environment import * +from openc3.utilities.extract import ( + extract_fields_from_check_text, + extract_fields_from_tlm_text, +) +from openc3.environment import OPENC3_SCOPE DEFAULT_TLM_POLLING_RATE = 0.25 @@ -635,6 +635,13 @@ def get_max_output(): ########################################################################### +def openc3_script_sleep(sleep_time=None): + if sleep_time: + time.sleep(float(sleep_time)) + else: + input("Press any key to continue...") + + def _upcase(target_name, packet_name, item_name): """Creates a string with the parameters upcased""" return f"{target_name.upper()} {packet_name.upper()} {item_name.upper()}" diff --git a/openc3/python/openc3/script/telemetry.py b/openc3/python/openc3/script/telemetry.py index ecee6ebc75..063e54ca13 100644 --- a/openc3/python/openc3/script/telemetry.py +++ b/openc3/python/openc3/script/telemetry.py @@ -15,7 +15,7 @@ import time import openc3.script -from openc3.utilities.script_shared import openc3_script_sleep +from openc3.script.api_shared import openc3_script_sleep from openc3.environment import OPENC3_SCOPE diff --git a/openc3/python/openc3/utilities/script_shared.py b/openc3/python/openc3/utilities/script_shared.py index e570970092..63375ed881 100644 --- a/openc3/python/openc3/utilities/script_shared.py +++ b/openc3/python/openc3/utilities/script_shared.py @@ -14,14 +14,6 @@ # This file may also be used under the terms of a commercial license # if purchased from OpenC3, Inc. -import time - - -# Defined here but overriden by running_script.py -def openc3_script_sleep(sleep_time=None): - if sleep_time: - time.sleep(float(sleep_time)) - def prompt_for_hazardous(target_name, cmd_name, hazardous_description): """ """