class Status(object):
    """
    :attribute code: int (optional) default as ok

    :attribute message: str (optional) current status message
    """
    SUCCESS = 0
    CONNECT_FAILED = 1
    PERMISSION_DENIED = 2
    TABLE_NOT_EXISTS = 3
    ILLEGAL_ARGUMENT = 4
    ILLEGAL_RANGE = 5
    ILLEGAL_DIMENSION = 6
    UNKNOWN = 7

    def __init__(self, code=SUCCESS, message=None):
        self.code = code
        self.message = message

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        """Make Status comparable with self by code"""
        if isinstance(other, int):
            return self.code == other
        else:
            return isinstance(other, self.__class__) and self.code == other.code

    def __ne__(self, other):
        return not (self == other)

    def OK(self):
        return self.code == Status.SUCCESS

