B
    CVvg                 @   s  d Z ddlZddlmZ G dd deZG dd deZG dd	 d	eZG d
d deZG dd deZ	G dd de	Z
G dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZd*ZG d+d, d,eZG d-d. d.eZG d/d0 d0eZdS )1z.
Global Django exception and warning classes.
    N)make_hashablec               @   s   e Zd ZdZdS )FieldDoesNotExistz(The requested model field does not existN)__name__
__module____qualname____doc__ r   r   :/tmp/pip-install-o3oxmrkh/Django/django/core/exceptions.pyr   	   s   r   c               @   s   e Zd ZdZdS )AppRegistryNotReadyz-The django.apps registry is not populated yetN)r   r   r   r   r   r   r   r	   r
      s   r
   c               @   s   e Zd ZdZdZdS )ObjectDoesNotExistz#The requested object does not existTN)r   r   r   r   Zsilent_variable_failurer   r   r   r	   r      s   r   c               @   s   e Zd ZdZdS )MultipleObjectsReturnedz?The query returned multiple objects when only one was expected.N)r   r   r   r   r   r   r   r	   r      s   r   c               @   s   e Zd ZdZdS )SuspiciousOperationz!The user did something suspiciousN)r   r   r   r   r   r   r   r	   r      s   r   c               @   s   e Zd ZdZdS )SuspiciousMultipartFormz+Suspect MIME request in multipart form dataN)r   r   r   r   r   r   r   r	   r   !   s   r   c               @   s   e Zd ZdZdS )SuspiciousFileOperationz/A Suspicious filesystem operation was attemptedN)r   r   r   r   r   r   r   r	   r   &   s   r   c               @   s   e Zd ZdZdS )DisallowedHostz'HTTP_HOST header contains invalid valueN)r   r   r   r   r   r   r   r	   r   +   s   r   c               @   s   e Zd ZdZdS )DisallowedRedirectz&Redirect to scheme not in allowed listN)r   r   r   r   r   r   r   r	   r   0   s   r   c               @   s   e Zd ZdZdS )TooManyFieldsSentzl
    The number of fields in a GET or POST request exceeded
    settings.DATA_UPLOAD_MAX_NUMBER_FIELDS.
    N)r   r   r   r   r   r   r   r	   r   5   s   r   c               @   s   e Zd ZdZdS )TooManyFilesSentzk
    The number of fields in a GET or POST request exceeded
    settings.DATA_UPLOAD_MAX_NUMBER_FILES.
    N)r   r   r   r   r   r   r   r	   r   =   s   r   c               @   s   e Zd ZdZdS )RequestDataTooBigzq
    The size of the request (excluding any file uploads) exceeded
    settings.DATA_UPLOAD_MAX_MEMORY_SIZE.
    N)r   r   r   r   r   r   r   r	   r   F   s   r   c               @   s   e Zd ZdZdS )RequestAbortedz=The request was closed before it was completed, or timed out.N)r   r   r   r   r   r   r   r	   r   N   s   r   c               @   s   e Zd ZdZdS )
BadRequestz1The request is malformed and cannot be processed.N)r   r   r   r   r   r   r   r	   r   S   s   r   c               @   s   e Zd ZdZdS )PermissionDeniedz+The user did not have permission to do thatN)r   r   r   r   r   r   r   r	   r   X   s   r   c               @   s   e Zd ZdZdS )ViewDoesNotExistz!The requested view does not existN)r   r   r   r   r   r   r   r	   r   ]   s   r   c               @   s   e Zd ZdZdS )MiddlewareNotUsedz8This middleware is not used in this server configurationN)r   r   r   r   r   r   r   r	   r   b   s   r   c               @   s   e Zd ZdZdS )ImproperlyConfiguredz'Django is somehow improperly configuredN)r   r   r   r   r   r   r   r	   r   g   s   r   c               @   s   e Zd ZdZdS )
FieldErrorz(Some kind of problem with a model field.N)r   r   r   r   r   r   r   r	   r   l   s   r   __all__c                   sj   e Zd ZdZd fdd	Zedd Zedd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Z  ZS )ValidationErrorzAn error while validating data.Nc                s  t  ||| t|trTt|dr,|j}n(t|ds>|j}n|j|j|j	  }}}t|t
ri | _x| D ]&\}}t|tst|}|j| j|< qnW n~t|trg | _xl|D ]H}t|tst|}t|dr| jt|j g  q| j|j qW n|| _|| _|| _	| g| _dS )a  
        The `message` argument can be a single error, a list of errors, or a
        dictionary that maps field names to lists of errors. What we define as
        an "error" can be either a simple string or an instance of
        ValidationError with its message attribute set, and what we define as
        list or dictionary can be an actual `list` or `dict` or an instance
        of ValidationError with its `error_list` or `error_dict` attribute set.
        
error_dictmessageN)super__init__
isinstancer   hasattrr   
error_listr   codeparamsdictitemslistextendsumvalues)selfr   r%   r&   fieldmessages)	__class__r   r	   r!   v   s2    	








zValidationError.__init__c             C   s   t | d t| S )Nr   )getattrr'   )r-   r   r   r	   message_dict   s    
zValidationError.message_dictc             C   s$   t | drtt|  g S t| S )Nr   )r#   r+   r'   r,   r)   )r-   r   r   r	   r/      s    
zValidationError.messagesc             C   sN   t | dr6x>| j D ]\}}||g | qW n|tg | j |S )Nr   )r#   r   r(   
setdefaultr*   NON_FIELD_ERRORSr$   )r-   r   r.   r$   r   r   r	   update_error_dict   s
    
z!ValidationError.update_error_dictc             c   sj   t | dr6xZ| j D ]\}}|tt|fV  qW n0x.| jD ]$}|j}|jrX||j; }t|V  q>W d S )Nr   )	r#   r   r(   r)   r   r$   r   r&   str)r-   r.   errorserrorr   r   r   r	   __iter__   s    

zValidationError.__iter__c             C   s"   t | drtt| S tt| S )Nr   )r#   reprr'   r)   )r-   r   r   r	   __str__   s    
zValidationError.__str__c             C   s   d|  S )NzValidationError(%s)r   )r-   r   r   r	   __repr__   s    zValidationError.__repr__c             C   s   t |tstS t| t|kS )N)r"   r   NotImplementedhash)r-   otherr   r   r	   __eq__   s    
zValidationError.__eq__c             C   sV   t | dr"t| j| jt| jfS t | dr:tt| jS ttt| j	t
ddS )Nr   r   )key)r#   r>   r   r%   r   r&   r   tuplesortedr$   operator
attrgetter)r-   r   r   r	   __hash__   s    

zValidationError.__hash__)NN)r   r   r   r   r!   propertyr2   r/   r5   r9   r;   r<   r@   rF   __classcell__r   r   )r0   r	   r   t   s   +r   c               @   s   e Zd ZdZdS )EmptyResultSetz)A database query predicate is impossible.N)r   r   r   r   r   r   r   r	   rI      s   rI   c               @   s   e Zd ZdZdS )SynchronousOnlyOperationzBThe user tried to call a sync-only function from an async context.N)r   r   r   r   r   r   r   r	   rJ      s   rJ   )r   rD   Zdjango.utils.hashabler   	Exceptionr   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r   rI   rJ   r   r   r   r	   <module>   s2   	g