def _check_wrong_body_nodes(self, node: ast.ClassDef) -> None: for sub_node in node.body: if isinstance(sub_node, self._allowed_body_nodes): continue if is_doc_string(sub_node): continue self.add_violation(IncorrectClassBodyContentViolation(sub_node))
def _check_init_contents(self, node: ast.Module) -> None: if not self._is_init() or not node.body: return if not self.options.i_control_code: return if len(node.body) > 1: self.add_violation(InitModuleHasLogicViolation()) return if not is_doc_string(node.body[0]): self.add_violation(InitModuleHasLogicViolation())
def _check_expression( self, node: ast.Expr, is_first: bool = False, ) -> None: if isinstance(node.value, self._have_effect): return if is_first and is_doc_string(node): if isinstance(get_parent(node), self._have_doc_strings): return self.add_violation(StatementHasNoEffectViolation(node))