# coding=utf-8
"""
.. moduleauthor:: Torbjörn Klatt <[email protected]>
"""
from enum import Enum, unique
from pypint.utilities import assert_is_instance
[docs]class Message(object):
"""Container for inter-solver messages
"""
@unique
[docs] class SolverFlag(Enum):
"""State flags of the sending solver
"""
#: no flag set
none = 0
#: still iterating
iterating = 1
#: finished and converged with respect to given thresholds
converged = 10
#: finished due to other reasons than thresholds or errors
finished = 11
#: finished due to an error
failed = 30
#: width of the interval have been changed (i.e. any subsequent intervals need to be recomputed)
time_adjusted = 40
def __init__(self):
self._value = None
self._time_point = None
self._flag = Message.SolverFlag.none
@property
def value(self):
return self._value
@value.setter
def value(self, value):
self._value = value
@value.deleter
def value(self):
self._value = None
@property
def time_point(self):
return self._time_point
@time_point.setter
def time_point(self, time_point):
self._time_point = time_point
@time_point.deleter
def time_point(self):
self._time_point = None
@property
def flag(self):
return self._flag
@flag.setter
def flag(self, flag):
assert_is_instance(flag, Message.SolverFlag, descriptor="Flag", checking_obj=self)
self._flag = flag
@flag.deleter
def flag(self):
self._flag = Message.SolverFlag.none
def __str__(self):
return "Message(value=%s, time_point=%s, flag=%s)" % (self.value, self.time_point, self.flag)