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.
Files changed (120) hide show
  1. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/PKG-INFO +1 -1
  2. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/__init__.py +1 -1
  3. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/tokens.py +17 -0
  4. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/tokens.py +17 -0
  5. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/.github/workflows/deploy-docs.yml +0 -0
  6. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/.github/workflows/deploy.yml +0 -0
  7. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/.gitignore +0 -0
  8. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/LICENSE +0 -0
  9. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/README.md +0 -0
  10. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/dax/formatter.md +0 -0
  11. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/dax/lexer.md +0 -0
  12. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/dax/parser.md +0 -0
  13. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/pq/formatter.md +0 -0
  14. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/pq/lexer.md +0 -0
  15. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/pq/parser.md +0 -0
  16. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/shared/lexer.md +0 -0
  17. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/shared/text_slice.md +0 -0
  18. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/api/shared/token.md +0 -0
  19. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/docs/index.md +0 -0
  20. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/docs/mkdocs.yml +0 -0
  21. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/base/__init__.py +0 -0
  22. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/base/lexer.py +0 -0
  23. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/base/tokens.py +0 -0
  24. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/__init__.py +0 -0
  25. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/__init__.py +0 -0
  26. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/_base.py +0 -0
  27. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/_utils.py +0 -0
  28. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/add_sub.py +0 -0
  29. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/add_sub_unary.py +0 -0
  30. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/array.py +0 -0
  31. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/column.py +0 -0
  32. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/comparison.py +0 -0
  33. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/concatenation.py +0 -0
  34. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/div_mul.py +0 -0
  35. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/exponent.py +0 -0
  36. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/function.py +0 -0
  37. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/hierarchy.py +0 -0
  38. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/identifier.py +0 -0
  39. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/ins.py +0 -0
  40. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/keyword.py +0 -0
  41. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/literal_number.py +0 -0
  42. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/literal_string.py +0 -0
  43. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/logical.py +0 -0
  44. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/measure.py +0 -0
  45. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/none.py +0 -0
  46. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/parens.py +0 -0
  47. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/returns.py +0 -0
  48. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/table.py +0 -0
  49. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/exprs/variable.py +0 -0
  50. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/formatter.py +0 -0
  51. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/lexer.py +0 -0
  52. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/main.py +0 -0
  53. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/parser.py +0 -0
  54. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/dax/utils.py +0 -0
  55. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/__init__.py +0 -0
  56. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/__init__.py +0 -0
  57. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/_base.py +0 -0
  58. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/_utils.py +0 -0
  59. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/add_sub.py +0 -0
  60. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/add_sub_unary.py +0 -0
  61. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/and_or_expr.py +0 -0
  62. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/array.py +0 -0
  63. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/arrow.py +0 -0
  64. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/column.py +0 -0
  65. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/comparison.py +0 -0
  66. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/concatenation.py +0 -0
  67. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/div_mul.py +0 -0
  68. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/each.py +0 -0
  69. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/ellipsis_expr.py +0 -0
  70. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/function.py +0 -0
  71. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/identifier.py +0 -0
  72. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/if_expr.py +0 -0
  73. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/is_expr.py +0 -0
  74. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/keyword.py +0 -0
  75. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/literal_number.py +0 -0
  76. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/literal_string.py +0 -0
  77. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/meta.py +0 -0
  78. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/negation.py +0 -0
  79. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/none.py +0 -0
  80. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/not_expr.py +0 -0
  81. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/parens.py +0 -0
  82. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/record.py +0 -0
  83. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/row.py +0 -0
  84. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/row_index.py +0 -0
  85. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/statement.py +0 -0
  86. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/try_expr.py +0 -0
  87. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/type_expr.py +0 -0
  88. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/exprs/variable.py +0 -0
  89. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/formatter.py +0 -0
  90. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/lexer.py +0 -0
  91. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/main.py +0 -0
  92. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pbi_parsers/pq/parser.py +0 -0
  93. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/pyproject.toml +0 -0
  94. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/__init__.py +0 -0
  95. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/__init__.py +0 -0
  96. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/__init__.py +0 -0
  97. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_add_sub.py +0 -0
  98. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_add_sub_unary.py +0 -0
  99. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_array.py +0 -0
  100. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_column.py +0 -0
  101. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_comparison.py +0 -0
  102. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_concatenation.py +0 -0
  103. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_div_mul.py +0 -0
  104. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_exponent.py +0 -0
  105. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_function.py +0 -0
  106. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_hierarchy.py +0 -0
  107. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_identifier.py +0 -0
  108. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_ins.py +0 -0
  109. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_keyword.py +0 -0
  110. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_literal_number.py +0 -0
  111. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_literal_string.py +0 -0
  112. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_logical.py +0 -0
  113. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_measure.py +0 -0
  114. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_parens.py +0 -0
  115. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_returns.py +0 -0
  116. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_table.py +0 -0
  117. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_exprs/test_variable.py +0 -0
  118. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_formatter/__init__.py +0 -0
  119. {pbi_parsers-0.8.1 → pbi_parsers-0.8.2}/tests/test_dax/test_formatter/test_basic.py +0 -0
  120. {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.1
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/
@@ -1,6 +1,6 @@
1
1
  from . import dax, pq
2
2
 
3
- __version__ = "0.8.1"
3
+ __version__ = "0.8.2"
4
4
 
5
5
 
6
6
  __all__ = [
@@ -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