pylegend 0.9.0__py3-none-any.whl → 0.11.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.
@@ -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(ArithmeticType.MODULUS, expression1, expression2)
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