
    hhce                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&J'r'  S SK(J)r)  \)" S\RT                  5      r+ " S S\ 5      r, " S S\-5      r. " S S5      r/ " S S\/5      r0 " S S\/5      r1 " S S\15      r2 " S S\05      r3 " S  S!\35      r4 " S" S#\35      r5 " S$ S%\05      r6 " S& S'\05      r7 " S( S)\05      r8 " S* S+\05      r9 " S, S-\05      r: " S. S/\05      r; " S0 S1\05      r< " S2 S3\=5      r> " S4 S5\05      r?g)6    N)Header)	responses)urlsplit)async_to_syncsync_to_async)settings)signalssigning)DisallowedRedirect)DjangoJSONEncoder)SimpleCookie)timezone)CaseInsensitiveMapping)
iri_to_uri)cached_property)content_disposition_header	http_date)_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   @    \ rS rSrS rS
S jrS rS rSS jrS r	S	r
g)ResponseHeaders!   c                 ^    0 U l         U(       a  U R                  U5       H	  u  p#X0U'   M     gg)zU
Populate the initial data using __setitem__ to ensure values are
correctly encoded.
N)_store_unpack_items)selfdataheadervalues       OD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\django/http/response.py__init__ResponseHeaders.__init__"   s1    
 !%!3!3D!9$V ":     c                 z    [        U[        5      (       a  UR                  U5        OC[        U[        5      (       a  UR	                  U5      nO[        U5      nUR                  U5        SU;   d  SU;   a  [        SU< S35      e U$ ! [         a  n[        U[        5      (       a  SU;   d'  SU;   d!  [        U[        5      (       a  SU;   d  SU;   a  [        SU< S35      UeU(       a-  [        US[        R                  S9R                  5       n S
nAU$ U=R                  S	U-  -  sl
        e S
nAff = f)z
Convert headers key/value to ascii/latin-1 native strings.
`charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
`value` can't be represented in the given charset, apply MIME-encoding.

z*Header values can't contain newlines (got )   
   utf-8)
maxlinelenz,, HTTP response headers must be in %s formatN)
isinstancestrencodebytesdecodeBadHeaderErrorUnicodeErrorr   sysmaxsizereason)r   r   charsetmime_encodees        r   _convert_to_charset#ResponseHeaders._convert_to_charset,   s$   	%%%W%E5))W-E
W%u}$@	K  !.( !  	
 5%((eun5#&&DEMTU]$@	K ug#++FMMO  JWTT	s   BB 
D:BD5D55D:c                 &    U R                  U5        g N)pop)r   keys     r   __delitem__ResponseHeaders.__delitem__S   s    r"   c                     U R                  US5      nU R                  USSS9nX4U R                  UR                  5       '   g )Nasciilatin-1T)r6   )r8   r   lowerr   r=   r   s      r   __setitem__ResponseHeaders.__setitem__V   sA    &&sG4((	t(L$'<CIIK r"   Nc                 V    U R                   R                  UR                  5       U5      $ r;   )r   r<   rC   )r   r=   defaults      r   r<   ResponseHeaders.pop[   s    {{syy{G44r"   c                     X;  a  X U'   g g r;    rD   s      r   
setdefaultResponseHeaders.setdefault^   s    ?I r"   )r   Fr;   )__name__
__module____qualname____firstlineno__r    r8   r>   rE   r<   rL   __static_attributes__rK   r"   r   r   r   !   s!    %%N0
5r"   r   c                       \ rS rSrSrg)r0   c   rK   NrO   rP   rQ   rR   rS   rK   r"   r   r0   r0   c       r"   r0   c                   @   \ rS rSrSrSr S S jr\S 5       r\R                  S 5       r\S 5       r
\
R                  S	 5       r
S
 r\r\S 5       rS rS rS rS r\rS rS!S jr        S"S jrS rS#S jrS$S jrS rS rS rS rS rS rS rS r S r!Sr"g)%HttpResponseBaseg   z
An HTTP response base class with dictionary-accessed headers.

This class doesn't handle content. It should not be used directly.
Use the HttpResponse and StreamingHttpResponse subclasses instead.
   Nc                    [        U5      U l        X@l        SU R                  ;  a!  Uc  SU R                   3nXR                  S'   OU(       a  [	        S5      e/ U l        S U l        [        5       U l        SU l	        Ub5   [        U5      U l        SU R                  s=::  a  S::  d  O  [	        S5      eX0l        g ! [        [        4 a    [        S5      ef = f)	NContent-Typeztext/html; charset=zX'headers' must not contain 'Content-Type' when the 'content_type' parameter is provided.Fz$HTTP status code must be an integer.d   iW  z4HTTP status code must be an integer from 100 to 599.)r   headers_charsetr5   
ValueError_resource_closers_handler_classr   cookiesclosedintstatus_code	TypeError_reason_phrase)r   content_typestatusr4   r5   r_   s         r   r    HttpResponseBase.__init__q   s     'w/-#!4T\\NC+7LL(8  "$ ##~H#&v;  $**1c1 !WXX$ 	* H FGGHs   B= =Cc                 v    U R                   b  U R                   $ [        R                  " U R                  S5      $ )NzUnknown Status Code)ri   r   getrg   r   s    r   reason_phraseHttpResponseBase.reason_phrase   s4    *&&& }}T--/DEEr"   c                     Xl         g r;   )ri   r   r   s     r   rp   rq      s    #r"   c                     U R                   b  U R                   $ U R                  R                  S5      =n(       a1  [        R	                  U5      =n(       a  US   R                  SS5      $ [        R                  $ )Nr]   r5   " )r`   r_   rn   _charset_from_content_type_researchreplacer   DEFAULT_CHARSET)r   rj   matcheds      r   r5   HttpResponseBase.charset   sn    ==$==   <<++N;;<;7>>|LLwL
 y)11#r::'''r"   c                     Xl         g r;   )r`   rs   s     r   r5   r|      s    r"   c           
          SR                  U R                  R                  5        VVs/ s H+  u  pUR                  S5      S-   UR                  S5      -   PM-     snn5      $ s  snnf )zHTTP headers as a bytestring.s   
rA   s   : rB   )joinr_   itemsr-   rD   s      r   serialize_headers"HttpResponseBase.serialize_headers   s`    || #',,"4"4"6"6JC 

7#e+ell9.EE"6
 	
s   2A#
c                 J    SU R                   ;   a  SU R                   S   -  $ S$ )Nr]   z, "%s"rv   r_   ro   s    r   _content_type_for_repr'HttpResponseBase._content_type_for_repr   s2     - t||N33	
 	
r"   c                      X R                   U'   g r;   r   )r   r   r   s      r   rE   HttpResponseBase.__setitem__   s    $Vr"   c                     U R                   U	 g r;   r   r   r   s     r   r>   HttpResponseBase.__delitem__   s    LL r"   c                      U R                   U   $ r;   r   r   s     r   __getitem__HttpResponseBase.__getitem__   s    ||F##r"   c                     XR                   ;   $ )z$Case-insensitive check for a header.r   r   s     r   
has_headerHttpResponseBase.has_header   s    %%r"   c                 6    U R                   R                  5       $ r;   )r_   r   ro   s    r   r   HttpResponseBase.items   s    ||!!##r"   c                 8    U R                   R                  X5      $ r;   )r_   rn   )r   r   	alternates      r   rn   HttpResponseBase.get   s    ||22r"   c
                 |   X R                   U'   UGb  [        U[        R                  5      (       a  [        R                  " U5      (       a/  [        R
                  " U[        R                  R                  5      nU[        R                  R                  [        R                  R                  S9-
  n
U
[        R                  " SS9-  n
SnUb  [        S5      e[        SU
R                  S-  U
R                  -   5      nO$X@R                   U   S'   OS	U R                   U   S'   Ub  [        U[        R                  5      (       a  UR                  5       n[        U5      U R                   U   S
'   U(       d1  [        [         R                   " 5       U-   5      U R                   U   S'   Ub  XPR                   U   S'   Ub  X`R                   U   S'   U(       a  SU R                   U   S'   U(       a  SU R                   U   S'   U	(       a1  U	R#                  5       S;  a  [        S5      eXR                   U   S'   gg)aI  
Set a cookie.

``expires`` can be:
- a string in the correct format,
- a naive ``datetime.datetime`` object in UTC,
- an aware ``datetime.datetime`` object in any time zone.
If it is a ``datetime.datetime`` object then calculate ``max_age``.

``max_age`` can be:
- int/float specifying seconds,
- ``datetime.timedelta`` object.
N)tz   )secondsz/'expires' and 'max_age' can't be used together.r   iQ expiresrv   zmax-agepathdomainTsecurehttponly)laxnonestrictz,samesite must be "lax", "none", or "strict".samesite)rd   r+   datetimer   is_naive
make_awareutcnow	timedeltara   maxdaysr   total_secondsrf   r   timerC   )r   r=   r   max_ager   r   r   r   r   r   deltas              r   
set_cookieHttpResponseBase.set_cookie   s   2 "S'8#4#455$$W--&11'8;L;L;P;PQG("3"3"7"78;L;L;P;P"7"QQ ++A66&$%VWWae!3emm!CD/6S!),+-DLLi('8#5#566!//1+.w<DLLi(/8w9N/OS!),(,LLf%*0LLh'*.DLLh',0DLLj)~~'@@ !OPP,4LLj) r"   c                 :    U R                   R                  X5        g)z,Set a header unless it has already been set.N)r_   rL   rD   s      r   rL   HttpResponseBase.setdefault  s    +r"   c                 r    [         R                  " X-   S9R                  U5      nU R                  " X40 UD6$ )N)salt)r
   get_cookie_signersignr   )r   r=   r   r   kwargss        r   set_signed_cookie"HttpResponseBase.set_signed_cookie  s3    ))sz:??Fs4V44r"   c           
          UR                  S5      =(       d    U=(       a    UR                  5       S:H  nU R                  USUUUSUS9  g )N)z	__Secure-z__Host-r   r   zThu, 01 Jan 1970 00:00:00 GMT)r   r   r   r   r   r   )
startswithrC   r   )r   r=   r   r   r   r   s         r   delete_cookieHttpResponseBase.delete_cookie  sW    
  89 
3)V3 	 	3 	 	
r"   c                    [        U[        [        45      (       a  [        U5      $ [        U[        5      (       a$  [        UR	                  U R
                  5      5      $ [        U5      R	                  U R
                  5      $ )z=Turn a value into a bytestring encoded in the output charset.)r+   r.   
memoryviewr,   r-   r5   rs   s     r   
make_bytesHttpResponseBase.make_bytes2  s^     eeZ011<eS!!dll3445z  ..r"   c                     U R                    H  n U" 5         M     U R                   R                  5         SU l        [        R
                  R                  U R                  S9  g ! [         a     Me  f = f)NT)sender)rb   	Exceptionclearre   r	   request_finishedsendrc   )r   closers     r   closeHttpResponseBase.closeG  sh    ,,F - 	$$&  %%T-@-@%A  s   A%%
A32A3c                 F    [        SU R                  R                  -  5      eNz This %s instance is not writableOSError	__class__rO   r   contents     r   writeHttpResponseBase.writeR      84>>;R;RRSSr"   c                     g r;   rK   ro   s    r   flushHttpResponseBase.flushU  s    r"   c                 F    [        SU R                  R                  -  5      e)Nz)This %s instance cannot tell its positionr   ro   s    r   tellHttpResponseBase.tellX  s!    7$..:Q:QQ
 	
r"   c                     gNFrK   ro   s    r   readableHttpResponseBase.readable`      r"   c                     gr   rK   ro   s    r   seekableHttpResponseBase.seekablec  r   r"   c                     gr   rK   ro   s    r   writableHttpResponseBase.writablef  r   r"   c                 F    [        SU R                  R                  -  5      er   r   )r   liness     r   
writelinesHttpResponseBase.writelinesi  r   r"   )r`   rc   ri   rb   re   rd   r_   rg   )NNNNNr;   )rv   NN/NFFN)rv   )r   NN)#rO   rP   rQ   rR   __doc__rg   r    propertyrp   setterr5   r   	__bytes__r   rE   r>   r   r   __contains__r   rn   r   rL   r   r   r   r   r   r   r   r   r   r   r   rS   rK   r"   r   rY   rY   g   s    K RV%< F F $ $ ( ( ^^ 
 "I
 
%!$& L$3 >5@,5
(/*	BT
Tr"   rY   c                      ^  \ rS rSrSrSrSU 4S jjrS rS r\r	\
S 5       r\R                  S 5       r\S	 5       rS
 rS rS rS rS rS rSrU =r$ )HttpResponseim  zg
An HTTP response class with a string as content.

This content can be read, appended to, or replaced.
Fc                 2   > [         TU ]  " U0 UD6  Xl        g r;   )superr    r   )r   r   argsr   r   s       r   r    HttpResponse.__init__v  s    $)&)r"   c                 d    SU R                   R                  U R                  U R                  S.-  $ Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)clsrg   rj   r   rO   rg   r   ro   s    r   __repr__HttpResponse.__repr__{  s4    F>>**++ 77J
 
 	
r"   c                 B    U R                  5       S-   U R                  -   $ )z6Full HTTP message, including headers, as a bytestring.s   

)r   r   ro   s    r   	serializeHttpResponse.serialize  s    %%'+5DDr"   c                 8    SR                  U R                  5      $ Nr"   )r   
_containerro   s    r   r   HttpResponse.content  s    xx((r"   c                 p  ^  [        US5      (       a_  [        U[        [        [        45      (       d?  SR                  U 4S jU 5       5      n[        US5      (       a   UR                  5         OOT R                  U5      nU/T l	        T R                  R                  SS 5        g ! [         a     N1f = f)N__iter__r"   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr;   r   ).0chunkr   s     r   	<genexpr>'HttpResponse.content.<locals>.<genexpr>  s     I5%tu555s   !r   text)hasattrr+   r.   r   r,   r   r   r   r   r  __dict__r<   )r   r   r   s   `  r   r   r    s     5*%%jE:s+/
 /
 hhI5IIGug&&KKM ' ooe,G")&$' ! s    B( (
B54B5c                 ^    U R                   R                  U R                  =(       d    S5      $ )Nr)   )r   r/   r5   ro   s    r   r  HttpResponse.text  s     ||""4<<#:7;;r"   c                 ,    [        U R                  5      $ r;   )iterr  ro   s    r   r  HttpResponse.__iter__  s    DOO$$r"   c                 X    U R                   R                  U R                  U5      5        g r;   )r  appendr   r   s     r   r   HttpResponse.write  s    tw78r"   c                 ,    [        U R                  5      $ r;   )lenr   ro   s    r   r   HttpResponse.tell  s    4<<  r"   c                     U R                   $ r;   )r   ro   s    r   getvalueHttpResponse.getvalue  s    ||r"   c                     g)NTrK   ro   s    r   r   HttpResponse.writable  s    r"   c                 8    U H  nU R                  U5        M     g r;   )r   )r   r   lines      r   r   HttpResponse.writelines  s    DJJt r"   )r  r   )r"   )rO   rP   rQ   rR   r   	streamingr    r   r   r   r   r   r   r   r  r  r   r   r  r   r   rS   __classcell__r   s   @r   r   r   m  s     I

E I) ) ^^( (" < <%9! r"   r   c                      ^  \ rS rSrSrSrSU 4S jjrS r\S 5       r	\S 5       r
\S 5       r\R                  S	 5       rS
 rS rS rS rSrU =r$ )StreamingHttpResponsei  a  
A streaming HTTP response class with an iterator as content.

This should only be iterated once, when the response is streamed to the
client. However, it can be appended to or replaced with a new iterator
that wraps the original content (or yields entirely new content).
Tc                 2   > [         TU ]  " U0 UD6  Xl        g r;   )r   r    streaming_content)r   r(  r   r   r   s       r   r    StreamingHttpResponse.__init__  s    $)&) "3r"   c                 d    SU R                   R                  U R                  U R                  S.-  $ r   )r   rQ   rg   r   ro   s    r   r   StreamingHttpResponse.__repr__  s4    F>>..++ 77J
 
 	
r"   c                 F    [        SU R                  R                  -  5      e)NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.AttributeErrorr   rO   ro   s    r   r   StreamingHttpResponse.content  s'    +-1^^-D-DE
 	
r"   c                 F    [        SU R                  R                  -  5      e)Nz)This %s instance has no `text` attribute.r-  ro   s    r   r  StreamingHttpResponse.text  s!    7$..:Q:QQ
 	
r"   c                    ^ ^ T R                   (       a  T R                  mUU 4S jnU" 5       $ [        T R                  T R                  5      $ )Nc                 V   >#    T  S h  vN n TR                  U 5      7v   M   N
 g 7fr;   r  )part	_iteratorr   s    r   awrapper9StreamingHttpResponse.streaming_content.<locals>.awrapper  s&     "+ 0$//$//0)s   )'%')'))is_asyncr5  mapr   )r   r6  r5  s   ` @r   r(  'StreamingHttpResponse.streaming_content  s9    == I0 :t77r"   c                 &    U R                  U5        g r;   )_set_streaming_contentrs   s     r   r(  r:    s    ##E*r"   c                      [        U5      U l        SU l        [        US5      (       a&  U R                  R                  UR                  5        g g ! [         a    [	        U5      U l        SU l         N[f = f)NFTr   )	r  r5  r8  rh   aiterr  rb   r  r   rs   s     r   r<  ,StreamingHttpResponse._set_streaming_content  sh    	!!%[DN!DM 5'""""))%++6 #  	!"5\DN DM	!s   A !A54A5c           	           [        U R                  5      $ ! [         aX    [        R                  " S[
        SS9  S n[        U R                  [        [        U5      " U R                  5      5      5      s $ f = f)NzStreamingHttpResponse must consume asynchronous iterators in order to serve them synchronously. Use a synchronous iterator instead.   
stacklevelc                 T   #    / nU   S h  vN nUR                  U5        M   N
 U$ 7fr;   )r  )r5  as_listr	  s      r   to_list/StreamingHttpResponse.__iter__.<locals>.to_list  s,     #, *%NN5)*9s   (%#%(%()
r  r(  rh   warningswarnWarningr9  r   r   r5  )r   rF  s     r   r  StreamingHttpResponse.__iter__  sm    	V..// 	VMMP	 t]7-CDNN-S(TUU	Vs    AA98A9c                  #     U R                     S h  vN nU7v   M   N
 g ! [         aQ    [        R                  " S[        SS9  [        [        5      " U R                   5      I S h  vN   H  nU7v   M
      g f = f7f)NzStreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.rA  rB  )r(  rh   rH  rI  rJ  r   list)r   r4  s     r   	__aiter__StreamingHttpResponse.__aiter__  su     	"44 d
4 
	MMS	 ,D1$2H2HIII
 J
	sJ   B$ " "$ "$ BAA?*A-+A?<B>A??Bc                 8    SR                  U R                  5      $ r  )r   r(  ro   s    r   r  StreamingHttpResponse.getvalue  s    xx..//r"   )r5  r8  r(  )rK   )rO   rP   rQ   rR   r   r"  r    r   r   r   r  r(  r   r<  r  rN  r  rS   r#  r$  s   @r   r&  r&    s     I3
 
 
 
 

 8 8 + +	7V( 0 0r"   r&  c                   L   ^  \ rS rSrSrSrSSS.U 4S jjrU 4S jrS	 rS
r	U =r
$ )FileResponsei!  z6
A streaming HTTP response class optimized for files.
i   Frv   )as_attachmentfilenamec                n   > Xl         X l        SU;  =(       d    US   S L U l        [        TU ]  " U0 UD6  g )Nrj   )rT  rU  _no_explicit_content_typer   r    )r   rT  rU  r   r   r   s        r   r    FileResponse.__init__(  sA    * &(JF>,Bd,J 	& 	$)&)r"   c                 8  >^ ^ [        US5      (       d  S T l        [        TT ]  U5      $ U=T l        m[        TS5      (       a%  T R                  R                  TR                  5        [        UU 4S jS5      nT R                  T5        [        TT ]  U5        g )Nreadr   c                  :   > T R                  TR                  5      $ r;   )rZ  
block_sizefileliker   s   r   <lambda>5FileResponse._set_streaming_content.<locals>.<lambda>8  s    X]]4??;r"   r"   )	r  file_to_streamr   r<  rb   r  r   r  set_headers)r   r   r^  r   s   ` @r   r<  #FileResponse._set_streaming_content0  s    uf%%"&D71%88)..h8W%%""))(..9;SA"&u-r"   c                   ^ ^ [        TSS5      n[        U[        5      (       a  UOSn[        TS5      =(       a(    [        TS5      (       + =(       d    TR	                  5       n[        TS5      (       Ga  U(       ac  TR                  5       nTR                  S[        R                  5        TR                  5       U-
  T R                  S'   TR                  U5        GO[        TS5      (       a9  TR                  5       R                  TR                  5       -
  T R                  S'   O[        R                  R                  U5      (       a=  [        R                  R                  U5      TR                  5       -
  T R                  S'   OeU(       a^  [!        [#        UU 4S	 jS5      5      T R                  S'   TR                  [%        T R                  S   5      * [        R                  5        [        R                  R'                  T R(                  =(       d    U5      nT R*                  (       a^  U(       aH  [,        R.                  " U5      u  pVS
SSSSS.R1                  Xe5      nU=(       d    ST R                  S'   OST R                  S'   [3        T R4                  U5      =n(       a  UT R                  S'   gg)z
Set some common response headers (Content-Length, Content-Type, and
Content-Disposition) based on the `filelike` response content.
namerv   seekr   r   r   zContent-Length	getbufferc                  L   > [        T R                  TR                  5      5      $ r;   )r  rZ  r\  r]  s   r   r_  *FileResponse.set_headers.<locals>.<lambda>V  s    St!?@r"   zapplication/x-brotlizapplication/x-bzipzapplication/x-compresszapplication/gzipzapplication/x-xz)brbzip2compressgzipxzzapplication/octet-streamr]   zContent-DispositionN)getattrr+   r,   r  r   r   rf  ioSEEK_ENDr_   rg  nbytesosr   existsgetsizesumr  rf   basenamerU  rW  	mimetypes
guess_typern   r   rT  )r   r^  rU  r   initial_positionrj   encodingcontent_dispositions   ``      r   rb  FileResponse.set_headers<  s4   
 8VR0)(C888b8V, 
*--D1B1B1D 	 8V$$#+==? a-19CS1S-../;//&&(//(--/A -. ))GGOOH-? -. -0@!D.DLL)* MM3t||,<=>>L77##DMM$=X>)))2)=)=h)G& 11 8.,  #h-  !>$> ^, 0J^,"<#
 
 
 3FDLL./
r"   )rW  rT  ra  rU  )rO   rP   rQ   rR   r   r\  r    r<  rb  rS   r#  r$  s   @r   rS  rS  !  s/     J,1B * *
.4F 4Fr"   rS  c                   L   ^  \ rS rSr/ SQrSU 4S jjr\" S 5      rS rSr	U =r
$ )HttpResponseRedirectBaseis  )httphttpsftpc                 "  > [         TU ]  " U0 UD6  [        U5      U S'   [        [	        U5      5      nU(       a  U R
                  U l        UR                  (       a3  UR                  U R                  ;  a  [        SUR                  -  5      eg g )NLocationz)Unsafe redirect to URL with protocol '%s')
r   r    r   r   r,   status_code_preserve_requestrg   schemeallowed_schemesr   )r   redirect_topreserve_requestr   r   parsedr   s         r   r    !HttpResponseRedirectBase.__init__v  s}    $)&)%k2Z#k*+#@@D==V]]$2F2FF$;fmmK  G=r"   c                     U S   $ )Nr  rK   ro   s    r   r_  !HttpResponseRedirectBase.<lambda>  s	    Z 0r"   c                 z    SU R                   R                  U R                  U R                  U R                  S.-  $ )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)r   rg   rj   url)r   rO   rg   r   r  ro   s    r   r   !HttpResponseRedirectBase.__repr__  s:    R~~..#// $ ; ;xx		
r"   )rg   rN   )rO   rP   rQ   rR   r  r    r   r  r   rS   r#  r$  s   @r   r  r  s  s$    .O	 0
1C	
 	
r"   r  c                       \ rS rSrSrSrSrg)HttpResponseRedirecti  i.  i3  rK   NrO   rP   rQ   rR   rg   r  rS   rK   r"   r   r  r        K#& r"   r  c                       \ rS rSrSrSrSrg)HttpResponsePermanentRedirecti  i-  i4  rK   Nr  rK   r"   r   r  r    r  r"   r  c                   d   ^  \ rS rSrSrU 4S jr\R                  R                  S 5       rSr	U =r
$ )HttpResponseNotModifiedi  i0  c                 ,   > [         TU ]  " U0 UD6  U S	 g )Nzcontent-type)r   r    )r   r   r   r   s      r   r     HttpResponseNotModified.__init__  s    $)&) r"   c                 6    U(       a  [        S5      e/ U l        g )Nz7You cannot set content to a 304 (Not Modified) response)r.  r  rs   s     r   r   HttpResponseNotModified.content  s     I  r"   )r  )rO   rP   rQ   rR   rg   r    r   r   r   rS   r#  r$  s   @r   r  r    s-    K!    !r"   r  c                       \ rS rSrSrSrg)HttpResponseBadRequesti  i  rK   NrO   rP   rQ   rR   rg   rS   rK   r"   r   r  r        Kr"   r  c                       \ rS rSrSrSrg)HttpResponseNotFoundi  i  rK   Nr  rK   r"   r   r  r    r  r"   r  c                       \ rS rSrSrSrg)HttpResponseForbiddeni  i  rK   Nr  rK   r"   r   r  r    r  r"   r  c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )HttpResponseNotAllowedi  i  c                 N   > [         TU ]  " U0 UD6  SR                  U5      U S'   g )Nz, Allow)r   r    r   )r   permitted_methodsr   r   r   s       r   r    HttpResponseNotAllowed.__init__  s(    $)&)		"34Wr"   c                 l    SU R                   R                  U R                  U R                  U S   S.-  $ )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>r  )r   rg   rj   methodsr   ro   s    r   r   HttpResponseNotAllowed.__repr__  s;    T>>**++ 77G}	X
 
 	
r"   rK   )	rO   rP   rQ   rR   rg   r    r   rS   r#  r$  s   @r   r  r    s    K5
 
r"   r  c                       \ rS rSrSrSrg)HttpResponseGonei  i  rK   Nr  rK   r"   r   r  r    r  r"   r  c                       \ rS rSrSrSrg)HttpResponseServerErrori  i  rK   Nr  rK   r"   r   r  r    r  r"   r  c                       \ rS rSrSrg)Http404i  rK   NrV   rK   r"   r   r  r    rW   r"   r  c                   6   ^  \ rS rSrSr\SS4U 4S jjrSrU =r$ )JsonResponsei  a   
An HTTP response class that consumes data to be serialized to JSON.

:param data: Data to be dumped into json. By default only ``dict`` objects
  are allowed to be passed due to a security flaw before ECMAScript 5. See
  the ``safe`` parameter for more information.
:param encoder: Should be a json encoder class. Defaults to
  ``django.core.serializers.json.DjangoJSONEncoder``.
:param safe: Controls if only ``dict`` objects may be serialized. Defaults
  to ``True``.
:param json_dumps_params: A dictionary of kwargs passed to json.dumps().
TNc                    > U(       a   [        U[        5      (       d  [        S5      eUc  0 nUR                  SS5        [        R
                  " U4SU0UD6n[        TU ]  " SSU0UD6  g )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.rj   zapplication/jsonr   r   rK   )r+   dictrh   rL   jsondumpsr   r    )r   r   encodersafejson_dumps_paramsr   r   s         r   r    JsonResponse.__init__  ss     
4..+  $ ".*<=zz$AGA/@A000r"   rK   )	rO   rP   rQ   rR   r   r   r    rS   r#  r$  s   @r   r  r    s      "1 1r"   r  )@r   rp  r  rx  rs  rer2   r   rH  email.headerr   http.clientr   urllib.parser   asgiref.syncr   r   django.confr   django.corer	   r
   django.core.exceptionsr   django.core.serializers.jsonr   django.http.cookier   django.utilsr   django.utils.datastructuresr   django.utils.encodingr   django.utils.functionalr   django.utils.httpr   r   django.utils.regex_helperr   Irw   r   ra   r0   rY   r   r&  rS  r  r  r  r  r  r  r  r  r  r  r   r  r  rK   r"   r   <module>r     sN    	   	 	 
    ! ! 5   ( 5 : + ! > , 3 C 6 0'! 
?, ?D	Z 	CT CTLF# FRh0, h0VOF( OFd
| 
8'3 '
'$< '
l  \ < L 
\ 
 | l 	i 	1< 1r"   