From 339647d61e880a819251f06d0acd0c781e16eabe Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Tue, 15 Nov 2022 11:27:56 -0300 Subject: [PATCH] better error messages (#2374) --- schema_doc.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/schema_doc.py b/schema_doc.py index c69f451d5..4cce753f7 100644 --- a/schema_doc.py +++ b/schema_doc.py @@ -620,9 +620,15 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): component_parts = split_text[0].split(".") if len(component_parts) == 3: - cv = get_component_file(self.app, component_parts[1])[ - component_parts[1] + "." + component_parts[0] - ][split_text[1].lower()][component_parts[2]] + try: + cv = get_component_file(self.app, component_parts[1])[ + component_parts[1] + "." + component_parts[0] + ][split_text[1].lower()][component_parts[2]] + except KeyError: + logger.warn( + f"In {self.docname} cannot found schema of {title_text}" + ) + cv = None if cv is not None: cv["docs"] = description self.props = self.find_props(cv.get("schema", {})) @@ -934,7 +940,12 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): # this is e.g. when a property has a list inside, and the list inside are the options. # just validate **prop_name** s3 = re.search(r"\* \*\*(\w*)\*\*:\s", name_type) - prop_name = s3.group(1) + if s3 is not None: + prop_name = s3.group(1) + else: + logger.info( + f"In '{self.docname} {self.previous_title_text} Invalid list format: {node.rawsource}" + ) param_type = None else: logger.info( @@ -1150,9 +1161,10 @@ def handle_component(app, doctree, docname): doctree.walkabout(v) except Exception as e: err_str = f"In {docname}.rst: {str(e)}" - logger.warning(err_str) - # print stack + # if you put a breakpoint here get call-stack in the console by entering + # import traceback # traceback.print_exc() + logger.warning(err_str) def build_finished(app, exception):