@retry_on_loss
  def block_dequeue(self):
    def queue_watcher(handle,event,state,path):
      self.cv.acquire()
      self.cv.notify()
      self.cv.release()
    while True:
      self.cv.acquire()
      children = sorted(zookeeper.get_children(self.handle, self.queuename, queue_watcher))
      for child in children:
        data = self.get_and_delete(self.queuename+"/"+children[0])
        if data != None:
          self.cv.release()
          return data
        self.cv.wait()
        self.cv.release()
Body orientation takes this coordinate system through three
dataset/ETHPy150Open andreisavu/zookeeper-mq/experiments/queue.py/ZooKeeperQueue.block_dequeue--crossover with--dataset/ETHPy150Open sympy/sympy/sympy/vector/orienters.py/BodyOrienter.__init__