Skip to content

Commit a4e8cda

Browse files
authored
Merge pull request #170 from UncoderIO/gis-8064
Gis 8064 FunctionValue class, query tokens refactoring
2 parents 4d9e145 + 52da2bd commit a4e8cda

File tree

53 files changed

+413
-313
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+413
-313
lines changed
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
from typing import Union
22

3-
from app.translator.core.models.field import Alias, Field, FieldValue, Keyword
4-
from app.translator.core.models.identifier import Identifier
3+
from app.translator.core.models.query_tokens.field import Alias, Field
4+
from app.translator.core.models.query_tokens.field_field import FieldField
5+
from app.translator.core.models.query_tokens.field_value import FieldValue
6+
from app.translator.core.models.query_tokens.function_value import FunctionValue
7+
from app.translator.core.models.query_tokens.identifier import Identifier
8+
from app.translator.core.models.query_tokens.keyword import Keyword
59

6-
TOKEN_TYPE = Union[FieldValue, Keyword, Identifier, Field, Alias]
10+
QUERY_TOKEN_TYPE = Union[FieldField, FieldValue, FunctionValue, Keyword, Identifier, Field, Alias]

uncoder-core/app/translator/core/custom_types/functions.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ class FunctionType(CustomEnum):
2222
upper = "upper"
2323

2424
array_length = "array_length"
25-
compare = "compare"
2625
extract_time = "extract_time"
2726
ipv4_is_in_range = "ipv4_is_in_range"
2827

uncoder-core/app/translator/core/functions.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525

2626
from app.translator.core.exceptions.functions import NotSupportedFunctionException
2727
from app.translator.core.mapping import SourceMapping
28-
from app.translator.core.models.field import Alias, Field
2928
from app.translator.core.models.functions.base import Function, ParsedFunctions, RenderedFunctions
29+
from app.translator.core.models.query_tokens.field import Alias, Field
3030
from app.translator.tools.utils import execute_module
3131
from settings import INIT_FUNCTIONS
3232

@@ -83,7 +83,6 @@ def parse(self, func_body: str, raw: str) -> Function:
8383
class FunctionRender(ABC):
8484
function_names_map: ClassVar[dict[str, str]] = {}
8585
order_to_render: int = 0
86-
in_query_render: bool = False
8786
render_to_prefix: bool = False
8887
manager: PlatformFunctionsManager = None
8988

@@ -117,7 +116,6 @@ def __init__(self):
117116
self._parsers_map: dict[str, FunctionParser] = {} # {platform_func_name: FunctionParser}
118117

119118
self._renders_map: dict[str, FunctionRender] = {} # {generic_func_name: FunctionRender}
120-
self._in_query_renders_map: dict[str, FunctionRender] = {} # {generic_func_name: FunctionRender}
121119
self._order_to_render: dict[str, int] = {} # {generic_func_name: int}
122120

123121
def register_render(self, render_class: type[FunctionRender]) -> type[FunctionRender]:
@@ -126,8 +124,6 @@ def register_render(self, render_class: type[FunctionRender]) -> type[FunctionRe
126124
for generic_function_name in render.function_names_map:
127125
self._renders_map[generic_function_name] = render
128126
self._order_to_render[generic_function_name] = render.order_to_render
129-
if render.in_query_render:
130-
self._in_query_renders_map[generic_function_name] = render
131127

132128
return render_class
133129

@@ -149,24 +145,16 @@ def get_hof_parser(self, platform_func_name: str) -> HigherOrderFunctionParser:
149145

150146
raise NotSupportedFunctionException
151147

152-
def get_parser(self, platform_func_name: str) -> FunctionParser:
148+
def get_parser(self, platform_func_name: str) -> Optional[FunctionParser]:
153149
if INIT_FUNCTIONS and (parser := self._parsers_map.get(platform_func_name)):
154150
return parser
155151

156-
raise NotSupportedFunctionException
157-
158152
def get_render(self, generic_func_name: str) -> FunctionRender:
159153
if INIT_FUNCTIONS and (render := self._renders_map.get(generic_func_name)):
160154
return render
161155

162156
raise NotSupportedFunctionException
163157

164-
def get_in_query_render(self, generic_func_name: str) -> FunctionRender:
165-
if INIT_FUNCTIONS and (render := self._in_query_renders_map.get(generic_func_name)):
166-
return render
167-
168-
raise NotSupportedFunctionException
169-
170158
@property
171159
def order_to_render(self) -> dict[str, int]:
172160
if INIT_FUNCTIONS:

uncoder-core/app/translator/core/mixins/logic.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
from typing import Union
2-
1+
from app.translator.core.const import QUERY_TOKEN_TYPE
32
from app.translator.core.custom_types.tokens import GroupType, LogicalOperatorType
4-
from app.translator.core.models.field import FieldValue, Keyword
5-
from app.translator.core.models.identifier import Identifier
3+
from app.translator.core.models.query_tokens.field_field import FieldField
4+
from app.translator.core.models.query_tokens.field_value import FieldValue
5+
from app.translator.core.models.query_tokens.function_value import FunctionValue
6+
from app.translator.core.models.query_tokens.identifier import Identifier
7+
from app.translator.core.models.query_tokens.keyword import Keyword
68

79

810
class ANDLogicOperatorMixin:
911
@staticmethod
10-
def get_missed_and_token_indices(tokens: list[Union[FieldValue, Keyword, Identifier]]) -> list[int]:
12+
def get_missed_and_token_indices(tokens: list[QUERY_TOKEN_TYPE]) -> list[int]:
1113
missed_and_indices = []
1214
for index in range(len(tokens) - 1):
1315
token = tokens[index]
1416
next_token = tokens[index + 1]
1517
if (
16-
isinstance(token, (FieldValue, Keyword))
18+
isinstance(token, (FieldField, FieldValue, FunctionValue, Keyword))
1719
or isinstance(token, Identifier)
1820
and token.token_type == GroupType.R_PAREN
1921
) and not (
@@ -23,9 +25,7 @@ def get_missed_and_token_indices(tokens: list[Union[FieldValue, Keyword, Identif
2325
missed_and_indices.append(index + 1)
2426
return list(reversed(missed_and_indices))
2527

26-
def add_and_token_if_missed(
27-
self, tokens: list[Union[FieldValue, Keyword, Identifier]]
28-
) -> list[Union[FieldValue, Keyword, Identifier]]:
28+
def add_and_token_if_missed(self, tokens: list[QUERY_TOKEN_TYPE]) -> list[QUERY_TOKEN_TYPE]:
2929
indices = self.get_missed_and_token_indices(tokens=tokens)
3030
for index in indices:
3131
tokens.insert(index, Identifier(token_type=LogicalOperatorType.AND))

uncoder-core/app/translator/core/mixins/operator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from typing import Optional, Union
2020

2121
from app.translator.core.custom_types.tokens import OperatorType
22-
from app.translator.core.models.identifier import Identifier
22+
from app.translator.core.models.query_tokens.identifier import Identifier
2323

2424

2525
class WildCardMixin:

uncoder-core/app/translator/core/models/field.py

Lines changed: 0 additions & 136 deletions
This file was deleted.

uncoder-core/app/translator/core/models/functions/base.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
from __future__ import annotations
22

33
from dataclasses import dataclass, field
4-
from typing import Optional, Union
4+
from typing import TYPE_CHECKING, Optional, Union
55

6-
from app.translator.core.models.field import Alias, Field, FieldValue, Keyword
7-
from app.translator.core.models.identifier import Identifier
6+
from app.translator.core.models.query_tokens.field import Alias, Field
7+
from app.translator.core.models.query_tokens.field_field import FieldField
8+
from app.translator.core.models.query_tokens.field_value import FieldValue
9+
from app.translator.core.models.query_tokens.identifier import Identifier
10+
from app.translator.core.models.query_tokens.keyword import Keyword
11+
12+
if TYPE_CHECKING:
13+
from app.translator.core.models.query_tokens.function_value import FunctionValue
814

915

1016
@dataclass
1117
class Function:
1218
name: str = None
13-
args: list[Union[Alias, Field, FieldValue, Keyword, Function, Identifier, str, bool]] = field(default_factory=list)
19+
args: list[
20+
Union[Alias, Field, FieldField, FieldValue, FunctionValue, Keyword, Function, Identifier, int, str, bool]
21+
] = field(default_factory=list)
1422
alias: Optional[Alias] = None
1523
raw: str = ""
1624

uncoder-core/app/translator/core/models/functions/bin.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,15 @@
22
from typing import Optional
33

44
from app.translator.core.custom_types.functions import FunctionType
5-
from app.translator.core.models.field import Field
5+
from app.translator.core.custom_types.time import TimeFrameType
66
from app.translator.core.models.functions.base import Function
7-
from app.translator.tools.custom_enum import CustomEnum
8-
9-
10-
class SpanType(CustomEnum):
11-
days = "days"
12-
hours = "hours"
13-
minutes = "minutes"
7+
from app.translator.core.models.query_tokens.field import Field
148

159

1610
@dataclass
1711
class Span:
1812
value: str = "1"
19-
type_: str = SpanType.days
13+
type_: str = TimeFrameType.days
2014

2115

2216
@dataclass

uncoder-core/app/translator/core/models/functions/eval.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
from typing import Union
33

44
from app.translator.core.custom_types.functions import FunctionType
5-
from app.translator.core.models.field import Alias, Field
65
from app.translator.core.models.functions.base import Function
7-
from app.translator.core.models.identifier import Identifier
6+
from app.translator.core.models.query_tokens.field import Alias, Field
7+
from app.translator.core.models.query_tokens.identifier import Identifier
88

99

1010
@dataclass

uncoder-core/app/translator/core/models/functions/group_by.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
from typing import Union
33

44
from app.translator.core.custom_types.functions import FunctionType
5-
from app.translator.core.models.field import Alias
65
from app.translator.core.models.functions.base import Function
6+
from app.translator.core.models.query_tokens.field import Alias
77

88

99
@dataclass

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy