pylegend 0.3.0__py3-none-any.whl → 0.5.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/__init__.py +16 -6
- pylegend/core/{databse → database}/sql_to_string/__init__.py +3 -3
- pylegend/core/{databse → database}/sql_to_string/db_extension.py +14 -5
- pylegend/core/{databse → database}/sql_to_string/generator.py +2 -2
- pylegend/core/language/__init__.py +12 -10
- pylegend/core/language/legacy_api/__init__.py +13 -0
- pylegend/core/language/{aggregate_specification.py → legacy_api/aggregate_specification.py} +10 -10
- pylegend/core/language/legacy_api/legacy_api_tds_row.py +32 -0
- pylegend/core/language/legendql_api/__init__.py +13 -0
- pylegend/core/language/legendql_api/legendql_api_custom_expressions.py +541 -0
- pylegend/core/language/legendql_api/legendql_api_tds_row.py +292 -0
- pylegend/core/language/shared/__init__.py +13 -0
- pylegend/core/language/{column_expressions.py → shared/column_expressions.py} +32 -31
- pylegend/core/language/{expression.py → shared/expression.py} +8 -0
- pylegend/core/language/{functions.py → shared/functions.py} +12 -3
- pylegend/core/language/shared/helpers.py +75 -0
- pylegend/core/language/{literal_expressions.py → shared/literal_expressions.py} +39 -1
- pylegend/core/language/{operations → shared/operations}/binary_expression.py +34 -2
- pylegend/core/language/{operations → shared/operations}/boolean_operation_expressions.py +34 -6
- pylegend/core/language/{operations → shared/operations}/collection_operation_expressions.py +146 -26
- pylegend/core/language/{operations → shared/operations}/date_operation_expressions.py +288 -24
- pylegend/core/language/{operations → shared/operations}/float_operation_expressions.py +53 -8
- pylegend/core/language/{operations → shared/operations}/integer_operation_expressions.py +62 -9
- pylegend/core/language/{operations → shared/operations}/nullary_expression.py +9 -2
- pylegend/core/language/{operations → shared/operations}/number_operation_expressions.py +211 -30
- pylegend/core/language/shared/operations/primitive_operation_expressions.py +155 -0
- pylegend/core/language/{operations → shared/operations}/string_operation_expressions.py +194 -21
- pylegend/core/language/{operations → shared/operations}/unary_expression.py +10 -2
- pylegend/core/language/{primitive_collection.py → shared/primitive_collection.py} +2 -2
- pylegend/core/language/{primitives → shared/primitives}/__init__.py +9 -9
- pylegend/core/language/{primitives → shared/primitives}/boolean.py +9 -5
- pylegend/core/language/{primitives → shared/primitives}/date.py +60 -15
- pylegend/core/language/{primitives → shared/primitives}/datetime.py +4 -5
- pylegend/core/language/{primitives → shared/primitives}/float.py +6 -6
- pylegend/core/language/{primitives → shared/primitives}/integer.py +6 -6
- pylegend/core/language/{primitives → shared/primitives}/number.py +16 -13
- pylegend/core/language/{primitives → shared/primitives}/primitive.py +41 -5
- pylegend/core/language/{primitives → shared/primitives}/strictdate.py +4 -5
- pylegend/core/language/{primitives → shared/primitives}/string.py +18 -19
- pylegend/core/language/{tds_row.py → shared/tds_row.py} +46 -16
- pylegend/core/request/__init__.py +7 -1
- pylegend/core/request/auth.py +55 -1
- pylegend/core/request/legend_client.py +32 -0
- pylegend/core/sql/metamodel_extension.py +28 -0
- pylegend/core/tds/abstract/__init__.py +13 -0
- pylegend/core/tds/abstract/frames/__init__.py +13 -0
- pylegend/core/tds/{legend_api/frames/legend_api_applied_function_tds_frame.py → abstract/frames/applied_function_tds_frame.py} +19 -13
- pylegend/core/tds/abstract/frames/base_tds_frame.py +125 -0
- pylegend/core/tds/{legend_api/frames/legend_api_input_tds_frame.py → abstract/frames/input_tds_frame.py} +9 -12
- pylegend/core/tds/{legend_api/frames/functions → abstract}/function_helpers.py +1 -1
- pylegend/core/tds/{legend_api/frames/functions/concatenate_function.py → legacy_api/frames/functions/legacy_api_concatenate_function.py} +25 -13
- pylegend/core/tds/{legend_api/frames/functions/distinct_function.py → legacy_api/frames/functions/legacy_api_distinct_function.py} +13 -8
- pylegend/core/tds/{legend_api/frames/functions/drop_function.py → legacy_api/frames/functions/legacy_api_drop_function.py} +13 -8
- pylegend/core/tds/{legend_api/frames/functions/extend_function.py → legacy_api/frames/functions/legacy_api_extend_function.py} +36 -16
- pylegend/core/tds/{legend_api/frames/functions/filter_function.py → legacy_api/frames/functions/legacy_api_filter_function.py} +25 -13
- pylegend/core/tds/{legend_api/frames/functions/group_by_function.py → legacy_api/frames/functions/legacy_api_group_by_function.py} +44 -17
- pylegend/core/tds/{legend_api/frames/functions/head_function.py → legacy_api/frames/functions/legacy_api_head_function.py} +13 -8
- pylegend/core/tds/{legend_api/frames/functions/join_by_columns_function.py → legacy_api/frames/functions/legacy_api_join_by_columns_function.py} +40 -13
- pylegend/core/tds/{legend_api/frames/functions/join_function.py → legacy_api/frames/functions/legacy_api_join_function.py} +44 -20
- pylegend/core/tds/{legend_api/frames/functions/rename_columns_function.py → legacy_api/frames/functions/legacy_api_rename_columns_function.py} +20 -8
- pylegend/core/tds/{legend_api/frames/functions/restrict_function.py → legacy_api/frames/functions/legacy_api_restrict_function.py} +17 -8
- pylegend/core/tds/{legend_api/frames/functions/slice_function.py → legacy_api/frames/functions/legacy_api_slice_function.py} +13 -8
- pylegend/core/tds/{legend_api/frames/functions/sort_function.py → legacy_api/frames/functions/legacy_api_sort_function.py} +19 -8
- pylegend/core/tds/legacy_api/frames/legacy_api_applied_function_tds_frame.py +37 -0
- pylegend/core/tds/legacy_api/frames/legacy_api_base_tds_frame.py +204 -0
- pylegend/core/tds/legacy_api/frames/legacy_api_input_tds_frame.py +51 -0
- pylegend/core/tds/{legend_api/frames/legend_api_tds_frame.py → legacy_api/frames/legacy_api_tds_frame.py} +28 -28
- pylegend/core/tds/legendql_api/__init__.py +13 -0
- pylegend/core/tds/legendql_api/frames/__init__.py +13 -0
- pylegend/core/tds/legendql_api/frames/functions/__init__.py +13 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_asofjoin_function.py +156 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_concatenate_function.py +139 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_distinct_function.py +69 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_drop_function.py +74 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_extend_function.py +256 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_filter_function.py +121 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_function_helpers.py +137 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_groupby_function.py +256 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_head_function.py +74 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_join_function.py +214 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_project_function.py +169 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_rename_function.py +189 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_select_function.py +131 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_slice_function.py +82 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_sort_function.py +93 -0
- pylegend/core/tds/legendql_api/frames/functions/legendql_api_window_extend_function.py +283 -0
- pylegend/core/tds/legendql_api/frames/legendql_api_applied_function_tds_frame.py +37 -0
- pylegend/core/tds/legendql_api/frames/legendql_api_base_tds_frame.py +419 -0
- pylegend/core/tds/legendql_api/frames/legendql_api_input_tds_frame.py +50 -0
- pylegend/core/tds/legendql_api/frames/legendql_api_tds_frame.py +327 -0
- pylegend/core/tds/pandas_api/frames/functions/assign_function.py +6 -6
- pylegend/core/tds/pandas_api/frames/pandas_api_applied_function_tds_frame.py +4 -0
- pylegend/core/tds/pandas_api/frames/pandas_api_base_tds_frame.py +11 -3
- pylegend/core/tds/pandas_api/frames/pandas_api_tds_frame.py +2 -2
- pylegend/core/tds/tds_frame.py +32 -2
- pylegend/extensions/database/vendors/postgres/postgres_sql_to_string.py +1 -1
- pylegend/extensions/tds/abstract/legend_function_input_frame.py +4 -0
- pylegend/extensions/tds/abstract/legend_service_input_frame.py +4 -0
- pylegend/extensions/tds/abstract/table_spec_input_frame.py +4 -0
- pylegend/extensions/tds/{legend_api/frames/legend_api_legend_function_input_frame.py → legacy_api/frames/legacy_api_legend_function_input_frame.py} +5 -5
- pylegend/extensions/tds/{legend_api/frames/legend_api_legend_service_input_frame.py → legacy_api/frames/legacy_api_legend_service_input_frame.py} +6 -6
- pylegend/extensions/tds/{legend_api/frames/legend_api_table_spec_input_frame.py → legacy_api/frames/legacy_api_table_spec_input_frame.py} +5 -5
- pylegend/extensions/tds/legendql_api/__init__.py +13 -0
- pylegend/extensions/tds/legendql_api/frames/__init__.py +13 -0
- pylegend/extensions/tds/legendql_api/frames/legendql_api_legend_service_input_frame.py +46 -0
- pylegend/extensions/tds/legendql_api/frames/legendql_api_table_spec_input_frame.py +36 -0
- pylegend/{legend_api_tds_client.py → legacy_api_tds_client.py} +15 -15
- {pylegend-0.3.0.dist-info → pylegend-0.5.0.dist-info}/METADATA +7 -8
- pylegend-0.5.0.dist-info/NOTICE +5 -0
- pylegend-0.5.0.dist-info/RECORD +155 -0
- {pylegend-0.3.0.dist-info → pylegend-0.5.0.dist-info}/WHEEL +1 -1
- pylegend/core/language/operations/primitive_operation_expressions.py +0 -56
- pylegend/core/tds/legend_api/frames/legend_api_base_tds_frame.py +0 -294
- pylegend-0.3.0.dist-info/RECORD +0 -115
- /pylegend/core/{databse → database}/__init__.py +0 -0
- /pylegend/core/{databse → database}/sql_to_string/config.py +0 -0
- /pylegend/core/language/{operations → shared/operations}/__init__.py +0 -0
- /pylegend/core/tds/{legend_api → legacy_api}/__init__.py +0 -0
- /pylegend/core/tds/{legend_api → legacy_api}/frames/__init__.py +0 -0
- /pylegend/core/tds/{legend_api → legacy_api}/frames/functions/__init__.py +0 -0
- /pylegend/extensions/tds/{legend_api → legacy_api}/__init__.py +0 -0
- /pylegend/extensions/tds/{legend_api → legacy_api}/frames/__init__.py +0 -0
- {pylegend-0.3.0.dist-info → pylegend-0.5.0.dist-info}/LICENSE +0 -0
- {pylegend-0.3.0.dist-info → pylegend-0.5.0.dist-info}/LICENSE.spdx +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Copyright 2025 Goldman Sachs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Copyright 2025 Goldman Sachs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright 2025 Goldman Sachs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from pylegend._typing import (
|
|
16
|
+
PyLegendSequence
|
|
17
|
+
)
|
|
18
|
+
from pylegend.core.tds.legendql_api.frames.legendql_api_input_tds_frame import LegendQLApiExecutableInputTdsFrame
|
|
19
|
+
from pylegend.core.project_cooridnates import ProjectCoordinates
|
|
20
|
+
from pylegend.core.request.legend_client import LegendClient
|
|
21
|
+
from pylegend.extensions.tds.abstract.legend_service_input_frame import LegendServiceInputFrameAbstract
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
__all__: PyLegendSequence[str] = [
|
|
25
|
+
"LegendQLApiLegendServiceInputFrame"
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class LegendQLApiLegendServiceInputFrame(LegendServiceInputFrameAbstract, LegendQLApiExecutableInputTdsFrame):
|
|
30
|
+
|
|
31
|
+
def __init__(
|
|
32
|
+
self,
|
|
33
|
+
pattern: str,
|
|
34
|
+
project_coordinates: ProjectCoordinates,
|
|
35
|
+
legend_client: LegendClient,
|
|
36
|
+
) -> None:
|
|
37
|
+
LegendServiceInputFrameAbstract.__init__(self, pattern=pattern, project_coordinates=project_coordinates)
|
|
38
|
+
LegendQLApiExecutableInputTdsFrame.__init__(
|
|
39
|
+
self,
|
|
40
|
+
legend_client=legend_client,
|
|
41
|
+
columns=legend_client.get_sql_string_schema(self.to_sql_query())
|
|
42
|
+
)
|
|
43
|
+
LegendQLApiLegendServiceInputFrame.set_initialized(self, True)
|
|
44
|
+
|
|
45
|
+
def __str__(self) -> str:
|
|
46
|
+
return f"LegendQLApiLegendServiceInputFrame({'.'.join(self.get_pattern())})"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Copyright 2023 Goldman Sachs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from pylegend._typing import (
|
|
16
|
+
PyLegendList,
|
|
17
|
+
PyLegendSequence
|
|
18
|
+
)
|
|
19
|
+
from pylegend.core.tds.legendql_api.frames.legendql_api_input_tds_frame import LegendQLApiNonExecutableInputTdsFrame
|
|
20
|
+
from pylegend.core.tds.tds_column import TdsColumn
|
|
21
|
+
from pylegend.extensions.tds.abstract.table_spec_input_frame import TableSpecInputFrameAbstract
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
__all__: PyLegendSequence[str] = [
|
|
25
|
+
"LegendQLApiTableSpecInputFrame"
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class LegendQLApiTableSpecInputFrame(TableSpecInputFrameAbstract, LegendQLApiNonExecutableInputTdsFrame):
|
|
30
|
+
|
|
31
|
+
def __init__(self, table_name_parts: PyLegendList[str], columns: PyLegendSequence[TdsColumn]) -> None:
|
|
32
|
+
TableSpecInputFrameAbstract.__init__(self, table_name_parts=table_name_parts)
|
|
33
|
+
LegendQLApiNonExecutableInputTdsFrame.__init__(self, columns=columns)
|
|
34
|
+
|
|
35
|
+
def __str__(self) -> str:
|
|
36
|
+
return f"LegendQLApiTableSpecInputFrame({'.'.join(self.table.parts)})"
|
|
@@ -18,16 +18,16 @@ from pylegend._typing import (
|
|
|
18
18
|
)
|
|
19
19
|
from pylegend.core.request import LegendClient
|
|
20
20
|
from pylegend.core.project_cooridnates import ProjectCoordinates
|
|
21
|
-
from pylegend.core.tds.
|
|
21
|
+
from pylegend.core.tds.legacy_api.frames.legacy_api_tds_frame import LegacyApiTdsFrame
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
__all__: PyLegendSequence[str] = [
|
|
25
|
-
"
|
|
26
|
-
"
|
|
25
|
+
"LegacyApiTdsClient",
|
|
26
|
+
"legacy_api_tds_client",
|
|
27
27
|
]
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
class
|
|
30
|
+
class LegacyApiTdsClient:
|
|
31
31
|
__legend_client: LegendClient
|
|
32
32
|
|
|
33
33
|
def __init__(
|
|
@@ -40,11 +40,11 @@ class LegendApiTdsClient:
|
|
|
40
40
|
self,
|
|
41
41
|
service_pattern: str,
|
|
42
42
|
project_coordinates: ProjectCoordinates
|
|
43
|
-
) ->
|
|
44
|
-
from pylegend.extensions.tds.
|
|
45
|
-
|
|
43
|
+
) -> LegacyApiTdsFrame:
|
|
44
|
+
from pylegend.extensions.tds.legacy_api.frames.legacy_api_legend_service_input_frame import (
|
|
45
|
+
LegacyApiLegendServiceInputFrame
|
|
46
46
|
)
|
|
47
|
-
return
|
|
47
|
+
return LegacyApiLegendServiceInputFrame(
|
|
48
48
|
pattern=service_pattern,
|
|
49
49
|
project_coordinates=project_coordinates,
|
|
50
50
|
legend_client=self.__legend_client
|
|
@@ -54,20 +54,20 @@ class LegendApiTdsClient:
|
|
|
54
54
|
self,
|
|
55
55
|
function_path: str,
|
|
56
56
|
project_coordinates: ProjectCoordinates
|
|
57
|
-
) ->
|
|
58
|
-
from pylegend.extensions.tds.
|
|
59
|
-
|
|
57
|
+
) -> LegacyApiTdsFrame:
|
|
58
|
+
from pylegend.extensions.tds.legacy_api.frames.legacy_api_legend_function_input_frame import (
|
|
59
|
+
LegacyApiLegendFunctionInputFrame
|
|
60
60
|
)
|
|
61
|
-
return
|
|
61
|
+
return LegacyApiLegendFunctionInputFrame(
|
|
62
62
|
path=function_path,
|
|
63
63
|
project_coordinates=project_coordinates,
|
|
64
64
|
legend_client=self.__legend_client
|
|
65
65
|
)
|
|
66
66
|
|
|
67
67
|
|
|
68
|
-
def
|
|
68
|
+
def legacy_api_tds_client(
|
|
69
69
|
legend_client: LegendClient
|
|
70
|
-
) ->
|
|
71
|
-
return
|
|
70
|
+
) -> LegacyApiTdsClient:
|
|
71
|
+
return LegacyApiTdsClient(
|
|
72
72
|
legend_client=legend_client
|
|
73
73
|
)
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: pylegend
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Python language binding for Legend data management platform
|
|
5
|
-
Home-page: https://github.com/finos/pylegend
|
|
6
5
|
License: Apache-2.0
|
|
7
6
|
Author: PyLegend Maintainers
|
|
8
7
|
Author-email: legend@finos.org
|
|
9
|
-
Requires-Python: >=3.
|
|
8
|
+
Requires-Python: >=3.9,<3.14
|
|
10
9
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
10
|
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
13
11
|
Classifier: Programming Language :: Python :: 3.9
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
16
|
Requires-Dist: ijson (>=3.1.4)
|
|
18
17
|
Requires-Dist: numpy (>=1.20.0) ; python_version < "3.12"
|
|
19
18
|
Requires-Dist: numpy (>=1.26.0) ; python_version >= "3.12"
|
|
@@ -25,8 +24,8 @@ Description-Content-Type: text/markdown
|
|
|
25
24
|
|
|
26
25
|
[](https://community.finos.org/docs/governance/Software-Projects/stages/incubating)
|
|
27
26
|
[](https://pypi.org/project/pylegend/)
|
|
28
|
-
[](https://www.python.org/downloads)
|
|
28
|
+

|
|
30
29
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
31
30
|

|
|
32
31
|

|
|
@@ -41,7 +40,7 @@ PyLegend is part of [Legend](https://github.com/finos/legend) data management pl
|
|
|
41
40
|
|
|
42
41
|
## Build from source
|
|
43
42
|
|
|
44
|
-
PyLegend requires Python 3.
|
|
43
|
+
PyLegend requires Python 3.9 or higher. We use [Poetry](https://python-poetry.org/) tool for dependency management and packaging. To install poetry, follow instructions [here](https://python-poetry.org/docs/#installation).
|
|
45
44
|
|
|
46
45
|
Run `poetry install` to install dependencies. If you intend to contribute, install dev dependencies using the command `poetry install --with dev`.
|
|
47
46
|
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
pylegend/__init__.py,sha256=gYOX0h2mTsQ_miZfuHosVzYR9O_IZjTP1FAum3naIW4,1668
|
|
2
|
+
pylegend/_typing.py,sha256=3P2K9xyyODrYRx3iDI8jtF1vGGqPbYiKqLEN9bBCdi0,1479
|
|
3
|
+
pylegend/core/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
4
|
+
pylegend/core/database/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
5
|
+
pylegend/core/database/sql_to_string/__init__.py,sha256=_qWOoReR9ygprnShQRBtp4wFmqtiPEa88jAhOZpYY2c,1028
|
|
6
|
+
pylegend/core/database/sql_to_string/config.py,sha256=xrwPFcuZyzZcKNGeOQTnFW2y7CqhT6laSAazVl93JLU,1384
|
|
7
|
+
pylegend/core/database/sql_to_string/db_extension.py,sha256=dCSz9Sc4iXWsn3u9gaMAzyZsYa1ytQ8TeeAEHBWeGOE,52986
|
|
8
|
+
pylegend/core/database/sql_to_string/generator.py,sha256=xk3siXWyR7_ahn6pwsUMi80V_7NV2tYa7x5dosiNJR4,2607
|
|
9
|
+
pylegend/core/language/__init__.py,sha256=sw70dEA5RT660Qmpjxdi1XKEWDwshuedomqHhyIJpvI,4331
|
|
10
|
+
pylegend/core/language/legacy_api/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
11
|
+
pylegend/core/language/legacy_api/aggregate_specification.py,sha256=XT9kmlT3DqrJRUbQSju69ZW-23mORnJHE_Aplw_YpNw,2207
|
|
12
|
+
pylegend/core/language/legacy_api/legacy_api_tds_row.py,sha256=B3L55ylNVnHoukuETEyU7zPS5E_G9H8hSesGN48zgkM,1149
|
|
13
|
+
pylegend/core/language/legendql_api/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
14
|
+
pylegend/core/language/legendql_api/legendql_api_custom_expressions.py,sha256=DPKdwBzE1HVfYnE99kOWzB75Uqa1nPJPcdyT5P9tdQg,19283
|
|
15
|
+
pylegend/core/language/legendql_api/legendql_api_tds_row.py,sha256=5hejBF2uYjXuaXLA8jHt6e3mj5JEQRZN_rwaPMT8JFI,10304
|
|
16
|
+
pylegend/core/language/shared/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
17
|
+
pylegend/core/language/shared/column_expressions.py,sha256=qWHVvwPGwKroQX94a_ovUrxCPnosVMX3tBWlTj7uJ6k,4333
|
|
18
|
+
pylegend/core/language/shared/expression.py,sha256=-XDJ3JfkyQ2FunACUEGI4CeTgqCvBexp55_YCaZUD1k,2446
|
|
19
|
+
pylegend/core/language/shared/functions.py,sha256=G94EiFdZV4jorJTX23ErxKP1GusKl61G3qQN1e26Zws,1495
|
|
20
|
+
pylegend/core/language/shared/helpers.py,sha256=PKse5aunaf3OMeXG0kt39XljAtN60pDDDFZ-d43-UU0,2777
|
|
21
|
+
pylegend/core/language/shared/literal_expressions.py,sha256=bU9pO-H9DxNyDlWVMiJC__YPzHQLo_v9aedllozBzVo,6185
|
|
22
|
+
pylegend/core/language/shared/operations/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
23
|
+
pylegend/core/language/shared/operations/binary_expression.py,sha256=zQuwPHUQzrhqOwSpajB2xososioCPVZYi-67DSaYBvg,4020
|
|
24
|
+
pylegend/core/language/shared/operations/boolean_operation_expressions.py,sha256=GQZp4xQttW-ayntXvyvnxhRIdcnuCFyUK7zsf8c5wJQ,4618
|
|
25
|
+
pylegend/core/language/shared/operations/collection_operation_expressions.py,sha256=PuyICSjPadQNWkp8aZnCZblRnG_uh7lPEXMDN9nwKRI,22412
|
|
26
|
+
pylegend/core/language/shared/operations/date_operation_expressions.py,sha256=q20u_NfcJFiE7GHhp0uxJzIqfwynCvVkJ5taPc45tKM,26503
|
|
27
|
+
pylegend/core/language/shared/operations/float_operation_expressions.py,sha256=XXZRgSUFLW0GLn6fMynQvFaHTxNJ5fln1UqpdhhDM18,6969
|
|
28
|
+
pylegend/core/language/shared/operations/integer_operation_expressions.py,sha256=UfxJJW3QOh-U1skZwXRIM2k2nvQTwjnT3FMrrI_a2qU,8302
|
|
29
|
+
pylegend/core/language/shared/operations/nullary_expression.py,sha256=svlZ5ejYqz843v3xkcImizcKia6RiWXXD_hA_QFT2wg,2083
|
|
30
|
+
pylegend/core/language/shared/operations/number_operation_expressions.py,sha256=BIayvrXqPjD5OQr7ttO0JgkV9zos6cCJ2OUZ5Vhq8SM,29700
|
|
31
|
+
pylegend/core/language/shared/operations/primitive_operation_expressions.py,sha256=4emM6WwCQtcgUucHW5xRR2r9pQMrDT5u7bz1U_AGqOs,5409
|
|
32
|
+
pylegend/core/language/shared/operations/string_operation_expressions.py,sha256=bkoV7mxLgZnrbKElXv-mfixqlktlp07CknhNK5R5zg8,20377
|
|
33
|
+
pylegend/core/language/shared/operations/unary_expression.py,sha256=tJCHacGspj-dkr4fepB8i9MntFMWqFVLBGORvhcly7U,2400
|
|
34
|
+
pylegend/core/language/shared/primitive_collection.py,sha256=ShUtgdZkZ8cKdQJLP5iU_zYDK7piMzWlimvjhnyfnGk,13098
|
|
35
|
+
pylegend/core/language/shared/primitives/__init__.py,sha256=9p7VVRhzeRQwTkxXQBBZuJY6P9V-yX0Q_elviaYIgPg,1649
|
|
36
|
+
pylegend/core/language/shared/primitives/boolean.py,sha256=x0JgS8E9AXv0fkExuCCyD9Paim2xwfU9cn-1Jh3bqtI,4058
|
|
37
|
+
pylegend/core/language/shared/primitives/date.py,sha256=CFiz6LquJIUHBIdHGZ5j16wYcw-Bo4nYHeM7Hne1EWI,9062
|
|
38
|
+
pylegend/core/language/shared/primitives/datetime.py,sha256=F8m-pLm_VcefI-_iF8CCjbi-AZKzrXxqyuXZtxJB_AU,2495
|
|
39
|
+
pylegend/core/language/shared/primitives/float.py,sha256=LpD3nWogv8aT6RECgI7rVmsRPY4ji96JCXdTEAr2EAg,6146
|
|
40
|
+
pylegend/core/language/shared/primitives/integer.py,sha256=dXccyccyR9UWlqTlTobTdl4PrSy7W9NPDnJKCVewJ9w,7334
|
|
41
|
+
pylegend/core/language/shared/primitives/number.py,sha256=bYqBFtsauUGijP1kqRuSYDSTIVokU0b-paFH3uZGQZU,13699
|
|
42
|
+
pylegend/core/language/shared/primitives/primitive.py,sha256=RUirddeU8kMV-wqeo2Kju7eyisY6epddIUWxZXKuKmg,4486
|
|
43
|
+
pylegend/core/language/shared/primitives/strictdate.py,sha256=FidyUqdWTaOrk6tomYHQvhfnGW--zVTt9ldIgGxJk5M,2503
|
|
44
|
+
pylegend/core/language/shared/primitives/string.py,sha256=qjiKaR5wioL8tz55BnTENtKlOGP4d1G0cVP-WhYMNrs,8282
|
|
45
|
+
pylegend/core/language/shared/tds_row.py,sha256=23sxVfa74T-TlfAs1CgvwjhV26b-FyZ72yGy9BqP7CE,9027
|
|
46
|
+
pylegend/core/project_cooridnates.py,sha256=t1G6gJzcRQRbCjGpCOk0vBiqd0F8Y_e15Nu4NuzYd6I,3751
|
|
47
|
+
pylegend/core/request/__init__.py,sha256=6jQTL8B8Sd1rsCXHr4dZ398OrvROoGI6Y_aAI_FOfiI,1082
|
|
48
|
+
pylegend/core/request/auth.py,sha256=TVoH6HNJTzRphW2zk5P_TE-QEAtpTMSEQV2U99KgLnU,4586
|
|
49
|
+
pylegend/core/request/legend_client.py,sha256=PLCCiazvFG2ujcHN-vGDQxpEl5QvFHBNNcM-lsSXOXI,3767
|
|
50
|
+
pylegend/core/request/response_reader.py,sha256=TNMi2GKk4lkmf7VMeY5n2AwhxxuWbX4M8pgC2_pXFbE,1691
|
|
51
|
+
pylegend/core/request/service_client.py,sha256=oNvMR6qNl5UcxpcAjIb4CCpd0MB3Z-Y5OJSyFPGeerM,3377
|
|
52
|
+
pylegend/core/sql/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
53
|
+
pylegend/core/sql/metamodel.py,sha256=B7aqblDyyiTsqWZUW2Is9_2FHTsYTkvhJ1FVxXxoSF8,20134
|
|
54
|
+
pylegend/core/sql/metamodel_extension.py,sha256=B53DUH4nXPWqMmbcfmLAHvJHX370J0Ml_eYdJzASbJE,15905
|
|
55
|
+
pylegend/core/tds/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
56
|
+
pylegend/core/tds/abstract/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
57
|
+
pylegend/core/tds/abstract/frames/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
58
|
+
pylegend/core/tds/abstract/frames/applied_function_tds_frame.py,sha256=C_Kh8N2kNRuzloPwpAKYvhKx_IEKfzNuVS4m8EJicvg,2760
|
|
59
|
+
pylegend/core/tds/abstract/frames/base_tds_frame.py,sha256=EpYBt5B0rw8TO9JByYMypv9aa5-oYMjSKCh4i8EwVTU,4767
|
|
60
|
+
pylegend/core/tds/abstract/frames/input_tds_frame.py,sha256=gskDqtBMn-UoLpK3hmqg8wCrePDUb8hjre3snRFZUys,1785
|
|
61
|
+
pylegend/core/tds/abstract/function_helpers.py,sha256=YGtXpelbCwTvt9mOlKQynJEmQ7FCrf_FPpe3BC3gnvY,2046
|
|
62
|
+
pylegend/core/tds/legacy_api/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
63
|
+
pylegend/core/tds/legacy_api/frames/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
64
|
+
pylegend/core/tds/legacy_api/frames/functions/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
65
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_concatenate_function.py,sha256=0DM-vFZz1MsD8ZofYk6egPiSHk9kCeaKtTkfNLD4XXg,5389
|
|
66
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_distinct_function.py,sha256=VvXQPjnAjyRmlyoA7F3uOlLQodxC8rsExw40adwFoB0,2509
|
|
67
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_drop_function.py,sha256=GswtQka0n_HOesI6jfhcr1OClmI8gVBFgRfBewN2LWc,2744
|
|
68
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_extend_function.py,sha256=_n2H8DB9yX4Uoz7g3FUREobY6hn4QItvjAqTTn5bWNU,7466
|
|
69
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_filter_function.py,sha256=zK_cnW2M3plBhsF8TRD9Zyvrn4kynqr8BEkbJh7w2ps,4891
|
|
70
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_group_by_function.py,sha256=HYoL28uLfikYk4XCl4bHBgfjMdEHjstcT7PQADJx5Oc,10655
|
|
71
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_head_function.py,sha256=_--251uGZGtNGzP0fQKx1rMDKsNvGuH9GjZz0FuIAfs,2721
|
|
72
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_join_by_columns_function.py,sha256=FZtsl3n6A2fSOHCDay868CYr9spl7jHp4mMFnnAhbns,11538
|
|
73
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_join_function.py,sha256=4LzW24c4Hn2R4A6fjRvxBBdd3gf-N1yWVgXiVSwarz4,9197
|
|
74
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_rename_columns_function.py,sha256=UaiiE7PO-wkxVC4V_l8HZ0Cj26EKsAlc9RGQA-iEM4U,5670
|
|
75
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_restrict_function.py,sha256=TMKmDnTsjWbIq3eOFU8BDhXVABYpIXPaJhManG_4SvA,4913
|
|
76
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_slice_function.py,sha256=fxz_m94OZry4kXxwyMG7suJ-5iTUPC9_SLSEBHR39rA,3223
|
|
77
|
+
pylegend/core/tds/legacy_api/frames/functions/legacy_api_sort_function.py,sha256=6Z-v0I5-mlG2FlZInnd022_6hH2zdR9_gh5yoGUM4zs,5900
|
|
78
|
+
pylegend/core/tds/legacy_api/frames/legacy_api_applied_function_tds_frame.py,sha256=TeLCuCqpDro0Ky3f3yMFO3PZC42F_91PjzLng0Fhniw,1422
|
|
79
|
+
pylegend/core/tds/legacy_api/frames/legacy_api_base_tds_frame.py,sha256=BCgCfq5p7R8i3piK4h1Mn8NK7xdTn77jUvuGJzE3W3Q,8777
|
|
80
|
+
pylegend/core/tds/legacy_api/frames/legacy_api_input_tds_frame.py,sha256=FcKJwKyG_TH4Bqn0aFU5v4l_pWC9bwYHB4f02Jp_CMs,2119
|
|
81
|
+
pylegend/core/tds/legacy_api/frames/legacy_api_tds_frame.py,sha256=F5PM5Slhaavlrgqw1GE4NiwdBsFS1o_1wPGZW8HQpOA,4196
|
|
82
|
+
pylegend/core/tds/legendql_api/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
83
|
+
pylegend/core/tds/legendql_api/frames/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
84
|
+
pylegend/core/tds/legendql_api/frames/functions/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
85
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_asofjoin_function.py,sha256=rqcP1SB24ExNVoPQm2fm2p9AR90BXeWRHmroHBnCUB4,7162
|
|
86
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_concatenate_function.py,sha256=YlIjlFsl63P_Kb65Vfsz2iiuvGte-2FmxM1UBExK3aM,5429
|
|
87
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_distinct_function.py,sha256=D9IQvwmzHHwhXJs6LkSiDPVN7PhpC72WwHuh8Rw3xcU,2531
|
|
88
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_drop_function.py,sha256=TRODbNc_F2L8qItQnp5vsmXF1pVFdMTEA26D8ISpmdM,2770
|
|
89
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_extend_function.py,sha256=V-9Foub1UC2sSlH-4oZpukmZdlm1yWOPYmpj4clEKOc,12754
|
|
90
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_filter_function.py,sha256=jlIqWQKcCF2Fqz1DjAPEsUY-_hbtqpd6Cp1gpiJcYBA,4993
|
|
91
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_function_helpers.py,sha256=SCgP7KjJNmKTN1-aPlS28gCkXSGHmOOkY6gEn8exQhc,5592
|
|
92
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_groupby_function.py,sha256=MolMqJcFWLPwT5BOEfR5_QNwwBg5DdL2a2y59QYpKZI,12012
|
|
93
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_head_function.py,sha256=WdETku0klmTIhIixGeyti-zb6Pmp0m7t5sgGrsXsMAk,2742
|
|
94
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_join_function.py,sha256=ij0Pbgzw5tywwz9dqZXKFcDOBvRTo21WS8xkO5pTkf0,9228
|
|
95
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_project_function.py,sha256=7-xTaHizQF2FNWaYpcL8g2Njgav6o5Y2jx5mQSoxrV4,8119
|
|
96
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_rename_function.py,sha256=0EPO2GSMImL84Y-RAsUplF0yZvRmg34QLVZVt6JUJBw,8801
|
|
97
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_select_function.py,sha256=_7lYdKin-aQn5tw1zofuXC3T-DxC6XxSJPSfWJqS_7I,5617
|
|
98
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_slice_function.py,sha256=kt1VH-W-RitF-DUcJWKB73NvxSOeAAXN7deeeAwopw4,3249
|
|
99
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_sort_function.py,sha256=KHfxCCRXMSbIWG3KKuAR1BzThFx0rON8CJ_5g7QUTV4,3665
|
|
100
|
+
pylegend/core/tds/legendql_api/frames/functions/legendql_api_window_extend_function.py,sha256=rhim7HNPhnIcbmlKiNN0yhzcpbdZY6aqHTIzHIrJwZw,14276
|
|
101
|
+
pylegend/core/tds/legendql_api/frames/legendql_api_applied_function_tds_frame.py,sha256=kEh2XLoxYucQ6R7i5SKWSElUxbslufh5X5reIzOZbDw,1442
|
|
102
|
+
pylegend/core/tds/legendql_api/frames/legendql_api_base_tds_frame.py,sha256=QOV1NG8Ku9S3MQg_B-GkAvA0z1wEMR6Z1eZSLz3uqa8,17659
|
|
103
|
+
pylegend/core/tds/legendql_api/frames/legendql_api_input_tds_frame.py,sha256=x4rl6ER2ksy_PAcz9vlN_GNXejKpUg_e_YgAynfzS1Q,2147
|
|
104
|
+
pylegend/core/tds/legendql_api/frames/legendql_api_tds_frame.py,sha256=4-ffrFZia3jS8mToSVqz22J75t-MuI8-QZJQzm7AGAY,11366
|
|
105
|
+
pylegend/core/tds/pandas_api/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
106
|
+
pylegend/core/tds/pandas_api/frames/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
107
|
+
pylegend/core/tds/pandas_api/frames/functions/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
108
|
+
pylegend/core/tds/pandas_api/frames/functions/assign_function.py,sha256=s4zJo5pQoNYWj4HrR8sRS-mINuMN86cv7lMd_kf6N-M,4633
|
|
109
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_applied_function_tds_frame.py,sha256=Edb5UVFsUkTqASyFnhDzyCM5WVjwwKBs-deAYpmwBhs,2747
|
|
110
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_base_tds_frame.py,sha256=7y9PaAeTli1bg4penmPlE5rt0oZvwoZXBhB-UpnAjfA,5756
|
|
111
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_input_tds_frame.py,sha256=R74vHUXs7G1V_fquGS9-Y9OfagL4kY2zfd1PNNme4S4,1913
|
|
112
|
+
pylegend/core/tds/pandas_api/frames/pandas_api_tds_frame.py,sha256=Z9GbuiORa4cS6DtCQlLWtIageprIc0E8dONpaxcf3ZA,1285
|
|
113
|
+
pylegend/core/tds/result_handler/__init__.py,sha256=8RE84xfkARwDbaQCvZulXcvDJlI-V5DuJp9RsdaGnqU,1141
|
|
114
|
+
pylegend/core/tds/result_handler/result_handler.py,sha256=7tSzOswFCapAAdACphIR3Q0QISYyjo_On_vtsUIPAbA,1183
|
|
115
|
+
pylegend/core/tds/result_handler/to_csv_file_result_handler.py,sha256=lm0UG87RNUXqQwOtSgxHbLKzAHebNuE3zIXM3ErtOxM,2270
|
|
116
|
+
pylegend/core/tds/result_handler/to_json_file_result_handler.py,sha256=6Qc6hxNvWhceMeIE8skdwcY5V_dLJ7YHmxV37W6MRdo,1357
|
|
117
|
+
pylegend/core/tds/result_handler/to_string_result_handler.py,sha256=y7xlSahtrsMhzFU2aPHgoT2NKm-Jn7RC2rEZmbYfYTY,1142
|
|
118
|
+
pylegend/core/tds/sql_query_helpers.py,sha256=9uN6I8D-fLdqVbkJb5gWm0wU-QrKDdtH4pdM_Njn55c,3614
|
|
119
|
+
pylegend/core/tds/tds_column.py,sha256=Kyi39cO0X9lFOom1m0gC4GrWBSmzlMj4BMT-9x_cG3A,5231
|
|
120
|
+
pylegend/core/tds/tds_frame.py,sha256=UgsIzRiKcSNnxs8ZQV_qqaSv-l8e1_8zAZU_DKDQaDI,3731
|
|
121
|
+
pylegend/extensions/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
122
|
+
pylegend/extensions/database/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
123
|
+
pylegend/extensions/database/vendors/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
124
|
+
pylegend/extensions/database/vendors/postgres/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
125
|
+
pylegend/extensions/database/vendors/postgres/postgres_sql_to_string.py,sha256=QQ5lB-C8qNGS18UYHhG302t7DkVMjpfg4o8zmtW0ZDs,1341
|
|
126
|
+
pylegend/extensions/tds/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
127
|
+
pylegend/extensions/tds/abstract/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
128
|
+
pylegend/extensions/tds/abstract/legend_function_input_frame.py,sha256=-Od_c37Z_KfWxbOg4wnOXnR1u0Bl09PwuTlEcCgoe4c,3593
|
|
129
|
+
pylegend/extensions/tds/abstract/legend_service_input_frame.py,sha256=NvjW7KZGFgHDvIJRUmzqGTiVWKmFFBqQUtff3GGwxmc,3617
|
|
130
|
+
pylegend/extensions/tds/abstract/table_spec_input_frame.py,sha256=a10caG6_0VdTa9mOM013GA3LRbE-rp7NQobPDes3OaY,2498
|
|
131
|
+
pylegend/extensions/tds/legacy_api/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
132
|
+
pylegend/extensions/tds/legacy_api/frames/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
133
|
+
pylegend/extensions/tds/legacy_api/frames/legacy_api_legend_function_input_frame.py,sha256=7TyTCRezOTEgAliq6Zd_50adKWsUsH-HPxjeGMeA0To,1818
|
|
134
|
+
pylegend/extensions/tds/legacy_api/frames/legacy_api_legend_service_input_frame.py,sha256=ZxLcQiyRk88sYnJ3yMXqsb6N_d60qKtEglEeD8PouBY,1823
|
|
135
|
+
pylegend/extensions/tds/legacy_api/frames/legacy_api_table_spec_input_frame.py,sha256=QMNTG82yb0KbI2MgevigvLUSOu4jdkCRWpP6FTGHVEk,1465
|
|
136
|
+
pylegend/extensions/tds/legendql_api/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
137
|
+
pylegend/extensions/tds/legendql_api/frames/__init__.py,sha256=g6w4WCuQ2pqQG6yyn-QLLXED3ttOOB8YnXzVt3ijb28,578
|
|
138
|
+
pylegend/extensions/tds/legendql_api/frames/legendql_api_legend_service_input_frame.py,sha256=UNvZEn1xbXS1y_1Nv6ibTmMpjq6fbFB66U7Ff9Hve2w,1841
|
|
139
|
+
pylegend/extensions/tds/legendql_api/frames/legendql_api_table_spec_input_frame.py,sha256=hJ4MEHOhSuc4i6iheKQtsbdEWxltD3-ilxpwbJYppPM,1481
|
|
140
|
+
pylegend/extensions/tds/pandas_api/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
141
|
+
pylegend/extensions/tds/pandas_api/frames/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
142
|
+
pylegend/extensions/tds/pandas_api/frames/pandas_api_legend_function_input_frame.py,sha256=aJaNPJcfMdc8HTJKErah4BYSnHfmKMIMvoKtEeCx4zQ,1818
|
|
143
|
+
pylegend/extensions/tds/pandas_api/frames/pandas_api_legend_service_input_frame.py,sha256=dOV6qXIrNkZ8gwmPt0ljr5CVViS4AH5Y4h3L-1WnNdM,1822
|
|
144
|
+
pylegend/extensions/tds/pandas_api/frames/pandas_api_table_spec_input_frame.py,sha256=2pj-siOOvIFEqNOG-f4VUvhY9gBGUFFDZz7jZl7QpLg,1465
|
|
145
|
+
pylegend/extensions/tds/result_handler/__init__.py,sha256=NIIUcl39wpSc51IhUUEKtEYlve89Xncq0YEG78Gren4,864
|
|
146
|
+
pylegend/extensions/tds/result_handler/to_pandas_df_result_handler.py,sha256=tvVsxDOzHNTvzjdApIhmeefws5_u0N8Rqm7UvEtj70w,4958
|
|
147
|
+
pylegend/legacy_api_tds_client.py,sha256=IXfo2pdBFV3M3S4RYKJcvudMc_OGdR0yvJhTV-ovI3s,2319
|
|
148
|
+
pylegend/utils/__init__.py,sha256=LXTDJSDmHQXtnMDZouhZp9IZQVpY6ONkINbUYjtnMkE,578
|
|
149
|
+
pylegend/utils/class_utils.py,sha256=t4PpF3jAXS_D6p9TqlSppryNYNOuy5C-kbKn2Kgb4QU,973
|
|
150
|
+
pylegend-0.5.0.dist-info/LICENSE,sha256=AGR96_qQPZO66Gjqq4G6r_g670K35VtW-IobTAkmZJM,11343
|
|
151
|
+
pylegend-0.5.0.dist-info/LICENSE.spdx,sha256=i7TsBclLotUvMjx9vZ_6S8Pp0r4uknWGw1RwiKBBvQ4,207
|
|
152
|
+
pylegend-0.5.0.dist-info/METADATA,sha256=ggohQnjEXzNQyJsn8l54276zCqQOl8yx8VK9Fif7nTs,4210
|
|
153
|
+
pylegend-0.5.0.dist-info/NOTICE,sha256=2Lr4FqiscyRI7-vyn7c2z-zqUw2p6x7upJyBvFKkHjk,167
|
|
154
|
+
pylegend-0.5.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
155
|
+
pylegend-0.5.0.dist-info/RECORD,,
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 Goldman Sachs
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
from pylegend._typing import (
|
|
16
|
-
PyLegendSequence,
|
|
17
|
-
PyLegendDict,
|
|
18
|
-
)
|
|
19
|
-
from pylegend.core.language.expression import (
|
|
20
|
-
PyLegendExpression,
|
|
21
|
-
PyLegendExpressionBooleanReturn,
|
|
22
|
-
)
|
|
23
|
-
from pylegend.core.language.operations.binary_expression import PyLegendBinaryExpression
|
|
24
|
-
from pylegend.core.sql.metamodel import (
|
|
25
|
-
Expression,
|
|
26
|
-
QuerySpecification,
|
|
27
|
-
ComparisonExpression,
|
|
28
|
-
ComparisonOperator,
|
|
29
|
-
)
|
|
30
|
-
from pylegend.core.tds.tds_frame import FrameToSqlConfig
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
__all__: PyLegendSequence[str] = [
|
|
34
|
-
"PyLegendPrimitiveEqualsExpression",
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class PyLegendPrimitiveEqualsExpression(PyLegendBinaryExpression, PyLegendExpressionBooleanReturn):
|
|
39
|
-
|
|
40
|
-
@staticmethod
|
|
41
|
-
def __to_sql_func(
|
|
42
|
-
expression1: Expression,
|
|
43
|
-
expression2: Expression,
|
|
44
|
-
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
45
|
-
config: FrameToSqlConfig
|
|
46
|
-
) -> Expression:
|
|
47
|
-
return ComparisonExpression(expression1, expression2, ComparisonOperator.EQUAL)
|
|
48
|
-
|
|
49
|
-
def __init__(self, operand1: PyLegendExpression, operand2: PyLegendExpression) -> None:
|
|
50
|
-
PyLegendExpressionBooleanReturn.__init__(self)
|
|
51
|
-
PyLegendBinaryExpression.__init__(
|
|
52
|
-
self,
|
|
53
|
-
operand1,
|
|
54
|
-
operand2,
|
|
55
|
-
PyLegendPrimitiveEqualsExpression.__to_sql_func
|
|
56
|
-
)
|