pbi-parsers 0.8.2__tar.gz → 0.8.3__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.2 → pbi_parsers-0.8.3}/PKG-INFO +1 -1
  2. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/__init__.py +1 -1
  3. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/tokens.py +1 -0
  4. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/utils.py +28 -1
  5. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/tokens.py +1 -2
  6. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/.github/workflows/deploy-docs.yml +0 -0
  7. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/.github/workflows/deploy.yml +0 -0
  8. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/.gitignore +0 -0
  9. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/LICENSE +0 -0
  10. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/README.md +0 -0
  11. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/dax/formatter.md +0 -0
  12. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/dax/lexer.md +0 -0
  13. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/dax/parser.md +0 -0
  14. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/pq/formatter.md +0 -0
  15. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/pq/lexer.md +0 -0
  16. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/pq/parser.md +0 -0
  17. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/shared/lexer.md +0 -0
  18. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/shared/text_slice.md +0 -0
  19. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/api/shared/token.md +0 -0
  20. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/docs/index.md +0 -0
  21. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/docs/mkdocs.yml +0 -0
  22. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/base/__init__.py +0 -0
  23. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/base/lexer.py +0 -0
  24. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/base/tokens.py +0 -0
  25. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/__init__.py +0 -0
  26. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/__init__.py +0 -0
  27. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/_base.py +0 -0
  28. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/_utils.py +0 -0
  29. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/add_sub.py +0 -0
  30. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/add_sub_unary.py +0 -0
  31. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/array.py +0 -0
  32. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/column.py +0 -0
  33. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/comparison.py +0 -0
  34. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/concatenation.py +0 -0
  35. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/div_mul.py +0 -0
  36. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/exponent.py +0 -0
  37. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/function.py +0 -0
  38. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/hierarchy.py +0 -0
  39. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/identifier.py +0 -0
  40. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/ins.py +0 -0
  41. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/keyword.py +0 -0
  42. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/literal_number.py +0 -0
  43. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/literal_string.py +0 -0
  44. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/logical.py +0 -0
  45. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/measure.py +0 -0
  46. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/none.py +0 -0
  47. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/parens.py +0 -0
  48. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/returns.py +0 -0
  49. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/table.py +0 -0
  50. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/exprs/variable.py +0 -0
  51. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/formatter.py +0 -0
  52. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/lexer.py +0 -0
  53. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/main.py +0 -0
  54. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/dax/parser.py +0 -0
  55. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/__init__.py +0 -0
  56. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/__init__.py +0 -0
  57. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/_base.py +0 -0
  58. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/_utils.py +0 -0
  59. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/add_sub.py +0 -0
  60. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/add_sub_unary.py +0 -0
  61. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/and_or_expr.py +0 -0
  62. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/array.py +0 -0
  63. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/arrow.py +0 -0
  64. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/column.py +0 -0
  65. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/comparison.py +0 -0
  66. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/concatenation.py +0 -0
  67. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/div_mul.py +0 -0
  68. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/each.py +0 -0
  69. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/ellipsis_expr.py +0 -0
  70. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/function.py +0 -0
  71. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/identifier.py +0 -0
  72. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/if_expr.py +0 -0
  73. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/is_expr.py +0 -0
  74. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/keyword.py +0 -0
  75. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/literal_number.py +0 -0
  76. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/literal_string.py +0 -0
  77. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/meta.py +0 -0
  78. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/negation.py +0 -0
  79. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/none.py +0 -0
  80. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/not_expr.py +0 -0
  81. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/parens.py +0 -0
  82. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/record.py +0 -0
  83. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/row.py +0 -0
  84. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/row_index.py +0 -0
  85. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/statement.py +0 -0
  86. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/try_expr.py +0 -0
  87. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/type_expr.py +0 -0
  88. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/exprs/variable.py +0 -0
  89. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/formatter.py +0 -0
  90. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/lexer.py +0 -0
  91. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/main.py +0 -0
  92. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pbi_parsers/pq/parser.py +0 -0
  93. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/pyproject.toml +0 -0
  94. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/__init__.py +0 -0
  95. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/__init__.py +0 -0
  96. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/__init__.py +0 -0
  97. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_add_sub.py +0 -0
  98. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_add_sub_unary.py +0 -0
  99. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_array.py +0 -0
  100. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_column.py +0 -0
  101. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_comparison.py +0 -0
  102. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_concatenation.py +0 -0
  103. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_div_mul.py +0 -0
  104. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_exponent.py +0 -0
  105. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_function.py +0 -0
  106. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_hierarchy.py +0 -0
  107. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_identifier.py +0 -0
  108. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_ins.py +0 -0
  109. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_keyword.py +0 -0
  110. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_literal_number.py +0 -0
  111. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_literal_string.py +0 -0
  112. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_logical.py +0 -0
  113. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_measure.py +0 -0
  114. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_parens.py +0 -0
  115. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_returns.py +0 -0
  116. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_table.py +0 -0
  117. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_exprs/test_variable.py +0 -0
  118. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_formatter/__init__.py +0 -0
  119. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/tests/test_dax/test_formatter/test_basic.py +0 -0
  120. {pbi_parsers-0.8.2 → pbi_parsers-0.8.3}/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.2
3
+ Version: 0.8.3
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.2"
3
+ __version__ = "0.8.3"
4
4
 
5
5
 
6
6
  __all__ = [
@@ -40,6 +40,7 @@ class TokenType(Enum):
40
40
  UNQUOTED_IDENTIFIER = auto()
41
41
  VARIABLE = auto()
42
42
  WHITESPACE = auto()
43
+
43
44
  UNKNOWN = auto()
44
45
  """unknown is used when someone replaces a token with a str"""
45
46
 
@@ -4,7 +4,7 @@ import jinja2
4
4
  from colorama import Fore, Style
5
5
 
6
6
  from .exprs import Expression
7
- from .tokens import Token
7
+ from .tokens import Token, TokenType
8
8
 
9
9
  T = TypeVar("T", bound=Expression)
10
10
 
@@ -118,3 +118,30 @@ def highlight_section(node: Expression | Token | list[Token] | list[Expression])
118
118
  position = node.position()
119
119
  full_text = node.text_slice.full_text if isinstance(node, Token) else node.full_text()
120
120
  return Context(position, full_text)
121
+
122
+
123
+ def get_inner_text(tok: Token) -> str:
124
+ """Returns the inner text of a token, stripping any surrounding quotes or brackets.
125
+
126
+ Args:
127
+ tok (Token): The token to extract inner text from.
128
+
129
+ Returns:
130
+ str: The inner text of the token.
131
+
132
+ Raises:
133
+ ValueError: If the token type does not support inner text extraction.
134
+
135
+ """
136
+ if tok.tok_type in {
137
+ TokenType.BRACKETED_IDENTIFIER,
138
+ TokenType.SINGLE_QUOTED_IDENTIFIER,
139
+ }:
140
+ return tok.text[1:-1]
141
+ if tok.tok_type in {
142
+ TokenType.STRING_LITERAL,
143
+ TokenType.UNQUOTED_IDENTIFIER,
144
+ }:
145
+ return tok.text
146
+ msg = f"Token type {tok.tok_type} does not have inner text"
147
+ raise ValueError(msg)
@@ -2,8 +2,7 @@ from dataclasses import dataclass
2
2
  from enum import Enum
3
3
 
4
4
  from pbi_parsers.base import BaseToken
5
-
6
- from ..base.tokens import TextSlice
5
+ from pbi_parsers.base.tokens import TextSlice
7
6
 
8
7
 
9
8
  class TokenType(Enum):
File without changes
File without changes
File without changes
File without changes
File without changes