(self, node)
| 818 | return node |
| 819 | |
| 820 | def parse_test(self, node): |
| 821 | token = next(self.stream) |
| 822 | if self.stream.current.test('name:not'): |
| 823 | next(self.stream) |
| 824 | negated = True |
| 825 | else: |
| 826 | negated = False |
| 827 | name = self.stream.expect('name').value |
| 828 | while self.stream.current.type == 'dot': |
| 829 | next(self.stream) |
| 830 | name += '.' + self.stream.expect('name').value |
| 831 | dyn_args = dyn_kwargs = None |
| 832 | kwargs = [] |
| 833 | if self.stream.current.type == 'lparen': |
| 834 | args, kwargs, dyn_args, dyn_kwargs = self.parse_call(None) |
| 835 | elif (self.stream.current.type in ('name', 'string', 'integer', |
| 836 | 'float', 'lparen', 'lbracket', |
| 837 | 'lbrace') and not |
| 838 | self.stream.current.test_any('name:else', 'name:or', |
| 839 | 'name:and')): |
| 840 | if self.stream.current.test('name:is'): |
| 841 | self.fail('You cannot chain multiple tests with is') |
| 842 | args = [self.parse_primary()] |
| 843 | else: |
| 844 | args = [] |
| 845 | node = nodes.Test(node, name, args, kwargs, dyn_args, |
| 846 | dyn_kwargs, lineno=token.lineno) |
| 847 | if negated: |
| 848 | node = nodes.Not(node, lineno=token.lineno) |
| 849 | return node |
| 850 | |
| 851 | def subparse(self, end_tokens=None): |
| 852 | body = [] |
no test coverage detected