pbi-parsers 0.8.1__tar.gz → 0.8.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/PKG-INFO +1 -1
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/__init__.py +1 -1
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/tokens.py +17 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/tokens.py +17 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/.github/workflows/deploy-docs.yml +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/.github/workflows/deploy.yml +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/.gitignore +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/LICENSE +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/README.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/dax/formatter.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/dax/lexer.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/dax/parser.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/pq/formatter.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/pq/lexer.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/pq/parser.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/shared/lexer.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/shared/text_slice.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/shared/token.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/index.md +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/mkdocs.yml +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/base/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/base/lexer.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/base/tokens.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/_base.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/_utils.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/add_sub.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/add_sub_unary.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/array.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/column.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/comparison.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/concatenation.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/div_mul.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/exponent.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/function.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/hierarchy.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/identifier.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/ins.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/keyword.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/literal_number.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/literal_string.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/logical.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/measure.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/none.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/parens.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/returns.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/table.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/variable.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/formatter.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/lexer.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/main.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/parser.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/utils.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/_base.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/_utils.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/add_sub.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/add_sub_unary.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/and_or_expr.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/array.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/arrow.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/column.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/comparison.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/concatenation.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/div_mul.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/each.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/ellipsis_expr.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/function.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/identifier.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/if_expr.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/is_expr.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/keyword.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/literal_number.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/literal_string.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/meta.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/negation.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/none.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/not_expr.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/parens.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/record.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/row.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/row_index.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/statement.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/try_expr.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/type_expr.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/variable.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/formatter.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/lexer.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/main.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/parser.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pyproject.toml +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_add_sub.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_add_sub_unary.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_array.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_column.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_comparison.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_concatenation.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_div_mul.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_exponent.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_function.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_hierarchy.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_identifier.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_ins.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_keyword.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_literal_number.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_literal_string.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_logical.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_measure.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_parens.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_returns.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_table.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_variable.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_formatter/__init__.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_formatter/test_basic.py +0 -0
- {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_lexer.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pbi_parsers
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.2
|
4
4
|
Summary: Power BI lexer, parsers, and formatters for DAX and M (Power Query) languages
|
5
5
|
Project-URL: Homepage, https://github.com/douglassimonsen/pbi_parsers
|
6
6
|
Project-URL: Documentation, https://douglassimonsen.github.io/pbi_parsers/
|
@@ -2,6 +2,7 @@ from dataclasses import dataclass
|
|
2
2
|
from enum import Enum, auto
|
3
3
|
|
4
4
|
from pbi_parsers.base import BaseToken
|
5
|
+
from pbi_parsers.base.tokens import TextSlice
|
5
6
|
|
6
7
|
|
7
8
|
class TokenType(Enum):
|
@@ -39,6 +40,8 @@ class TokenType(Enum):
|
|
39
40
|
UNQUOTED_IDENTIFIER = auto()
|
40
41
|
VARIABLE = auto()
|
41
42
|
WHITESPACE = auto()
|
43
|
+
UNKNOWN = auto()
|
44
|
+
"""unknown is used when someone replaces a token with a str"""
|
42
45
|
|
43
46
|
|
44
47
|
KEYWORD_MAPPING = {
|
@@ -52,3 +55,17 @@ KEYWORD_MAPPING = {
|
|
52
55
|
@dataclass
|
53
56
|
class Token(BaseToken):
|
54
57
|
tok_type: TokenType = TokenType.EOF
|
58
|
+
|
59
|
+
@staticmethod
|
60
|
+
def from_str(value: str, tok_type: TokenType = TokenType.UNKNOWN) -> "Token":
|
61
|
+
tok_type = KEYWORD_MAPPING.get(value, tok_type)
|
62
|
+
return Token(
|
63
|
+
tok_type=tok_type,
|
64
|
+
text_slice=TextSlice(value, 0, len(value)),
|
65
|
+
)
|
66
|
+
|
67
|
+
def add_token_before(self, text: str, tok_type: TokenType) -> None:
|
68
|
+
super().add_token_before(text, tok_type)
|
69
|
+
|
70
|
+
def add_token_after(self, text: str, tok_type: TokenType) -> None:
|
71
|
+
super().add_token_after(text, tok_type)
|
@@ -3,6 +3,8 @@ from enum import Enum
|
|
3
3
|
|
4
4
|
from pbi_parsers.base import BaseToken
|
5
5
|
|
6
|
+
from ..base.tokens import TextSlice
|
7
|
+
|
6
8
|
|
7
9
|
class TokenType(Enum):
|
8
10
|
LET = 1
|
@@ -52,12 +54,27 @@ class TokenType(Enum):
|
|
52
54
|
IS = 46
|
53
55
|
AS = 47
|
54
56
|
EXCLAMATION_POINT = 48
|
57
|
+
UNKNOWN = 99
|
58
|
+
"""unknown is used when someone replaces a token with a str"""
|
55
59
|
|
56
60
|
|
57
61
|
@dataclass
|
58
62
|
class Token(BaseToken):
|
59
63
|
tok_type: TokenType = TokenType.EOF
|
60
64
|
|
65
|
+
@staticmethod
|
66
|
+
def from_str(value: str, tok_type: TokenType = TokenType.UNKNOWN) -> "Token":
|
67
|
+
return Token(
|
68
|
+
tok_type=tok_type,
|
69
|
+
text_slice=TextSlice(value, 0, len(value)),
|
70
|
+
)
|
71
|
+
|
72
|
+
def add_token_before(self, text: str, tok_type: TokenType) -> None:
|
73
|
+
super().add_token_before(text, tok_type)
|
74
|
+
|
75
|
+
def add_token_after(self, text: str, tok_type: TokenType) -> None:
|
76
|
+
super().add_token_after(text, tok_type)
|
77
|
+
|
61
78
|
|
62
79
|
# These are tokens that could also be used as identifiers in expressions.
|
63
80
|
TEXT_TOKENS = (
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|