From 1310c0c63d3db1ff3eea36501f7d68958eae5f8b Mon Sep 17 00:00:00 2001 From: Simon Kelly Date: Fri, 27 Jul 2018 14:06:26 +0200 Subject: [PATCH 1/2] allow # in IDs --- jsonpath_rw/lexer.py | 2 +- tests/test_lexer.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/jsonpath_rw/lexer.py b/jsonpath_rw/lexer.py index aa28ff5..b85b425 100644 --- a/jsonpath_rw/lexer.py +++ b/jsonpath_rw/lexer.py @@ -61,7 +61,7 @@ def tokenize(self, string): t_ignore = ' \t' def t_ID(self, t): - r'[a-zA-Z_@][a-zA-Z0-9_@\-]*' + r'[a-zA-Z_@#][a-zA-Z0-9_@\-]*' t.type = self.reserved_words.get(t.value, 'ID') return t diff --git a/tests/test_lexer.py b/tests/test_lexer.py index 9d9fe38..481215d 100644 --- a/tests/test_lexer.py +++ b/tests/test_lexer.py @@ -53,6 +53,7 @@ def test_simple_inputs(self): self.assert_lex_equiv('`this`', [self.token('this', 'NAMED_OPERATOR')]) self.assert_lex_equiv('|', [self.token('|', '|')]) self.assert_lex_equiv('where', [self.token('where', 'WHERE')]) + self.assert_lex_equiv('a.#text', [self.token('a', 'ID'), self.token('.', '.'), self.token('#text', 'ID')]) def test_basic_errors(self): def tokenize(s): @@ -66,4 +67,4 @@ def tokenize(s): self.assertRaises(JsonPathLexerError, tokenize, '"`') self.assertRaises(JsonPathLexerError, tokenize, "'`") self.assertRaises(JsonPathLexerError, tokenize, '?') - self.assertRaises(JsonPathLexerError, tokenize, '$.foo.bar.#') + self.assertRaises(JsonPathLexerError, tokenize, '$.foo.bar.%') From 320deb5c3a4791b3024bc305f97d2b6c1a53936f Mon Sep 17 00:00:00 2001 From: Simon Kelly Date: Fri, 27 Jul 2018 15:16:49 +0200 Subject: [PATCH 2/2] fix python 3.2 build --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8c18230..3c55ece 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,10 @@ python: install: - "pip install ." - "pip install pytest" - - "pip install coverage coveralls" + - "pip install coveralls" + # Coveralls 4.0 doesn't support Python 3.2 + - if [ "$TRAVIS_PYTHON_VERSION" == "3.2" ]; then pip install coverage==3.7.1; fi + - if [ "$TRAVIS_PYTHON_VERSION" != "3.2" ]; then pip install coverage; fi script: coverage run setup.py test after_success: - coveralls