1. Prometheus Research, LLC
  2. Prometheus
  3. htsql

Commits

Kirill Simonov  committed f76d91f

Refactoring functions.

Somewhat reduced proliferation of signatures by using the same signature
for an abstract polymorphic function and its most common concrete
instance.

  • Participants
  • Parent commits 9571005
  • Branches default

Comments (0)

Files changed (4)

File src/htsql/tr/fn/bind.py

View file
                         SortDirectionSig, LimitSig, SortSig, NullSig, TrueSig,
                         FalseSig, CastSig, DateSig, EqualSig, AmongSig,
                         TotallyEqualSig, AndSig, OrSig, NotSig, CompareSig,
-                        AddSig, NumericAddSig, ConcatenateSig,
-                        DateIncrementSig, SubtractSig, NumericSubtractSig,
-                        DateDecrementSig, DateDifferenceSig, MultiplySig,
-                        NumericMultiplySig, DivideSig, NumericDivideSig,
-                        IsNullSig, NullIfSig, IfNullSig, IfSig, SwitchSig,
-                        KeepPolaritySig, ReversePolaritySig,
-                        NumericKeepPolaritySig, NumericReversePolaritySig,
-                        RoundSig, RoundToSig, LengthSig, StringLengthSig,
-                        ContainsSig, StringContainsSig, ExistsSig, EverySig,
+                        AddSig, ConcatenateSig, DateIncrementSig,
+                        SubtractSig, DateDecrementSig, DateDifferenceSig,
+                        MultiplySig, DivideSig, IsNullSig, NullIfSig,
+                        IfNullSig, IfSig, SwitchSig, KeepPolaritySig,
+                        ReversePolaritySig, RoundSig, RoundToSig, LengthSig,
+                        ContainsSig, ExistsSig, EverySig,
                         UnarySig, CountSig, MinSig, MaxSig, SumSig, AvgSig)
 import sys
 
 class CorrelateIntegerAdd(Correlate):
 
     correlates(AddSig, (IntegerDomain, IntegerDomain))
-    signature = NumericAddSig
+    signature = AddSig
     domains = [IntegerDomain(), IntegerDomain()]
     codomain = IntegerDomain()
 
     correlates(AddSig, (IntegerDomain, DecimalDomain),
                        (DecimalDomain, IntegerDomain),
                        (DecimalDomain, DecimalDomain))
-    signature = NumericAddSig
+    signature = AddSig
     domains = [DecimalDomain(), DecimalDomain()]
     codomain = DecimalDomain()
 
                        (FloatDomain, IntegerDomain),
                        (FloatDomain, DecimalDomain),
                        (FloatDomain, FloatDomain))
-    signature = NumericAddSig
+    signature = AddSig
     domains = [FloatDomain(), FloatDomain()]
     codomain = FloatDomain()
 
 class CorrelateIntegerSubtract(Correlate):
 
     correlates(SubtractSig, (IntegerDomain, IntegerDomain))
-    signature = NumericSubtractSig
+    signature = SubtractSig
     domains = [IntegerDomain(), IntegerDomain()]
     codomain = IntegerDomain()
 
     correlates(SubtractSig, (IntegerDomain, DecimalDomain),
                             (DecimalDomain, IntegerDomain),
                             (DecimalDomain, DecimalDomain))
-    signature = NumericSubtractSig
+    signature = SubtractSig
     domains = [DecimalDomain(), DecimalDomain()]
     codomain = DecimalDomain()
 
                             (FloatDomain, IntegerDomain),
                             (FloatDomain, DecimalDomain),
                             (FloatDomain, FloatDomain))
-    signature = NumericSubtractSig
+    signature = SubtractSig
     domains = [FloatDomain(), FloatDomain()]
     codomain = FloatDomain()
 
 class CorrelateIntegerMultiply(Correlate):
 
     correlates(MultiplySig, (IntegerDomain, IntegerDomain))
-    signature = NumericMultiplySig
+    signature = MultiplySig
     domains = [IntegerDomain(), IntegerDomain()]
     codomain = IntegerDomain()
 
     correlates(MultiplySig, (IntegerDomain, DecimalDomain),
                             (DecimalDomain, IntegerDomain),
                             (DecimalDomain, DecimalDomain))
-    signature = NumericMultiplySig
+    signature = MultiplySig
     domains = [DecimalDomain(), DecimalDomain()]
     codomain = DecimalDomain()
 
                             (FloatDomain, IntegerDomain),
                             (FloatDomain, DecimalDomain),
                             (FloatDomain, FloatDomain))
-    signature = NumericMultiplySig
+    signature = MultiplySig
     domains = [FloatDomain(), FloatDomain()]
     codomain = FloatDomain()
 
                           (IntegerDomain, DecimalDomain),
                           (DecimalDomain, IntegerDomain),
                           (DecimalDomain, DecimalDomain))
-    signature = NumericDivideSig
+    signature = DivideSig
     domains = [DecimalDomain(), DecimalDomain()]
     codomain = DecimalDomain()
 
                           (FloatDomain, IntegerDomain),
                           (FloatDomain, DecimalDomain),
                           (FloatDomain, FloatDomain))
-    signature = NumericDivideSig
+    signature = DivideSig
     domains = [FloatDomain(), FloatDomain()]
     codomain = FloatDomain()
 
 class CorrelateIntegerKeepPolarity(Correlate):
 
     correlates(KeepPolaritySig, IntegerDomain)
-    signature = NumericKeepPolaritySig
+    signature = KeepPolaritySig
     domains = [IntegerDomain()]
     codomain = IntegerDomain()
 
 class CorrelateDecimalKeepPolarity(Correlate):
 
     correlates(KeepPolaritySig, DecimalDomain)
-    signature = NumericKeepPolaritySig
+    signature = KeepPolaritySig
     domains = [DecimalDomain()]
     codomain = DecimalDomain()
 
 class CorrelateFloatKeepPolarity(Correlate):
 
     correlates(KeepPolaritySig, FloatDomain)
-    signature = NumericKeepPolaritySig
+    signature = KeepPolaritySig
     domains = [FloatDomain()]
     codomain = FloatDomain()
 
 class CorrelateIntegerReversePolarity(Correlate):
 
     correlates(ReversePolaritySig, IntegerDomain)
-    signature = NumericReversePolaritySig
+    signature = ReversePolaritySig
     domains = [IntegerDomain()]
     codomain = IntegerDomain()
 
 class CorrelateDecimalReversePolarity(Correlate):
 
     correlates(ReversePolaritySig, DecimalDomain)
-    signature = NumericReversePolaritySig
+    signature = ReversePolaritySig
     domains = [DecimalDomain()]
     codomain = DecimalDomain()
 
 class CorrelateFloatReversePolarity(Correlate):
 
     correlates(ReversePolaritySig, FloatDomain)
-    signature = NumericReversePolaritySig
+    signature = ReversePolaritySig
     domains = [FloatDomain()]
     codomain = FloatDomain()
 
 
     correlates(LengthSig, StringDomain,
                           UntypedDomain)
-    signature = StringLengthSig
+    signature = LengthSig
     domains = [StringDomain()]
     codomain = IntegerDomain()
 
                             (StringDomain, UntypedDomain),
                             (UntypedDomain, StringDomain),
                             (UntypedDomain, UntypedDomain))
-    signature = StringContainsSig
+    signature = ContainsSig
     domains = [StringDomain(), StringDomain()]
     codomain = BooleanDomain()
 

File src/htsql/tr/fn/dump.py

View file
 
 from ...adapter import adapts
 from ..dump import DumpBySignature
-from .signature import (NumericAddSig, ConcatenateSig, DateIncrementSig,
-                        NumericSubtractSig, DateDecrementSig,
-                        DateDifferenceSig, NumericMultiplySig,
-                        NumericDivideSig, IfSig, SwitchSig,
-                        AmongSig, CompareSig, NumericReversePolaritySig,
-                        RoundSig, RoundToSig, StringLengthSig,
+from .signature import (AddSig, ConcatenateSig, DateIncrementSig,
+                        SubtractSig, DateDecrementSig, DateDifferenceSig,
+                        MultiplySig, DivideSig, IfSig, SwitchSig,
+                        AmongSig, CompareSig, ReversePolaritySig,
+                        RoundSig, RoundToSig, LengthSig,
                         WrapExistsSig, TakeCountSig, TakeMinSig, TakeMaxSig,
                         TakeSumSig, TakeAvgSig)
 
         self.state.format(self.template, self.arguments, self.signature)
 
 
-class DumpNumericAdd(DumpFunction):
+class DumpAdd(DumpFunction):
 
-    adapts(NumericAddSig)
+    adapts(AddSig)
     template = "({lop} + {rop})"
 
 
-class DumpNumericSubtract(DumpFunction):
+class DumpSubtract(DumpFunction):
 
-    adapts(NumericSubtractSig)
+    adapts(SubtractSig)
     template = "({lop} - {rop})"
 
 
-class DumpNumericMultiply(DumpFunction):
+class DumpMultiply(DumpFunction):
 
-    adapts(NumericMultiplySig)
+    adapts(MultiplySig)
     template = "({lop} * {rop})"
 
 
-class DumpNumericDivide(DumpFunction):
+class DumpDivide(DumpFunction):
 
-    adapts(NumericDivideSig)
+    adapts(DivideSig)
     template = "({lop} / {rop})"
 
 
 
 class DumpReversePolarity(DumpFunction):
 
-    adapts(NumericReversePolaritySig)
+    adapts(ReversePolaritySig)
     template = "(- {op})"
 
 
     template = "ROUND({op}, {precision})"
 
 
-class DumpStringLength(DumpFunction):
+class DumpLength(DumpFunction):
 
-    adapts(StringLengthSig)
+    adapts(LengthSig)
     template = "CHARACTER_LENGTH({op})"
 
 

File src/htsql/tr/fn/reduce.py

View file
 from ..frame import (IsNullPhrase, NullIfPhrase, IfNullPhrase,
                      LiteralPhrase, FormulaPhrase)
 from .signature import (IsNullSig, NullIfSig, IfNullSig,
-                        NumericKeepPolaritySig, ConcatenateSig)
+                        KeepPolaritySig, ConcatenateSig)
 
 
 class ReduceIsNull(ReduceBySignature):
 
 class ReduceKeepPolaritySig(ReduceBySignature):
 
-    adapts(NumericKeepPolaritySig)
+    adapts(KeepPolaritySig)
 
     def __call__(self):
         return self.state.reduce(self.phrase.op)

File src/htsql/tr/fn/signature.py

View file
     pass
 
 
-class NumericAddSig(AddSig):
-    pass
-
-
 class ConcatenateSig(AddSig):
     pass
 
     pass
 
 
-class NumericSubtractSig(SubtractSig):
-    pass
-
-
 class DateDecrementSig(SubtractSig):
     pass
 
     pass
 
 
-class NumericMultiplySig(MultiplySig):
-    pass
-
-
 class DivideSig(BinarySig):
     pass
 
 
-class NumericDivideSig(DivideSig):
-    pass
-
-
 class KeepPolaritySig(UnarySig):
     pass
 
     pass
 
 
-class NumericKeepPolaritySig(KeepPolaritySig):
-    pass
-
-
-class NumericReversePolaritySig(ReversePolaritySig):
-    pass
-
-
 class RoundSig(UnarySig):
     pass
 
     pass
 
 
-class StringLengthSig(LengthSig):
-    pass
-
-
 class ContainsSig(BinarySig, PolarSig):
     pass
 
 
-class StringContainsSig(ContainsSig):
-    pass
-
-
 class QuantifySig(PolarSig):
 
     slots = [