(self, node)
| 906 | boolop_precedence = {"and": _Precedence.AND, "or": _Precedence.OR} |
| 907 | |
| 908 | def visit_BoolOp(self, node): |
| 909 | operator = self.boolops[node.op.__class__.__name__] |
| 910 | operator_precedence = self.boolop_precedence[operator] |
| 911 | |
| 912 | def increasing_level_traverse(node): |
| 913 | nonlocal operator_precedence |
| 914 | operator_precedence = operator_precedence.next() |
| 915 | self.set_precedence(operator_precedence, node) |
| 916 | self.traverse(node) |
| 917 | |
| 918 | with self.require_parens(operator_precedence, node): |
| 919 | s = f" {operator} " |
| 920 | self.interleave(lambda: self.write(s), increasing_level_traverse, node.values) |
| 921 | |
| 922 | def visit_Attribute(self, node): |
| 923 | self.set_precedence(_Precedence.ATOM, node.value) |
nothing calls this directly
no test coverage detected