Exemple #1
0
    def _ctorCmprRange(self, vals):

        if not isinstance(vals, (list, tuple)):
            raise s_exc.BadCmprValu(name=self.name, valu=vals, cmpr='range=')

        if len(vals) != 2:
            raise s_exc.BadCmprValu(name=self.name, valu=vals, cmpr='range=')

        minv = self.norm(vals[0])[0]
        maxv = self.norm(vals[1])[0]

        def cmpr(valu):
            return minv <= valu <= maxv
        return cmpr
Exemple #2
0
    def indxByRange(self, valu):
        '''
        Override default *range= handler to account for relative computation.
        '''

        if not isinstance(valu, (list, tuple)):
            raise s_exc.BadCmprValu(valu=valu, cmpr='*range=')

        if len(valu) != 2:
            raise s_exc.BadCmprValu(valu=valu, cmpr='*range=')

        tick, tock = self.getTickTock(valu)

        return self._indxTimeRange(tick, tock)
Exemple #3
0
    def indxByRange(self, valu):

        if not isinstance(valu, (list, tuple)):
            raise s_exc.BadCmprValu(name=self.name, valu=valu, cmpr='*range=')

        if len(valu) != 2:
            raise s_exc.BadCmprValu(name=self.name, valu=valu, cmpr='*range=')

        minv, _ = self.norm(valu[0])
        maxv, _ = self.norm(valu[1])

        mini = self.indx(minv)
        maxi = self.indx(maxv)

        return (('range', (mini, maxi)), )
Exemple #4
0
    async def _doRuntLift(self, genr, full, valu=None, cmpr=None):

        if cmpr is not None:
            filt = self.model.prop(full).type.getCmprCtor(cmpr)(valu)
            if filt is None:
                raise s_exc.BadCmprValu(cmpr=cmpr)

        fullprop = self.model.prop(full)
        if fullprop.isform:

            if cmpr is None:
                for obj in genr():
                    yield obj.getStorNode(fullprop)
                return

            for obj in genr():
                sode = obj.getStorNode(fullprop)
                if filt(sode[1]['ndef'][1]):
                    yield sode
        else:
            for obj in genr():
                sode = obj.getStorNode(fullprop.form)
                propval = sode[1]['props'].get(fullprop.name)

                if propval is not None and (cmpr is None or filt(propval)):
                    yield sode
Exemple #5
0
    async def _synModelLift(self, full, valu=None, cmpr=None):
        if not self._modelRuntsByBuid:
            self._initModelRunts()

        # runt lift helpers must decide what comparators they support
        if cmpr is not None and cmpr != '=':
            raise s_exc.BadCmprValu(
                mesg='Model runtime nodes only support equality comparator.',
                cmpr=cmpr)

        # Runt lift helpers must support their own normalization for data retrieval
        if valu is not None:
            prop = self.model.prop(full)
            valu, _ = prop.type.norm(valu)

        # runt lift helpers must then yield buid/rows pairs for Node object creation.
        if valu is None:
            buids = self._modelRuntsByPropValu.get(full, ())
        else:
            buids = self._modelRuntsByPropValu.get((full, valu), ())

        rowsets = [(buid, self._modelRuntsByBuid.get(buid, ()))
                   for buid in buids]
        for buid, rows in rowsets:
            yield buid, rows
Exemple #6
0
    def _ctorCmprRange(self, vals):
        '''
        Override default *range= handler to account for relative computation.
        '''

        if not isinstance(vals, (list, tuple)):
            raise s_exc.BadCmprValu(valu=vals, cmpr='*range=')

        if len(vals) != 2:
            raise s_exc.BadCmprValu(valu=vals, cmpr='*range=')

        tick, tock = self.getTickTock(vals)

        def cmpr(valu):
            return tick <= valu <= tock

        return cmpr
Exemple #7
0
    def indxByRange(self, valu):
        '''
        Override default ``*range=`` handler to account for relative computation.
        '''

        if not isinstance(valu, (list, tuple)):
            raise s_exc.BadCmprValu(valu=valu, cmpr='*range=')

        if len(valu) != 2:
            raise s_exc.BadCmprValu(valu=valu, cmpr='*range=')

        tick, tock = self.getTickTock(valu)

        if tick > tock:
            # User input has requested a nullset
            return ()

        return self._indxTimeRange(tick, tock)
Exemple #8
0
    def indxByIn(self, vals):

        opers = []
        if not isinstance(vals, (list, tuple)):
            raise s_exc.BadCmprValu(name=self.name, valu=vals, cmpr='*in=')

        for valu in vals:
            opers.extend(self.getIndxOps(valu))

        return opers
Exemple #9
0
    def _ctorCmprRange(self, vals):
        '''
        Override default range= handler to account for relative computation.
        '''

        if not isinstance(vals, (list, tuple)):
            raise s_exc.BadCmprValu(valu=vals, cmpr='range=')

        if len(vals) != 2:
            raise s_exc.BadCmprValu(valu=vals, cmpr='range=')

        tick, tock = self.getTickTock(vals)

        if tick > tock:
            # User input has requested a nullset
            def cmpr(valu):
                return False

            return cmpr

        def cmpr(valu):
            return tick <= valu <= tock

        return cmpr
Exemple #10
0
    async def _synModelLift(self, full, valu=None, cmpr=None):
        if not self._modelRuntsByBuid:
            self._initModelRunts()

        if cmpr is not None and cmpr != '=':
            raise s_exc.BadCmprValu(mesg='Model runtime nodes only support equality comparator.',
                                    cmpr=cmpr)

        if valu is None:
            buids = self._modelRuntsByPropValu.get(full, ())
        else:
            prop = self.model.prop(full)
            valu, _ = prop.type.norm(valu)
            buids = self._modelRuntsByPropValu.get((full, valu), ())

        rowsets = [(buid, self._modelRuntsByBuid.get(buid, ())) for buid in buids]
        for buid, rows in rowsets:
            yield buid, rows