def visit_raise(self, node): func_node = node.frame() if not isinstance(func_node, astroid.FunctionDef): return expected_excs = utils.possible_exc_types(node) if not expected_excs: return if not func_node.doc: # If this is a property setter, # the property should have the docstring instead. property_ = utils.get_setters_property(func_node) if property_: func_node = property_ doc = utils.docstringify( func_node.doc, self.config.default_docstring_type, ) if not doc.is_valid(): if doc.doc: self._handle_no_raise_doc(expected_excs, func_node) return found_excs = doc.exceptions() missing_excs = expected_excs - found_excs self._add_raise_message(missing_excs, func_node)
def visit_raise(self, node): func_node = node.frame() if not isinstance(func_node, astroid.FunctionDef): return expected_excs = utils.possible_exc_types(node) if not expected_excs: return if not func_node.doc: # If this is a property setter, # the property should have the docstring instead. property_ = utils.get_setters_property(func_node) if property_: func_node = property_ doc = utils.docstringify(func_node.doc, self.config.default_docstring_type) if not doc.is_valid(): if doc.doc: self._handle_no_raise_doc(expected_excs, func_node) return found_excs_full_names = doc.exceptions() # Extract just the class name, e.g. "error" from "re.error" found_excs_class_names = { exc.split(".")[-1] for exc in found_excs_full_names } missing_excs = expected_excs - found_excs_class_names self._add_raise_message(missing_excs, func_node)
def visit_raise(self, node): func_node = node.frame() if not isinstance(func_node, astroid.FunctionDef): return expected_excs = utils.possible_exc_types(node) if not expected_excs: return if not func_node.doc: # If this is a property setter, # the property should have the docstring instead. property_ = utils.get_setters_property(func_node) if property_: func_node = property_ doc = utils.docstringify(func_node.doc) if not doc.is_valid(): if doc.doc: self._handle_no_raise_doc(expected_excs, func_node) return found_excs = doc.exceptions() missing_excs = expected_excs - found_excs self._add_raise_message(missing_excs, func_node)
def visit_raise(self, node): func_node = node.frame() if not isinstance(func_node, astroid.FunctionDef): return expected_excs = utils.possible_exc_types(node) if not expected_excs: return if not func_node.doc: # If this is a property setter, # the property should have the docstring instead. property_ = utils.get_setters_property(func_node) if property_: func_node = property_ doc = utils.docstringify(func_node.doc, self.config.default_docstring_type) if not doc.is_valid(): if doc.doc: self._handle_no_raise_doc(expected_excs, func_node) return found_excs_full_names = doc.exceptions() # Extract just the class name, e.g. "error" from "re.error" found_excs_class_names = {exc.split(".")[-1] for exc in found_excs_full_names} missing_excs = expected_excs - found_excs_class_names self._add_raise_message(missing_excs, func_node)
def visit_raise(self, node: nodes.Raise) -> None: func_node = node.frame(future=True) if not isinstance(func_node, astroid.FunctionDef): return expected_excs = utils.possible_exc_types(node) if not expected_excs: return if not func_node.doc_node: # If this is a property setter, # the property should have the docstring instead. property_ = utils.get_setters_property(func_node) if property_: func_node = property_ doc = utils.docstringify(func_node.doc_node, self.linter.namespace.default_docstring_type) if not doc.matching_sections(): if doc.doc: missing = {exc.name for exc in expected_excs} self._handle_no_raise_doc(missing, func_node) return found_excs_full_names = doc.exceptions() # Extract just the class name, e.g. "error" from "re.error" found_excs_class_names = { exc.split(".")[-1] for exc in found_excs_full_names } missing_excs = set() for expected in expected_excs: for found_exc in found_excs_class_names: if found_exc == expected.name: break if any(found_exc == ancestor.name for ancestor in expected.ancestors()): break else: missing_excs.add(expected.name) self._add_raise_message(missing_excs, func_node)