
    tniI                        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
Z
d dlZd dlmZ d dlmZ d dlmZmZmZ d dl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! 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j.        Z/dj.        Z0dZ1 e            Z2 G d de#          Z3 G d de#          Z4dS )    N)defaultdict)Mapping)
BaseCookieMorselSimpleCookie)	DefaultDictDictIterableIteratorListOptionalSetTupleUnion)URL   ) preserve_morsel_with_coded_value)AbstractCookieJarClearCookiePredicate)is_ip_address)LooseCookiesPathLikeStrOrURL)	CookieJarDummyCookieJarzMorsel[str]z{}/{}z{1}.{0}d   c                       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                            ej        j                                                            dz
  Z	  ej         ej        e                     n%# eef$ r  ej        d	          ZY ne$ r d
ZY nw xY wedz
  Zddddddededeeee         df         de e!j"                 ddf
 fdZ#e$defd            Z%de&ddfdZ'de&ddfdZ(d3de e)         ddfdZ*de+ddfdZ,d4dZ-defdZ.d5d Z/d!ee0e+e+e+f                  ddfd"Z1d#e2de+d$e+d%e+ddf
d&Z3 e4            fd'e5d(e4ddfd)Z6 e4            fd*e4dd+fd,Z7d-e8e+         de8e+         fd.Z9e:de+d/e+defd0            Z;e<d1e+de e         fd2            Z= xZ>S )6r   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          t
                    | _        t                      | _        || _	        || _
        |g }not          |t                    r|                                g}nDt          |t                    r#t          |                                          g}nd |D             }|| _        g | _        i | _        d S )Nr'   c                     g | ]L}t          |t                    r!t          |                                          n|                                MS  )
isinstancestrr   origin).0urls     N/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/aiohttp/cookiejar.py
<listcomp>z&CookieJar.__init__.<locals>.<listcomp>q   sT     & & & &0S%9%9KC!!!szz||& & &    )super__init__r   r   _cookiesdict_morsel_cacheset_host_only_cookies_unsafe_quote_cookier-   r   r/   r.   _treat_as_secure_origin_expire_heap_expirations)selfr$   r%   r&   r'   	__class__s        r2   r6   zCookieJar.__init__X   s    	d###DOE
 E
  	 9<)!)%'"".44 	&<&C&C&E&E%F"".44 	&)*@&A&A&H&H&J&J%K""& &1& & &" (>$FH?Ar4   c                     | j         S N)r=   rA   s    r2   r%   zCookieJar.quote_cookiey   s    !!r4   	file_pathc                     t          j        |          }|                    d          5 }t          j        | j        |t          j                   d d d            d S # 1 swxY w Y   d S )Nwbmode)pathlibPathopenpickledumpr7   HIGHEST_PROTOCOLrA   rF   fs      r2   savezCookieJar.save}   s    L++	^^^&& 	C!Kq&*ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   &AA"%A"c                     t          j        |          }|                    d          5 }t          j        |          | _        d d d            d S # 1 swxY w Y   d S )NrbrI   )rK   rL   rM   rN   loadr7   rQ   s      r2   rV   zCookieJar.load   s    L++	^^^&& 	+!"KNNDM	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AAA	predicatec                      j                                           j                                          j                                          j                                          j                                         d S t          j                     fd j                                        D             }|r                     |           d S d S )Nc                     g | ]N\  \  }}}|                                 D ]1\  }}|||fx	j        v r	j                 k    s |          /2OS r,   )itemsr@   )
r0   domainpathcookienamemorselkeynowrW   rA   s
         r2   r3   z#CookieJar.clear.<locals>.<listcomp>   s     	
 	
 	
& &	
 	
 ft,,1BBB%c*c11y   2 
 2111r4   )	r?   clearr7   r9   r;   r@   timerZ   _delete_cookies)rA   rW   to_delr`   ra   s   `` @@r2   rb   zCookieJar.clear   s    ##%%%M!!!$$&&&#))+++##%%%Fikk	
 	
 	
 	
 	
 	
 	
*.-*=*=*?*?	
 	
 	
  	)  (((((	) 	)r4   r[   c                 <                            fd           d S )Nc                 <                         | d                   S )Nr[   )_is_domain_match)xr[   rA   s    r2   <lambda>z(CookieJar.clear_domain.<locals>.<lambda>   s    T2261X;GG r4   )rb   rA   r[   s   ``r2   clear_domainzCookieJar.clear_domain   s)    

GGGGGHHHHHr4   Iterator[Morsel[str]]c              #      K   |                                   | j                                        D ]}|                                E d {V  d S rD   )_do_expirationr7   values)rA   vals     r2   __iter__zCookieJar.__iter__   sb      ='')) 	$ 	$Czz||########	$ 	$r4   c                 b    t          d | j                                        D                       S )zReturn number of cookies.

        This function does not iterate self to avoid unnecessary expiration
        checks.
        c              3   X   K   | ]%}t          |                                          V  &d S rD   )lenrp   )r0   r]   s     r2   	<genexpr>z$CookieJar.__len__.<locals>.<genexpr>   s2      MMF3v}}''MMMMMMr4   )sumr7   rp   rE   s    r2   __len__zCookieJar.__len__   s/     MMdm6J6J6L6LMMMMMMr4   c                 $    t           j                  x}sdS |t          k    rL|t           j                  dz  k    r1 fd j        D              _        t	          j         j                   t          j                    }g } j        rj j        d         \  }}||k    rnSt	          j         j                    j                            |          |k    r|	                    |            j        j|r 
                    |           dS dS )zRemove expired cookies.N   c                 h    g | ].}j                             |d                    |d         k    ,|/S )r   r   )r@   get)r0   entryrA   s     r2   r3   z,CookieJar._do_expiration.<locals>.<listcomp>   sG     ! ! !$((q22eAh>> >>>r4   r   )ru   r?    _MIN_SCHEDULED_COOKIE_EXPIRATIONr@   heapqheapifyrc   heappopr|   appendrd   )rA   expire_heap_lenra   re   when
cookie_keys   `     r2   ro   zCookieJar._do_expiration   sC   #&t'8#9#99 	F >>>#d&7"8"81"<<<! ! ! !!.! ! !D
 M$+,,,ikk-/ 
	*#03D*czzM$+,,,
  $$Z00D88j)))  
	*  	)  (((((	) 	)r4   re   c                    |D ]\  }}}| j                             ||f           | j        ||f                             |d            | j        ||f                             |d            | j                            |||fd            d S rD   )r;   discardr7   popr9   r@   )rA   re   r[   r\   r^   s        r2   rd   zCookieJar._delete_cookies   s    "( 	> 	>FD$#++VTN;;;M64.)--dD999~.224>>>!!64"6====		> 	>r4   r   r\   r^   c                     |||f}| j                             |          |k    rd S t          j        | j        ||f           || j         |<   d S rD   )r@   r|   r   heappushr?   )rA   r   r[   r\   r^   r   s         r2   _expire_cookiezCookieJar._expire_cookie   s\    dD)
  ,,44Ft(4*<===(,*%%%r4   cookiesresponse_urlc                    |j         }| j        st          |          rdS t          |t                    r|                                }|D ]&\  }}t          |t                    st                      }|||<   ||         }|d         }|r|d         dk    rd}|d= |s%|#| j        	                    ||f           |x}|d<   |r|d         dk    r|dd         }||d<   |r| 
                    ||          s|d         }|r|d         d	k    rD|j        }|                    d	          sd	}n d	|d|                    d	                   z   }||d<   |                    d	          }|d
         x}	rg	 t          |	          }
t!          t#          j                    |
z   | j                  }|                     ||||           nT# t(          $ r d|d
<   Y nCw xY w|d         x}r5|                     |          x}r|                     ||||           nd|d<   ||f}| j        |                             |          |k    r1|| j        |         |<   | j        |                             |d           (|                                  dS )zUpdate cookies.Nr[   r#   . r   r   r\   /zmax-ageexpires)raw_hostr<   r   r-   r   rZ   r   r   r;   addrh   r\   
startswithrfindrstripintminrc   MAX_TIMEr   
ValueError_parse_dater7   r|   r9   r   ro   )rA   r   r   hostnamer^   r]   tmpr[   r\   max_agedelta_secondsmax_age_expirationr   expire_timer`   s                  r2   update_cookieszCookieJar.update_cookies   s
   (| 	h 7 7 	Fgw'' 	&mmooG# ;	8 ;	8LD&ff-- #"nn"D	TH%F  %&*++8$ 5h2 '++Xt,<===,44) *&)s**#)x   5 5fh G G &>D &47c>>#(s++ ;DD a$**S//&9!::D!%v;;s##D ++w ++$'LLM),TY[[=-H$-)X)X&''(:FD$OOOO! + + +(*F9%%%+ #9-- +"&"2"27";";;; +''VT4HHHH(*F9%4.C}S!%%d++v55 ,2c"4("3'++D$777s   3AGGGrequest_urlBaseCookie[str]c                     t                      }| j        s|S |                                  | j        s|S t          |          t          ur;t          j        dt          |           t          d           t	          |          }|j        pd}|j	        dv}|rc| j
        r\t	                      }t          j        t                    5  |                                }ddd           n# 1 swxY w Y   || j
        v}d}| j        |                                         D ]k}|j        | j        |         v r!| j        |         |j                 ||j        <   7|                     |          }|| j        |         |j        <   |||j        <   lt'          |          r| j        s|S |f}	n:t+          j        t/          |                    d                    t2                    }	t+          j        |j                            d	          t6                    }
t+          j        |	|
          }t;          |j                  }|D ]}|| j        vr| j        |                                         D ]\  }}|d
         }||f| j        v r||k    rt;          |d                   |k    r9|r	|d         rD|| j        |         v r| j        |         |         ||<   j|                     |          }|| j        |         |<   |||<   |S )z8Returns this jar's cookies filtered by their attributes.zQfilter_cookies expects yarl.URL instances only,and will stop working in 4.x, got rz   )
stacklevelr   )httpswssN)r   r   r   r   r[   r\   secure) r   r7   ro   typer   warningswarnDeprecationWarningr   schemer>   
contextlibsuppressr   r/   rp   r`   r9   _build_morselr   r<   	itertools
accumulatereversedsplit_FORMAT_DOMAIN_REVERSEDr\   _FORMAT_PATHproductru   rZ   r;   )rA   r   filteredr   is_not_securerequest_originr`   cmrsl_valdomainspathspairspath_lenpr^   r]   r[   s                    r2   filter_cookieszCookieJar.filter_cookies2  s   
 %/LL} 	O} 	OC''MI59+5F5FI I"	    k**K'-2#*2BB 	OT9 	O UUN$Z00 6 6!,!3!3!5!56 6 6 6 6 6 6 6 6 6 6 6 6 6 6*$2NNM s#**,, 		' 		'Au*3///"&"4S"9!%"@ ))!,,H-5Ds#AE*&HQUOO"" 	<  &.[GG  *,,--/F G
 $[%5%;%;C%@%@,OO!'511{'(( 	* 	*A%% $a 0 6 6 8 8 * *f)D>T%<<<8ASAS vf~&&11  VH%5  4-a000%)%7%:4%@HTN  --f55.6"1%d+!)+*. s   C))C-0C-r]   c                     | j         r'|j        r |j        d         dk    rt          |          S t                      }| j         r#t                              |j                  \  }}n	|j        x}}|                    |j        ||d           |S )z<Build a morsel for sending, respecting quote_cookie setting.r   ")r`   valuecoded_value)	r=   r   r   r   _SIMPLE_COOKIEvalue_encoder   __setstate__r`   )rA   r]   r_   r   r   s        r2   r   zCookieJar._build_morsel  s     	<&"4 	<9KA9NRU9U9U3F;;;$hh 	/!/!<!<V\!J!JE;;"(,.K%
 	FJ{[[\\\r4   r   c                     || k    rdS |                     |           sdS |dt          |                     }|                     d          sdS t          |           S )z0Implements domain matching adhering to RFC 6265.TFNr   )endswithru   r   )r[   r   non_matchings      r2   rh   zCookieJar._is_domain_match  sq     v4  (( 	53v;;,/$$S)) 	5 ****r4   date_strc                    |sdS d}d}d}d}dx}x}}d}	d}
d}| j                             |          D ]}|                    d          }|sA| j                            |          }|r%d}d |                                D             \  }}}[|s@| j                            |          }|r$d}t          |                                          }	|s/| j                            |          }|rd}|j	        J |j	        }
|s?| j
                            |          }|r#d}t          |                                          }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dS d|	cxk    rdk    sn dS |dk     s|dk    s|dk    s|dk    rdS t          j        ||
|	|||dddf	          S )z4Implements date string parsing adhering to RFC 6265.NFr   tokenTc              3   4   K   | ]}t          |          V  d S rD   )r   )r0   ss     r2   rv   z(CookieJar._parse_date.<locals>.<genexpr>  s(      +P+PqCFF+P+P+P+P+P+Pr4   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                     r2   r   zCookieJar._parse_date  sg     	4
	
!"""v-66x@@ 	3 	3K%%g..E  177>>
 !%J+P+PJ<M<M<O<O+P+P+P(D&& 4::5AA	  $Iioo//00C !/55e<< "&K&0<<<'1E 3 -33E::
 3!%Jz//1122DDLDD$____"_____DLDYZDDD4C~~~~2~~~~4$;;$))v{{frkk4eS$BPRSTTTr4   rD   r(   rm   )r(   N)?__name__
__module____qualname____doc__recompiler   r   r   Ir   r   r   datetimemaxreplacetimezoneutc	timestampr   r   r   rc   gmtimeOSErrorr   OverflowErrorSUB_MAX_TIMEboolr   r   r   r   asyncioAbstractEventLoopr6   propertyr%   r   rS   rV   r   rb   r.   rl   rr   rx   ro   r   rd   floatr   r   r   r   r   r   r   staticmethodrh   classmethodr   __classcell__rB   s   @r2   r   r   3   s~       99RZ	> N
 "rz"BCC%2:l33BJQ
 M
 2:l++L
 	H!))1B1F)GGQQSSTTWXX 	H--....Z  K K K #8?#IJJ    a<L
 !HL48B B B B 	B
 !&hX&D EB w01B 
B B B B B BB "d " " " X"Ch C4 C C C C
+h +4 + + + +
) )x(<= ) ) ) ) ).I3 I4 I I I I$ $ $ $
N N N N N)) )) )) ))V>d5c3+?&@ >T > > > >-5 -# -S - -PT - - - - IL H Hl H# HRV H H H HT 14 V V# V:K V V V VpF3K F3K      + + + + + + \+ =U3 =U8C= =U =U =U [=U =U =U =U =Us   'C C(C('C(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
e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                L    t                                          |           d S )Nr*   )r5   r6   )rA   r'   rB   s     r2   r6   zDummyCookieJar.__init__  s$    d#####r4   rm   c              #   
   K   d S rD   r,   rE   s    r2   rr   zDummyCookieJar.__iter__  s      	 	r4   c                     dS )Nr   r,   rE   s    r2   rx   zDummyCookieJar.__len__  s    qr4   c                     dS )NTr,   rE   s    r2   r%   zDummyCookieJar.quote_cookie  s    tr4   rW   c                     d S rD   r,   )rA   rW   s     r2   rb   zDummyCookieJar.clear       r4   r[   c                     d S rD   r,   rk   s     r2   rl   zDummyCookieJar.clear_domain  r  r4   r   r   c                     d S rD   r,   )rA   r   r   s      r2   r   zDummyCookieJar.update_cookies  r  r4   r   r   c                     t                      S rD   )r   )rA   r   s     r2   r   zDummyCookieJar.filter_cookies	  s    ~~r4   r   rD   )r   r   r   r   r   r  r  r6   rr   r   rx   r  r  r%   r   rb   r.   rl   r   r   r   r   r  r  s   @r2   r   r     sr         GK $ $ $)B C $t $ $ $ $ $ $        d    X x(<=     3 4     IL  l # RV    # 2C        r4   r   )5r  r   r   r   r   r   osrK   rN   r   rc   r   collectionsr   collections.abcr   http.cookiesr   r   r   typingr   r	   r
   r   r   r   r   r   r   yarlr   _cookie_helpersr   abcr   r   helpersr   typedefsr   r   r   __all__r.   
CookieItemformatr   r   r~   r   r   r   r,   r4   r2   <module>r%     sA               				   				   # # # # # # # # # # # # 9 9 9 9 9 9 9 9 9 9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       = = = = = = 8 8 8 8 8 8 8 8 " " " " " " 6 6 6 6 6 6 6 6 6 6
) 3%&
 ~#* 
 $'  uU uU uU uU uU! uU uU uUp    &     r4   