import numba
import pyreason.scripts.numba_wrapper.numba_types.interval_type as interval
import pyreason.scripts.numba_wrapper.numba_types.label_type as label
[docs]
class World:
def __init__(self, labels):
self._labels = labels
self._world = numba.typed.Dict.empty(key_type=label.label_type, value_type=interval.interval_type)
for lbl in labels:
self._world[lbl] = interval.closed(0.0, 1.0)
@property
[docs]
def world(self):
return self._world
[docs]
def make_world(labels, world):
w = World(labels)
w._world = world
return w
[docs]
def is_satisfied(self, label, interval):
result = False
bnd = self._world[label]
result = bnd in interval
return result
[docs]
def update(self, label, interval):
current_bnd = self._world[label]
new_bnd = current_bnd.intersection(interval)
self._world[label] = new_bnd
[docs]
def get_bound(self, label):
result = None
result = self._world[label]
return result
[docs]
def get_world(self):
return self._world
def __str__(self):
result = ''
for lbl in self._world.keys():
result = result + lbl.get_value() + ',' + self._world[lbl].to_str() + '\n'
return result