
    gD                     f   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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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.dZ/ G d de!      Z0 G d de!      Z1y)    N)defaultdict)
BaseCookieMorselSimpleCookie)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}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                  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#e$defd       Z%de&ddfdZ'de&ddfdZ(d0de e)   ddfdZ*de+ddfdZ,d1dZ-defdZ.d2d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+Z7e8de+d,e+defd-       Z9e:d.e+de e   fd/       Z; xZ<S # eef$ r  ej*                  d	      ZY e$ r d
ZY w xY w)3r   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 }nt        |t              r|j                         g}nqt        |t              rt        |      j                         g}nF|D cg c];  }t        |t              rt        |      j                         n|j                         = }}|| _        g | _        i | _        y c c}w Nr(   )super__init__r   r   _cookiesdict_morsel_cacheset_host_only_cookies_unsafe_quote_cookie
isinstancer   originstr_treat_as_secure_origin_expire_heap_expirations)selfr%   r&   r'   r(   url	__class__s         F/var/www/openai/venv/lib/python3.12/site-packages/aiohttp/cookiejar.pyr.   zCookieJar.__init__W   s     	d#DOE
  	 9<)!)%'".4&<&C&C&E%F".4&)*@&A&H&H&J%K" 2&1C &0S%9C!szz|K1 # & (>$FH?A&s   -A Dc                     | j                   S N)r5   r<   s    r?   r&   zCookieJar.quote_cookiex   s    !!!    	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<   rD   fs      r?   savezCookieJar.save|   sF    LL+	^^^&!KKq&*A*AB '&&s   0A!!A*c                     t        j                  |      }|j                  d      5 }t        j                  |      | _        d d d        y # 1 sw Y   y xY w)NrbrG   )rI   rJ   rK   rL   loadr/   rO   s      r?   rT   zCookieJar.load   s;    LL+	^^^&!"KKNDM '&&s   AA	predicatec                 d   || j                   j                          | j                  j                          | j                  j                          | j                  j                          | j
                  j                          y t        j                         }| j                  j                         D cg c]O  \  \  }}}|j                         D ]4  \  }}|||fx}| j
                  v r| j
                  |   |k  s ||      r|6 Q }	}}}}}|	r| j                  |	       y y c c}}}}}w rA   )	r:   clearr/   r1   r3   r;   timeitems_delete_cookies)
r<   rU   nowdomainpathcookienamemorselkeyto_dels
             r?   rW   zCookieJar.clear   s   ##%MM!$$&##))+##%iik +/--*=*=*?	
*?& &ft,,1B1BB%%c*c1   . *? 	 	
   ( 	
s   :AD)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;GrC   )rW   r<   r\   s   ``r?   clear_domainzCookieJar.clear_domain   s    

GHrC   c              #      K   | j                          | j                  j                         D ]  }|j                         E d {     y 7 wrA   )_do_expirationr/   values)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rA   )lenrl   ).0r^   s     r?   	<genexpr>z$CookieJar.__len__.<locals>.<genexpr>   s     M6LF3v}}'6Ls   #%)sumr/   rl   rB   s    r?   __len__zCookieJar.__len__   s"     Mdmm6J6J6LMMMrC   c                    t        | j                        x}sy|t        kD  r}|t        | j                        dz  kD  rb| j                  D cg c](  }| j                  j	                  |d         |d   k(  r|* c}| _        t        j                  | j                         t        j                         }g }| j                  rs| j                  d   \  }}||kD  rn[t        j                  | j                         | j                  j	                  |      |k(  r|j                  |       | j                  rs|r| j                  |       yyc c}w )zRemove expired cookies.N   r   r   )rq   r:    _MIN_SCHEDULED_COOKIE_EXPIRATIONr;   getheapqheapifyrX   heappopappendrZ   )r<   expire_heap_lenentryr[   rb   when
cookie_keys          r?   rk   zCookieJar._do_expiration   s4   #&t'8'8#999 >>#d&7&7"81"<< "..!.E$$((q2eAh> .!D
 MM$++,iik-/#003D*czMM$++,
   $$Z0D8j)    ( -!s   -E	rb   c                    |D ]  \  }}}| j                   j                  ||f       | j                  ||f   j                  |d        | j                  ||f   j                  |d        | j
                  j                  |||fd         y rA   )r3   discardr/   popr1   r;   )r<   rb   r\   r]   r_   s        r?   rZ   zCookieJar._delete_cookies   s    "(FD$##++VTN;MM64.)--dD9~.224>!!64"6=	 #)rC   r   r]   r_   c                     |||f}| j                   j                  |      |k(  ry t        j                  | j                  ||f       || j                   |<   y rA   )r;   ry   rz   heappushr:   )r<   r   r\   r]   r_   r   s         r?   _expire_cookiezCookieJar._expire_cookie   sS    dD)
  ,4t((4*<=(,*%rC   cookiesresponse_urlc                 t   |j                   }| j                  st        |      ryt        |t              r|j                         }|D ]  \  }}t        |t              st               }|||<   ||   }|d   }|r|d   dk(  rd}|d= |s&|$| j                  j                  ||f       |x}|d<   |r|d   dk(  r
|dd }||d<   |r| j                  ||      s|d   }|r|d   d	k7  r<|j                  }|j                  d	      sd	}nd	|d|j                  d	       z   }||d<   |j                  d	      }|d
   x}	rL	 t        |	      }
t!        t#        j"                         |
z   | j$                        }| j'                  ||||       n4|d   x}r-| j+                  |      x}r| j'                  ||||       nd|d<   ||f}| j,                  |   j/                  |      |k7  s|| j,                  |   |<   | j0                  |   j3                  |d        | j5                          y# t(        $ r d|d
<   Y |w xY w)zUpdate cookies.Nr\   r$   . r   r   r]   /zmax-ageexpires)raw_hostr4   r   r6   r   rY   r   r   r3   addre   r]   
startswithrfindrstripintminrX   MAX_TIMEr   
ValueError_parse_dater/   ry   r1   r   rk   )r<   r   r   hostnamer_   r^   tmpr\   r]   max_agedelta_secondsmax_age_expirationr   expire_timera   s                  r?   update_cookieszCookieJar.update_cookies   sn   ((||h 7gw'mmoG#LD&ff-"n"D	TH%F &*+8$h2 ''++Xt,<=,44)&)s*#)x  5 5fh G&>D47c>#((s+D a$**S/!::D!%v;;s#D ++w++$'LM),TYY[=-H$--)X&''(:FD$O #9---"&"2"27";;;;''VT4H(*F9%4.C}}S!%%d+v5 ,2c"4(""3'++D$7w $z 	! " +(*F9%+s   ;A
H&&H76H7request_urlBaseCookie[str]c           
         | j                   r
t               n	t               }| j                  s|S | j	                          | j                  s|S t        |      t        ur3t        j                  dt        |       t        d       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.                  t1        |j3                  d            t4              }t-        j.                  |j6                  j3                  d	      t8              }t-        j:                  ||      }	t=        |j6                        }
|	D ]  }| j                  |   j?                         D ]  \  }}|d
   }||f| j@                  v r||k7  r!t=        |d         |
kD  r3|r|d   r;|| jB                  |   v r| jB                  |   |   ||<   btE        d|jG                  |j&                  tI                           }|jK                  |j&                  |j$                  |jL                         || jB                  |   |<   |||<     |S # 1 sw Y    xY w)z8Returns this jar's cookies filtered by their attributes.zQfilter_cookies expects yarl.URL instances only,and will stop working in 4.x, got rw   )
stacklevelr   )httpswssN)r   r   r   r   r\   r]   securer   )'r5   r   r   r/   rk   typer   warningswarnDeprecationWarningr   schemer9   
contextlibsuppressr   r7   rl   valuera   r   r4   	itertools
accumulatereversedsplit_FORMAT_DOMAIN_REVERSEDr]   _FORMAT_PATHproductrq   rY   r3   r1   r   ry   r   r2   coded_value)r<   r   filteredr   is_not_securerequest_origincdomainspathspairspath_lenpr_   r^   r\   mrsl_vals                   r?   filter_cookieszCookieJar.filter_cookies1  s    #00LNjl 	 }}O}}OC'MM559+5F4GI"	 k*K''-2#**2BBT99 UN$$Z0!,!3!3!5 1*$2N2NNM x(//1AggHQUUO 2 "<<&.[G  **,-/FG
 $$[%5%5%;%;C%@,O!!'51{''(A $a 0 6 6 8f)D>T%<%<<8AS vf~&1 VH%5 4--a00%)%7%7%:4%@HTN  vzz&**fh/OPVZZv7I7IJ.6""1%d+!)/ !9 4 g 10s    K//K9r   c                     || k(  ry|j                  |       sy|dt        |         }|j                  d      syt        |       S )z0Implements domain matching adhering to RFC 6265.TFNr   )endswithrq   r   )r\   r   non_matchings      r?   re   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rA   )r   )rr   ss     r?   rs   z(CookieJar._parse_date.<locals>.<genexpr>  s     +P<OqCF<Os   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_date  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YZDDC~2~ $;$)v{frkeS$BPRSTTrC   rA   r)   zIterator[Morsel[str]])r)   N)=__name__
__module____qualname____doc__recompiler   r   r   Ir   r   r   datetimemaxreplacetimezoneutc	timestampr   r   r   rX   gmtimeOSErrorr   OverflowErrorSUB_MAX_TIMEboolr   r   r   r   asyncioAbstractEventLoopr.   propertyr&   r   rQ   rT   r   rW   r8   ri   rn   ru   rk   r   rZ   floatr   r   r   r   r   staticmethodre   classmethodr   __classcell__r>   s   @r?   r   r   2   s   9RZZ	>N
 "rzz"BC%2::l3BJJQ
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B "d " "Ch C4 C
+h +4 +
)x(<= ) ).I3 I4 I$
N N))V>d5c3+?&@ >T >-5 -# -S - -PT - IL Hl H# HRV HT 14 L# L:K L\ + + + + + =U3 =U8C= =U =UI
 Z  K #8??#IJ s   ?"F1 1GGG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                &    t         |   |       y r+   )r-   r.   )r<   r(   r>   s     r?   r.   zDummyCookieJar.__init__  s    d#rC   c              #      K   y wrA    rB   s    r?   rn   zDummyCookieJar.__iter__  s	     s   c                      y)Nr   r  rB   s    r?   ru   zDummyCookieJar.__len__  s    rC   c                      y)NTr  rB   s    r?   r&   zDummyCookieJar.quote_cookie  s    rC   rU   c                      y rA   r  )r<   rU   s     r?   rW   zDummyCookieJar.clear      rC   r\   c                      y rA   r  rh   s     r?   ri   zDummyCookieJar.clear_domain  r  rC   r   r   c                      y rA   r  )r<   r   r   s      r?   r   zDummyCookieJar.update_cookies  r  rC   r   r   c                     t               S rA   )r   )r<   r   s     r?   r   zDummyCookieJar.filter_cookies  s
    ~rC   r   rA   )r   r   r   r   r   r   r   r.   rn   r   ru   r   r   r&   r   rW   r8   ri   r   r   r   r   r  r  s   @r?   r   r     s     GK $)B)B C $t $  d  x(<=  3 4  IL l # RV # 2C rC   r   )2r   r   r   r   rz   r   osrI   rL   r   rX   r   collectionsr   http.cookiesr   r   r   typingr   r   r	   r
   r   r   r   r   r   r   r   yarlr   abcr   r   helpersr   typedefsr   r   r   __all__r8   
CookieItemformatr   r   rx   r   r   r  rC   r?   <module>r     s          	   	   # 9 9     8 " 6 6
) 3%&
 ~~#** 
 $'  [U! [U|& rC   