Source code for mordred.error
"""Error objects."""
import numpy as np
import six
from abc import ABCMeta, abstractproperty
[docs]class MissingValueBase(six.with_metaclass(ABCMeta, object)):
    """Base class of missing values.
    Args:
        error (Exception): error object
        stack (callstack)
    """
    __slots__ = "error", "stack"
    def __reduce_ex__(self, version):
        return self.__class__, (self.error, self.stack)
    def __init__(self, error, stack):
        self.error = error
        self.stack = stack
    def __float__(self):
        return np.nan
    def __add__(self, other):
        return np.nan
    def __sub__(self, other):
        return np.nan
    def __str__(self):
        return "{} ({})".format(self.error, "/".join(str(d) for d in self.stack))
    @abstractproperty
    def header(self):
        """Header of warning message.
        Returns:
            str
        """
        raise NotImplementedError("require header") 
[docs]class Missing(MissingValueBase):
    """known errored value."""
    __slots__ = ()
    header = "Missing" 
[docs]class Error(MissingValueBase):
    """unknown errored value."""
    __slots__ = ()
    header = "ERROR" 
[docs]class MordredException(Exception):
    __slots__ = () 
[docs]class MultipleFragments(MordredException):
    """multiple fragments detected on require_connected Descriptor."""
    __slots__ = ()
    def __str__(self):
        return "multiple fragments" 
[docs]class Missing3DCoordinate(MordredException):
    """missing 3D coordinate on require_3D Descriptor."""
    __slots__ = ()
    def __str__(self):
        return "missing 3D coordinate" 
[docs]class DuplicatedDescriptorName(MordredException):
    """duplicated string replisantation of descriptor."""
    __slots__ = ()
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __str__(self):
        return "duplicated descriptor name: {!r} and {!r}".format(self.a, self.b)