* __upd__: Add `Comment()` to `diaspy.models.Post.comments` on `diaspy.models.Post...
[diaspy.git] / diaspy / errors.py
index 0620373964ddc5ebf28fb5877e3c505fb8efb995..5aa612a309cb60ec8b4d6eb3c2ad0e459ddf0232 100644 (file)
 #!/usr/bin/env python3
 
+"""This module contains custom exceptions that are raised by diaspy.
+These are not described by DIASPORA* protocol as exceptions that should be
+raised by API implementations but are specific to this particular implementation.
+
+If your program should catch all exceptions raised by diaspy and
+does not need to handle them specifically you can use following code:
+
+       # this line imports all errors
+       from diaspy.errors import *
+
+       try:
+               # your code...
+       except DiaspyError as e:
+               # your error handling code...
+       finally:
+               # closing code...
+"""
+
+import warnings
+
 
 class DiaspyError(Exception):
-    """Base exception for all errors
-    raised by diaspy.
-    """
-    pass
+       """Base exception for all errors
+       raised by diaspy.
+       """
+       pass
 
 
 class LoginError(DiaspyError):
-    """Exception raised when something
-    bad happens while performing actions
-    related to logging in.
-    """
-    pass
+       """Exception raised when something
+       bad happens while performing actions
+       related to logging in.
+       """
+       pass
+
+
+class TokenError(DiaspyError):
+       pass
+
+class CSRFProtectionKickedIn(TokenError):
+       pass
+
+
+class DataError(DiaspyError):
+       pass
+
+
+class InvalidDataError(DataError):
+       pass
+
+
+class KeyMissingFromFetchedData(InvalidDataError):
+       pass
 
 
 class UserError(DiaspyError):
-    """Exception raised when something related to users goes wrong.
-    """
-    pass
+       """Exception raised when something related to users goes wrong.
+       """
+       pass
+
+
+class InvalidHandleError(DiaspyError):
+       """Raised when invalid handle is found.
+       """
+       pass
+
 
+class SearchError(DiaspyError):
+       """Exception raised when something related to search goes wrong.
+       """
+       pass
+
+class NotificationError(DiaspyError):
+       """Exception raised when something related to notifications goes wrong.
+       """
+       pass
 
 class ConversationError(DiaspyError):
-    """Exception raised when something related to conversations goes wrong.
-    """
-    pass
+       """Exception raised when something related to conversations goes wrong.
+       """
+       pass
 
 
 class AspectError(DiaspyError):
-    """Exception raised when something related to aspects goes wrong.
-    """
-    pass
+       """Exception raised when something related to aspects goes wrong.
+       """
+       pass
+
+class UserIsNotMemberOfAspect(AspectError):
+       pass
 
 
 class PostError(DiaspyError):
-    """Exception raised when something related to posts goes wrong.
-    """
-    pass
+       """Exception raised when something related to posts goes wrong.
+       """
+       pass
 
 
 class StreamError(DiaspyError):
-    """Exception raised when something related to streams goes wrong.
-    """
-    pass
+       """Exception raised when something related to streams goes wrong.
+       """
+       pass
+
+
+class SettingsError(DiaspyError):
+       """Exception raised when something related to settings goes wrong.
+       """
+       pass
+
+class SearchError(DiaspyError):
+       """Exception raised when something related to searching goes wrong.
+       """
+       pass
 
+class TagError(DiaspyError):
+       """Exception raised when something related to a tag goes wrong.
+       """
+       pass
 
 def react(r, message='', accepted=[200, 201, 202, 203, 204, 205, 206], exception=DiaspyError):
-    """This method tries to decides how to react
-    to a response code passed to it. If it's an
-    error code it will raise an exception (it will
-    call `throw()` method.
-
-    If response code is not accepted AND cannot
-    be matched to any exception, generic exception
-    (DiaspyError) is raised (provided that `exception`
-    param was left untouched).
-
-    By default `accepted` param contains all HTTP
-    success codes.
-
-    User can force type of exception to raise by passing
-    `exception` param.
-
-    :param r: response code
-    :type r: int
-    :param message: message for the exception
-    :type message: str
-    :param accepted: list of accepted error codes
-    :type accepted: list
-    :param exception: preferred exception to raise
-    :type exception: valid exception type (default: DiaspyError)
-    """
-    if r in accepted: e = None
-    else: e = DiaspyError
-
-    if e is not None: e = exception
-    throw(e, message=message)
+       """This method tries to decide how to react
+       to a response code passed to it. If it's an
+       error code it will raise an exception (it will
+       call `throw()` method.
+
+       If response code is not accepted AND cannot
+       be matched to any exception, generic exception
+       (DiaspyError) is raised (provided that `exception`
+       param was left untouched).
+
+       By default `accepted` param contains all HTTP
+       success codes.
+
+       User can force type of exception to raise by passing
+       `exception` param.
+
+       :param r: response code
+       :type r: int
+       :param message: message for the exception
+       :type message: str
+       :param accepted: list of accepted error codes
+       :type accepted: list
+       :param exception: preferred exception to raise
+       :type exception: valid exception type (default: DiaspyError)
+       """
+       warnings.warn(DeprecationWarning)
+       if r in accepted: e = None
+       else: e = DiaspyError
+
+       if e is not None: e = exception
+       throw(e, message=message)
 
 
 def throw(e, message=''):
-    """This function throws an error with given message.
-    If None is passed as `e` throw() will not raise
-    anything.
-
-    :param e: exception to throw
-    :type e: any valid exception type or None
-    :param message: message for exception
-    :type message: str
-    """
-    if e is None: pass
-    else: raise e(message)
+       """This function throws an error with given message.
+       If None is passed as `e` throw() will not raise
+       anything.
+
+       :param e: exception to throw
+       :type e: any valid exception type or None
+       :param message: message for exception
+       :type message: str
+       """
+       warnings.warn(DeprecationWarning)
+       if e is None: pass
+       else: raise e(message)