
    f8                     ^   d dl Z d dlZd dlZd dlZd dlZd dl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mZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ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'm(Z( dZ)ee*df   Z+djX                  Z-djX                  Z. G d de!      Z/ G d de!      Z0y)    N)defaultdict)
BaseCookieMorselSimpleCookie)ceil)DefaultDictDictIterableIteratorListMappingOptionalSetTupleUnioncast)URL   )AbstractCookieJarClearCookiePredicate)is_ip_address)LooseCookiesPathLikeStrOrURL)	CookieJarDummyCookieJarMorsel[str]z{}/{}z{1}.{0}c                   x    e Zd ZdZ ej
                  d      Z ej
                  d      Z ej
                  d      Z ej
                  dej                        Z
 ej
                  d      Z eej                  j                  j                  ej                   j"                        j%                               dz
  Z	  ej*                   ej.                  e             edz
  Zddddddededeeee   df   de e!jD                     ddf
 fdZ#de$ddfdZ%de$ddfdZ&d-de e'   ddfdZ(de)ddfdZ*d.dZ+defdZ,d/dZ-de.de)d e)d!e)ddf
d"Z/ e0       fd#e1d$e0ddfd%Z2 e0       fd&e0dd'fd(Z3e4de)d)e)defd*       Z5e6d+e)de e   fd,       Z7 xZ8S # eef$ r  ej*                  d	      ZY e$ r d
ZY w xY w)0r   z/Implements cookie storage adhering to RFC 6265.z][\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]*(?P<token>[\x00-\x08\x0A-\x1F\d:a-zA-Z\x7F-\xFF]+)z(\d{1,2}):(\d{1,2}):(\d{1,2})z	(\d{1,2})zG(jan)|(feb)|(mar)|(apr)|(may)|(jun)|(jul)|(aug)|(sep)|(oct)|(nov)|(dec)z	(\d{2,4}))tzinfor   )	i           ;   r#   r$   r$   iFTN)unsafequote_cookietreat_as_secure_originloopr%   r&   r'   r(   returnc                "   t         |   |       t        t              | _        t               | _        || _        || _        |g }nt        |t              r|j                         g}nqt        |t              rt        |      j                         g}nF|D cg c];  }t        |t              rt        |      j                         n|j                         = }}|| _        t        t        j                               | _        i | _        y c c}w Nr(   )super__init__r   r   _cookiesset_host_only_cookies_unsafe_quote_cookie
isinstancer   originstr_treat_as_secure_originr   time_next_expiration_expirations)selfr%   r&   r'   r(   url	__class__s         P/opt/lhia/ganansol/python/venv/lib/python3.12/site-packages/aiohttp/cookiejar.pyr.   zCookieJar.__init__Q   s     	d#DOE
 9<)!)%'".4&<&C&C&E%F".4&)*@&A&H&H&J%K" 2& &0S%9C!szz|K&" & (>$'+DIIK'8?A&s   A D	file_pathc                     t        j                  |      }|j                  d      5 }t        j                  | j
                  |t        j                         d d d        y # 1 sw Y   y xY w)Nwbmode)pathlibPathopenpickledumpr/   HIGHEST_PROTOCOLr;   r?   fs      r>   savezCookieJar.saveo   sS    LL+	^^^& 	C!KKq&*A*AB	C 	C 	Cs   0A!!A*c                     t        j                  |      }|j                  d      5 }t        j                  |      | _        d d d        y # 1 sw Y   y xY w)NrbrB   )rD   rE   rF   rG   loadr/   rJ   s      r>   rO   zCookieJar.loadt   sD    LL+	^^^& 	+!"KKNDM	+ 	+ 	+s   AA	predicatec                    |qt        t        j                               | _        | j                  j	                          | j
                  j	                          | j                  j	                          y g }t        j                         }| j                  j                         D ]_  \  \  }}}|j                         D ]D  \  }}|||f}	|	| j                  v r| j                  |	   |k  s	 ||      s4|j                  |	       F a |D ]g  \  }}}| j
                  j                  ||f       |||f}	|	| j                  v r| j                  |||f= | j                  ||f   j                  |d        i | j                  r8t        g | j                  j                         | j                   dz   | _        y | j                  | _        y )Nr   )r   r8   r9   r/   clearr1   r:   itemsappenddiscardpopminvaluesSUB_MAX_TIMEMAX_TIME)
r;   rP   to_delnowdomainpathcookienamemorselkeys
             r>   rR   zCookieJar.cleary   s   $($5D!MM!##))+##%iik&*mm&9&9&; 	'"NVTF & 'ftT*4,,,1B1B31G31Nv&MM#&'	' #) 	:FD$##++VTN;4&Cd'''%%vtT&:;MM64.)--dD9	:    ?""))+?T->->?!C 	  	    r]   c                 2      j                   fd       y )Nc                 .    j                  | d         S )Nr]   )_is_domain_match)xr]   r;   s    r>   <lambda>z(CookieJar.clear_domain.<locals>.<lambda>   s    T2261X;G rc   rR   r;   r]   s   ``r>   clear_domainzCookieJar.clear_domain   s    

GHrc   c              #      K   | j                          | j                  j                         D ]  }|j                         E d {     y 7 wN)_do_expirationr/   rX   )r;   vals     r>   __iter__zCookieJar.__iter__   s@     =='') 	$Czz|##	$#s   AAAAc                 V    t        d | j                  j                         D              S )zReturn number of cookies.

        This function does not iterate self to avoid unnecessary expiration
        checks.
        c              3   N   K   | ]  }t        |j                                 y wrm   )lenrX   ).0r_   s     r>   	<genexpr>z$CookieJar.__len__.<locals>.<genexpr>   s     MF3v}}'Ms   #%)sumr/   rX   r;   s    r>   __len__zCookieJar.__len__   s"     Mdmm6J6J6LMMMrc   c                 (    | j                  d        y )Nc                      y)NF )rg   s    r>   rh   z*CookieJar._do_expiration.<locals>.<lambda>   s    rc   ri   rw   s    r>   rn   zCookieJar._do_expiration   s    

?#rc   whenr^   r`   c                 ^    t        | j                  |      | _        || j                  |||f<   y rm   )rW   r9   r:   )r;   r|   r]   r^   r`   s        r>   _expire_cookiezCookieJar._expire_cookie   s.     #D$9$94 @2664./rc   cookiesresponse_urlc                    |j                   }| j                  st        |      ryt        |t              r|j                         }|D ]  \  }}t        |t              st               }|||<   ||   }|d   }|j                  d      rd}|d= |s&|$| j                  j                  ||f       |x}|d<   |j                  d      r
|dd }||d<   |r| j                  ||      s|d   }|r|j                  d      s<|j                  }|j                  d      sd}nd|d|j                  d       z   }||d<   |j                  d      }|d   }	|	rL	 t!        |	      }
t#        t%        j$                         |
z   | j&                        }| j)                  ||||       n4|d	   }|r-| j-                  |      }|r| j)                  ||||       nd|d	<   || j.                  ||f   |<    | j1                          y# t*        $ r d|d<   Y 8w xY w)
zUpdate cookies.Nr]   . r   r^   /zmax-ageexpires)raw_hostr2   r   r4   r   rS   r   r   endswithr1   add
startswithrf   r^   rfindrstripintrW   r8   rZ   r~   
ValueError_parse_dater/   rn   )r;   r   r   hostnamer`   r_   tmpr]   r^   max_agedelta_secondsmax_age_expirationr   expire_times                 r>   update_cookieszCookieJar.update_cookies   s+   ((||h 7gw'mmoG# :	9LD&ff-"n"D	TH%F s#8$h2 ''++Xt,<=,44)  %#)x  5 5fh G&>Dts3#((s+D a$**S/!::D!%v;;s#DY'G+$'LM),TYY[=-H$--)X&''(:FD$O
 !+"&"2"27";K"++KtL,.y)28DMM64.)$/u:	9x 	 " +(*F9%+s   A
G99H
	H
request_urlBaseCookie[str]c           	      4     j                   r
t               n	t               } j                  s|S  j	                           j                  s|S t        |      }|j                  xs d}|j                  dv}|rV j                  rJt               }t        j                  t              5  |j                         }ddd       | j                  v} j                  d   j                         D ]  }|j                  ||j                  <    t!        |      r j"                  s|S |f}n2t%        j&                  t)        |j+                  d            t,              }t%        j&                  |j.                  j+                  d      t0              }t%        j2                  ||      }	t$        j4                  j7                   fd|	D              }
t9        |j.                        }|
D ]  }|j                  }|d   }||f j:                  v r||k7  r*t9        |d	         |kD  r<|r|d
   rDt=        d|j?                  |j                  tA                           }|jC                  |j                  |j                  |jD                         |||<    |S # 1 sw Y   xY w)z8Returns this jar's cookies filtered by their attributes.r   )httpswssN)r   r   r   r   c              3   X   K   | ]!  }j                   |   j                          # y wrm   )r/   rX   )rt   pr;   s     r>   ru   z+CookieJar.filter_cookies.<locals>.<genexpr>"  s(      0
*+DMM!##%0
s   '*r]   r^   securer   )#r3   r   r   r/   rn   r   r   schemer7   
contextlibsuppressr   r5   rX   valuerb   r   r2   	itertools
accumulatereversedsplit_FORMAT_DOMAIN_REVERSEDr^   _FORMAT_PATHproductchainfrom_iterablers   r1   r   getr   r0   coded_value)r;   r   filteredr   is_not_securerequest_origincdomainspathspairsr   path_lenr_   r`   r]   mrsl_vals   `               r>   filter_cookieszCookieJar.filter_cookies   sR    #00LNjl 	 }}O}}O+&''-2#**2BBT99 UN$$Z0 6!,!3!3!56*$2N2NNM x(//1 	&AggHQUUO	& "<<&.[G  **,-/FG
 $$[%5%5%;%;C%@,O!!'51 //// 0
/40
 
 {''( 	&F::DH%F~!8!88X% 6&>"X-!1 M6::fjj&(+KLHLLV\\63E3EF%HTN'	&* c6 6s   (JJr   c                     || k(  ry|j                  |       sy|dt        |         }|j                  d      syt        |       S )z0Implements domain matching adhering to RFC 6265.TFNr   )r   rs   r   )r]   r   non_matchings      r>   rf   zCookieJar._is_domain_match=  sQ     v  (3v;,/$$S) ***rc   date_strc                 X   |syd}d}d}d}dx}x}}d}	d}
d}| j                   j                  |      D ]  }|j                  d      }|s;| j                  j	                  |      }|rd}d |j                         D        \  }}}R|s9| j                  j	                  |      }|rd}t        |j                               }	|s:| j                  j	                  |      }|rd}|j                  J |j                  }
|r| j                  j	                  |      }|sd}t        |j                               } d|cxk  rdk  r	n n|d	z  }nd|cxk  rd
k  rn n|dz  }d||||fv ryd|	cxk  rdk  sy y|dk  s|dkD  s
|dkD  s|dkD  ryt        j                  ||
|	|||dddf	      S )z4Implements date string parsing adhering to RFC 6265.NFr   tokenTc              3   2   K   | ]  }t        |        y wrm   )r   )rt   ss     r>   ru   z(CookieJar._parse_date.<locals>.<genexpr>e  s     +PqCF+Ps   F   c   il  E   i  r   r!   iA  r"   r#   r$   )DATE_TOKENS_REfinditergroupDATE_HMS_TIME_REmatchgroupsDATE_DAY_OF_MONTH_REr   DATE_MONTH_RE	lastindexDATE_YEAR_REcalendartimegm)clsr   
found_time	found_dayfound_month
found_yearhourminuteseconddaymonthyeartoken_matchr   
time_match	day_matchmonth_match
year_matchs                     r>   r   zCookieJar._parse_dateM  s    
	
!"""v--66x@ 	3K%%g.E 1177>
!%J+PJ<M<M<O+P(D&&44::5A	 $Iioo/0C!//55e<"&K&00<<<'11E --33E:
!%Jz//12D=	3@ DLD$_"_DLDYZDDC~2~ $;$)v{frkeS$BPRSTTrc   rm   r)   zIterator[Morsel[str]])r)   N)9__name__
__module____qualname____doc__recompiler   r   r   Ir   r   r   datetimemaxreplacetimezoneutc	timestamprZ   r   r   r8   gmtimeOSErrorr   OverflowErrorrY   boolr   r   r   r   asyncioAbstractEventLoopr.   r   rL   rO   r   rR   r6   rk   rp   rx   rn   floatr~   r   r   r   r   staticmethodrf   classmethodr   __classcell__r=   s   @r>   r   r   ,   s   9RZZ	>N
 "rzz"BC%2::l3BJJT
M
 2::l+L
 	H!!))1B1B1F1F)GQQSTWXX 	H-. a<L
 !HL48B B 	B
 !&hX&D EB w001B 
B<Ch C4 C
+h +4 +

x(<= 
 
>I3 I4 I$
N N$75 7# 7S 7 7PT 7 IL Gl G# GRV GR 14 C# C:K CJ + + + + + =U3 =U8C= =U =UQ Z  K #8??#IJ s   ?"F F90F98F9r   c                        e Zd ZdZdddeej                     ddf fdZddZde	fdZ
dd	ee   ddfd
ZdeddfdZ e       fdededdfdZdeddfdZ xZS )r   zxImplements a dummy cookie storage.

    It can be used with the ClientSession when no cookie processing is needed.

    Nr,   r(   r)   c                &    t         |   |       y r+   )r-   r.   )r;   r(   r=   s     r>   r.   zDummyCookieJar.__init__  s    d#rc   c              #      K   y wrm   r{   rw   s    r>   rp   zDummyCookieJar.__iter__  s	     s   c                      y)Nr   r{   rw   s    r>   rx   zDummyCookieJar.__len__  s    rc   rP   c                      y rm   r{   )r;   rP   s     r>   rR   zDummyCookieJar.clear      rc   r]   c                      y rm   r{   rj   s     r>   rk   zDummyCookieJar.clear_domain  r   rc   r   r   c                      y rm   r{   )r;   r   r   s      r>   r   zDummyCookieJar.update_cookies  r   rc   r   r   c                     t               S rm   )r   )r;   r   s     r>   r   zDummyCookieJar.filter_cookies  s
    ~rc   r   rm   )r   r   r   r   r   r   r   r.   rp   r   rx   r   rR   r6   rk   r   r   r   r   r   r   s   @r>   r   r     s     GK $)B)B C $t $ x(<=  3 4  IL l # RV # 2C rc   r   )1r   r   r   r   r   osrD   rG   r   r8   collectionsr   http.cookiesr   r   r   mathr   typingr   r	   r
   r   r   r   r   r   r   r   r   yarlr   abcr   r   helpersr   typedefsr   r   r   __all__r6   
CookieItemformatr   r   r   r   r{   rc   r>   <module>r     s         	   	  # 9 9      8 " 6 6
) 3%&
 ~~#** _U! _UD& rc   