pylegend 0.12.0__py3-none-any.whl → 0.14.0__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.
- pylegend/core/database/sql_to_string/db_extension.py +177 -1
- pylegend/core/language/pandas_api/pandas_api_groupby_series.py +357 -0
- pylegend/core/language/pandas_api/pandas_api_series.py +202 -8
- pylegend/core/language/shared/expression.py +5 -0
- pylegend/core/language/shared/literal_expressions.py +22 -1
- pylegend/core/language/shared/operations/boolean_operation_expressions.py +144 -0
- pylegend/core/language/shared/operations/date_operation_expressions.py +91 -0
- pylegend/core/language/shared/operations/integer_operation_expressions.py +183 -1
- pylegend/core/language/shared/operations/string_operation_expressions.py +31 -1
- pylegend/core/language/shared/primitives/boolean.py +40 -0
- pylegend/core/language/shared/primitives/date.py +39 -0
- pylegend/core/language/shared/primitives/datetime.py +18 -0
- pylegend/core/language/shared/primitives/integer.py +54 -1
- pylegend/core/language/shared/primitives/strictdate.py +25 -1
- pylegend/core/language/shared/primitives/string.py +16 -2
- pylegend/core/sql/metamodel.py +50 -1
- pylegend/core/sql/metamodel_extension.py +77 -1
- pylegend/core/tds/pandas_api/frames/functions/aggregate_function.py +21 -11
- pylegend/core/tds/pandas_api/frames/functions/iloc.py +99 -0
- pylegend/core/tds/pandas_api/frames/functions/loc.py +136 -0
- pylegend/core/tds/pandas_api/frames/pandas_api_applied_function_tds_frame.py +3 -0
- pylegend/core/tds/pandas_api/frames/pandas_api_base_tds_frame.py +50 -2
- pylegend/core/tds/pandas_api/frames/pandas_api_groupby_tds_frame.py +87 -27
- pylegend/core/tds/pandas_api/frames/pandas_api_tds_frame.py +12 -0
- {pylegend-0.12.0.dist-info → pylegend-0.14.0.dist-info}/METADATA +1 -1
- {pylegend-0.12.0.dist-info → pylegend-0.14.0.dist-info}/RECORD +30 -27
- {pylegend-0.12.0.dist-info → pylegend-0.14.0.dist-info}/WHEEL +1 -1
- {pylegend-0.12.0.dist-info → pylegend-0.14.0.dist-info}/licenses/LICENSE +0 -0
- {pylegend-0.12.0.dist-info → pylegend-0.14.0.dist-info}/licenses/LICENSE.spdx +0 -0
- {pylegend-0.12.0.dist-info → pylegend-0.14.0.dist-info}/licenses/NOTICE +0 -0
|
@@ -11,21 +11,24 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
|
|
14
|
+
from typing import overload
|
|
15
15
|
|
|
16
16
|
from pylegend._typing import (
|
|
17
17
|
PyLegendOptional,
|
|
18
18
|
PyLegendUnion,
|
|
19
19
|
PyLegendList,
|
|
20
20
|
PyLegendDict,
|
|
21
|
+
PyLegendSet,
|
|
21
22
|
TYPE_CHECKING,
|
|
22
23
|
)
|
|
23
24
|
from pylegend.core.language.pandas_api.pandas_api_aggregate_specification import PyLegendAggInput
|
|
24
25
|
from pylegend.core.language.shared.primitives.primitive import PyLegendPrimitiveOrPythonPrimitive
|
|
25
26
|
from pylegend.core.tds.pandas_api.frames.pandas_api_base_tds_frame import PandasApiBaseTdsFrame
|
|
27
|
+
from pylegend.core.tds.tds_column import TdsColumn
|
|
26
28
|
|
|
27
29
|
if TYPE_CHECKING:
|
|
28
30
|
from pylegend.core.tds.pandas_api.frames.pandas_api_tds_frame import PandasApiTdsFrame
|
|
31
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import GroupbySeries
|
|
29
32
|
|
|
30
33
|
|
|
31
34
|
class PandasApiGroupbyTdsFrame:
|
|
@@ -38,8 +41,8 @@ class PandasApiGroupbyTdsFrame:
|
|
|
38
41
|
__observed: bool
|
|
39
42
|
__dropna: bool
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
__selected_columns: PyLegendOptional[PyLegendList[
|
|
44
|
+
__grouping_columns: PyLegendList[TdsColumn]
|
|
45
|
+
__selected_columns: PyLegendOptional[PyLegendList[TdsColumn]]
|
|
43
46
|
|
|
44
47
|
@classmethod
|
|
45
48
|
def name(cls) -> str:
|
|
@@ -101,39 +104,65 @@ class PandasApiGroupbyTdsFrame:
|
|
|
101
104
|
f"but got: {self.__dropna} (type: {type(self.__dropna).__name__})"
|
|
102
105
|
)
|
|
103
106
|
|
|
104
|
-
input_cols:
|
|
107
|
+
input_cols: PyLegendSet[str]
|
|
105
108
|
if isinstance(self.__by, str):
|
|
106
|
-
input_cols = [self.__by]
|
|
109
|
+
input_cols = set([self.__by])
|
|
107
110
|
elif isinstance(self.__by, list):
|
|
108
|
-
input_cols = self.__by
|
|
111
|
+
input_cols = set(self.__by)
|
|
109
112
|
else:
|
|
110
113
|
raise TypeError(
|
|
111
114
|
f"The 'by' parameter in groupby function must be a string or a list of strings."
|
|
112
115
|
f"but got: {self.__by} (type: {type(self.__by).__name__})"
|
|
113
|
-
)
|
|
116
|
+
) # pragma: no cover
|
|
117
|
+
group_by_names: PyLegendList[str]
|
|
118
|
+
if isinstance(self.__by, str):
|
|
119
|
+
group_by_names = [self.__by]
|
|
120
|
+
elif isinstance(self.__by, list):
|
|
121
|
+
group_by_names = self.__by
|
|
122
|
+
else:
|
|
123
|
+
raise TypeError(
|
|
124
|
+
f"The 'by' parameter in groupby function must be a string or a list of strings."
|
|
125
|
+
f"but got: {self.__by} (type: {type(self.__by).__name__})"
|
|
126
|
+
) # pragma: no cover
|
|
114
127
|
|
|
115
|
-
if len(
|
|
128
|
+
if len(group_by_names) == 0:
|
|
116
129
|
raise ValueError("The 'by' parameter in groupby function must contain at least one column name.")
|
|
117
130
|
|
|
118
|
-
|
|
119
|
-
|
|
131
|
+
base_col_map = {col.get_name(): col for col in self.__base_frame.columns()}
|
|
132
|
+
|
|
133
|
+
self.__grouping_columns = [
|
|
134
|
+
base_col_map[name]
|
|
135
|
+
for name in group_by_names
|
|
136
|
+
if name in base_col_map
|
|
137
|
+
]
|
|
120
138
|
|
|
121
|
-
if len(
|
|
139
|
+
if len(self.__grouping_columns) < len(input_cols):
|
|
140
|
+
available_columns = {c.get_name() for c in self.__base_frame.columns()}
|
|
141
|
+
missing_cols = [col for col in input_cols if col not in available_columns]
|
|
122
142
|
raise KeyError(
|
|
123
143
|
f"Column(s) {missing_cols} in groupby function's provided columns list "
|
|
124
144
|
f"do not exist in the current frame. "
|
|
125
145
|
f"Current frame columns: {sorted(available_columns)}"
|
|
126
146
|
)
|
|
127
147
|
|
|
128
|
-
|
|
148
|
+
@overload
|
|
149
|
+
def __getitem__(self, key: str) -> "GroupbySeries":
|
|
150
|
+
...
|
|
151
|
+
|
|
152
|
+
@overload
|
|
153
|
+
def __getitem__(self, key: PyLegendList[str]) -> "PandasApiGroupbyTdsFrame":
|
|
154
|
+
...
|
|
129
155
|
|
|
130
|
-
def __getitem__(
|
|
131
|
-
|
|
156
|
+
def __getitem__(
|
|
157
|
+
self,
|
|
158
|
+
item: PyLegendUnion[str, PyLegendList[str]]
|
|
159
|
+
) -> PyLegendUnion["PandasApiGroupbyTdsFrame", "GroupbySeries"]:
|
|
160
|
+
columns_to_select: PyLegendSet[str]
|
|
132
161
|
|
|
133
162
|
if isinstance(item, str):
|
|
134
|
-
columns_to_select = [item]
|
|
163
|
+
columns_to_select = set([item])
|
|
135
164
|
elif isinstance(item, list):
|
|
136
|
-
columns_to_select = item
|
|
165
|
+
columns_to_select = set(item)
|
|
137
166
|
else:
|
|
138
167
|
raise TypeError(
|
|
139
168
|
f"Column selection after groupby function must be a string or a list of strings, "
|
|
@@ -143,10 +172,12 @@ class PandasApiGroupbyTdsFrame:
|
|
|
143
172
|
if len(columns_to_select) == 0:
|
|
144
173
|
raise ValueError("When performing column selection after groupby, at least one column must be selected.")
|
|
145
174
|
|
|
146
|
-
|
|
147
|
-
|
|
175
|
+
selected_columns: PyLegendList[TdsColumn] = [
|
|
176
|
+
col for col in self.__base_frame.columns() if col.get_name() in columns_to_select]
|
|
148
177
|
|
|
149
|
-
if len(
|
|
178
|
+
if len(selected_columns) < len(columns_to_select):
|
|
179
|
+
available_columns = {c.get_name() for c in self.__base_frame.columns()}
|
|
180
|
+
missing_cols = [col for col in columns_to_select if col not in available_columns]
|
|
150
181
|
raise KeyError(
|
|
151
182
|
f"Column(s) {missing_cols} selected after groupby do not exist in the current frame. "
|
|
152
183
|
f"Current frame columns: {sorted(available_columns)}"
|
|
@@ -163,16 +194,47 @@ class PandasApiGroupbyTdsFrame:
|
|
|
163
194
|
dropna=self.__dropna,
|
|
164
195
|
)
|
|
165
196
|
|
|
166
|
-
new_frame.__selected_columns =
|
|
197
|
+
new_frame.__selected_columns = selected_columns
|
|
198
|
+
|
|
199
|
+
if selected_columns is not None and isinstance(item, str):
|
|
200
|
+
column: TdsColumn = selected_columns[0]
|
|
201
|
+
col_type = column.get_type()
|
|
202
|
+
if col_type == "Boolean": # pragma: no cover (Boolean column not supported in PURE)
|
|
203
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import BooleanGroupbySeries
|
|
204
|
+
return BooleanGroupbySeries(new_frame)
|
|
205
|
+
elif col_type == "String":
|
|
206
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import StringGroupbySeries
|
|
207
|
+
return StringGroupbySeries(new_frame)
|
|
208
|
+
elif col_type == "Number":
|
|
209
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import NumberGroupbySeries
|
|
210
|
+
return NumberGroupbySeries(new_frame)
|
|
211
|
+
elif col_type == "Integer":
|
|
212
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import IntegerGroupbySeries
|
|
213
|
+
return IntegerGroupbySeries(new_frame)
|
|
214
|
+
elif col_type == "Float":
|
|
215
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import FloatGroupbySeries
|
|
216
|
+
return FloatGroupbySeries(new_frame)
|
|
217
|
+
elif col_type == "Date":
|
|
218
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import DateGroupbySeries
|
|
219
|
+
return DateGroupbySeries(new_frame)
|
|
220
|
+
elif col_type == "DateTime":
|
|
221
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import DateTimeGroupbySeries
|
|
222
|
+
return DateTimeGroupbySeries(new_frame)
|
|
223
|
+
elif col_type == "StrictDate":
|
|
224
|
+
from pylegend.core.language.pandas_api.pandas_api_groupby_series import StrictDateGroupbySeries
|
|
225
|
+
return StrictDateGroupbySeries(new_frame)
|
|
226
|
+
else:
|
|
227
|
+
raise ValueError(f"Unsupported column type '{col_type}' for column '{column.get_name()}'") # pragma: no cover
|
|
228
|
+
|
|
167
229
|
return new_frame
|
|
168
230
|
|
|
169
231
|
def base_frame(self) -> PandasApiBaseTdsFrame:
|
|
170
232
|
return self.__base_frame
|
|
171
233
|
|
|
172
|
-
def
|
|
173
|
-
return self.
|
|
234
|
+
def get_grouping_columns(self) -> PyLegendList[TdsColumn]:
|
|
235
|
+
return self.__grouping_columns.copy()
|
|
174
236
|
|
|
175
|
-
def
|
|
237
|
+
def get_selected_columns(self) -> PyLegendOptional[PyLegendList[TdsColumn]]:
|
|
176
238
|
if self.__selected_columns is None:
|
|
177
239
|
return None
|
|
178
240
|
return self.__selected_columns.copy()
|
|
@@ -197,7 +259,7 @@ class PandasApiGroupbyTdsFrame:
|
|
|
197
259
|
aggregated_result = PandasApiAppliedFunctionTdsFrame(
|
|
198
260
|
SortValuesFunction(
|
|
199
261
|
base_frame=aggregated_result,
|
|
200
|
-
by=self.
|
|
262
|
+
by=[col.get_name() for col in self.get_grouping_columns()],
|
|
201
263
|
axis=0,
|
|
202
264
|
ascending=True,
|
|
203
265
|
inplace=False,
|
|
@@ -217,10 +279,8 @@ class PandasApiGroupbyTdsFrame:
|
|
|
217
279
|
*args: PyLegendPrimitiveOrPythonPrimitive,
|
|
218
280
|
**kwargs: PyLegendPrimitiveOrPythonPrimitive,
|
|
219
281
|
) -> "PandasApiTdsFrame":
|
|
220
|
-
from pylegend.core.tds.pandas_api.frames.pandas_api_applied_function_tds_frame import PandasApiAppliedFunctionTdsFrame
|
|
221
|
-
from pylegend.core.tds.pandas_api.frames.functions.aggregate_function import AggregateFunction
|
|
222
282
|
|
|
223
|
-
return
|
|
283
|
+
return self.aggregate(func, axis, *args, **kwargs)
|
|
224
284
|
|
|
225
285
|
def sum(
|
|
226
286
|
self,
|
|
@@ -47,6 +47,8 @@ from pylegend.core.tds.tds_frame import PyLegendTdsFrame
|
|
|
47
47
|
if TYPE_CHECKING:
|
|
48
48
|
from pylegend.core.language.pandas_api.pandas_api_series import Series
|
|
49
49
|
from pylegend.core.tds.pandas_api.frames.pandas_api_groupby_tds_frame import PandasApiGroupbyTdsFrame
|
|
50
|
+
from pylegend.core.tds.pandas_api.frames.functions.iloc import PandasApiIlocIndexer
|
|
51
|
+
from pylegend.core.tds.pandas_api.frames.functions.loc import PandasApiLocIndexer
|
|
50
52
|
|
|
51
53
|
__all__: PyLegendSequence[str] = [
|
|
52
54
|
"PandasApiTdsFrame"
|
|
@@ -301,6 +303,16 @@ class PandasApiTdsFrame(PyLegendTdsFrame):
|
|
|
301
303
|
) -> "PandasApiTdsFrame":
|
|
302
304
|
pass # pragma: no cover
|
|
303
305
|
|
|
306
|
+
@property
|
|
307
|
+
@abstractmethod
|
|
308
|
+
def iloc(self) -> "PandasApiIlocIndexer":
|
|
309
|
+
pass # pragma: no cover
|
|
310
|
+
|
|
311
|
+
@property
|
|
312
|
+
@abstractmethod
|
|
313
|
+
def loc(self) -> "PandasApiLocIndexer":
|
|
314
|
+
pass # pragma: no cover
|
|
315
|
+
|
|
304
316
|
@abstractmethod
|
|
305
317
|
def head(self, n: int = 5) -> "PandasApiTdsFrame":
|
|
306
318
|
pass # pragma: no cover
|
|
@@ -4,7 +4,7 @@ pylegend/core/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
|
4
4
|
pylegend/core/database/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
5
5
|
pylegend/core/database/sql_to_string/__init__.py,sha256=_qWOoReR9ygprnShQRBtp4wFmqtiPEa88jAhOZpYY2c,1028
|
|
6
6
|
pylegend/core/database/sql_to_string/config.py,sha256=xrwPFcuZyzZcKNGeOQTnFW2y7CqhT6laSAazVl93JLU,1384
|
|
7
|
-
pylegend/core/database/sql_to_string/db_extension.py,sha256=
|
|
7
|
+
pylegend/core/database/sql_to_string/db_extension.py,sha256=Mt1uCgub9ChjF2k151Ybthr_KO0VoyrqULYPAlkpZA0,62530
|
|
8
8
|
pylegend/core/database/sql_to_string/generator.py,sha256=xk3siXWyR7_ahn6pwsUMi80V_7NV2tYa7x5dosiNJR4,2607
|
|
9
9
|
pylegend/core/language/__init__.py,sha256=sw70dEA5RT660Qmpjxdi1XKEWDwshuedomqHhyIJpvI,4331
|
|
10
10
|
pylegend/core/language/legacy_api/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
@@ -16,39 +16,40 @@ pylegend/core/language/legendql_api/legendql_api_tds_row.py,sha256=5hejBF2uYjXua
|
|
|
16
16
|
pylegend/core/language/pandas_api/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
17
17
|
pylegend/core/language/pandas_api/pandas_api_aggregate_specification.py,sha256=T_RaPB9y_7kcnMC_CIEDJhxORID1plR99IGGPZvDnBk,1474
|
|
18
18
|
pylegend/core/language/pandas_api/pandas_api_custom_expressions.py,sha256=xOXp0NdyNW6j_R_1sCy1JcdN9EWIqYRXngocsINpllE,2590
|
|
19
|
-
pylegend/core/language/pandas_api/
|
|
19
|
+
pylegend/core/language/pandas_api/pandas_api_groupby_series.py,sha256=MU6o_e2NIwo2OZHcXS8zuxZa14QG5SygXjnhHRy8H-4,16200
|
|
20
|
+
pylegend/core/language/pandas_api/pandas_api_series.py,sha256=Jock_ZYikBBCr-bVHpYEcoKV7bg0hdzQV4KJU99Z0O4,16452
|
|
20
21
|
pylegend/core/language/pandas_api/pandas_api_tds_row.py,sha256=L0O5BLok3KqmzUgXFfM2fQgrpAxCfQ74bOplnetjyvw,2516
|
|
21
22
|
pylegend/core/language/shared/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
22
23
|
pylegend/core/language/shared/column_expressions.py,sha256=qWHVvwPGwKroQX94a_ovUrxCPnosVMX3tBWlTj7uJ6k,4333
|
|
23
|
-
pylegend/core/language/shared/expression.py,sha256
|
|
24
|
+
pylegend/core/language/shared/expression.py,sha256=SvLI6GxzvjSpy21NIB4ZyPLKGIR7y9CN5lV-I5zGklw,2567
|
|
24
25
|
pylegend/core/language/shared/functions.py,sha256=HT1Qp5pLV3a24aItXqBnGfKT54f6Uw_pu5oGSzWTGL4,1749
|
|
25
26
|
pylegend/core/language/shared/helpers.py,sha256=E7IKZwb__qj4_JpoBT2cra_umvfKP58c5U5bygMqh_o,2379
|
|
26
|
-
pylegend/core/language/shared/literal_expressions.py,sha256=
|
|
27
|
+
pylegend/core/language/shared/literal_expressions.py,sha256=DqbHBOTMYD0PDXdZzuAOVXNfeMnqaEWFEHvgeDzZsF8,6877
|
|
27
28
|
pylegend/core/language/shared/operations/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
28
29
|
pylegend/core/language/shared/operations/binary_expression.py,sha256=I3CIWwbKlKq1R8ekUXY8QKyHro8b7fIgeM8hTPwN5jA,4006
|
|
29
|
-
pylegend/core/language/shared/operations/boolean_operation_expressions.py,sha256=
|
|
30
|
+
pylegend/core/language/shared/operations/boolean_operation_expressions.py,sha256=jOs_b-Clt4Jij9Z-Xt1YLQ-xaDmZGosfRRzSiRvtgJk,10309
|
|
30
31
|
pylegend/core/language/shared/operations/collection_operation_expressions.py,sha256=PuyICSjPadQNWkp8aZnCZblRnG_uh7lPEXMDN9nwKRI,22412
|
|
31
|
-
pylegend/core/language/shared/operations/date_operation_expressions.py,sha256=
|
|
32
|
+
pylegend/core/language/shared/operations/date_operation_expressions.py,sha256=CiWBJIyyMu-u7c3Ho-wOCjcqzpm5hvyYthS7F8udsg8,31507
|
|
32
33
|
pylegend/core/language/shared/operations/float_operation_expressions.py,sha256=GsKflYlswzfvb2eEqObRgcoO218zdNj3atS-5g8YzJI,6849
|
|
33
|
-
pylegend/core/language/shared/operations/integer_operation_expressions.py,sha256=
|
|
34
|
+
pylegend/core/language/shared/operations/integer_operation_expressions.py,sha256=VsI5pQEya_XWmAvmRvmr97HJB_R2XZSJS6qypE-NBEI,16817
|
|
34
35
|
pylegend/core/language/shared/operations/nary_expression.py,sha256=GXqsmpR_Jb_SothvIXWeQ6lJp03SKwEA2zqL-JomlNc,3663
|
|
35
36
|
pylegend/core/language/shared/operations/nullary_expression.py,sha256=dMq3hi7_t0TFboOoQQHjuNZ7D9hLYfc_NozNaUCJTtI,2242
|
|
36
37
|
pylegend/core/language/shared/operations/number_operation_expressions.py,sha256=EK0_T0_AY2bBK-A4yXoHmDsXTnshVP6lz_JLPl4w7Ds,39376
|
|
37
38
|
pylegend/core/language/shared/operations/primitive_operation_expressions.py,sha256=BdnxYxD0qnBzKppA9GJC1V9FDhGjyh1uuauRX8UObx0,6365
|
|
38
|
-
pylegend/core/language/shared/operations/string_operation_expressions.py,sha256
|
|
39
|
+
pylegend/core/language/shared/operations/string_operation_expressions.py,sha256=-HNYQTdA8L9D3-FXztqGsvK3JQ2konMwkGyvFyRjpcE,45507
|
|
39
40
|
pylegend/core/language/shared/operations/unary_expression.py,sha256=1VWE43rN4x4NLc6aL3xRzleK9c_UfrLawlyYgX3SG48,3132
|
|
40
41
|
pylegend/core/language/shared/pct_helpers.py,sha256=tQo0BkaPro8Tqc3Tt2hmMrQOLsf4Ra0ENgDRQOhZe1I,1998
|
|
41
42
|
pylegend/core/language/shared/primitive_collection.py,sha256=ShUtgdZkZ8cKdQJLP5iU_zYDK7piMzWlimvjhnyfnGk,13098
|
|
42
43
|
pylegend/core/language/shared/primitives/__init__.py,sha256=9p7VVRhzeRQwTkxXQBBZuJY6P9V-yX0Q_elviaYIgPg,1649
|
|
43
|
-
pylegend/core/language/shared/primitives/boolean.py,sha256=
|
|
44
|
-
pylegend/core/language/shared/primitives/date.py,sha256=
|
|
45
|
-
pylegend/core/language/shared/primitives/datetime.py,sha256=
|
|
44
|
+
pylegend/core/language/shared/primitives/boolean.py,sha256=94HG7VxSBOD20xYyLZT314c8s7yuMwmERIf2CxokBr0,6127
|
|
45
|
+
pylegend/core/language/shared/primitives/date.py,sha256=_qYAqIiTGv6Pr-Xcd2JznKUQ0lRGvicAHuylgmhrCck,11249
|
|
46
|
+
pylegend/core/language/shared/primitives/datetime.py,sha256=HnmsRM1kgwVHtiqiPWIV9ecyo_7m7l9Ps8GKvZqBf1A,3464
|
|
46
47
|
pylegend/core/language/shared/primitives/float.py,sha256=LpD3nWogv8aT6RECgI7rVmsRPY4ji96JCXdTEAr2EAg,6146
|
|
47
|
-
pylegend/core/language/shared/primitives/integer.py,sha256=
|
|
48
|
+
pylegend/core/language/shared/primitives/integer.py,sha256=OxLTeJhlkwWY7KQN8ofpkUEP-9XZtKmmAmwIxhz7Mqo,10631
|
|
48
49
|
pylegend/core/language/shared/primitives/number.py,sha256=aktoWf4sgc8evO8f9cUYbPVPjHeppKzJ_Jw_wIUakUE,14816
|
|
49
50
|
pylegend/core/language/shared/primitives/primitive.py,sha256=ARWpw7AXxg55ni7yGRYCO6JKxzgJnME_ZZcKyD-J5qo,4815
|
|
50
|
-
pylegend/core/language/shared/primitives/strictdate.py,sha256=
|
|
51
|
-
pylegend/core/language/shared/primitives/string.py,sha256=
|
|
51
|
+
pylegend/core/language/shared/primitives/strictdate.py,sha256=AXcH9fuWYVe4YO2KCnn2heUTaQ4y6pUM4ulGGLbTpow,3789
|
|
52
|
+
pylegend/core/language/shared/primitives/string.py,sha256=bc0NYsd0oRMfA8w-2PSCO1ATiiIo2yV_hxv7-yOBtGs,16803
|
|
52
53
|
pylegend/core/language/shared/tds_row.py,sha256=23sxVfa74T-TlfAs1CgvwjhV26b-FyZ72yGy9BqP7CE,9027
|
|
53
54
|
pylegend/core/project_cooridnates.py,sha256=t1G6gJzcRQRbCjGpCOk0vBiqd0F8Y_e15Nu4NuzYd6I,3751
|
|
54
55
|
pylegend/core/request/__init__.py,sha256=6jQTL8B8Sd1rsCXHr4dZ398OrvROoGI6Y_aAI_FOfiI,1082
|
|
@@ -57,8 +58,8 @@ pylegend/core/request/legend_client.py,sha256=PLCCiazvFG2ujcHN-vGDQxpEl5QvFHBNNc
|
|
|
57
58
|
pylegend/core/request/response_reader.py,sha256=TNMi2GKk4lkmf7VMeY5n2AwhxxuWbX4M8pgC2_pXFbE,1691
|
|
58
59
|
pylegend/core/request/service_client.py,sha256=oNvMR6qNl5UcxpcAjIb4CCpd0MB3Z-Y5OJSyFPGeerM,3377
|
|
59
60
|
pylegend/core/sql/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
60
|
-
pylegend/core/sql/metamodel.py,sha256=
|
|
61
|
-
pylegend/core/sql/metamodel_extension.py,sha256=
|
|
61
|
+
pylegend/core/sql/metamodel.py,sha256=VHJ2C0MVUgWH5k3DF2b2_LJNvK_24MbhefbWHu9v2dQ,21464
|
|
62
|
+
pylegend/core/sql/metamodel_extension.py,sha256=Cwqqzh7do4uPaBb_7xLZFq-3Oh3AtywwHM-OqATYs4Y,18297
|
|
62
63
|
pylegend/core/tds/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
63
64
|
pylegend/core/tds/abstract/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
64
65
|
pylegend/core/tds/abstract/frames/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
@@ -112,22 +113,24 @@ pylegend/core/tds/legendql_api/frames/legendql_api_tds_frame.py,sha256=BFDdgeZ66
|
|
|
112
113
|
pylegend/core/tds/pandas_api/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
113
114
|
pylegend/core/tds/pandas_api/frames/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
114
115
|
pylegend/core/tds/pandas_api/frames/functions/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
115
|
-
pylegend/core/tds/pandas_api/frames/functions/aggregate_function.py,sha256=
|
|
116
|
+
pylegend/core/tds/pandas_api/frames/functions/aggregate_function.py,sha256=L-re1fgm1VPgy2VeY0BoXIDEhpfciWV-pgDK164HVFI,21646
|
|
116
117
|
pylegend/core/tds/pandas_api/frames/functions/assign_function.py,sha256=uhCv1sDnVBZmT3H5Alu2NUvek8aKqWz5HIG2Vtut-hs,6931
|
|
117
118
|
pylegend/core/tds/pandas_api/frames/functions/drop.py,sha256=tJMeL9Or43QDng9SsxYvW_yus3Hjp03PSlX7P857d7s,7269
|
|
118
119
|
pylegend/core/tds/pandas_api/frames/functions/dropna.py,sha256=OVVwUsPSAykm1g-afVvwxQCr_AaoQtH0cFRVffl9eHs,6161
|
|
119
120
|
pylegend/core/tds/pandas_api/frames/functions/fillna.py,sha256=7XKfIpRlTtoIS1jzfPemOMuytH4njqQ_4GF2UKZliG0,6553
|
|
120
121
|
pylegend/core/tds/pandas_api/frames/functions/filter.py,sha256=TE-OfQqOrBwhS7bKDChsLRTAWOZreZikGQhQPByy8uA,7959
|
|
121
122
|
pylegend/core/tds/pandas_api/frames/functions/filtering.py,sha256=FmzzobMoL-_mt3uFssveGTNCVGo6ZfttXZsj1c56uIo,3181
|
|
123
|
+
pylegend/core/tds/pandas_api/frames/functions/iloc.py,sha256=PEgqcQKyPATh1y1dEIrsVjsc7jUXdZPyE7Z2bAE6bDM,3698
|
|
124
|
+
pylegend/core/tds/pandas_api/frames/functions/loc.py,sha256=ZI0NGcPrDf0XHcf95ow-HHIwZslMAJXk5O7HDssckec,5418
|
|
122
125
|
pylegend/core/tds/pandas_api/frames/functions/merge.py,sha256=bp9a9reNtUAKqaz1Kft3m7wegHKxOmIVoJH135A1iV0,21225
|
|
123
126
|
pylegend/core/tds/pandas_api/frames/functions/rename.py,sha256=afXj8EhsTVUNJAZDFAM_K3VOX5oH3TA2FxSDoZHfT6M,8898
|
|
124
127
|
pylegend/core/tds/pandas_api/frames/functions/sort_values_function.py,sha256=sppDTCW3X0RXLYD2zBvjKEObtc_JfEtoNY7lj-60zqQ,7132
|
|
125
128
|
pylegend/core/tds/pandas_api/frames/functions/truncate_function.py,sha256=VUr9jzVhnU_mJVootUQfcEG8Q66vSJba1QGUGQiYxCk,6214
|
|
126
|
-
pylegend/core/tds/pandas_api/frames/pandas_api_applied_function_tds_frame.py,sha256=
|
|
127
|
-
pylegend/core/tds/pandas_api/frames/pandas_api_base_tds_frame.py,sha256=
|
|
128
|
-
pylegend/core/tds/pandas_api/frames/pandas_api_groupby_tds_frame.py,sha256=
|
|
129
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_applied_function_tds_frame.py,sha256=3BcR2OH5uGvKIep6P1hrgK8QoT5RCzZeh9KfBx1TmgU,3071
|
|
130
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_base_tds_frame.py,sha256=eK-goe9LdQJQLwdlfAllQ0kE8OCUECO9qRzyYnPQNZw,39017
|
|
131
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_groupby_tds_frame.py,sha256=YEtrE07ynHzGBJpSa7FhCQ2834NrOjPkECowfCPFJrQ,16820
|
|
129
132
|
pylegend/core/tds/pandas_api/frames/pandas_api_input_tds_frame.py,sha256=FgwIJCkawXuIjXYfVVrLa5RHfOO5xnSFI0pXti34L_8,2116
|
|
130
|
-
pylegend/core/tds/pandas_api/frames/pandas_api_tds_frame.py,sha256=
|
|
133
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_tds_frame.py,sha256=vPPtO_zvElaZfa4kgUEOIMnBMe133TNqTGE2DDDyC3M,12233
|
|
131
134
|
pylegend/core/tds/result_handler/__init__.py,sha256=8RE84xfkARwDbaQCvZulXcvDJlI-V5DuJp9RsdaGnqU,1141
|
|
132
135
|
pylegend/core/tds/result_handler/result_handler.py,sha256=7tSzOswFCapAAdACphIR3Q0QISYyjo_On_vtsUIPAbA,1183
|
|
133
136
|
pylegend/core/tds/result_handler/to_csv_file_result_handler.py,sha256=lm0UG87RNUXqQwOtSgxHbLKzAHebNuE3zIXM3ErtOxM,2270
|
|
@@ -169,9 +172,9 @@ pylegend/legacy_api_tds_client.py,sha256=IXfo2pdBFV3M3S4RYKJcvudMc_OGdR0yvJhTV-o
|
|
|
169
172
|
pylegend/legendql_api_tds_client.py,sha256=oS6NET5pAA-hfVhVvwG6sRF7omyBs_gEYSAgA8Tky8U,2357
|
|
170
173
|
pylegend/utils/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
171
174
|
pylegend/utils/class_utils.py,sha256=t4PpF3jAXS_D6p9TqlSppryNYNOuy5C-kbKn2Kgb4QU,973
|
|
172
|
-
pylegend-0.
|
|
173
|
-
pylegend-0.
|
|
174
|
-
pylegend-0.
|
|
175
|
-
pylegend-0.
|
|
176
|
-
pylegend-0.
|
|
177
|
-
pylegend-0.
|
|
175
|
+
pylegend-0.14.0.dist-info/METADATA,sha256=9onT96z16Z8t06EPg1At-Zqd31fTSiuFUEt9GVgEQkc,4281
|
|
176
|
+
pylegend-0.14.0.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88
|
|
177
|
+
pylegend-0.14.0.dist-info/licenses/LICENSE,sha256=AGR96_qQPZO66Gjqq4G6r_g670K35VtW-IobTAkmZJM,11343
|
|
178
|
+
pylegend-0.14.0.dist-info/licenses/LICENSE.spdx,sha256=i7TsBclLotUvMjx9vZ_6S8Pp0r4uknWGw1RwiKBBvQ4,207
|
|
179
|
+
pylegend-0.14.0.dist-info/licenses/NOTICE,sha256=2Lr4FqiscyRI7-vyn7c2z-zqUw2p6x7upJyBvFKkHjk,167
|
|
180
|
+
pylegend-0.14.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|