pylegend 0.9.0__tar.gz → 0.11.0__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.
- {pylegend-0.9.0 → pylegend-0.11.0}/PKG-INFO +1 -1
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/functions.py +7 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/integer_operation_expressions.py +7 -1
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/number_operation_expressions.py +264 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/number.py +28 -0
- pylegend-0.11.0/pylegend/core/tds/pandas_api/frames/functions/aggregate_function.py +441 -0
- pylegend-0.11.0/pylegend/core/tds/pandas_api/frames/functions/merge.py +513 -0
- pylegend-0.11.0/pylegend/core/tds/pandas_api/frames/functions/rename.py +214 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/pandas_api_base_tds_frame.py +275 -0
- pylegend-0.11.0/pylegend/core/tds/pandas_api/frames/pandas_api_groupby_tds_frame.py +325 -0
- pylegend-0.11.0/pylegend/core/tds/pandas_api/frames/pandas_api_tds_frame.py +267 -0
- pylegend-0.11.0/pylegend/extensions/tds/abstract/csv_tds_frame.py +95 -0
- pylegend-0.11.0/pylegend/extensions/tds/legendql_api/frames/legendql_api_csv_input_frame.py +36 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pyproject.toml +1 -1
- pylegend-0.9.0/pylegend/core/tds/pandas_api/frames/functions/aggregate_function.py +0 -316
- pylegend-0.9.0/pylegend/core/tds/pandas_api/frames/pandas_api_tds_frame.py +0 -130
- {pylegend-0.9.0 → pylegend-0.11.0}/LICENSE +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/LICENSE.spdx +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/NOTICE +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/README.md +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/_typing.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/database/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/database/sql_to_string/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/database/sql_to_string/config.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/database/sql_to_string/db_extension.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/database/sql_to_string/generator.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/legacy_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/legacy_api/aggregate_specification.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/legacy_api/legacy_api_tds_row.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/legendql_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/legendql_api/legendql_api_custom_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/legendql_api/legendql_api_tds_row.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/pandas_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/pandas_api/pandas_api_aggregate_specification.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/pandas_api/pandas_api_custom_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/pandas_api/pandas_api_series.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/pandas_api/pandas_api_tds_row.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/column_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/expression.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/helpers.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/literal_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/binary_expression.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/boolean_operation_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/collection_operation_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/date_operation_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/float_operation_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/nary_expression.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/nullary_expression.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/primitive_operation_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/string_operation_expressions.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/operations/unary_expression.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/pct_helpers.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitive_collection.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/boolean.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/date.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/datetime.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/float.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/integer.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/primitive.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/strictdate.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/primitives/string.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/language/shared/tds_row.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/project_cooridnates.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/request/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/request/auth.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/request/legend_client.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/request/response_reader.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/request/service_client.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/sql/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/sql/metamodel.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/sql/metamodel_extension.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/abstract/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/abstract/frames/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/abstract/frames/applied_function_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/abstract/frames/base_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/abstract/frames/input_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/abstract/function_helpers.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_concatenate_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_distinct_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_drop_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_extend_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_filter_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_group_by_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_head_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_join_by_columns_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_join_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_rename_columns_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_restrict_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_slice_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/functions/legacy_api_sort_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/legacy_api_applied_function_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/legacy_api_base_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/legacy_api_input_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legacy_api/frames/legacy_api_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_asofjoin_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_concatenate_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_distinct_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_drop_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_extend_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_filter_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_function_helpers.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_groupby_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_head_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_join_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_project_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_rename_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_select_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_slice_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_sort_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/functions/legendql_api_window_extend_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/legendql_api_applied_function_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/legendql_api_base_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/legendql_api_input_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/legendql_api/frames/legendql_api_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/functions/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/functions/assign_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/functions/drop.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/functions/filter.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/functions/filtering.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/functions/sort_values_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/functions/truncate_function.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/pandas_api_applied_function_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/pandas_api/frames/pandas_api_input_tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/result_handler/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/result_handler/result_handler.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/result_handler/to_csv_file_result_handler.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/result_handler/to_json_file_result_handler.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/result_handler/to_string_result_handler.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/sql_query_helpers.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/tds_column.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/core/tds/tds_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/database/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/database/vendors/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/database/vendors/postgres/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/database/vendors/postgres/postgres_sql_to_string.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/abstract/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/abstract/legend_function_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/abstract/legend_service_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/abstract/table_spec_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legacy_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legacy_api/frames/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legacy_api/frames/legacy_api_legend_function_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legacy_api/frames/legacy_api_legend_service_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legacy_api/frames/legacy_api_table_spec_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legendql_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legendql_api/frames/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legendql_api/frames/legendql_api_legend_function_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legendql_api/frames/legendql_api_legend_service_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/legendql_api/frames/legendql_api_table_spec_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/pandas_api/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/pandas_api/frames/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/pandas_api/frames/pandas_api_legend_function_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/pandas_api/frames/pandas_api_legend_service_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/pandas_api/frames/pandas_api_table_spec_input_frame.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/result_handler/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/extensions/tds/result_handler/to_pandas_df_result_handler.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/legacy_api_tds_client.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/legendql_api_tds_client.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/utils/__init__.py +0 -0
- {pylegend-0.9.0 → pylegend-0.11.0}/pylegend/utils/class_utils.py +0 -0
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
from pylegend._typing import (
|
|
17
17
|
PyLegendSequence,
|
|
18
18
|
)
|
|
19
|
+
from pylegend.core.language import PyLegendNumber
|
|
20
|
+
from pylegend.core.language.shared.operations.number_operation_expressions import PyLegendNumberPiExpression
|
|
19
21
|
from pylegend.core.language.shared.primitives.strictdate import PyLegendStrictDate
|
|
20
22
|
from pylegend.core.language.shared.primitives.datetime import PyLegendDateTime
|
|
21
23
|
from pylegend.core.language.shared.primitives.string import PyLegendString
|
|
@@ -32,6 +34,7 @@ __all__: PyLegendSequence[str] = [
|
|
|
32
34
|
"today",
|
|
33
35
|
"now",
|
|
34
36
|
"current_user",
|
|
37
|
+
"pi"
|
|
35
38
|
]
|
|
36
39
|
|
|
37
40
|
|
|
@@ -45,3 +48,7 @@ def now() -> PyLegendDateTime:
|
|
|
45
48
|
|
|
46
49
|
def current_user() -> PyLegendString:
|
|
47
50
|
return PyLegendString(PyLegendCurrentUserExpression())
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def pi() -> PyLegendNumber:
|
|
54
|
+
return PyLegendNumber(PyLegendNumberPiExpression())
|
|
@@ -146,7 +146,13 @@ class PyLegendIntegerModuloExpression(PyLegendBinaryExpression, PyLegendExpressi
|
|
|
146
146
|
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
147
147
|
config: FrameToSqlConfig
|
|
148
148
|
) -> Expression:
|
|
149
|
-
return ArithmeticExpression(
|
|
149
|
+
return ArithmeticExpression(
|
|
150
|
+
ArithmeticType.MODULUS,
|
|
151
|
+
ArithmeticExpression(
|
|
152
|
+
ArithmeticType.ADD,
|
|
153
|
+
ArithmeticExpression(ArithmeticType.MODULUS, expression1, expression2),
|
|
154
|
+
expression2),
|
|
155
|
+
expression2)
|
|
150
156
|
|
|
151
157
|
@staticmethod
|
|
152
158
|
def __to_pure_func(op1_expr: str, op2_expr: str, config: FrameToPureConfig) -> str:
|
|
@@ -22,6 +22,7 @@ from pylegend.core.language.shared.expression import (
|
|
|
22
22
|
PyLegendExpressionBooleanReturn,
|
|
23
23
|
)
|
|
24
24
|
from pylegend.core.language.shared.operations.binary_expression import PyLegendBinaryExpression
|
|
25
|
+
from pylegend.core.language.shared.operations.nullary_expression import PyLegendNullaryExpression
|
|
25
26
|
from pylegend.core.language.shared.operations.unary_expression import PyLegendUnaryExpression
|
|
26
27
|
from pylegend.core.language.shared.helpers import generate_pure_functional_call
|
|
27
28
|
from pylegend.core.tds.tds_frame import FrameToSqlConfig
|
|
@@ -34,6 +35,8 @@ from pylegend.core.sql.metamodel import (
|
|
|
34
35
|
ComparisonOperator,
|
|
35
36
|
ComparisonExpression,
|
|
36
37
|
NegativeExpression,
|
|
38
|
+
FunctionCall,
|
|
39
|
+
QualifiedName
|
|
37
40
|
)
|
|
38
41
|
from pylegend.core.sql.metamodel_extension import (
|
|
39
42
|
AbsoluteExpression,
|
|
@@ -85,6 +88,14 @@ __all__: PyLegendSequence[str] = [
|
|
|
85
88
|
"PyLegendNumberArcTanExpression",
|
|
86
89
|
"PyLegendNumberArcTan2Expression",
|
|
87
90
|
"PyLegendNumberCotExpression",
|
|
91
|
+
"PyLegendNumberLog10Expression",
|
|
92
|
+
"PyLegendNumberDegreesExpression",
|
|
93
|
+
"PyLegendNumberRadiansExpression",
|
|
94
|
+
"PyLegendNumberSignExpression",
|
|
95
|
+
"PyLegendNumberHyperbolicSinExpression",
|
|
96
|
+
"PyLegendNumberHyperbolicCosExpression",
|
|
97
|
+
"PyLegendNumberHyperbolicTanExpression",
|
|
98
|
+
"PyLegendNumberPiExpression"
|
|
88
99
|
]
|
|
89
100
|
|
|
90
101
|
|
|
@@ -821,3 +832,256 @@ class PyLegendNumberCotExpression(PyLegendUnaryExpression, PyLegendExpressionNum
|
|
|
821
832
|
non_nullable=True,
|
|
822
833
|
operand_needs_to_be_non_nullable=True,
|
|
823
834
|
)
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
class PyLegendNumberLog10Expression(PyLegendUnaryExpression, PyLegendExpressionNumberReturn):
|
|
838
|
+
|
|
839
|
+
@staticmethod
|
|
840
|
+
def __to_sql_func(
|
|
841
|
+
expression: Expression,
|
|
842
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
843
|
+
config: FrameToSqlConfig
|
|
844
|
+
) -> Expression:
|
|
845
|
+
return FunctionCall(
|
|
846
|
+
name=QualifiedName(parts=["LOG10"]),
|
|
847
|
+
distinct=False,
|
|
848
|
+
arguments=[expression],
|
|
849
|
+
filter_=None,
|
|
850
|
+
window=None
|
|
851
|
+
)
|
|
852
|
+
|
|
853
|
+
@staticmethod
|
|
854
|
+
def __to_pure_func(op_expr: str, config: FrameToPureConfig) -> str:
|
|
855
|
+
return generate_pure_functional_call("log10", [op_expr])
|
|
856
|
+
|
|
857
|
+
def __init__(self, operand: PyLegendExpressionNumberReturn) -> None:
|
|
858
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
859
|
+
PyLegendUnaryExpression.__init__(
|
|
860
|
+
self,
|
|
861
|
+
operand,
|
|
862
|
+
PyLegendNumberLog10Expression.__to_sql_func,
|
|
863
|
+
PyLegendNumberLog10Expression.__to_pure_func,
|
|
864
|
+
non_nullable=True,
|
|
865
|
+
operand_needs_to_be_non_nullable=True,
|
|
866
|
+
)
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
class PyLegendNumberDegreesExpression(PyLegendUnaryExpression, PyLegendExpressionNumberReturn):
|
|
870
|
+
|
|
871
|
+
@staticmethod
|
|
872
|
+
def __to_sql_func(
|
|
873
|
+
expression: Expression,
|
|
874
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
875
|
+
config: FrameToSqlConfig
|
|
876
|
+
) -> Expression:
|
|
877
|
+
return FunctionCall(
|
|
878
|
+
name=QualifiedName(parts=["DEGREES"]),
|
|
879
|
+
distinct=False,
|
|
880
|
+
arguments=[expression],
|
|
881
|
+
filter_=None,
|
|
882
|
+
window=None
|
|
883
|
+
)
|
|
884
|
+
|
|
885
|
+
@staticmethod
|
|
886
|
+
def __to_pure_func(op_expr: str, config: FrameToPureConfig) -> str:
|
|
887
|
+
return generate_pure_functional_call("toDegrees", [op_expr])
|
|
888
|
+
|
|
889
|
+
def __init__(self, operand: PyLegendExpressionNumberReturn) -> None:
|
|
890
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
891
|
+
PyLegendUnaryExpression.__init__(
|
|
892
|
+
self,
|
|
893
|
+
operand,
|
|
894
|
+
PyLegendNumberDegreesExpression.__to_sql_func,
|
|
895
|
+
PyLegendNumberDegreesExpression.__to_pure_func,
|
|
896
|
+
non_nullable=True,
|
|
897
|
+
operand_needs_to_be_non_nullable=True,
|
|
898
|
+
)
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
class PyLegendNumberRadiansExpression(PyLegendUnaryExpression, PyLegendExpressionNumberReturn):
|
|
902
|
+
|
|
903
|
+
@staticmethod
|
|
904
|
+
def __to_sql_func(
|
|
905
|
+
expression: Expression,
|
|
906
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
907
|
+
config: FrameToSqlConfig
|
|
908
|
+
) -> Expression:
|
|
909
|
+
return FunctionCall(
|
|
910
|
+
name=QualifiedName(parts=["RADIANS"]),
|
|
911
|
+
distinct=False,
|
|
912
|
+
arguments=[expression],
|
|
913
|
+
filter_=None,
|
|
914
|
+
window=None
|
|
915
|
+
)
|
|
916
|
+
|
|
917
|
+
@staticmethod
|
|
918
|
+
def __to_pure_func(op_expr: str, config: FrameToPureConfig) -> str:
|
|
919
|
+
return generate_pure_functional_call("toRadians", [op_expr])
|
|
920
|
+
|
|
921
|
+
def __init__(self, operand: PyLegendExpressionNumberReturn) -> None:
|
|
922
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
923
|
+
PyLegendUnaryExpression.__init__(
|
|
924
|
+
self,
|
|
925
|
+
operand,
|
|
926
|
+
PyLegendNumberRadiansExpression.__to_sql_func,
|
|
927
|
+
PyLegendNumberRadiansExpression.__to_pure_func,
|
|
928
|
+
non_nullable=True,
|
|
929
|
+
operand_needs_to_be_non_nullable=True,
|
|
930
|
+
)
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
class PyLegendNumberSignExpression(PyLegendUnaryExpression, PyLegendExpressionNumberReturn):
|
|
934
|
+
|
|
935
|
+
@staticmethod
|
|
936
|
+
def __to_sql_func(
|
|
937
|
+
expression: Expression,
|
|
938
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
939
|
+
config: FrameToSqlConfig
|
|
940
|
+
) -> Expression:
|
|
941
|
+
return FunctionCall(
|
|
942
|
+
name=QualifiedName(parts=["SIGN"]),
|
|
943
|
+
distinct=False,
|
|
944
|
+
arguments=[expression],
|
|
945
|
+
filter_=None,
|
|
946
|
+
window=None
|
|
947
|
+
)
|
|
948
|
+
|
|
949
|
+
@staticmethod
|
|
950
|
+
def __to_pure_func(op_expr: str, config: FrameToPureConfig) -> str:
|
|
951
|
+
return generate_pure_functional_call("sign", [op_expr])
|
|
952
|
+
|
|
953
|
+
def __init__(self, operand: PyLegendExpressionNumberReturn) -> None:
|
|
954
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
955
|
+
PyLegendUnaryExpression.__init__(
|
|
956
|
+
self,
|
|
957
|
+
operand,
|
|
958
|
+
PyLegendNumberSignExpression.__to_sql_func,
|
|
959
|
+
PyLegendNumberSignExpression.__to_pure_func,
|
|
960
|
+
non_nullable=True,
|
|
961
|
+
operand_needs_to_be_non_nullable=True,
|
|
962
|
+
)
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
class PyLegendNumberHyperbolicSinExpression(PyLegendUnaryExpression, PyLegendExpressionNumberReturn):
|
|
966
|
+
|
|
967
|
+
@staticmethod
|
|
968
|
+
def __to_sql_func(
|
|
969
|
+
expression: Expression,
|
|
970
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
971
|
+
config: FrameToSqlConfig
|
|
972
|
+
) -> Expression:
|
|
973
|
+
return FunctionCall(
|
|
974
|
+
name=QualifiedName(parts=["SINH"]),
|
|
975
|
+
distinct=False,
|
|
976
|
+
arguments=[expression],
|
|
977
|
+
filter_=None,
|
|
978
|
+
window=None
|
|
979
|
+
)
|
|
980
|
+
|
|
981
|
+
@staticmethod
|
|
982
|
+
def __to_pure_func(op_expr: str, config: FrameToPureConfig) -> str:
|
|
983
|
+
return generate_pure_functional_call("sinh", [op_expr])
|
|
984
|
+
|
|
985
|
+
def __init__(self, operand: PyLegendExpressionNumberReturn) -> None:
|
|
986
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
987
|
+
PyLegendUnaryExpression.__init__(
|
|
988
|
+
self,
|
|
989
|
+
operand,
|
|
990
|
+
PyLegendNumberHyperbolicSinExpression.__to_sql_func,
|
|
991
|
+
PyLegendNumberHyperbolicSinExpression.__to_pure_func,
|
|
992
|
+
non_nullable=True,
|
|
993
|
+
operand_needs_to_be_non_nullable=True,
|
|
994
|
+
)
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
class PyLegendNumberHyperbolicCosExpression(PyLegendUnaryExpression, PyLegendExpressionNumberReturn):
|
|
998
|
+
|
|
999
|
+
@staticmethod
|
|
1000
|
+
def __to_sql_func(
|
|
1001
|
+
expression: Expression,
|
|
1002
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
1003
|
+
config: FrameToSqlConfig
|
|
1004
|
+
) -> Expression:
|
|
1005
|
+
return FunctionCall(
|
|
1006
|
+
name=QualifiedName(parts=["COSH"]),
|
|
1007
|
+
distinct=False,
|
|
1008
|
+
arguments=[expression],
|
|
1009
|
+
filter_=None,
|
|
1010
|
+
window=None
|
|
1011
|
+
)
|
|
1012
|
+
|
|
1013
|
+
@staticmethod
|
|
1014
|
+
def __to_pure_func(op_expr: str, config: FrameToPureConfig) -> str:
|
|
1015
|
+
return generate_pure_functional_call("cosh", [op_expr])
|
|
1016
|
+
|
|
1017
|
+
def __init__(self, operand: PyLegendExpressionNumberReturn) -> None:
|
|
1018
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
1019
|
+
PyLegendUnaryExpression.__init__(
|
|
1020
|
+
self,
|
|
1021
|
+
operand,
|
|
1022
|
+
PyLegendNumberHyperbolicCosExpression.__to_sql_func,
|
|
1023
|
+
PyLegendNumberHyperbolicCosExpression.__to_pure_func,
|
|
1024
|
+
non_nullable=True,
|
|
1025
|
+
operand_needs_to_be_non_nullable=True,
|
|
1026
|
+
)
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
class PyLegendNumberHyperbolicTanExpression(PyLegendUnaryExpression, PyLegendExpressionNumberReturn):
|
|
1030
|
+
|
|
1031
|
+
@staticmethod
|
|
1032
|
+
def __to_sql_func(
|
|
1033
|
+
expression: Expression,
|
|
1034
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
1035
|
+
config: FrameToSqlConfig
|
|
1036
|
+
) -> Expression:
|
|
1037
|
+
return FunctionCall(
|
|
1038
|
+
name=QualifiedName(parts=["TANH"]),
|
|
1039
|
+
distinct=False,
|
|
1040
|
+
arguments=[expression],
|
|
1041
|
+
filter_=None,
|
|
1042
|
+
window=None
|
|
1043
|
+
)
|
|
1044
|
+
|
|
1045
|
+
@staticmethod
|
|
1046
|
+
def __to_pure_func(op_expr: str, config: FrameToPureConfig) -> str:
|
|
1047
|
+
return generate_pure_functional_call("tanh", [op_expr])
|
|
1048
|
+
|
|
1049
|
+
def __init__(self, operand: PyLegendExpressionNumberReturn) -> None:
|
|
1050
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
1051
|
+
PyLegendUnaryExpression.__init__(
|
|
1052
|
+
self,
|
|
1053
|
+
operand,
|
|
1054
|
+
PyLegendNumberHyperbolicTanExpression.__to_sql_func,
|
|
1055
|
+
PyLegendNumberHyperbolicTanExpression.__to_pure_func,
|
|
1056
|
+
non_nullable=True,
|
|
1057
|
+
operand_needs_to_be_non_nullable=True,
|
|
1058
|
+
)
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
class PyLegendNumberPiExpression(PyLegendNullaryExpression, PyLegendExpressionNumberReturn):
|
|
1062
|
+
|
|
1063
|
+
@staticmethod
|
|
1064
|
+
def __to_sql_func(
|
|
1065
|
+
frame_name_to_base_query_map: PyLegendDict[str, QuerySpecification],
|
|
1066
|
+
config: FrameToSqlConfig
|
|
1067
|
+
) -> Expression:
|
|
1068
|
+
return FunctionCall(
|
|
1069
|
+
name=QualifiedName(parts=["PI"]),
|
|
1070
|
+
distinct=False,
|
|
1071
|
+
arguments=[],
|
|
1072
|
+
filter_=None,
|
|
1073
|
+
window=None
|
|
1074
|
+
)
|
|
1075
|
+
|
|
1076
|
+
@staticmethod
|
|
1077
|
+
def __to_pure_func(config: FrameToPureConfig) -> str:
|
|
1078
|
+
return "pi()"
|
|
1079
|
+
|
|
1080
|
+
def __init__(self) -> None:
|
|
1081
|
+
PyLegendExpressionNumberReturn.__init__(self)
|
|
1082
|
+
PyLegendNullaryExpression.__init__(
|
|
1083
|
+
self,
|
|
1084
|
+
PyLegendNumberPiExpression.__to_sql_func,
|
|
1085
|
+
PyLegendNumberPiExpression.__to_pure_func,
|
|
1086
|
+
non_nullable=True
|
|
1087
|
+
)
|
|
@@ -56,6 +56,13 @@ from pylegend.core.language.shared.operations.number_operation_expressions impor
|
|
|
56
56
|
PyLegendNumberArcTanExpression,
|
|
57
57
|
PyLegendNumberArcTan2Expression,
|
|
58
58
|
PyLegendNumberCotExpression,
|
|
59
|
+
PyLegendNumberLog10Expression,
|
|
60
|
+
PyLegendNumberDegreesExpression,
|
|
61
|
+
PyLegendNumberRadiansExpression,
|
|
62
|
+
PyLegendNumberSignExpression,
|
|
63
|
+
PyLegendNumberHyperbolicSinExpression,
|
|
64
|
+
PyLegendNumberHyperbolicCosExpression,
|
|
65
|
+
PyLegendNumberHyperbolicTanExpression
|
|
59
66
|
)
|
|
60
67
|
from pylegend.core.sql.metamodel import (
|
|
61
68
|
Expression,
|
|
@@ -290,6 +297,27 @@ class PyLegendNumber(PyLegendPrimitive):
|
|
|
290
297
|
raise TypeError("Round parameter should be an int. Passed - " + str(type(n)))
|
|
291
298
|
return PyLegendNumber(PyLegendNumberRoundExpression(self.__value, PyLegendIntegerLiteralExpression(n)))
|
|
292
299
|
|
|
300
|
+
def log10(self) -> "PyLegendNumber":
|
|
301
|
+
return PyLegendNumber(PyLegendNumberLog10Expression(self.__value))
|
|
302
|
+
|
|
303
|
+
def degrees(self) -> "PyLegendNumber":
|
|
304
|
+
return PyLegendNumber(PyLegendNumberDegreesExpression(self.__value))
|
|
305
|
+
|
|
306
|
+
def radians(self) -> "PyLegendNumber":
|
|
307
|
+
return PyLegendNumber(PyLegendNumberRadiansExpression(self.__value))
|
|
308
|
+
|
|
309
|
+
def sign(self) -> "PyLegendNumber":
|
|
310
|
+
return PyLegendNumber(PyLegendNumberSignExpression(self.__value))
|
|
311
|
+
|
|
312
|
+
def sinh(self) -> "PyLegendNumber":
|
|
313
|
+
return PyLegendNumber(PyLegendNumberHyperbolicSinExpression(self.__value))
|
|
314
|
+
|
|
315
|
+
def cosh(self) -> "PyLegendNumber":
|
|
316
|
+
return PyLegendNumber(PyLegendNumberHyperbolicCosExpression(self.__value))
|
|
317
|
+
|
|
318
|
+
def tanh(self) -> "PyLegendNumber":
|
|
319
|
+
return PyLegendNumber(PyLegendNumberHyperbolicTanExpression(self.__value))
|
|
320
|
+
|
|
293
321
|
def __round__(self, n: PyLegendOptional[int] = None) -> "PyLegendNumber":
|
|
294
322
|
return self.round(n)
|
|
295
323
|
|