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
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)
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)), )
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
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
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
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)
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
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
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