U
    ËøïcH  ã                   @   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-unpacked-wheel-v4uoe5gc/django/core/exceptions.pyr   	   s   r   c                   @   s   e Zd ZdZdS )ÚAppRegistryNotReadyz-The django.apps registry is not populated yetNr   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.Nr   r	   r	   r	   r
   r      s   r   c                   @   s   e Zd ZdZdS )ÚSuspiciousOperationz!The user did something suspiciousNr   r	   r	   r	   r
   r   !   s   r   c                   @   s   e Zd ZdZdS )ÚSuspiciousMultipartFormz+Suspect MIME request in multipart form dataNr   r	   r	   r	   r
   r   %   s   r   c                   @   s   e Zd ZdZdS )ÚSuspiciousFileOperationz/A Suspicious filesystem operation was attemptedNr   r	   r	   r	   r
   r   +   s   r   c                   @   s   e Zd ZdZdS )ÚDisallowedHostz'HTTP_HOST header contains invalid valueNr   r	   r	   r	   r
   r   1   s   r   c                   @   s   e Zd ZdZdS )ÚDisallowedRedirectz&Redirect to scheme not in allowed listNr   r	   r	   r	   r
   r   7   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.
    Nr   r	   r	   r	   r
   r   =   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.
    Nr   r	   r	   r	   r
   r   F   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.
    Nr   r	   r	   r	   r
   r   O   s   r   c                   @   s   e Zd ZdZdS )ÚRequestAbortedz=The request was closed before it was completed, or timed out.Nr   r	   r	   r	   r
   r   X   s   r   c                   @   s   e Zd ZdZdS )Ú
BadRequestz1The request is malformed and cannot be processed.Nr   r	   r	   r	   r
   r   ^   s   r   c                   @   s   e Zd ZdZdS )ÚPermissionDeniedz+The user did not have permission to do thatNr   r	   r	   r	   r
   r   d   s   r   c                   @   s   e Zd ZdZdS )ÚViewDoesNotExistz!The requested view does not existNr   r	   r	   r	   r
   r   j   s   r   c                   @   s   e Zd ZdZdS )ÚMiddlewareNotUsedz8This middleware is not used in this server configurationNr   r	   r	   r	   r
   r   p   s   r   c                   @   s   e Zd ZdZdS )ÚImproperlyConfiguredz'Django is somehow improperly configuredNr   r	   r	   r	   r
   r   v   s   r   c                   @   s   e Zd ZdZdS )Ú
FieldErrorz(Some kind of problem with a model field.Nr   r	   r	   r	   r
   r   |   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
ƒr–i | _| ¡ D ]&\}}t|tƒs†t|ƒ}|j| j|< qlnzt|tƒrög | _|D ]H}t|tƒsÀt|ƒ}t|dƒrä| j t|j ¡ g ƒ¡ qª| j |j¡ qª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"   ˆ   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 r3   )r$   r,   r(   r-   r*   r5   r	   r	   r
   r0   »   s    
zValidationError.messagesc                 C   sJ   t | dƒr2| j ¡ D ]\}}| |g ¡ |¡ qn| tg ¡ | j¡ |S r3   )r$   r   r)   Ú
setdefaultr+   ÚNON_FIELD_ERRORSr%   )r.   r   r/   r%   r	   r	   r
   Úupdate_error_dictÁ   s
    
z!ValidationError.update_error_dictc                 c   sb   t | dƒr2| j ¡ D ]\}}|tt|ƒƒfV  qn,| jD ]$}|j}|jrR||j; }t|ƒV  q8d S r3   )	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 r3   )r$   Úreprr(   r*   r5   r	   r	   r
   Ú__str__Ô   s    
zValidationError.__str__c                 C   s   d|  S )NzValidationError(%s)r	   r5   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$   rB   r    r&   r   r'   r   ÚtupleÚsortedr%   ÚoperatorÚ
attrgetterr5   r	   r	   r
   Ú__hash__á   s    
ýÿ
zValidationError.__hash__)NN)r   r   r   r   r"   Úpropertyr6   r0   r9   r=   r?   r@   rD   rJ   Ú__classcell__r	   r	   r1   r
   r   …   s   +

r   c                   @   s   e Zd ZdZdS )ÚEmptyResultSetz)A database query predicate is impossible.Nr   r	   r	   r	   r
   rM   ï   s   rM   c                   @   s   e Zd ZdZdS )ÚSynchronousOnlyOperationzBThe user tried to call a sync-only function from an async context.Nr   r	   r	   r	   r
   rN   õ   s   rN   )r   rH   Zdjango.utils.hashabler   Ú	Exceptionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r   rM   rN   r	   r	   r	   r
   Ú<module>   s2   			j