
    rp0jd                        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	r	S SK
r
S SKrS SKrS SKJr  S SKJrJrJr  S SKJr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 J!r!  SSK"J#r#  SSK$J%r%J&r&J'r'  Sr(\\)S4   r*SRV                  r,SRV                  r-Sr.\" 5       r/\0" S5      r1 " S S\	Rd                  5      r3 " S S\ 5      r4 " S S\ 5      r5g)    N)defaultdict)IterableIteratorMapping)
BaseCookieMorselSimpleCookieMappingProxyType)Union)URL   ) preserve_morsel_with_coded_value)AbstractCookieJarClearCookiePredicate)is_ip_address)LooseCookiesPathLikeStrOrURL)	CookieJarDummyCookieJarzMorsel[str]z{}/{}z{1}.{0}d   )max-ageexpiresc                   l   ^  \ rS rSr% Sr\" 1 Sk5      r\\\\4      \	S'   S\S\S\
4U 4S jjrS	rU =r$ )
_RestrictedCookieUnpickler.   a  A restricted unpickler that only allows cookie-related types.

This prevents arbitrary code execution when loading pickled cookie data
from untrusted sources. Only types that are expected in a serialized
CookieJar are permitted.

Subclasses :class:`pickle._Unpickler` (the pure-Python implementation)
rather than :class:`pickle.Unpickler` because the accelerated unpickler
on some implementations (notably PyPy) does not dispatch through
:meth:`find_class` overrides.

See: https://docs.python.org/3/library/pickle.html#restricting-globals
>   builtinssetr   dictr   tupler   	frozensetcollectionsr   http.cookiesr   r*   r	   _ALLOWED_CLASSESmodulenamereturnc                 ~   > X4U R                   ;  a  [        R                  " SU SU S35      e[        TU ]  X5      $ )NzForbidden class: .z. CookieJar.load() only allows cookie-related types for security. See https://docs.python.org/3/library/pickle.html#restricting-globals)r,   pickleUnpicklingErrorsuper
find_class)selfr-   r.   	__class__s      K/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/cookiejar.pyr5   %_RestrictedCookieUnpickler.find_classL   sQ    >!6!66((#F81TF 3X X 
 w!&//     )__name__
__module____qualname____firstlineno____doc__r&   r,   r$   str__annotations__typer5   __static_attributes____classcell__r7   s   @r8   r   r   .   sM     4=	
4ic3h0 0 0C 0D 0 0r:   r   c                     ^  \ rS rSrSr\R                  " S5      r\R                  " S5      r\R                  " S5      r	\R                  " S\R                  5      r\R                  " S5      r\" \R                  R                  R!                  \R"                  R$                  S9R'                  5       5      S	-
  r \R,                  " \R0                  " \5      5        \S	-
  rSSSSS.S\S\S\\\   -  S-  S\R@                  S-  SS4
U 4S jjjr!\"S\4S j5       r#\"S\4S j5       r$\"S\%\&\'\'4   \(4   4S j5       r)\"S\*\&\'\'4      4S j5       r+S\,SS4S jr-S\,SS4S jr.S\/\'\/\'\/\'\'\-  \0-  4   4   4   SS4S jr1S9S\2S-  SS4S  jjr3S!\'SS4S" jr4S:S# jr5S\4S$ jr6S;S% jr7S&\\&\'\'\'4      SS4S' jr8S(\0S!\'S)\'S*\'SS4
S+ jr9\:" 5       4S,\;S-\:SS4S. jjr<\:" 5       4S/\:SS04S1 jjr=S2\>\'   S\>\'   4S3 jr?\@S!\'S4\'S\4S5 j5       rA\BS6\'S\S-  4S7 j5       rCS8rDU =rE$ ! \ a    \R,                  " S
5      r GNd\ a    Sr GNnf = f)<r   V   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           ;   rM   rN   rN   iFTN)unsafequote_cookietreat_as_secure_originlooprO   rP   rQ   rR   r/   c                .  > [         TU ]  US9  [        [        5      U l        [        [
        5      U l        [        5       U l        Xl	        X l
        Uc  / nO[        U[        5      (       a  UR                  5       /nO~[        U[        5      (       a  [        U5      R                  5       /nONU Vs/ s HA  n[        U[        5      (       a  [        U5      R                  5       OUR                  5       PMC     nnX0l        / U l        0 U l        g s  snf NrR   )r4   __init__r   r	   _cookiesr"   _morsel_cacher    _host_only_cookies_unsafe_quote_cookie
isinstancer   originrA   _treat_as_secure_origin_expire_heap_expirations)r6   rO   rP   rQ   rR   urlr7   s         r8   rV   CookieJar.__init__z   s    	d#DOE
  	 9<)!)%'".44&<&C&C&E%F".44&)*@&A&H&H&J%K" 2&1C &0S%9%9C!szz|K1 # & (>$FH?A&s   3ADc                     U R                   $ N)rZ   r6   s    r8   rO   CookieJar.unsafe   s    ||r:   c                     U R                   $ rd   )r[   re   s    r8   rP   CookieJar.quote_cookie   s    !!!r:   c                 ,    [        U R                  5      $ )z&Return the cookies stored in this jar.)r   rW   re   s    r8   cookiesCookieJar.cookies   s      ..r:   c                 ,    [        U R                  5      $ )z0Return the host-only cookies stored in this jar.)r&   rY   re   s    r8   host_only_cookiesCookieJar.host_only_cookies   s     0011r:   	file_pathc                 j   [         R                  " U5      n0 nU R                  R                  5        H  u  u  p4nU SU 3n0 X&'   UR                  5        H  u  pxUR                  UR
                  UR                  S.n	UR                   H   n
U
[        ;   a  M  X   nU(       d  M  XU
'   M"     X74U R                  ;   a  SU	S'   U R                  R                  X4U45      =nb  XS'   XU   U'   M     M     [        USSS	 S
9 n[        R                  " X-SS9  SSS5        g! , (       d  f       g= f)zSave cookies to a file using JSON format.

:param file_path: Path to file where cookies will be serialized,
    :class:`str` or :class:`pathlib.Path` instance.
|keyvaluecoded_valueT	host_onlyNexpires_timestampwutf-8c                 0    [         R                  " XS5      $ )Ni  )osopen)pathflagss     r8   <lambda> CookieJar.save.<locals>.<lambda>   s    rwwtE'Br:   )modeencodingopener   )indent)pathlibPathrW   itemsrs   rt   ru   	_reserved_RELATIVE_EXPIRY_ATTRSrY   r`   getr|   jsondump)r6   ro   datadomainr}   cookiers   r.   morselmorsel_dataattrattr_valexpfs                 r8   saveCookieJar.save   s8    LL+	DF&*mm&9&9&;"NVFHAdV$CDI &!::#\\#)#5#5> #,,D55 %|Hx,4D) - >T%<%<</3K,,,00&1EFFCS7: 34"-S	$% !/ '<4 B	

 IIda(
 
 
s   D$$
D2c                    [         R                  " U5      n UR                  SSS9 n[        R                  " U5      nSSS5        U R                  W5        g! , (       d  f       N = f! [        R                  [        [        4 aK    UR                  SS9 n[        U5      R	                  5       U l
        SSS5         g! , (       d  f        g= ff = f)a  Load cookies from a file.

Tries to load JSON format first. Falls back to loading legacy
pickle format (using a restricted unpickler) for backward
compatibility with existing cookie files.

Replaces the current jar contents; loaded cookies pass through the
same acceptance rules as :meth:`update_cookies`.

:param file_path: Path to file from where cookies will be
    imported, :class:`str` or :class:`pathlib.Path` instance.
rry   )r   r   Nrb)r   )r   r   r|   r   load_load_json_dataJSONDecodeErrorUnicodeDecodeError
ValueErrorr   rW   )r6   ro   r   r   s       r8   r   CookieJar.load   s     LL+		ES7;qyy| <  & <; $$&8*E 	ET*a :1 = B B D +***	Es?   A* AA* 
A'#A* *.CC7C
C	CCr   c                    U R                  5         UR                  5        GH	  u  p#UR                  SS5      u  pEUR                  5        H  u  pg[        5       nUR	                  US   US   US   S.5        UR
                   H  n	X;   d  M
  U	S;  d  M  Xy   X'   M     UR                  S5      (       a  SUS	'   U(       a  [        R                  " S
US9O	[        5       n
U R                  Xh0U
5        UR                  S5      =nc  M  U R                  [        U5      XEU5        M     GM     U R                  5         g)z;Replace contents, routing cookies through update_cookies().rq   r   rs   rt   ru   rr   rv    r   https)schemehostrw   N)clearr   splitr   __setstate__r   r   r   buildupdate_cookies_expire_cookiefloat_do_expiration)r6   r   compound_keycookie_datar   r}   r.   r   r   r   response_urlr   s               r8   r   CookieJar._load_json_data   s/    	

)-%L'--c15LF%0%6%6%8!&,h ##*51!,W!5'2='A #,,D*t < 0
 (3'8 - ??;//')F8$>DCIIW6:#%  ##TNLA&??+>??CL''c
F$G9 &9 *6> 	r:   	predicatec                    Uc  U R                   R                  5         U R                  R                  5         U R                  R                  5         U R                  R                  5         U R
                  R                  5         g [        R                  " 5       nU R                  R                  5        VVVVVs/ s HY  u  u  p4nUR                  5         H<  u  pgX4U4=oR
                  ;   a  U R
                  U   U::  d  U" U5      (       d  M:  UPM>     M[     n	nnnnnU	(       a  U R                  U	5        g g s  snnnnnf rd   )	r_   r   rW   rX   rY   r`   timer   _delete_cookies)
r6   r   nowr   r}   r   r.   r   rs   to_dels
             r8   r   CookieJar.clear  s   ##%MM!$$&##))+##%iik +/--*=*=*?	
*?& &t,,1B1BB%%c*c1   . *? 	 	
   ( 	
s   <AD<
D<r   c                 4   ^ ^ T R                  UU 4S j5        g )Nc                 .   > TR                  TU S   5      $ )Nr   )_is_domain_match)xr   r6   s    r8   r   (CookieJar.clear_domain.<locals>.<lambda>-  s    T2261X;Gr:   )r   r6   r   s   ``r8   clear_domainCookieJar.clear_domain,  s    

GHr:   c              #      #    U R                  5         U R                  R                  5        H  nUR                  5        S h  vN   M     g  N	7frd   )r   rW   values)r6   vals     r8   __iter__CookieJar.__iter__/  s:     =='')Czz|## *#s   AAA
Ac                 V    [        S U R                  R                  5        5       5      $ )zgReturn number of cookies.

This function does not iterate self to avoid unnecessary expiration
checks.
c              3   T   #    U  H  n[        UR                  5       5      v   M      g 7frd   )lenr   ).0r   s     r8   	<genexpr>$CookieJar.__len__.<locals>.<genexpr>:  s      M6LF3v}}''6Ls   &()sumrW   r   re   s    r8   __len__CookieJar.__len__4  s"     Mdmm6J6J6LMMMr:   c                    [        U R                  5      =n(       d  gU[        :  a  U[        U R                  5      S-  :  ai  U R                   Vs/ s H,  nU R                  R	                  US   5      US   :X  d  M*  UPM.     snU l        [
        R                  " U R                  5        [        R                  " 5       n/ nU R                  (       az  U R                  S   u  pVXS:  a  Oc[
        R                  " U R                  5        U R                  R	                  U5      U:X  a  UR                  U5        U R                  (       a  Mz  U(       a  U R                  U5        ggs  snf )zRemove expired cookies.Nr   r   r   )r   r_    _MIN_SCHEDULED_COOKIE_EXPIRATIONr`   r   heapqheapifyr   heappopappendr   )r6   expire_heap_lenentryr   r   when
cookie_keys          r8   r   CookieJar._do_expiration<  s3   #&t'8'8#999 >>#d&7&7"81"<< "..!.E$$((q2eAh> .!D
 MM$++,iik-/#003DzMM$++,
   $$Z0D8j)    ( -!s   )E)?E)r   c                    U H  u  p#nU R                   R                  X$45        U R                  X#4   R                  US 5        U R                  X#4   R                  US 5        U R
                  R                  X#U4S 5        M     g rd   )rY   discardrW   poprX   r`   )r6   r   r   r}   r.   s        r8   r   CookieJar._delete_cookiesg  sz    "(F$##++VN;MM6.)--dD9~.224>!!6"6=	 #)r:   r   r}   r.   c                     X#U4nU R                   R                  U5      U:X  a  g [        R                  " U R                  X45        XR                   U'   g rd   )r`   r   r   heappushr_   )r6   r   r   r}   r.   r   s         r8   r   CookieJar._expire_cookien  sM    D)
  ,4t((4*<=(,*%r:   rj   r   c                    UR                   nU R                  (       d  [        U5      (       a  g[        U[        5      (       a  UR                  5       nU GH  u  pE[        U[        5      (       d  [        5       nXVU'   Xd   nUS   nU(       a  US   S:X  a  SnUS	 U(       d%  Ub"  U R                  R                  X445        U=ouS'   U(       a  US   S:X  a	  USS nXuS'   U(       a  U R                  Xs5      (       d  M  US   nU(       a	  US   S	:w  a@  UR                  nUR                  S	5      (       d  S	nOS	USUR                  S	5       -   nXS'   UR                  S	5      nUS
   =n	(       aK   [        U	5      n
[!        ["        R"                  " 5       U
-   U R$                  5      nU R'                  XX5        O<US   =n(       a0  U R+                  U5      =n(       a  U R'                  XX5        OSUS'   Xx4nU R,                  U   R/                  U5      U:w  d  GM  XPR,                  U   U'   U R0                  U   R3                  US5        GM     U R5                  5         g! [(         a    SUS
'    Nf = f)zUpdate cookies.Nr   rN   r1   r   r   r   r}   /r   r   )raw_hostrZ   r   r\   r   r   r   r	   rY   addr   r}   
startswithrfindrstripintminr   MAX_TIMEr   r   _parse_daterW   r   rX   r   r   )r6   rj   r   hostnamer.   r   tmpr   r}   max_agedelta_secondsmax_age_expirationr   expire_timers   s                  r8   r   CookieJar.update_cookiesv  sa   ((||h 7 7gw''mmoG#LDff--"n"D	H%F &*+8$h2 ''++X,<=,44)&)s*#)x  5 5f G G&>D47c>#((s++D a$**S/!::D!%v;;s#D ++w++$'LM),TYY[=-H$--)X&''(:DO #9---"&"2"27";;;;''TH(*F9%.C}}S!%%d+v5 ,2c"4(""3'++D$7w $z 	! " +(*F9%+s   4A	I((I:9I:request_urlBaseCookie[str]c                    [        5       nU R                  (       d  U$ U R                  5         U R                  (       d  U$ [        U5      [        La1  [
        R                  " S[        U5       3[        SS9  [	        U5      nUR                  =(       d    SnUR                  S;  nU(       a\  U R                  (       aK  [	        5       n[        R                  " [        5         UR                  5       nSSS5        XPR                  ;  nSnU R                  U   R                  5        H  nUR                   U R"                  U   ;   a*  U R"                  U   UR                      X'R                   '   MJ  U R%                  U5      nXR"                  U   UR                   '   XUR                   '   M     ['        U5      (       a  U R(                  (       d  U$ U4n	O3[*        R,                  " [/        UR1                  S5      5      [2        5      n	[*        R,                  " UR4                  R1                  S	5      [6        5      n
[*        R8                  " X5      n[;        UR4                  5      nU H  nXR                  ;  a  M  U R                  U   R=                  5        H  u  pUS
   nUU4U R>                  ;   a  UU:w  a  M$  [;        US   5      U:  a  M8  U(       a  US   (       a  MK  XR"                  U   ;   a  U R"                  U   U   X.'   Ms  U R%                  U5      nXR"                  U   U'   XU'   M     M     U$ ! , (       d  f       GNS= f)z8Returns this jar's cookies filtered by their attributes.zQfilter_cookies expects yarl.URL instances only,and will stop working in 4.x, got r   )
stacklevelr   )r   wssN)r   r   r1   r   r   r}   secure) r   rW   r   rC   r   warningswarnDeprecationWarningr   r   r^   
contextlibsuppressr   r]   r   rs   rX   _build_morselr   rZ   	itertools
accumulatereversedr   _FORMAT_DOMAIN_REVERSEDr}   _FORMAT_PATHproductr   r   rY   )r6   r   filteredr   is_not_securerequest_originrs   cmrsl_valdomainspathspairspath_lenpr.   r   r   s                    r8   filter_cookiesCookieJar.filter_cookies  s   
 %/L}}O}}OC'MM559+5F4GI"	 k*K''-2#**2BBT99 UN$$Z0!,!3!3!5 1*2N2NNM s#**,Auu**3//"&"4"4S"9!%%"@ ))!,H-5s#AEE*&QUUO - ""<<&.[G  **,-/FG
 $$[%5%5%;%;C%@,O!!'1{''(A% $a 0 6 6 8)D>T%<%<<8AS vf~&1 VH%5 --a00%)%7%7%:4%@HN  --f5.6""1%d+!)+ !9 4 y 10s   $M
Mr   c                 V   U R                   (       a/  UR                  (       a  UR                  S   S:X  a  [        U5      $ [        5       nU R                   (       a"  [        R                  UR                  5      u  p4OUR                  =pCUR                  UR                  X4S.5        U$ )z<Build a morsel for sending, respecting quote_cookie setting.r   "rr   )	r[   ru   r   r   _SIMPLE_COOKIEvalue_encodert   r   rs   )r6   r   r   rt   ru   s        r8   r   CookieJar._build_morsel  s    &"4"49K9KA9NRU9U3F;;$h!/!<!<V\\!JE;"(,,.K
 	FJJ[\r:   r   c                     X:X  a  gUR                  U 5      (       d  gUS[        U 5      *  nUR                  S5      (       d  g[        U5      (       + $ )z0Implements domain matching adhering to RFC 6265.TFNr1   )endswithr   r   )r   r   non_matchings      r8   r   CookieJar._is_domain_match(  sU       ((3v;,/$$S)) ***r:   date_strc                    U(       d  gSnSnSnSnS=n=pxSn	Sn
SnU R                   R                  U5       GH3  nUR                  S5      nU(       d@  U R                  R	                  U5      nU(       a  SnS UR                  5        5       u  pgnM\  U(       d?  U R                  R	                  U5      nU(       a  Sn[        UR                  5       5      n	M  U(       dA  U R                  R	                  U5      nU(       a  SnUR                  c   eUR                  n
M  U(       a  M  U R                  R	                  U5      nU(       d  GM  Sn[        UR                  5       5      nGM6     SUs=::  a  S::  a	  O  OUS	-  nOSUs=::  a  S
::  a  O  OUS-  nSX4XR4;   a  gSU	s=::  a  S::  d   g  gUS:  d  US:  d  US:  d  US:  a  g[        R                  " XXXxSSS4	5      $ )z4Implements date string parsing adhering to RFC 6265.NFr   tokenTc              3   8   #    U  H  n[        U5      v   M     g 7frd   )r   )r   ss     r8   r   (CookieJar._parse_date.<locals>.<genexpr>P  s     +P<OqCFF<Os   F   c   il  E   i  r   rK   iA  rL   rM   rN   )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                     r8   r   CookieJar._parse_date8  s    
	
!"""v--66x@K%%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= A@ DLD$_"_DLDYZDDC~2~ $;$)v{frkSBPRSTTr:   )rW   r`   r_   rY   rX   r[   r^   rZ   rd   r/   zIterator[Morsel[str]])r/   N)Fr<   r=   r>   r?   r@   recompiler$  r'  r*  Ir+  r-  r   datetimemaxreplacetimezoneutc	timestampr   r.  r/  r   gmtimeOSErrorOverflowErrorSUB_MAX_TIMEboolr   listasyncioAbstractEventLooprV   propertyrO   rP   r   r$   rA   r	   rj   r&   rm   r   r   r   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   staticmethodr   classmethodr   rD   rE   rF   s   @r8   r   r   V   s   9ZZ	>N
 zz"BC::l3JJQ
M
 ::l+L
 	H!!))1B1B1F1F)GQQSTWXX H-. a<L
 !CG15B B 	B
 !)4> 9D @B ''$.B 
B BB    "d " " /)%S/<*GH / / 29U38_#= 2 2()h ()4 ()TEh E4 E0$d3S#*u2D-D(E#EFFG$	$L)3d: )d ).I3 I4 I$
N N))V>d5c3+?&@ >T >-5 -# -S - -PT - IL Hl H# HRV HT 14 V# V:K VpF3K F3K   + + + + + =U3 =U3: =U =US  K ??#IJ s   >"H) )IIIr   c                   \  ^  \ rS rSrSrSS.S\R                  S-  SS4U 4S jjjrSS jrS\	4S	 jr
\S\4S
 j5       r\S\4S j5       r\S\\\\4   \4   4S j5       r\S\\\\4      4S j5       rSS\S-  SS4S jjrS\SS4S jr\" 5       4S\S\SS4S jjrS\SS4S jrSrU =r$ )r   iy  zpImplements a dummy cookie storage.

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

NrU   rR   r/   c                    > [         TU ]  US9  g rT   )r4   rV   )r6   rR   r7   s     r8   rV   DummyCookieJar.__init__  s    d#r:   c              #      #    g 7frd   r;   re   s    r8   r   DummyCookieJar.__iter__  s     s   c                     g)Nr   r;   re   s    r8   r   DummyCookieJar.__len__  s    r:   c                     g)NFr;   re   s    r8   rO   DummyCookieJar.unsafe  s    r:   c                     g)NTr;   re   s    r8   rP   DummyCookieJar.quote_cookie  s    r:   c                     [        0 5      $ )zReturn an empty mapping.r
   re   s    r8   rj   DummyCookieJar.cookies  s      ##r:   c                     [        5       $ )zReturn an empty frozenset.)r&   re   s    r8   rm    DummyCookieJar.host_only_cookies  s     {r:   r   c                     g rd   r;   )r6   r   s     r8   r   DummyCookieJar.clear      r:   r   c                     g rd   r;   r   s     r8   r   DummyCookieJar.clear_domain  rg  r:   rj   r   c                     g rd   r;   )r6   rj   r   s      r8   r   DummyCookieJar.update_cookies  rg  r:   r   r   c                     [        5       $ rd   )r	   )r6   r   s     r8   r  DummyCookieJar.filter_cookies  s
    ~r:   r;   rA  rd   )r<   r=   r>   r?   r@   rQ  rR  rV   r   r   r   rS  rO  rO   rP   r   r$   rA   r	   rj   r&   rm   r   r   r   r   r   r   r  rD   rE   rF   s   @r8   r   r   y  s8    DH $ 9 9D @ $D $ $     d   $)%S/<*GH $ $ 9U38_#=  3d: d 3 4  IL l # RV # 2C  r:   r   )6rQ  r.  r   rE  r   r   r   r{   r   r2   rB  r   r   r(   r   collections.abcr   r   r   http.cookiesr   r   r	   typesr   typingr   yarlr   _cookie_helpersr   abcr   r   helpersr   typedefsr   r   r   __all__rA   
CookieItemformatr  r  r   r  r&   r   
_Unpicklerr   r   r   r;   r:   r8   <module>r{     s           	   	   # 7 7 9 9 "   = 8 " 6 6
) 3%&
 ~~#** 
 $'   ##9: %0!2!2 %0P`U! `UF-& -r:   