
    Xh[.                     p   d gZ ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZ ddlmZ d	d
lmZ ddlmZmZ ed eeeef   eeeef      f   Ze G d d             Z ej<                  dej>                        Z  ej<                  dej>                        Z! G d d eeef         Z"y)Cookies    N)	dataclass)Cookie	CookieJar)_unquote)OptionalUnion)IteratorMutableMapping)urlparse   )CurlCffiWarning   )CookieConflictRequestsErrorc                       e Zd ZU eed<   eed<   dZeed<   dZeed<   dZeed<   dZ	eed	<   d
Z
eed<   dZeed<   ed        Zed        Zedefd       Zd Zedefd       ZdefdZy)
CurlMorselnamevalue hostnameF
subdomains/pathsecurer   expires	http_onlyc                     | dk(  S )NTRUE ss    R/home/Script/Script_env/lib/python3.12/site-packages/curl_cffi/requests/cookies.py
parse_boolzCurlMorsel.parse_bool"   s    F{    c                     | rdS dS )Nr   FALSEr    r!   s    r#   	dump_boolzCurlMorsel.dump_bool&   s    v''r%   set_cookie_linec                     |j                         j                  d      \  }}}}}}}|r|d   dk(  rd}	|dd  }
nd}	|}
 | |
| j                  |      || j                  |      t        |      |t	        |      |	      S )N	r   #T
   F)r   r   r   r   r   r   r   r   )decodesplitr$   intr   )clsr)   r   r   r   r   r   r   r   r   domains              r#   from_curl_formatzCurlMorsel.from_curl_format*   s     ""$**40	
s*Ibc]FIF~~j1>>&)L5/	
 		
r%   c           	      n   | j                   s%t        d| j                   d| j                         dj	                  | j                   | j                  | j                        | j                  | j                  | j                        t        | j                        | j                  | j                  g      S )NzDomain not found for cookie =r+   )r   r   r   r   joinr(   r   r   r   strr   selfs    r#   to_curl_formatzCurlMorsel.to_curl_formatG   s    }}">tyyk4::, WXXyyt/		t{{+DLL!		



 
	
r%   cookiec                      | |j                   |j                  xs d|j                  |j                  |j                  |j
                  t        |j                  xs d      d      S )Nr   r   F)r   r   r   r   r   r   r   r   )r   r   r2   domain_specifiedr   r   r0   r   )r1   r;   s     r#   from_cookiejar_cookiez CurlMorsel.from_cookiejar_cookieV   sT    ,,$"]]..==+!,	
 		
r%   returnc           
         t        di ddd| j                  d| j                  dd ddd| j                  d	| j                  d
t        | j                  j                  d            d| j                  dt        | j                        d| j                  d| j                  dk(  rd n| j                  d| j                  dk(  dd dd dt        | j                         ddS )Nversionr   r   r   portport_specifiedFr2   r=   domain_initial_dot.r   path_specifiedr   r   discardcommentcomment_urlrest)r   rfc2109r    )r   r   r   r   r   bool
startswithr   r   r   dictr   r8   s    r#   to_cookiejar_cookiezCurlMorsel.to_cookiejar_cookiec   s     


 **
 	

 !
 ==
 "__
  $DMM$<$<S$AB
 
  		?
 ;;
 !LLA-D4<<
 LLA%
 
  !
" 4>>"24#
$ %
 	
r%   N)__name__
__module____qualname__r7   __annotations__r   r   rL   r   r   r   r0   r   staticmethodr$   r(   classmethodbytesr3   r:   r   r>   rO   r    r%   r#   r   r      s    
IJHcJD#OFDGSIt  ( ( 
u 
 
8
 

6 

 


V 
r%   r   z:\d+$z\.\d+$c                      e Zd ZdZddee   ddfdZdefdZde	e
   fdZde	e
   fd	Z	 dd
ededededdf
dZ	 	 	 dd
edee   dee   dee   dee   f
dZ	 ddee   dee   defdZ	 	 dd
edee   dee   ddfdZddee   dee   ddfdZddee   ddfdZd
ededdfdZd
edefdZd
eddfdZdefdZdee   fdZdefdZdefdZy) r   z-
    HTTP Cookies, as a mutable mapping.
    Ncookiesr?   c                    |t        |t              rKt               | _        t        |t              r+|j	                         D ]  \  }}| j                  ||        y y t        |t              r,t               | _        |D ]  \  }}| j                  ||        y t        |t              r<t               | _        |j                  D ]  }| j                  j                  |        y || _        y N)	
isinstancerN   r   jaritemssetlistr   
set_cookie)r9   rX   keyr   r;   s        r#   __init__zCookies.__init__   s    ?j$7 {DH'4(")--/ )JCHHS%() ) & {DH% %
Ue$%) {DH!++ ,##F+, DHr%   c                 "   t        |j                        d   }|dk(  r|j                  j                  dd      }t        j                  d|d      }|j                         }|j                  d      dk(  rt        j                  |      s|dz  }|S )z
        Almost equivalent to the eff_request_host function in:
            https://github.com/python/cpython/blob/3.11/Lib/http/cookiejar.py#L636
        r   r   HostrE   z.local)
r   urlheadersgetcut_port_resublowerfindIPV4_REsearch)r9   requesthosts      r#   _eff_request_hostzCookies._eff_request_host   s}    
 $Q'2:??&&vr2D r4+zz|99S>Rt(<HDr%   c                 P   | j                   j                  j                          g }	 t        t	        j                               x| j                   j
                  _        | _        | j                   D ]J  }t        j                  |      }|j                  s| j                  |      |_	        |j                  |       L 	 | j                   j                  j                          | j                   j                          |S # | j                   j                  j                          w xY w)zWthe process is similar to ``cookiejar.add_cookie_header``, but load all
        cookies)r\   _cookies_lockacquirer0   time_policy_nowr   r>   r   rq   appendreleaseclear_expired_cookies)r9   ro   morselsr;   morsels        r#   get_cookies_for_curlzCookies.get_cookies_for_curl   s     	&&(	-03DIIK0@@DHH!DI(( '#99&A&*&<&<W&EFOv&	' HH""**,&&( HH""**,s   BC? ?&D%r{   c                     |D ]-  }|j                         }| j                  j                  |       / | j                  j                          y rZ   )rO   r\   r`   rz   )r9   r{   r|   r;   s       r#   update_cookies_from_curlz Cookies.update_cookies_from_curl   sC     	(F//1FHH'	( 	&&(r%   r   r   r2   r   c                    |j                  d      r#|du rt        j                  dt        d       d}n>|j                  d      r-|du s|s|dk7  r"t        j                  d	t        d       d}d
}d}i ddd|d|ddddd|dt	        |      d|j                  d      d|dt	        |      d|dddddddddddidd}t        d i |}| j                  j                  |       y)!zU
        Set a cookie value by name. May optionally include domain and path.
        z	__Secure-Fz9`secure` changed to True for `__Secure-` prefixed cookiesr   )
stacklevelTz__Host-r   z^`host` changed to True, `domain` removed, `path` changed to `/` for `__Host-` prefixed cookiesr   rA   r   r   r   rB   NrC   r2   r=   rD   rE   r   rF   r   r   rG   rH   rI   rJ   HttpOnlyrK   r    )rM   warningswarnr   rL   r   r\   r`   )r9   r   r   r2   r   r   kwargsr;   s           r#   r^   zCookies.set   s}    ??;'FeOMMK
 F__Y'Vu_$RU+MM1	 FFD
q
D
 U
 D	

 e
 f
 V
 !&"3"3C"8
 D
 d4j
 f
 t
 t
 t
 4
  Z&!
" u#
& !&!F#r%   defaultc                    d}d}| j                   D ]  }|j                  |k(  s||j                  |k(  s%||j                  |k(  s7|o|j	                  |j                        sTt        |j                        j	                  |      s0||j                  k7  r!d| d| d|j                   d}t        |      |j                  }|j                  xs d} ||S |S )z
        Get a cookie by name. May optionally include domain and path
        in order to specify exactly which cookie to retrieve.
        Nr   z!Multiple cookies exist with name=z on z and z., add domain parameter to suppress this error.)r\   r   r2   r   endswithr7   r   r   )	r9   r   r   r2   r   r   matched_domainr;   messages	            r#   rh   zCookies.get   s     hh 	5Ft#^v}}'>\V[[D%8 %*33FMMB.77G- <D6)*% ?<< 
 )11!'!4")	5, =Nr%   c                     i }| j                   D ]?  }||j                  |k(  s||j                  |k(  s'|j                  ||j                  <   A |S )z
        Cookies with the same name on different domains may overwrite each other,
        do NOT use this function as a method of serialization.
        )r\   r2   r   r   r   )r9   r2   r   retr;   s        r#   get_dictzCookies.get_dict  sU     hh 	0F&--6"9t 3#)<<FKK 		0
 
r%   c                 h   ||| j                   j                  |||      S | j                   D cg c]5  }|j                  |k(  r$||j                  |k(  r||j                  |k(  r|7 }}|D ]=  }| j                   j                  |j                  |j                  |j                         ? yc c}w )z
        Delete a cookie by name. May optionally include domain and path
        in order to specify exactly which cookie to delete.
        N)r\   clearr   r2   r   )r9   r   r2   r   r;   removes         r#   deletezCookies.delete#  s     $"288>>&$55 ((
{{d"6==F#:!4	 
 
  	DFHHNN6==&++v{{C	D
s   :B/c                     g }||j                  |       ||J |j                  |        | j                  j                  |  y)z
        Delete all cookies. Optionally include a domain and path in
        order to only delete a subset of all the cookies.
        N)rx   r\   r   )r9   r2   r   argss       r#   r   zCookies.clear;  sK    
 KK%%%KKr%   c                 r    t        |      }|j                  D ]  }| j                  j                  |        y rZ   )r   r\   r`   )r9   rX   r;   s      r#   updatezCookies.updateH  s1    '"kk 	(FHH'	(r%   c                 &    | j                  ||      S rZ   )r^   r9   r   r   s      r#   __setitem__zCookies.__setitem__M  s    xxe$$r%   c                 B    | j                  |      }|t        |      |S rZ   )rh   KeyErrorr   s      r#   __getitem__zCookies.__getitem__P  s#    =4. r%   c                 $    | j                  |      S rZ   )r   )r9   r   s     r#   __delitem__zCookies.__delitem__V  s    {{4  r%   c                 ,    t        | j                        S rZ   )lenr\   r8   s    r#   __len__zCookies.__len__Y  s    488}r%   c                 (    d | j                   D        S )Nc              3   4   K   | ]  }|j                     y wrZ   )r   ).0r;   s     r#   	<genexpr>z#Cookies.__iter__.<locals>.<genexpr>]  s     33s   r\   r8   s    r#   __iter__zCookies.__iter__\  s    3$((33r%   c                 (    | j                   D ]  } y y)NTFr   )r9   _s     r#   __bool__zCookies.__bool___  s     	A	r%   c                     dj                  | j                  D cg c],  }d|j                   d|j                   d|j                   d. c}      }d| dS c c}w )Nz, z<Cookie r5   z for z />z	<Cookies[z]>)r6   r\   r   r   r2   )r9   r;   cookies_reprs      r#   __repr__zCookies.__repr__d  sc    yy #hh 6;;-qeFMM?#N
 <.++s   1ArZ   )r   r   F)NNN)NN)rP   rQ   rR   __doc__r   CookieTypesrb   r7   rq   r_   r   r}   r   r^   rh   rN   r   r   r   r   r   r   r   r0   r   r
   r   rL   r   r   r    r%   r#   r   r      s    5  "C  tJ/? $)Z0@ ) PU,$,$ #,$-0,$=@,$	,$b "& $"%% #% 	%
 sm% 
#%P CGsm2:3-	$ !%"	DD D sm	D
 
D0HSM  QU (h{3 (t (
% %C %D %  ! ! ! 4(3- 4$ 
,# ,r%   )#__all__reru   r   dataclassesr   http.cookiejarr   r   http.cookiesr   typingr   r	   collections.abcr
   r   urllib.parser   utilsr   errorsr   r   rN   r7   r_   tupler   r   compileASCIIri   rm   r   r    r%   r#   <module>r      s   
 + 	   ! , ! " 4 ! # 1Iy$sCx.$uS#X:OOP b
 b
 b
J bjj288,
"**Y
)k,nS#X& k,r%   