class IndexHits(extends(IndexHits)): def __len__(self): return self.size() if self.size() > 0 else 0 def __getitem__(self, item): if isinstance(item, slice): # Memory-hogging slicing impl return list(self).__getitem__(item) elif isinstance(item, int) and item >= 0: for i in range(item): self.next() return self.next()
class IrrelevantClassName(extends(PathClass)): @property def start(self): return self.startNode() @property def end(self): return self.endNode() @property def last_relationship(self): return self.lastRelationship() @property def nodes(self): it = self._super__nodes().iterator() while it.hasNext(): yield it.next() @property def relationships(self): it = self._super__relationships().iterator() while it.hasNext(): yield it.next() def __str__(self): out = [] current = self.start for rel in self.relationships: out.append('({0})'.format(current.id)) if rel.start == current: out.append('-[{0},{1}]->'.format(rel.type, rel.id)) else: out.append('<-[{0},{1}]-'.format(rel.type, rel.id)) current = rel.other_node(current) # Print last node out.append('({0})'.format(current.id)) return ''.join(out) def __repr__(self): return self.toString() def __len__(self): return self.length() def __iter__(self): it = self.iterator() while it.hasNext(): yield it.next()
class TraverserImpl(extends(TraverserImpl)): def __iter__(self): it = self.iterator() while it.hasNext(): yield it.next() @property def last_relationship(self): return self.lastRelationship() @property def nodes(self): return self._super__nodes() @property def relationships(self): return self._super__relationships()
class TraversalDescriptionImpl(extends(TraversalDescriptionImpl)): def relationships(self, reltype, direction=Direction.ANY): if type(reltype) in strings: reltype = rel_type(reltype) elif isinstance(reltype, DirectionalType): direction = reltype.dir reltype = reltype.type return self._super__relationships(reltype, direction) def evaluator(self, ev): if hasattr(ev, '__call__'): ev = DynamicEvaluator(ev) return self._super__evaluator(ev) def traverse(self, *start_nodes): return self._super__traverse(start_nodes)
class Index(extends(Index)): def __getitem__(self, key): return IndexColumn(self, key) def __delitem__(self, item): self.remove(item)