def put_get(self, item): if self._queue.size() > 0: cnt_next, tmp_ = self._queue.next() assert type(cnt_next) is int if self._queue.requires_priority: if not Node._has_queue_priority(item): raise ValueError("A node queue priority is required") priority = Node._extract_queue_priority(item) cnt, item_ = self._queue.put_get(item, priority) else: cnt, item_ = self._queue.put_get(item) if item_ is not item: assert item_ is tmp_ bound = Node._extract_bound(item) assert not math.isnan(bound) bound_ = Node._extract_bound(item_) assert not math.isnan(bound_) if self._sense == maximize: self._sorted_by_bound.add((-bound, cnt, item)) self._sorted_by_bound.remove((-bound_, cnt_next, item_)) else: self._sorted_by_bound.add((bound, cnt, item)) self._sorted_by_bound.remove((bound_, cnt_next, item_)) else: if self._queue.requires_priority: if not Node._has_queue_priority(item): raise ValueError("A node queue priority is required") priority = Node._extract_queue_priority(item) cnt, item_ = self._queue.put_get(item, priority) else: cnt, item_ = self._queue.put_get(item) return cnt, item_
def put(self, item): bound = Node._extract_bound(item) assert not math.isnan(bound) if self._queue.requires_priority: if not Node._has_queue_priority(item): raise ValueError("A node queue priority is required") priority = Node._extract_queue_priority(item) cnt = self._queue.put(item, priority) else: cnt = self._queue.put(item) if self._sense == maximize: self._sorted_by_bound.add((-bound, cnt, item)) else: self._sorted_by_bound.add((bound, cnt, item)) return cnt