pbi-parsers 0.8.1__py3-none-any.whl → 0.8.2__py3-none-any.whl

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/__init__.py CHANGED
@@ -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__ = [
pbi_parsers/dax/tokens.py CHANGED
@@ -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)
pbi_parsers/pq/tokens.py CHANGED
@@ -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 = (
@@ -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,4 +1,4 @@
1
- pbi_parsers/__init__.py,sha256=ljbk7gxiajzYkx2vu3YTjMDWJjYoFMUhfrwtK2iJbI4,91
1
+ pbi_parsers/__init__.py,sha256=o6tdbz0lucvp3ShZEGQdvolSfiDl90As5VtF8yWSzBc,91
2
2
  pbi_parsers/base/__init__.py,sha256=U7QpzFFD9A4wK3ZHin6xg5fPgTca0y5KC-O7nrZ-flM,115
3
3
  pbi_parsers/base/lexer.py,sha256=Rl2cWlySJblFHvwW8oMVAjnCh83Zjo4N7jW3pkRZZO0,4335
4
4
  pbi_parsers/base/tokens.py,sha256=c1PIAU5oRxZbI74SY5KT3AZ3WrcukzXtuiLPrZU4f2o,7017
@@ -7,7 +7,7 @@ pbi_parsers/dax/formatter.py,sha256=jOFnwcgQGIzsmi5sfkKoB_pFEGjDPd8E_pwMPwudmy4,
7
7
  pbi_parsers/dax/lexer.py,sha256=2_pERJSrSYd8VujOe9TxJa9R2Ex8mvP-bCotH7uVBZY,8025
8
8
  pbi_parsers/dax/main.py,sha256=FG35XCAPEooXoJShSgOnmQ0py-h_MPtOfnLpQWy61is,1657
9
9
  pbi_parsers/dax/parser.py,sha256=QLKrIBcxZ26TGhTHpeKcTGEHEHUDLC6IgpxxrdJzdek,1821
10
- pbi_parsers/dax/tokens.py,sha256=nY1laCbL8vwALpJ4jcd8k4lAscqOwqdw3dFuj4_KKVk,1234
10
+ pbi_parsers/dax/tokens.py,sha256=vWkHbxWg_tU_vkzCayrK6K8W2CQPPghY0sshRwFAvoc,1886
11
11
  pbi_parsers/dax/utils.py,sha256=OURPa-b6Ldn0_KKXPdLIPA3Zdc12OfbbFd2X5SocCek,4402
12
12
  pbi_parsers/dax/exprs/__init__.py,sha256=OUfiXzZYp5HkTPE9x595MMxpsgG1IvsED8p8spAKZuk,3432
13
13
  pbi_parsers/dax/exprs/_base.py,sha256=bMHLICgAUOqAKl_S9d6V8kk62cqM1jynUY2-gBJlEcs,2732
@@ -39,7 +39,7 @@ pbi_parsers/pq/formatter.py,sha256=gcqj_aP8o5V10ULi5hdGhy3aAOy829jTKAfzH4mZewA,3
39
39
  pbi_parsers/pq/lexer.py,sha256=YOo4chz1N06FLO7cU4-wSoemIzfwG30NeUSJhJB-yOE,8093
40
40
  pbi_parsers/pq/main.py,sha256=4k5ZT-dRv5g2jjFgL1ckSpLR36wzClxe1YjiiIiBMu8,1649
41
41
  pbi_parsers/pq/parser.py,sha256=Fy8cqAGvGv1oVg4vYWJAGHZSWimEJ3wTtL5eqIkfOA8,1885
42
- pbi_parsers/pq/tokens.py,sha256=tll_fijLQ2reUJZIgyTW_a6ewuxiw9dva4dH9zx4GZ0,1637
42
+ pbi_parsers/pq/tokens.py,sha256=WHaAIvGaoj22b-YbuFF_t0h5fLdaia3ZdNTGRXK8PiA,2237
43
43
  pbi_parsers/pq/exprs/__init__.py,sha256=wV-G51GagUAkA6_uVjsNA5JskO2JN3xXJPjKtzCH5rU,2845
44
44
  pbi_parsers/pq/exprs/_base.py,sha256=GcfWW3rannZBvw4LyjdiGbWGJ1nctw-m5k6LGkX7Wk4,1118
45
45
  pbi_parsers/pq/exprs/_utils.py,sha256=kUCWSzCSy7HMKOWcGjmO4R1WiYHP23afXmq67A0ZAXY,1065
@@ -73,7 +73,7 @@ pbi_parsers/pq/exprs/statement.py,sha256=JSg48pGAU3Ka2pt4lzVsYlVOqGeF_ARGm8Ajf0l
73
73
  pbi_parsers/pq/exprs/try_expr.py,sha256=UcnqfA-t9S1LVrKqeNUT8n4JJcO-ZQZoJrxAdjJ-GMA,1692
74
74
  pbi_parsers/pq/exprs/type_expr.py,sha256=hH5ubrIJaxwQsopNJHUZ4ByS1rHEgv2Tf8ocYqSukXM,2570
75
75
  pbi_parsers/pq/exprs/variable.py,sha256=wp4t0QHIGA264sXnWp7XVe1H8MJzMIOaoLNBQe-dfNk,1602
76
- pbi_parsers-0.8.1.dist-info/METADATA,sha256=-B23BQU7BCehF7DUTBcDeD9gH8ndy730y41H3HxUicU,2906
77
- pbi_parsers-0.8.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
78
- pbi_parsers-0.8.1.dist-info/licenses/LICENSE,sha256=Sn0IfXOE4B0iL9lZXmGmRuTGyJeCtefxcfws0bLjp2g,1072
79
- pbi_parsers-0.8.1.dist-info/RECORD,,
76
+ pbi_parsers-0.8.2.dist-info/METADATA,sha256=lw6AvVHgL0ERGlP7LEZtl343oezahwNwDJ4FJCXFbGM,2906
77
+ pbi_parsers-0.8.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
78
+ pbi_parsers-0.8.2.dist-info/licenses/LICENSE,sha256=Sn0IfXOE4B0iL9lZXmGmRuTGyJeCtefxcfws0bLjp2g,1072
79
+ pbi_parsers-0.8.2.dist-info/RECORD,,