old_contents: 
  
  class StreamApiException(Exception):
  
      def __init__(self, error_message, status_code=None):
          Exception.__init__(self, error_message)
          self.detail = error_message
          if status_code is not None:
              self.status_code = status_code
  
      code = 1
  
      def __repr__(self):
          return '%s (%s)' % (self.__class__.__name__, self.detail)
  
      def __unicode__(self):
          return '%s (%s)' % (self.__class__.__name__, self.detail)
  
  
  class ApiKeyException(StreamApiException):
  
      '''
      Raised when there is an issue with your Access Key
      '''
      status_code = 401
      code = 2
  
  
  class SignatureException(StreamApiException):
  
      '''
      Raised when there is an issue with the signature you provided
      '''
      status_code = 401
      code = 3
  
  
  class InputException(StreamApiException):
  
      '''
      Raised when you send the wrong data to the API
      '''
      status_code = 400
      code = 4
  
  
  class CustomFieldException(StreamApiException):
  
      '''
      Raised when there are missing or misconfigured custom fields
      '''
      status_code = 400
      code = 5
  
  
  class FeedConfigException(StreamApiException):
  
      '''
      Raised when there are missing or misconfigured custom fields
      '''
      status_code = 400
      code = 6
  
  
  class SiteSuspendedException(StreamApiException):
  
      '''
      Raised when the site requesting the data is suspended
      '''
      status_code = 401
      code = 7
  
  
  def get_exceptions():
      from stream import exceptions
      classes = []
      for k in dir(exceptions):
          a = getattr(exceptions, k)
          try:
              if a and issubclass(a, StreamApiException):
                  classes.append(a)
          except TypeError:
              pass
      return classes
  
  
  def get_exception_dict():
      exception_dict = {}
      for c in get_exceptions():
          exception_dict[c.code] = c
      return exception_dict
  
new_contents: 
  
  class StreamApiException(Exception):
  
      def __init__(self, error_message, status_code=None):
          Exception.__init__(self, error_message)
          self.detail = error_message
          if status_code is not None:
              self.status_code = status_code
  
      code = 1
  
      def __repr__(self):
          return '%s (%s)' % (self.__class__.__name__, self.detail)
  
      def __unicode__(self):
          return '%s (%s)' % (self.__class__.__name__, self.detail)
  
  
  class ApiKeyException(StreamApiException):
  
      '''
      Raised when there is an issue with your Access Key
      '''
      status_code = 401
      code = 2
  
  
  class SignatureException(StreamApiException):
  
      '''
      Raised when there is an issue with the signature you provided
      '''
      status_code = 401
      code = 3
  
  
  class InputException(StreamApiException):
  
      '''
      Raised when you send the wrong data to the API
      '''
      status_code = 400
      code = 4
  
  
  class CustomFieldException(StreamApiException):
  
      '''
      Raised when there are missing or misconfigured custom fields
      '''
      status_code = 400
      code = 5
  
  
  class FeedConfigException(StreamApiException):
  
      '''
      Raised when there are missing or misconfigured custom fields
      '''
      status_code = 400
      code = 6
  
  
  class SiteSuspendedException(StreamApiException):
  
      '''
      Raised when the site requesting the data is suspended
      '''
      status_code = 401
      code = 7
  
  class InvalidPaginationException(StreamApiException):
  
      '''
      Raised when there is an issue with your Access Key
      '''
      status_code = 401
      code = 8
  
  
  class MissingRankingException(FeedConfigException):
      '''
      Raised when you didn't configure the ranking for the given feed
      '''
      status_code = 400
      code = 12
  
  
  class MissingUserException(MissingRankingException):
      status_code = 400
      code = 10
  
  
  class RankingException(FeedConfigException):
      '''
      Raised when there is a runtime issue with ranking the feed
      '''
      status_code = 400
      code = 11
  
  
  class RateLimitReached(StreamApiException):
  
      '''
      Raised when too many requests are performed
      '''
      status_code = 429
      code = 9
  
  
  class OldStorageBackend(StreamApiException):
      '''
      Raised if you try to perform an action which only works with the new storage
      '''
      status_code = 400
      code = 13
  
  
  class BestPracticeException(StreamApiException):
      '''
      Raised if best practices are enforced and you do something that
      would break a high volume integration
      '''
      status_code = 400
      code = 15
  
  
  class DoesNotExistException(StreamApiException):
      '''
      Raised when the requested resource could not be found.
      '''
      status_code = 404
      code = 16
  
  
  class NotAllowedException(StreamApiException):
      '''
      Raised when the requested action is not allowed for some reason.
      '''
      status_code = 403
      code = 17
  
  
  def get_exceptions():
      from stream import exceptions
      classes = []
      for k in dir(exceptions):
          a = getattr(exceptions, k)
          try:
              if a and issubclass(a, StreamApiException):
                  classes.append(a)
          except TypeError:
              pass
      return classes
  
  
  def get_exception_dict():
      exception_dict = {}
      for c in get_exceptions():
          exception_dict[c.code] = c
      return exception_dict
  
subject: Add new exception classes