B `/@sddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z ddl m Z mZmZmZmZmZmZmZmZmZddlmZddlmZddlmZmZdd lmZm Z d Z!ee"d fZ#Gd d d eZ$GdddeZ%dS)N) defaultdict) BaseCookieMorsel SimpleCookie) DefaultDictDictIterableIteratorMappingOptionalSetTupleUnioncast)URL)AbstractCookieJar) is_ip_addressnext_whole_second) LooseCookiesPathLike) CookieJarDummyCookieJarz Morsel[str]csxeZdZdZedZedZedZedej Z edZ e j j je jjdZe j dZd d d d eeeejd d fddZed dddZed dddZd dddZddddZedddZd dddZ e j e!e!d dd d!Z"e#fe$e#d d"d#d$Z%e#fe#e&d%d&d'd(Z'e(e!e!ed)d*d+Z)e(e!e!ed,d-d.Z*e+e!ee j d/d0d1Z,Z-S)2rz/Implements cookie storage adhering to RFC 6265.z][\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]*(?P[\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}))tzinfoiFTN)unsafe quote_cookieloop)rrrreturncsrtj|dtt|_t|_||_||_t |_ i|_ |j |_ y|j Wntk rl|j|_ YnXdS)N)r)super__init__rr_cookiesset_host_only_cookies_unsafe _quote_cookier_next_expiration _expirationsMAX_TIME _max_time timestamp OverflowErrorMAX_32BIT_TIME)selfrrr) __class__l/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/aiohttp/cookiejar.pyr9szCookieJar.__init__) file_pathrc Cs8t|}|jdd}t|j|tjWdQRXdS)Nwb)mode)pathlibPathopenpickledumpr HIGHEST_PROTOCOL)r,r0fr.r.r/savePs zCookieJar.savec Cs2t|}|jdd}t||_WdQRXdS)Nrb)r2)r3r4r5r6loadr )r,r0r9r.r.r/r<Us zCookieJar.load)rcCs*|j|jt|_|jdS)N)r clearr"rr%r&)r,r.r.r/r=Zs  zCookieJar.clearzIterator[Morsel[str]]ccs.|x |jD]}|EdHqWdS)N)_do_expirationr values)r,valr.r.r/__iter__`szCookieJar.__iter__cCstdd|DS)Ncss|] }dVqdS)rNr.).0ir.r.r/ fsz$CookieJar.__len__..)sum)r,r.r.r/__len__eszCookieJar.__len__c Cstjtjj}|j|krdS|js(dS|j}g}|j}|j}xZ|D]N\\}}}||kr|| |d| ||f|j ||fqHt ||}qHWx|D] } || =qWy|jddtjdd|_Wntk r|j|_YnXdS)Nr) microsecondr)seconds)datetimenowtimezoneutcr%r&r(r itemspopappendr"discardminreplace timedeltar*) r,rJZnext_expirationZto_delcookiesZ expirationsdomainnamewhenkeyr.r.r/r>hs.   zCookieJar._do_expiration)rWrUrVrcCs t|j||_||j||f<dS)N)rQr%r&)r,rWrUrVr.r.r/_expire_cookieszCookieJar._expire_cookie)rT response_urlrc Cs|j}|jst|rdSt|tr*|}x|D]\}}t|ts\t}|||<||}|d}|drxd}|d=|s|dk r|j ||f|}|d<| dr|dd}||d<|r| ||sq2|d}|r| ds|j }| dsd}nd|d|d}||d<|d} | ryXt| } y tjtjjtj| d } Wntk rp|j} YnX|| ||Wntk rd|d<YnXn6|d } | r|| } | r|| ||nd|d <||j||<q2W|dS) zUpdate cookies.NrU.rpath/zmax-age)rHexpires)raw_hostr#r isinstancer rMrrendswithr"add startswith_is_domain_matchr]rfindintrIrJrKrLrSr*r(rY ValueError _parse_dater r>)r,rTrZhostnamerVcookietmprUr]Zmax_ageZ delta_secondsZmax_age_expirationr_ expire_timer.r.r/update_cookiessd          zCookieJar.update_cookies)zBaseCookie[str]zSimpleCookie[str]) request_urlrc Cs|t|}|jrtnt}|jp*d}|jdk}x|D]}|j}|d}|s^|j||<q<|j snt |rnq<||f|j kr||krqrr$rrr`schemerXvaluer#rr"re_is_path_matchr]rgetrr! coded_value) r,rofilteredrjZ is_not_securerkrVrUZmrsl_valr.r.r/filter_cookiess4       zCookieJar.filter_cookies)rUrjrcCsD||kr dS||sdS|dt| }|ds:dSt| S)z0Implements domain matching adhering to RFC 6265.TFNr[)rblenr)rUrj non_matchingr.r.r/res  zCookieJar._is_domain_match)req_path cookie_pathrcCsP|dsd}||krdS||s(dS|dr6dS|t|d}|dS)z.Implements path matching adhering to RFC 6265.r^TFN)rdrbrz)r|r}r{r.r.r/rus   zCookieJar._is_path_match)date_strrc Cs|sdSd}d}d}d}d}}}d} d} d} x|j|D]} | d} |s~|j| }|r~d}dd|D\}}}q>|s|j| }|rd}t|} q>|s|j| }|rd}|j dk st |j } q>|s>|j | }|r>d}t|} q>Wd| krd kr nn | d 7} n$d| kr8d krDnn| d 7} d||||fkrZdSd | krrdksxndS| dks|dks|dks|dkrdSt j | | | |||t j jdS)z4Implements date string parsing adhering to RFC 6265.NFrtokenTcSsg|] }t|qSr.)rg)rBsr.r.r/ ;sz)CookieJar._parse_date..FcilEiriA;)r)DATE_TOKENS_REfinditergroupDATE_HMS_TIME_REmatchgroupsDATE_DAY_OF_MONTH_RErg DATE_MONTH_RE lastindexAssertionError DATE_YEAR_RErIrKrL)clsr~Z found_timeZ found_dayZ found_monthZ found_yearhourminuteseconddaymonthyearZ token_matchrZ time_matchZ day_matchZ month_matchZ year_matchr.r.r/ri#s`        (zCookieJar._parse_date).__name__ __module__ __qualname____doc__recompilerrrIrrrImaxrRrKrLr'utcfromtimestampr+boolr asyncioAbstractEventLooprrr:r<r=rArgrFr>strrYrrrnrry staticmethodreru classmethodri __classcell__r.r.)r-r/r"s>    N*rcseZdZdZddeejddfddZddd d Ze dd d Z ddd dZ e fe e ddddZe ddddZZS)rzxImplements a dummy cookie storage. It can be used with the ClientSession when no cookie processing is needed. N)r)rrcstj|ddS)N)r)rr)r,r)r-r.r/rmszDummyCookieJar.__init__zIterator[Morsel[str]])rccsdS)Nr.)r,r.r.r/rApszDummyCookieJar.__iter__cCsdS)Nrr.)r,r.r.r/rFtszDummyCookieJar.__len__cCsdS)Nr.)r,r.r.r/r=wszDummyCookieJar.clear)rTrZrcCsdS)Nr.)r,rTrZr.r.r/rnzszDummyCookieJar.update_cookieszBaseCookie[str])rorcCstS)N)r)r,ror.r.r/ry}szDummyCookieJar.filter_cookies)rrrrr rrrrArgrFr=rrrnryrr.r.)r-r/rfs r)&rrIosr3r6r collectionsr http.cookiesrrrtypingrrrr r r r r rrZyarlrabcrZhelpersrrZtypedefsrr__all__rZ CookieItemrrr.r.r.r/s$ 0   F