
    T>qj4                        d gZ ddlZddlZddlZddlZddlm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jB                  dejD                        Z# ejB                  dejD                        Z$ G d d eeef         Z%y)Cookies    N)suppress)	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    Y/opt/rentech/trading_bot/.venv/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_formatI   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   r3   domain_specifiedr   r   r1   r   )r2   r<   s     r$   from_cookiejar_cookiez CurlMorsel.from_cookiejar_cookieX   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_specifiedFr3   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   r9   s    r$   to_cookiejar_cookiezCurlMorsel.to_cookiejar_cookiee   s     


 **
 	

 !
 ==
 "__
  $DMM$<$<S$AB
 
  		?
 ;;
 !LLA-D4<<
 LLA%
 
  !
" 4>>"24#
$ %
 	
r&   N)__name__
__module____qualname__r8   __annotations__r   r   rM   r   r   r   r1   r   staticmethodr%   r)   classmethodbytesr4   r;   r   r?   rP   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ddfdZ	de
fd	Zdee   fd
Zdee   fdZdeddfdZdee   dd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)	
isinstancerO   r   jaritemssetlistr   
set_cookie)r:   rY   keyr   r<   s        r$   __init__zCookies.__init__   s    ?j$7 {DH'4(")--/ )JCHHS%() ) & {DH% %
Ue$%) {DH!++ ,##F+, DHr&   c                     | j                   j                         }|j                  d      }|j                   j                         }|j                  dd        t        |      |d<   ||d<   |S )Nr]   _cookies_lock	_jar_type
_jar_state)__dict__copypoptype)r:   stater]   	jar_states       r$   __getstate__zCookies.__getstate__   s_    ""$iiLL%%'	ot,!#Yk'lr&   rl   c                    |j                  d      }|j                  d      }t        j                  |      }|j                  j	                  |       t        j                         |_        | j                  j	                  |       || _        y )Nrf   rg   )	rj   object__new__rh   update	threadingRLockre   r]   )r:   rl   jar_typerm   r]   s        r$   __setstate__zCookies.__setstate__   sf    99[)IIl+	nnX&I&%OO-U#r&   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   HostrF   z.local)
r   urlheadersgetcut_port_resublowerfindIPV4_REsearch)r:   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]   re   acquirer1   time_policy_nowr   r?   r   r   appendreleaseclear_expired_cookies)r:   r   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 r[   )rP   r]   ra   r   )r:   r   r   r<   s       r$   update_cookies_from_curlz Cookies.update_cookies_from_curl   sC     	(F//1FHH'	( 	&&(r&   r   c                 2   |j                   g}|j                  r"|j                   j                  d      }|d| g}|D ]K  }t        t              5  | j
                  j                  ||j                  |j                         d d d        M y # 1 sw Y   XxY w)NrF   )	r   r   lstripr   KeyErrorr]   clearr   r   )r:   r   domainsr3   s       r$   _delete_curl_morselzCookies._delete_curl_morsel   s    ??#__++C0F6(|,G 	AF(# Avv{{FKK@A A	AA As   2BB	changesc                 d   |D ]  }|j                  d      \  }}}|r|dvrt        d|      t        j                  |      }|dk(  r;| j	                  |       | j
                  j                  |j                                | j	                  |        | j
                  j                          y )N   	)   SETs   DELETEzInvalid curl cookie change: r   )		partition
ValueErrorr   r4   r   r]   ra   rP   r   )r:   r   changeaction	separatorcurl_formatr   s          r$    update_cookies_from_curl_changesz(Cookies.update_cookies_from_curl_changes   s     
	1F-3-=-=e-D*FI{.A A #?z!JKK00=F((0##F$>$>$@A((0
	1 	&&(r&   r   r   r3   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   rB   r   r   r   rC   NrD   r3   r>   rE   rF   r   rG   r   r   rH   rI   rJ   rK   HttpOnlyrL   r!   )rN   warningswarnr   rM   r   r]   ra   )r:   r   r   r3   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   r3   r   endswithr8   r   r   )	r:   r   r   r3   r   r   matched_domainr<   messages	            r$   r|   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]   r3   r   r   r   )r:   r3   r   retr<   s        r$   get_dictzCookies.get_dictA  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]   r   r   r3   r   )r:   r   r3   r   r<   removes         r$   deletezCookies.deleteP  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)r   r]   r   )r:   r3   r   argss       r$   r   zCookies.clearh  sK    
 KK%%%KKr&   c                 r    t        |      }|j                  D ]  }| j                  j                  |        y r[   )r   r]   ra   )r:   rY   r<   s      r$   rr   zCookies.updateu  s1    '"kk 	(FHH'	(r&   c                 &    | j                  ||      S r[   )r_   r:   r   r   s      r$   __setitem__zCookies.__setitem__z  s    xxe$$r&   c                 B    | j                  |      }|t        |      |S r[   )r|   r   r   s      r$   __getitem__zCookies.__getitem__}  s#    =4. r&   c                 $    | j                  |      S r[   )r   )r:   r   s     r$   __delitem__zCookies.__delitem__  s    {{4  r&   c                 ,    t        | j                        S r[   )lenr]   r9   s    r$   __len__zCookies.__len__  s    488}r&   c                 (    d | j                   D        S )Nc              3   4   K   | ]  }|j                     y wr[   )r   ).0r<   s     r$   	<genexpr>z#Cookies.__iter__.<locals>.<genexpr>  s     33s   r]   r9   s    r$   __iter__zCookies.__iter__  s    3$((33r&   c                 (    | j                   D ]  } y y)NTFr   )r:   _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 r6   z for z />z	<Cookies[z]>)r7   r]   r   r   r3   )r:   r<   cookies_reprs      r$   __repr__zCookies.__repr__  sc    yy #hh 6;;-qeFMM?#N
 <.++s   1Ar[   )r   r   F)NNN)NN)#rQ   rR   rS   __doc__r	   CookieTypesrc   rO   rn   rv   r8   r   r`   r   r   r   r   rW   r   r_   r|   r   r   r   rr   r   r   r   r1   r   r   r   rM   r   r   r!   r&   r$   r   r      s:    5  "d $ 4 C  tJ/? $)Z0@ )A* A A)U ) )  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__rers   r   r   
contextlibr   dataclassesr   http.cookiejarr   r   http.cookiesr   typingr	   r
   collections.abcr   r   urllib.parser   utilsr   errorsr   r   rO   r8   r`   tupler   r   compileASCIIr}   r   r   r!   r&   r$   <module>r      s   
 + 	     ! , ! " 4 ! # 1Iy$sCx.$uS#X:OOP b
 b
 b
J bjj288,
"**Y
)V,nS#X& V,r&   