{L i~ddlmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z mZmZddlmZddlmZmZmZmZmZmZmZmZmZddlmZdd lmZdd l m!Z!m"Z"m#Z#dd l$m%Z%m&Z&m'Z'dd l(m)Z)d dl*m+Z+m,Z,m-Z-d dl.m/Z/m0Z0m1Z1d dl2m3Z3m4Z4d dl5m6Z6m7Z7m8Z8d dl9m:Z:m;Z;d dl(mZ>d dl?m@Z@mAZAeeB5ddlCZCdddeeB5ddlDZEdddejdk\r ede;e;ZGn ede;ZGer?ddlHmIZIGddedZJGddeeGedZKGd d!edZLGd"d#eLdZMnGd$d%ZNeNZIeOePePfZJeZKeecZLZMed&ZQed'ZRd1d(ZSd2d3d)ZTd2d4d*ZUGd+d,eeGZVGd-d.eVeGZWGd/d0eVeGZXy#1swYxYw#1swYxYw)5) annotationsN)ThreadPoolExecutor)asynccontextmanagercontextmanagersuppress)BytesIO) TYPE_CHECKINGCallableGenericLiteralOptional TypedDictTypeVarUnioncast)urlparse) AsyncCurl)CurlHttpVersionCurlInfoCurlOpt)Curl CurlErrorCurlMime)CurlCffiWarning)Cookies CookieTypes CurlMorsel)RequestException SessionClosed code2error)Headers HeaderTypes)BrowserTypeLiteralExtraFingerprints ExtraFpDict) STREAM_ENDResponse)HttpVersionLiteralnot_setset_curl_options)AsyncWebSocket WebSocket) R)bounddefault)r2)Unpackc@eZdZUded<ded<ded<ded<ded<y) ProxySpecstrallhttphttpswswssN__name__ __module__ __qualname____annotations__`/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/curl_cffi/requests/session.pyr6r65s    rCr6F)totalceZdZUded<ded<ded<ded<d ed <ded <d ed <d ed<ded<ded<ded<ded<ded<ded<d ed<d ed<ded<ded<ded<d ed <d!ed"<d#ed$<ded%<d ed&<d'ed(<d)ed*<ded+<y,)-BaseSessionParamsOptional[HeaderTypes]headersOptional[CookieTypes]cookiesOptional[tuple[str, str]]authOptional[ProxySpec]proxies Optional[str]proxy proxy_authbase_urlOptional[dict]paramsboolverify!Union[float, tuple[float, float]]timeout trust_envallow_redirectsint max_redirectsOptional[BrowserTypeLiteral] impersonateja3akamai/Optional[Union[ExtraFingerprints, ExtraFpDict]]extra_fpdefault_headers"Union[str, Callable[[bytes], str]]default_encoding curl_optionsOptional[list] curl_infos4Optional[Union[CurlHttpVersion, HttpVersionLiteral]] http_versiondebug interface%Optional[Union[str, tuple[str, str]]]certOptional[type[R]]response_classdiscard_cookiesNr=rBrCrDrGrG<s&&&&''$$-- 2211 AA<<$$""JJ   33))rCrGc:eZdZUded<ded<ded<ded<d ed <d ed <d ed<ded<ded<ded<ded<ded<d ed<ded<ded<ded<ded<ded <ded!<ded"<d#ed$<ded%<d&ed'<d(ed)<d*ed+<ded,<d-ed.<d/ed0<d1ed2<d3ed4<y5)6StreamRequestParams"Optional[Union[dict, list, tuple]]rUAOptional[Union[dict[str, str], list[tuple], str, BytesIO, bytes]]dataOptional[dict | list]jsonrHrIrJrKrTfilesrLrM3Optional[Union[float, tuple[float, float], object]]rYOptional[bool]r[ Optional[int]r]rNrOrPrQrRrWrefereraccept_encodingOptional[Callable]content_callbackr^r_r`rarbrcrdrerfUnion[str, Literal[False]]quoterjrkrmrnror\max_recv_speedOptional[CurlMime] multipartrVrrNr=rBrCrDrtrtYs22OO##&&&&''DD''$$$$--&&,,11 AA''<<))JJ  33%%rCrtceZdZUded<y) RequestParamsr|streamNr=rBrCrDrrysrCrceZdZedZy)_UnpackcyNrB)argskwargss rD __getitem__z_Unpack.__getitem__s rCN)r>r?r@ staticmethodrrBrCrDrr~s    rCr)eventletgevent) GETPOSTPUTDELETEOPTIONSHEADTRACEPATCHQUERYc^t|}t|jxr |jS)z,Check if the provided url is an absolute url)rrVschemehostname)url parsed_urls rD_is_absolute_urlrs'#J  !!9j&9&9 ::rCcD |jdS#t$r|cYSwxYwNr)queue IndexErrorqr3s rD _peek_queuers)wwqz   cD |jdS#t$r|cYSwxYwr)_queuerrs rD_peek_aio_queuers)xx{ rceZdZdZdddddddddddddddddddddddddddd d dZ dd Zd Zedd Zejdd Zy) BaseSessionzMProvide common methods for setting curl options and reading info in sessions.NTutf-8F)rIrKrMrOrQrRrSrUrWrYrZr[r]r_r`rarcrdrfrgrirkrlrmrorqrrcnt||_t||_||_||_||_| |_| |_| |_ | |_ | |_ ||_ ||_ ||_||_||_||_|xsi|_|xsg|_||_||_||_||_|!t1|t2durt5d|d|xst2|_||_|r |r t5d|rd|i}|xsi|_||_|j r t?|j s tAdd|_!|jdus |jTtDjFjIdxs-tDjFjId xs |j|_yy) NFzZ`response_class` must be a subclass of `curl_cffi.requests.models.Response`, not of type ``z)Cannot specify both 'proxy' and 'proxies'r8z2You need to provide an absolute url for 'base_url'TREQUESTS_CA_BUNDLECURL_CA_BUNDLE)%r#rIr_cookiesrMrSrUrWrYrZr[r]r_r`rarcrdrfrgrirkrlrmro issubclassr) TypeErrorrqrrrOrRr ValueError_closedosenvironget)selfrIrKrMrOrQrRrSrUrWrYrZr[r]r_r`rarcrdrfrgrirkrlrmrorqrrs rD__init__zBaseSession.__init__s>w' (       ".*&   . 0(.B$*( "  %*^X*NRW*W ./q2  -8. WGH H enG")-R $ ==!1$--!@QR R  ;;$ $++"5 34::>>"23;; K#6rCc  |}tt|j|}tt|j t j j|_|r|j|_ tt|j t j|_ tt|j t j|_d|jcxkxrdknc|_|jj#}g} |D]} | j%s| j'dr'|j)| j|_g} L| j'ds| j'dr| dxx| z cc<|| j-| t/| |_t3|_|j0j7d} | D]} t8j4j;} | j=| | j?D]g\}}|j4jA||jB|jEdd |jEd d tG|jEd  i|xs |jJ}|sZ|j t jLDcgc]}tOjP|}}|jRjU|ttj t jVj|_,tt|j t jZ|_.tt|j t j^j|_0tt|j t jb|_2||_3tth|j t jj|_6tt|j t jn|_8tt|j t jr} |j|_:|jxD] }|j ||jz|<"|S#tH$rYwxYwcc}w#tv$r|jd|_:YgwxYw)NisHTTP/  z set-cookiedomainpath/secure)rrrzlatin-1)>rr1rqbytesgetinfor EFFECTIVE_URLdecodergetvaluecontentr\ HTTP_VERSIONrk RESPONSE_CODE status_codeok splitlinesstrip startswithget_reason_phrasereasonappendr#rIrrKget_listr9 SimpleCookieloaditemssetvaluerrV Exceptionrr COOKIELISTrfrom_curl_formatrupdate_cookies_from_curl PRIMARY_IP primary_ip PRIMARY_PORT primary_portLOCAL_IPlocal_ip LOCAL_PORT local_portrffloat TOTAL_TIMEelapsedREDIRECT_COUNTredirect_count REDIRECT_URL redirect_urlUnicodeDecodeErrorriinfos)rcurlbuffer header_bufferrfrrcrsp header_lines header_list header_lineset_cookie_headers set_cookiecookienamemorselmorselsredirect_url_bytesinfos rD_parse_responsezBaseSession._parse_responses 1d))!,-uaii(>(>?@GGI  //+CKQYYx/D/D%EFsAIIh.D.D$EF-#-$--/::< $& ' ,K$$&%%h/00=DDF  %%d+{/E/Ee/LB;.   { + ,k* i  [[11,?, J 224 J'$*LLNLD&KKOO %zz(B7#ZZ4#FJJx$89 $  *AT-A-A89 (BUBU8V34 ++A.G MM 2 27 ;eQYYx/B/B%CDKKMQYYx/D/D%EFE199X->->#?@GGI c199X-@-@#AB/5!))H,?,?"@A !#qyy1H1H'IJ!%83H3H)IJ D188:C  OO .DiioCIIdO . 9   " D188CC  Ds+-B)S SS SSS>=S>c2|jr tdy)Nz'Session is closed, cannot send request.)rr!rs rD_check_session_closedz!BaseSession._check_session_closedDs << IJ J rCc|jSr)rrs rDrKzBaseSession.cookiesHs }}rCc$t||_yr)rr)rrKs rDrKzBaseSession.cookiesLs ( rC)6rIrHrKrJrMrLrOrNrQrPrRrLrSrPrUrTrWrVrYrXrZrVr[rVr]r\r_r^r`rPrarPrcrbrdrVrfrergrTrirhrkrjrlrVrmrPrornrqrprrrV)returnr1)r r)rKrr None) r>r?r@__doc__rrrpropertyrKsetterrBrCrDrrsW *.)-*.'+#04"&!%57 $48! $DH $?F'+%)MQ#'6:,0 %;Q'Q' Q ( Q % QQ.Q QQQ3QQQQ 2!Q"#Q$%Q&B'Q()Q*=+Q,%-Q.#/Q0K1Q23Q4!5Q647Q8*9Q:;QfI IVK ^^))rCrceZdZdZ d dfd ZedZedZdZdZ ddZ e dd Z d d d Z d!d Zdddddddedddddddd ddddddd ddddddddf d"dZd#dZd#dZd#dZd#dZd#dZd#dZd#dZd#dZd#dZxZS)$SessionzA request session, cookies and connections will be reused. This object is thread-safe, but it's recommended to use a separate session for each thread.Nc `t|di|||_||_d|_d|_|rat j|_|rd|_ ||j_ yd|_ t|j|j_ y|r|nt|j|_ y)a Parameters set in the ``__init__`` method will be overriden by the same parameter in request method. Args: curl: curl object to use in the session. If not provided, a new one will be created. Also, a fresh curl object will always be created when accessed from another thread. thread: thread engine to use for working with other thread implementations. choices: eventlet, gevent. headers: headers to use in the session. cookies: cookies to add in the session. auth: HTTP basic auth, a tuple of (username, password), only basic auth is supported. proxies: dict of proxies to use, prefer to use proxy if they are the same. format: ``{"http": proxy_url, "https": proxy_url}``. proxy: proxy to use, format: "http://proxy_url". Cannot be used with the above parameter. proxy_auth: HTTP basic auth for proxy, a tuple of (username, password). base_url: absolute url to use as base for relative urls. params: query string for the session. verify: whether to verify https certs. timeout: how many seconds to wait before giving up. trust_env: use http_proxy/https_proxy and other environments, default True. allow_redirects: whether to allow redirection. max_redirects: max redirect counts, default 30, use -1 for unlimited. impersonate: which browser version to impersonate in the session. ja3: ja3 string to impersonate in the session. akamai: akamai string to impersonate in the session. extra_fp: extra fingerprints options, in complement to ja3 and akamai str. interface: which interface use. default_encoding: encoding for decoding response content if charset is not found in headers. Defaults to "utf-8". Can be set to a callable for automatic detection. cert: a tuple of (cert, key) filenames for client cert. response_class: A customized subtype of ``Response`` to use. Notes: This class can be used as a context manager. .. code-block:: python from curl_cffi.requests import Session with Session() as s: r = s.get("https://example.com") NTFrlrB)superr_thread_use_thread_local_curlr _executor threadinglocal_local_is_customized_curlrrrl_curl)rrthreaduse_thread_local_curlr __class__s rDrzSession.__init__Vsl "6" &;#  #//+DK+/(#'  +0(#'djj#9  !%4djj+ADJrCc&|jrz|jrtjdtdt |j dds%t|j|j _ |j jS|jS)Nz/Creating fresh curl handle in different thread.r) stacklevelrr) rrwarningswarnrgetattrrrrlrrrs rDrz Session.curlsj  & &'' E#  4;;5#'djj#9  ;;## #:: rCcP|jt|_|jSr)rrrs rDexecutorzSession.executors >> !/1DN~~rCc|SrrBrs rD __enter__zSession.__enter__s rCc$|jyrcloserrs rD__exit__zSession.__exit__s  rCcFd|_|jjy)Close the session.TN)rrr+rs rDr+z Session.closes  rCc+K|jd||d|ddi} ||jy#|jwxYww)z6Equivalent to ``with request(..., stream=True) as r:``methodrrTNrB)requestr+rr2rrrs rDrzSession.streamsCdllI&cIVIDI I IIKCIIKsA2AAAc |j|jj}|jjt |||||}|j |fi||S)a"Connects to a websocket url. Note: This method is deprecated, use WebSocket instead. Args: url: the ws url to connect. on_message: message callback, ``def on_message(ws, str)`` on_error: error callback, ``def on_error(ws, error)`` on_open: open callback, ``def on_open(ws)`` on_close: close callback, ``def on_close(ws)`` Other parameters are the same as ``.request`` Returns: a WebSocket instance to communicate with the server. )r on_messageon_erroron_openon_close)rr duphandleresetr.connect) rrr6r7r8r9rrr;s rD ws_connectzSession.ws_connectsc& ""$yy""$  !    3!&! rCc6|jjSr)rupkeeprs rDr?zSession.upkeepsyy!!rCgzip, deflate, brrrrFc" B!*+,-./0j|r5jj+jjn j+t +fid|d|dj |gdj d|d|dj|gdj|gd |d | xs jd | tur jn| d | jn| d| jn| dj| gd|d|xs jdj |gd|d|d|d|xs j"d|xs j$d|xs j&d|xs j(d| j*n|d|d|xs j,d|xs j.d|d|d | d!|xs j0d"j2d#t4j6d$t8j:\0*,/.}"|rt9j:-*+!,./0f d%}#+-fd&}$j<j?|#}%|%jA|$.jCjE+*,!}&-jGtI/}'tK|'tLr+j|'0|&_'|%|&_(|"|&_)/|&_|&S jTd'k(r*tVjXj[+j\nejTd(k(rFt_j`jbje+j\jgn+j]jE+*,!}&0|&_'|&+jS#th$r^}(jE+*,!}&0|&_'tk|(jlto|(})|)to|(|(jl|&|(d }(~(wwxYw#+jwxYw))zESend the request, see ``requests.request`` for details on parameters.r2r params_listrSrwry headers_list cookies_listrzrMrYr[Nr] proxies_listrQrR verify_listr~rrr_r`rarcrdrrkrmrrrrorg queue_class event_classc jttjjs(ttjjjty#t$rU} j} |_j t t ||j|Yd}~d}~wwxYw#ttjjs(ttjjjtwxYwr)performrrr3 put_nowaitr r7coderrEventis_setrputr() errrrfrrr header_recvedrreqrs rDrJz Session.request..performOs &IIK ?FFHY__m<@@BEE*%!H..6=2BOC#&CKLL!1#a&!&&#!FGG H ?FFHY__m<@@BEE*%s+A99 CA C CCCA'EcFjjyr)waitr;)futr header_parseds rDcleanupz Session.request..cleanup]s""$ rCrr)8rrr:r;r,rUrSrIrrMr+rYr[r]rOrRrWr_r`rarcrdrkrmrorgrQueuerrMr&submitadd_done_callbackrTrrr isinstancer r3 stream_taskquit_nowrrtpoolexecuterJrget_hub threadpoolspawnrrr"rLr7)1rr2rrUrwryrIrKrzrMrYr[r]rOrQrRrWr~rrr_r`rarcrdrfrrkrmrorrrrrr]rJrWr\r first_elementrPerrorrrrrVrQrrRs1` ` ` @@@@@@@rDr3zSession.requestsL ""$  ##%A IIOO  AAQ +B +B +B f- +B ]] +B  +B +B ,,0+B --1+B +B "+B %,w$6DLLG+B &!00 +B "$,,%+B &,,0'+B ()+B *"4T__++B ,f--+B ./+B 0,1+B 2.3+B 4$7t'7'75+B 6txx7+B 8(T[[9+B :.;+B >&!00 A+B BC+B D&:):):E+B F 14>>G+B HI+B J*K+B L M+B N"O+B P**Q+B R S+B T"U+B >V]A}hZ %OO-M & & --..w7K  ) )' 2    &&6=*:OC    (NM-)9: ##CK)CO#CLCIJ <<:-NN**1995\\X-NN$//55aii@DDFIIK**v}.>"   8**v}.>" "1663q62CFAFFC0a7  8 s,BN"4P " P +APP  P Pc ,|jdd|d|SNrr1rBr3rrrs rDheadz Session.headt||=6s=f==rCc ,|jdd|d|SNrr1rBrgrhs rDrz Session.gett||<5c7>v>>rCc ,|jdd|d|SNrr1rBrgrhs rDdeletezSession.deletet||?8???rCc ,|jdd|d|SNrr1rBrgrhs rDoptionszSession.optionst||@9#@@@rCc ,|jdd|d|SNrr1rBrgrhs rDtracez Session.tracervrCc ,|jdd|d|SNrr1rBrgrhs rDqueryz Session.queryrvrC)NNT)rzOptional[Curl]rzOptional[ThreadType]rrVrUnpack[BaseSessionParams[R]]r r r2 HttpMethodrr7rzUnpack[StreamRequestParams])NNNN)r r.)r r\Br2rrr7rUrurwrvryrxrIrHrKrJrzrTrMrLrYr{r[r|r]r}rOrNrQrPrRrLrWr|r~rPrrPrrr_r^r`rPrarPrcrbrdr|rfrerrrkrjrmrPrornrr|rr\rrrrrVrr7rzUnpack[RequestParams])r>r?r@r rrrr&r(r-r+rrr=r?r+r3rirrprOruryr}rr __classcell__rs@rDrrRsT $'+&* DBDB%DB $ DB / DBL       .  KO! !F"6:RV&*)-)- $*.GN*.'+'+#04!%!%)?_@A_B&C_DE_B>=>=?@A??rCrcTeZdZdZdddd d!fdZedZedZdZd Z d Z d Z d Z d"d Z dZe d#dZdddddeddddddddddddddddddf d$dZdddddddedddddddddddddddddddddddf d%dZd&dZd&dZd&dZd&dZd&dZd&dZd&dZd&dZd&d ZxZS)' AsyncSessionzAAn async request session, cookies and connections will be reused.N )loop async_curl max_clientsc nt|di|||_||_||_|j y)a Parameters set in the ``__init__`` method will be override by the same parameter in request method. Parameters: loop: loop to use, if not provided, the running loop will be used. async_curl: [AsyncCurl](/api/curl_cffi#curl_cffi.AsyncCurl) object to use. max_clients: maxmium curl handle to use in the session, this will affect the concurrency ratio. headers: headers to use in the session. cookies: cookies to add in the session. auth: HTTP basic auth, a tuple of (username, password), only basic auth is supported. proxies: dict of proxies to use, prefer to use ``proxy`` if they are the same. format: ``{"http": proxy_url, "https": proxy_url}``. proxy: proxy to use, format: "http://proxy_url". Cannot be used with the above parameter. proxy_auth: HTTP basic auth for proxy, a tuple of (username, password). base_url: absolute url to use for relative urls. params: query string for the session. verify: whether to verify https certs. timeout: how many seconds to wait before giving up. trust_env: use http_proxy/https_proxy and other environments, default True. allow_redirects: whether to allow redirection. max_redirects: max redirect counts, default 30, use -1 for unlimited. impersonate: which browser version to impersonate in the session. ja3: ja3 string to impersonate in the session. akamai: akamai string to impersonate in the session. extra_fp: extra fingerprints options, in complement to ja3 and akamai str. default_encoding: encoding for decoding response content if charset is not found in headers. Defaults to "utf-8". Can be set to a callable for automatic detection. cert: a tuple of (cert, key) filenames for client cert. response_class: A customized subtype of ``Response`` to use. Notes: This class can be used as a context manager, and it's recommended to use via ``async with``. However, unlike aiohttp, it is not required to use ``with``. .. code-block:: python from curl_cffi.requests import AsyncSession # recommended. async with AsyncSession() as s: r = await s.get("https://example.com") s = AsyncSession() # it also works. NrB)rr_loop_acurlr init_pool)rrrrrrs rDrzAsyncSession.__init__s6t "6"   & rCcd|jtj|_|jSr)rasyncioget_running_looprs rDrzAsyncSession.loops& ::  113DJzzrCch|jt|j|_|jS)N)r)rrrrs rDacurlzAsyncSession.acurls& ;; #3DK{{rCctj|j|_ |jj d#tj $rYywxYwr)r LifoQueuerpoolrK QueueFullrs rDrzAsyncSession.init_poolsS%%d&6&67   $$T*$$  sAAAcK|jjd{}|t|j}|S7w)Nr)rrrrlrrs rDpop_curlzAsyncSession.pop_curls5YY]]_$ <djj)D %sA?Acttj5|jj |dddy#1swYyxYwr)rrrrrKrs rD push_curlzAsyncSession.push_curl s7 g'' ( ' II  & ' ' 's ?AcK|SwrrBrs rD __aenter__zAsyncSession.__aenter__s  sc@K|jd{y7wrr*r,s rD __aexit__zAsyncSession.__aexit__sjjl s cK|jjd{d|_ |jj }|r|j.7:#t j $rYywxYww)r/NT)rr+rr get_nowaitr QueueEmptyrs rDr+zAsyncSession.closesljj     yy++-JJL  !%%  s2A6A A6,AA6A30A62A33A6c|j|js=|jj||j |j |y|j yr)clean_after_performrr remove_handler;rr+rs rD release_curlzAsyncSession.release_curl!sE   "|| JJ $ $T * JJL NN4 JJLrCc K|jd||d|ddid{} ||jd{y7#7#|jd{7wxYww)zd{tAtCtDtF|||!S77*w)#aConnects to a WebSocket. Args: url: url for the requests. autoclose: whether to close the WebSocket after receiving a close frame. params: query string for the requests. headers: headers to send. cookies: cookies to use. auth: HTTP basic auth, a tuple of (username, password), only basic auth is supported. timeout: how many seconds to wait before giving up. allow_redirects: whether to allow redirection. max_redirects: max redirect counts, default 30, use -1 for unlimited. proxies: dict of proxies to use, prefer to use ``proxy`` if they are the same. format: ``{"http": proxy_url, "https": proxy_url}``. proxy: proxy to use, format: "http://user@pass:proxy_url". Can't be used with `proxies` parameter. proxy_auth: HTTP basic auth for proxy, a tuple of (username, password). verify: whether to verify https certs. referer: shortcut for setting referer header. accept_encoding: shortcut for setting accept-encoding header. impersonate: which browser version to impersonate. ja3: ja3 string to impersonate. akamai: akamai string to impersonate. extra_fp: extra fingerprints options, in complement to ja3 and akamai str. default_headers: whether to set default browser headers. quote: Set characters to be quoted, i.e. percent-encoded. Default safe string is ``!#$%&'()*+,/:;=?@[]~``. If set to a sting, the character will be removed from the safe string, thus quoted. If set to False, the url will be kept as is, without any automatic percent-encoding, you must encode the URL yourself. curl_options: extra curl options to use. http_version: limiting http version, defaults to http2. interface: which interface to use. cert: a tuple of (cert, key) filenames for client cert. max_recv_speed: maximum receive speed, bytes per second. Nrr2rrrSrBrCrDrMrYr[r]rErQrRrFr~rr_r`rarcrdrrkrmrrorGrHr) autocloserB)$rrr,rSrUrIrKrMr+rYr[r]rOrRrWr_r`rarcrdrkrmrorrXrMsetoptr CONNECT_ONLYrrun_in_executorrJr-rrr))rrrrUrIrKrMrYr[r]rOrQrRrWr~rr_r`rarcrdrrkrmrorrs rDr=zAsyncSession.ws_connect8sD ""$]]_$$ $ $ $ ]] $ f- $ ,,0 $ ,,0$ "$ %,w$6DLLG$ &!00 $ $,,$ ,,0!$ "#$ $"4T__%$ &f-'$ ()$ *,+$ ,$7t'7'7-$ .txx/$ 0(T[[1$ 2.3$ 6&!00 9$ :;$ <&:):):=$ > 14>>?$ @*A$ B"C$ D E$ F G$ J G((!,ii''dll;;; h' .   S%P .performs ,JJ  }=DDFW]]M:>>@%% +++ H..fm5EC#&CKLL!1#a&!&&#!FGG H,  }=DDFW]]M:>>@%% +++sjEA?A=A?A(E7C 8E=A?? CA CC"CC" E"A)E E EEc(jyr)r)rUrrs rDrWz%AsyncSession.request..cleanups!!$'rCrB).rrr,rUrSrIrKrMr+rYr[r]rOrRrWr_r`rarcrdrkrmrorgrrXrMr add_handle create_taskrZrrTrrr[r rr3 astream_taskr]rrr"rLr7)1rr2rrUrwryrIrKrzrMrYr[r]rOrQrRrWr~rrr_r`rarcrdrfrrkrmrorrrrrr]rJrWr\rrcrPrdrrrrQrrRrs1` ` ` @@@@@@@rDr3zAsyncSession.requestsjL ""$]]_$AQ+B +B +B +B f- +B ]] +B  +B +B ,,0+B ,,0+B +B "+B %,w$6DLLG+B &!00 +B "$,,%+B &,,0'+B ()+B *"4T__++B ,f--+B ./+B 0,1+B 2.3+B 4$7t'7'75+B 6txx7+B 8(T[[9+B :.;+B >&!00 A+B BC+B D&:):):E+B F 14>>G+B HI+B J*K+B L M+B N"O+B P**Q+B R S+B T U+B >V]A}hX ::((.D , , ("--gi8K  ) )' 2w}}m499; ; ; &&fm-=C,A.M-)9:!!$'##CK*C #CLCIJ (zz,,T2 **&-1A?" !!$'U%H <. 8**&-1A?" "1663q62CFAFFC0a7  8!!$'sl$N"LH/N" L!A%N" L"'L (L",N N"N" L"" N +ANN  N NN"c ,|jdd|d|Srfrgrhs rDrizAsyncSession.head?rjrCc ,|jdd|d|Srlrgrhs rDrzAsyncSession.getBrmrCc ,|jdd|d|Srorgrhs rDrpzAsyncSession.postErjrCc ,|jdd|d|Srrrgrhs rDrOzAsyncSession.putHrmrCc ,|jdd|d|Srtrgrhs rDruzAsyncSession.patchKrvrCc ,|jdd|d|Srxrgrhs rDryzAsyncSession.deleteNrzrCc ,|jdd|d|Sr|rgrhs rDr}zAsyncSession.optionsQr~rCc ,|jdd|d|Srrgrhs rDrzAsyncSession.traceTrvrCc ,|jdd|d|Srrgrhs rDrzAsyncSession.queryWrvrC)rzOptional[AsyncCurl]rr\rrrr)4rr7rrVrUrurIrHrKrJrMrLrYr{r[r|r]r}rOrNrQrPrRrLrWr|r~rPrrPr_r^r`rPrarPrcrbrdr|rrrkrjrmrPrornrr\r r-rr)r>r?r@r rrrrrrrrrr+rrrr+r=r3rirrprOruryr}rrrrs@rDrrs)K *. >( >  > / >@   '    .   59)-)-*.GN*.'+'+#04!%!%)<48! $DH*.,.MQ#'6:5q q q 3 q ' q ' q (q Eq (q %q %q q .q q q '!q "2#q $%q &'q (B)q *(+q ,*-q .K/q 0!1q 243q 45q 6 7q n6:RV&*)-)- $*.GN*.'+'+#04!%!%)?R(@AR(B&CR(DER(h>=>=?@A??rCr)rr7r rVr)rz queue.Queue)rz asyncio.Queue)Y __future__rr http.cookiesr9rrsysrr"concurrent.futuresr contextlibrrriortypingr r r r r rrrr urllib.parseraiorconstrrrrrrrutilsrrKrrr exceptionsr r!r"rIr#r$r_r%r&r'modelsr(r)r*r+r, websocketsr-r. ImportErrorreventlet.tpoolr version_infor1typing_extensionsr4r6rGrtrrdictr7 ThreadTyperrrrrrrrBrCrDrs" 1DD   "66,,#55CC)KK(@@1 kkw8X6A8$A(IUGAJ :iu@+5  YFS#XI!)2I& ) * P ; l)'!*l)^X?k!nX?v k?;q>k?Os=F'F3'F03F<