Source code for pyspj.models.continuity

from typing import Optional, Mapping

from hbutils.model import get_repr_info
from hbutils.string import truncate

from .base import SPJResult


def _check_score(score: float) -> float:
    score = float(score)
    if score < 0:
        raise ValueError('Score value should be no less than 0 but {actual} found.'.format(actual=repr(score)))
    elif score > 1:
        raise ValueError('Score value should be no greater than 1 but {actual} found.'.format(actual=repr(score)))

    return score


[docs]class ContinuitySPJResult(SPJResult): """ Overview: Result of continuity special judge. """
[docs] def __init__(self, correctness: bool, score: float, message: Optional[str] = None, detail: Optional[str] = None, **kwargs): """ Constructor for :class:`pyspj.models.continuity.ContinuitySPJResult`. :param correctness: correctness of result :param score: score of result :param message: message of result :param detail: detail of result """ SPJResult.__init__(self, correctness, message, detail, **kwargs) self.__score = _check_score(score)
@property def score(self) -> float: """ Score of this result. """ return self.__score
[docs] def to_json(self) -> Mapping[str, str]: return { **SPJResult.to_json(self), 'score': self.score, }
[docs] def __repr__(self): return get_repr_info( cls=self.__class__, args=[ ('correctness', lambda: repr(self.correctness)), ('score', lambda: '%.3f' % self.score), ('message', lambda: truncate(repr(self.message), width=64, tail_length=16, show_length=True)), ] )
def _tuple(self): _correctness, _message, _detail = SPJResult._tuple(self) return _correctness, self.__score, _message, _detail