diff --git a/findmyorder/handler/basic.py b/findmyorder/handler/basic.py index 662d1cd..dba01b7 100644 --- a/findmyorder/handler/basic.py +++ b/findmyorder/handler/basic.py @@ -43,20 +43,15 @@ async def identify_order( action, instrument """ - try: - action = ( - one_of(self.action_identifier, caseless=True) - .set_results_name("action") - .set_parse_action(pyparsing_common.upcase_tokens) - ) - instrument = Word(alphas + nums).set_results_name("instrument") - - order_grammar = action("action") + Optional(instrument, default=None) - - order = order_grammar.parse_string(instring=my_string, parse_all=False) - logger.debug("Order parsed {}", order) - return order.asDict() - - except Exception as error: - logger.error(error) - return error + action = ( + one_of(self.action_identifier, caseless=True) + .set_results_name("action") + .set_parse_action(pyparsing_common.upcase_tokens) + ) + instrument = Word(alphas + nums).set_results_name("instrument") + + order_grammar = action("action") + Optional(instrument, default=None) + + order = order_grammar.parse_string(instring=my_string, parse_all=False) + logger.debug("Order parsed {}", order) + return order.asDict() diff --git a/findmyorder/handler/handler.py b/findmyorder/handler/handler.py index 6da5c38..a328690 100644 --- a/findmyorder/handler/handler.py +++ b/findmyorder/handler/handler.py @@ -68,7 +68,7 @@ async def search(self, message: str) -> bool: # logger.debug("Action identifiers: {}", self.action_identifiers) if order_identifier in self.action_identifier: - logger.debug("Order identifier found in {}", order_identifier) + # logger.debug("Order identifier found in {}", order_identifier) return True return False diff --git a/findmyorder/handler/standard.py b/findmyorder/handler/standard.py index 717bcbe..efad238 100644 --- a/findmyorder/handler/standard.py +++ b/findmyorder/handler/standard.py @@ -48,49 +48,44 @@ async def identify_order( logger.debug("No order identified") return None else: - try: - action = ( - one_of(self.action_identifier, caseless=True) - .set_results_name("action") - .set_parse_action(pyparsing_common.upcase_tokens) - ) - instrument = Word(alphas + nums).set_results_name("instrument") - stop_loss = Combine( - Suppress(self.stop_loss_identifier) + Word(nums) - ).set_results_name("stop_loss") - take_profit = Combine( - Suppress(self.take_profit_identifier) + Word(nums) - ).set_results_name("take_profit") - quantity = Combine( - Suppress(self.quantity_identifier) - + Word(nums) - + Optional(Suppress("%")) - ).set_results_name("quantity") - order_type = one_of( - self.order_type_identifier, caseless=True - ).set_results_name("order_type") - leverage_type = one_of( - self.leverage_type_identifier, caseless=True - ).set_results_name("leverage_type") - comment = Combine( - Suppress(self.comment_identifier) + Word(alphas) - ).set_results_name("comment") + action = ( + one_of(self.action_identifier, caseless=True) + .set_results_name("action") + .set_parse_action(pyparsing_common.upcase_tokens) + ) + instrument = Word(alphas + nums).set_results_name("instrument") + stop_loss = Combine( + Suppress(self.stop_loss_identifier) + Word(nums) + ).set_results_name("stop_loss") + take_profit = Combine( + Suppress(self.take_profit_identifier) + Word(nums) + ).set_results_name("take_profit") + quantity = Combine( + Suppress(self.quantity_identifier) + + Word(nums) + + Optional(Suppress("%")) + ).set_results_name("quantity") + order_type = one_of( + self.order_type_identifier, caseless=True + ).set_results_name("order_type") + leverage_type = one_of( + self.leverage_type_identifier, caseless=True + ).set_results_name("leverage_type") + comment = Combine( + Suppress(self.comment_identifier) + Word(alphas) + ).set_results_name("comment") - order_grammar = ( - action("action") - + Optional(instrument, default=None) - + Optional(stop_loss, default=self.stop_loss) - + Optional(take_profit, default=self.take_profit) - + Optional(quantity, default=self.quantity) - + Optional(order_type, default=None) - + Optional(leverage_type, default=None) - + Optional(comment, default=None) - ) + order_grammar = ( + action("action") + + Optional(instrument, default=None) + + Optional(stop_loss, default=self.stop_loss) + + Optional(take_profit, default=self.take_profit) + + Optional(quantity, default=self.quantity) + + Optional(order_type, default=None) + + Optional(leverage_type, default=None) + + Optional(comment, default=None) + ) - order = order_grammar.parse_string(instring=my_string, parse_all=False) - logger.debug("Order parsed {}", order) - return order.asDict() - - except Exception as error: - logger.error(error) - return error + order = order_grammar.parse_string(instring=my_string, parse_all=False) + logger.debug("Order parsed {}", order) + return order.asDict() diff --git a/findmyorder/main.py b/findmyorder/main.py index ac63025..906f97e 100644 --- a/findmyorder/main.py +++ b/findmyorder/main.py @@ -49,11 +49,15 @@ def __init__( logger.info("FindMyOrder is disabled. No Parser will be created.") self.client_classes = self.get_all_client_classes() self.clients = [] - # Create a client for each client in settings.myllm + # Create a client for each client in settings for name, client_config in settings.findmyorder.items(): # logger.debug("client_config: {}", client_config) # Skip template and empty string client names - if name in ["", "template"] or not client_config.get("enabled"): + if ( + client_config is None + or name in ["", "template"] + or not client_config.get("enabled") + ): continue try: # Create the client diff --git a/tests/test_exception.py b/tests/test_exception.py index 426ff6f..8dcff53 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -20,7 +20,7 @@ def fmo(): @pytest.mark.asyncio -async def test_info(fmo): +async def test_exception(fmo): """Search Testing""" for client in fmo.clients: assert client is None