§
    ½Ë”j,  ã                   óÀ  — d 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 ddlmZmZmZmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlm Z   ej!        e"¦  «        Z# ej$        ej%        ¦  «        j&        Z'de'v Z( G d„ dej)        ¦  «        Z* G d„ de¦  «        Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2de3dee3e3e4z  e5z  f         defd„Z6d„ Z7dS )zStubs for aiohttp HTTP clientsé    N)ÚMapping)ÚCookieErrorÚMorselÚSimpleCookie)ÚSimpleNamespace)ÚClientConnectionErrorÚClientResponseÚ	CookieJarÚRequestInfoÚhdrsÚstreams)Ústrip_auth_from_url)ÚCIMultiDictÚCIMultiDictProxyÚ	MultiDict)ÚURL)Ú(CannotOverwriteExistingCassetteException)ÚRequestÚstream_writerc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú
MockStreamc                 ó6   ‡ ‡— t          j        ˆˆ fd„¦  «        S )Nc                  ó.   •— ‰                      ‰ ¦  «        S ©N)Úread)ÚnÚselfs   €€úEC:\Projects\DSCons\.venv\Lib\site-packages\vcr/stubs/aiohttp_stubs.pyú<lambda>z)MockStream.iter_chunked.<locals>.<lambda>%   s   ø€ °4·9²9¸Q±<´<€ ó    )r   ÚAsyncStreamIterator)r   r   s   ``r   Úiter_chunkedzMockStream.iter_chunked$   s"   øø€ ÝÔ*Ð+?Ð+?Ð+?Ð+?Ð+?Ñ@Ô@Ð@r    c                 ó4   — t          j        | j        ¦  «        S r   )r   r!   Úreadany©r   s    r   Úiter_anyzMockStream.iter_any'   s   € ÝÔ*¨4¬<Ñ8Ô8Ð8r    c                 ó*   — t          j        | ¦  «        S r   )r   ÚChunkTupleAsyncStreamIteratorr%   s    r   Úiter_chunkszMockStream.iter_chunks*   s   € ÝÔ4°TÑ:Ô:Ð:r    N)Ú__name__Ú
__module__Ú__qualname__r"   r&   r)   © r    r   r   r      sD   € € € € € ðAð Að Að9ð 9ð 9ð;ð ;ð ;ð ;ð ;r    r   c                   ób   ‡ — e Zd Zdˆ fd„	Zdej        dœd„Zdd„Zd„ Zd	„ Ze	d
„ ¦   «         Z
ˆ xZS )ÚMockClientResponseNc                 ó¨   •— i }t           rt          d¬¦  «        |d<    t          ¦   «         j        d||d d d |d t	          j        ¦   «         d dœ	|¤Ž d S )Nr   )Úoutput_sizer   )	ÚmethodÚurlÚwriterÚcontinue100ÚtimerÚrequest_infoÚtracesÚloopÚsessionr-   )Ú&_CLIENT_RESPONSE_ACCEPTS_STREAM_WRITERr   ÚsuperÚ__init__ÚasyncioÚget_event_loop)r   r2   r3   r7   ÚextraÚ	__class__s        €r   r=   zMockClientResponse.__init__/   sƒ   ø€ ØˆÝ1ð 	DÝ%4ÀÐ%CÑ%CÔ%CˆE�/Ñ"Ø�‰ŒÔð 	
ØØØØØØ%ØÝÔ'Ñ)Ô)Øð	
ð 	
ð ð	
ð 	
ð 	
ð 	
ð 	
r    úutf-8)ÚencodingÚloadsc             ‹   ó|   K  — | j                              ¦   «         }|sd S  ||                     |¦  «        ¦  «        S r   )Ú_bodyÚstripÚdecode)r   rC   rD   ÚkwargsÚstrippeds        r   ÚjsonzMockClientResponse.json@   sB   è è € Ø”:×#Ò#Ñ%Ô%ˆØð 	Ø�4àˆu�X—_’_ XÑ.Ô.Ñ/Ô/Ð/r    Ústrictc              ƒ   ó>   K  — | j                              ||¬¦  «        S )N)Úerrors)rF   rH   )r   rC   rN   s      r   ÚtextzMockClientResponse.textG   s!   è è € ØŒz× Ò  °&Ð Ñ9Ô9Ð9r    c              ƒ   ó   K  — | j         S r   )rF   r%   s    r   r   zMockClientResponse.readJ   s   è è € ØŒzÐr    c                 ó   — d S r   r-   r%   s    r   ÚreleasezMockClientResponse.releaseM   s   € Øˆr    c                 ó~   — t          ¦   «         }|                     | j        ¦  «         |                     ¦   «          |S r   )r   Ú	feed_datarF   Úfeed_eof)r   Úss     r   ÚcontentzMockClientResponse.contentP   s1   € å‰LŒLˆØ	�Š�D”JÑÔÐØ	�
Š
‰ŒˆØˆr    r   )rB   rL   )r*   r+   r,   r=   rK   rD   rO   r   rR   ÚpropertyrW   Ú__classcell__)rA   s   @r   r/   r/   .   s¬   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð" &-°D´Jð 0ð 0ð 0ð 0ð 0ð:ð :ð :ð :ðð ð ðð ð ð ðð ñ „Xðð ð ð ð r    r/   c                 ó$  — t          t          | j        ¦  «        | j        t	          | j        ¦  «        t          | j        ¦  «        ¬¦  «        }t          | j        t          | j        ¦  «        |¬¦  «        }|d         d         |_        |d                              dd¦  «        |_	        |d         d         |_
        t	          |d	         ¦  «        |_        t          |¦  «        |_        |j                             t          j        d
¦  «        D ]é}	 t#          |¦  «        }|                     ¦   «         D ]�\  }}|                     dd¦  «                             ¦   «         }	|	rt(                               d||	¦  «         d|d<   |j                             |                     d¬¦  «                             ¦   «         ¦  «         Œ‘Œ¸# t2          $ r%}
t(                               d|
¦  «         Y d }
~
Œâd }
~
ww xY w|                     ¦   «          |S )N)r3   r2   ÚheadersÚreal_url)r7   ÚstatusÚcodeÚbodyÚstringr    Úmessager[   r-   ÚexpiresÚ z!Ignoring expiration date: %s="%s")Úheaderz!Can not load response cookies: %s)r   r   r3   r2   Ú_deserialize_headersr[   r/   r]   ÚgetrF   ÚreasonÚ_headersÚtupleÚ_historyÚgetallr   Ú
SET_COOKIEr   ÚitemsrG   ÚlogÚdebugÚcookiesÚloadÚoutputr   ÚwarningÚclose)Úvcr_requestÚvcr_responseÚhistoryr7   ÚresponseÚhdrrp   Úcookie_nameÚcookierb   Úexcs              r   Úbuild_responser}   X   s  € ÝÝ�”Ñ Ô ØÔ!Ý$ [Ô%8Ñ9Ô9Ý�[”_Ñ%Ô%ð	ñ ô €Lõ " +Ô"4µc¸+¼/Ñ6JÔ6JÐYeÐfÑfÔf€HØ" 8Ô,¨VÔ4€H„OØ! &Ô)×-Ò-¨h¸Ñ<Ô<€H„NØ" 8Ô,¨YÔ7€H„OÝ,¨\¸)Ô-DÑEÔE€HÔÝ˜g™œ€HÔàÔ×&Ò&¥t¤¸Ñ;Ô;ð 
Bð 
Bˆð		BÝ" 3Ñ'Ô'ˆGØ'.§}¢}¡¤ð Hð HÑ#�˜VØ Ÿ*š* Y°Ñ3Ô3×9Ò9Ñ;Ô;�Øð YÝ—I’IÐAÀ;ÐPWÑXÔXÐXØ$&��yÑ!ØÔ ×%Ò% f§m¢m¸2 mÑ&>Ô&>×&DÒ&DÑ&FÔ&FÑGÔGÐGÐGðHøõ ð 	Bð 	Bð 	BÝ�KŠKÐ;¸SÑAÔAÐAÐAÐAÐAÐAÐAøøøøð	Bøøøð ‡N‚NÑÔÐØ€Os   ÄB4G
Ç

G9ÇG4Ç4G9c                 óª   — i }|                       ¦   «         D ];\  }}|                     t          |¦  «        g ¦  «                             |¦  «         Œ<|S )z–Serialize CIMultiDictProxy to a pickle-able dict because proxy
    objects forbid pickling:

    https://github.com/aio-libs/multidict/issues/340
    )rm   Ú
setdefaultÚstrÚappend)r[   Úserialized_headersÚkÚvs       r   Ú_serialize_headersr…   v   sX   € ð ÐØ—’‘”ð <ð <‰ˆˆ1Ø×%Ò%¥c¨!¡f¤f¨bÑ1Ô1×8Ò8¸Ñ;Ô;Ð;Ð;àÐr    c                 óþ   — t          ¦   «         }|                      ¦   «         D ]L\  }}t          |t          ¦  «        r|D ]}|                     ||¦  «         ŒŒ6|                     ||¦  «         ŒMt          |¦  «        S r   )r   rm   Ú
isinstanceÚlistÚaddr   )r[   Údeserialized_headersrƒ   Úvsr„   s        r   re   re   …   s�   € Ý&™=œ=ÐØ—’‘”ð ,ð ,‰ˆˆ2Ý�b�$ÑÔð 	,Øð /ð /�Ø$×(Ò(¨¨AÑ.Ô.Ð.Ð.ð/ð !×$Ò$ Q¨Ñ+Ô+Ð+Ð+åÐ0Ñ1Ô1Ð1r    c                 ó¾  — g }|                      dd¦  «        }|                      |¦  «        }t          |||¦  «        }|�rd|j        cxk    rdk    �rn �nd|j        vrnút          |j        ¦  «                             t          |j        d         ¦  «        ¦  «        }t          dt          |¦  «        d t          |j        j        ¦  «        ¦  «        }|                      |¦  «        }|D ]^}}	|                      |¦  «        r nŒ|                     |¦  «         |                      |¦  «        }t          |||¦  «        }|rd|j        cxk    rdk    �°n |S )NÚallow_redirectsTi,  i�  ÚlocationÚGET)rf   Úplay_responser}   r]   r[   r   r3   Újoinr   r€   r…   r7   Úfind_requests_with_most_matchesÚcan_play_response_forr�   )
Úcassetteru   rI   rw   r�   rv   rx   Únext_urlÚvcr_requestsÚ_s
             r   Úplay_responsesr˜   ‘   s…  € Ø€GØ—j’jÐ!2°DÑ9Ô9€OØ×)Ò)¨+Ñ6Ô6€LÝ˜k¨<¸ÑAÔA€Hð ñ F˜c X¤_Ð;Ð;Ò;Ð;¸Ò;Ñ;Ð;Ð;Ñ;Ø˜XÔ-Ð-Ð-Øå�x”|Ñ$Ô$×)Ò)­#¨hÔ.>¸zÔ.JÑ*KÔ*KÑLÔLˆõ ˜e¥S¨¡]¤]°DÕ:LÈXÔMbÔMjÑ:kÔ:kÑlÔlˆØ×?Ò?ÀÑLÔLˆØ+ð 	ð 	ˆOˆK˜!Ø×-Ò-¨kÑ:Ô:ð Ø�ðð
 	�Š�xÑ Ô Ð Ø×-Ò-¨kÑ:Ô:ˆÝ! +¨|¸WÑEÔEˆð) ð F˜c X¤_Ð;Ð;Ò;Ð;¸Ò;Ñ;Ð;Ð;ð, €Or    c              ƒ   óà   K  — 	 d|                      ¦   «         ƒ d{V —†i}n# t          $ r i }Y nw xY w|j        |j        dœt	          |j        ¦  «        |dœ}|                      ||¦  «         dS )z4Record a VCR request-response chain to the cassette.r`   N)r^   ra   )r]   r[   r_   )r   r   r]   rg   r…   r[   r�   )r”   ru   rx   r_   rv   s        r   Úrecord_responserš   ²   s¡   è è € ðØ §¢¡¤Ð0Ð0Ð0Ð0Ð0Ð0Ð2ˆˆøõ !ð ð ð Øˆˆˆðøøøð $œ?°x´ÐGÐGÝ% hÔ&6Ñ7Ô7Øðð €Lð ‡O‚O�K Ñ.Ô.Ð.Ð.Ð.s   „! ¡0¯0c           	   ƒ   óÂ  K  — t          |j        ¦  «        D ]g\  }}|j        }t          |j        t          |j        ¦  «        |rdn|j        t          |j	        ¦  «        ¦  «        }t          | ||¦  «        ƒ d{V —† Œh|j        rB|j        }t          |j        t          |j        ¦  «        dt          |j	        ¦  «        ¦  «        }t          | ||¦  «        ƒ d{V —† dS )zÞBecause aiohttp follows redirects by default, we must support
    them by default. This method is used to write individual
    request-response chains that were implicitly followed to get
    to the final destination.
    N)Ú	enumeraterw   r7   r   r2   r€   r3   r_   r…   r[   rš   )r”   ru   rx   ÚiÚpast_responseÚaiohttp_requestÚpast_requests          r   Úrecord_responsesr¡   Å   s  è è € õ & hÔ&6Ñ7Ô7ð 
Eð 
EÑˆˆ=Ø'Ô4ˆåØÔ"Ý�Ô#Ñ$Ô$àÐ+ˆDˆD˜;Ô+Ý˜Ô6Ñ7Ô7ñ
ô 
ˆõ ˜h¨°mÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDð Ôð 
Ø"Ô/ˆÝØÔ"Ý�Ô#Ñ$Ô$ØÝ˜Ô6Ñ7Ô7ñ	
ô 
ˆõ ˜( K°Ñ
:Ô
:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r    c                 ó²  — t          |¦  «        \  }}| j                             |¦  «        }|�Ot          ¦   «         }|                     |¦  «         |                     |¦  «        }|r|                     |¦  «         |s|sd S t          ¦   «         }|r|                     |¦  «         |                     ¦   «         D ]r\  }	}
t          |
t          ¦  «        rS|
 
                    |
j        t          ¦   «         ¦  «        }|                     |
j        |
j        |
j        ¦  «         |||	<   Œm|
||	<   Œs|                     dd¬¦  «                             ¦   «         S )Nrc   ú;)rd   Úsep)r   Ú_cookie_jarÚfilter_cookiesr
   Úupdate_cookiesrq   r   rm   r‡   r   rf   ÚkeyÚsetÚvalueÚcoded_valuerr   rG   )r:   rp   Úcookie_headerr3   r—   Úall_cookiesÚtmp_cookie_jarÚreq_cookiesÚcÚnamerª   Úmrsl_vals               r   Ú_build_cookie_headerr³   æ   sQ  € Ý  Ñ%Ô%�F€CˆØÔ%×4Ò4°SÑ9Ô9€KØÐÝ"™œˆØ×%Ò% gÑ.Ô.Ð.Ø$×3Ò3°CÑ8Ô8ˆØð 	*Ø×Ò˜[Ñ)Ô)Ð)àð ˜}ð Øˆtå‰Œ€AØð Ø	�Šˆ}ÑÔÐØ"×(Ò(Ñ*Ô*ð ð ‰ˆˆeÝ�e�VÑ$Ô$ð 	Ø—y’y ¤­F©H¬HÑ5Ô5ˆHØ�LŠL˜œ E¤K°Ô1BÑCÔCÐCØˆAˆd‰GˆGàˆAˆd‰GˆGà�8Š8˜2 3ˆ8Ñ'Ô'×-Ò-Ñ/Ô/Ð/r    Úurl_strÚparamsÚreturnc                 óÐ   — t          | ¦  «        }t          |j        ¦  «        }|                     |¦  «        }|                     |j        ¦  «         |                     |¦  «        S r   )r   r   ÚqueryÚ
with_queryÚextend)r´   rµ   r3   ÚqÚurl2s        r   Ú_build_url_with_paramsr½     sU   € õ ˆg‰,Œ,€CÝ�#”)ÑÔ€AØ�>Š>˜&Ñ!Ô!€DØ‡H‚HˆTŒZÑÔÐØ�>Š>˜!ÑÔÐr    c                 óJ   ‡ ‡— t          j        ‰¦  «        ˆ ˆfd„¦   «         }|S )Nc              ›   óæ  •K  — |                      d¦  «        }|                      d¦  «        }|                      |¦  «        }|                      d¦  «        }|€|                      d¦  «        }n$|                      d¦  «        �t          d¦  «        ‚|                      d¦  «        }|                      d¦  «        }|�|                     ¦   «         |d<   |st	          |¦  «        nt          ||¦  «        }	|                     t          j        d ¦  «        }
t          | ||
|	¦  «        }|r||t          j        <   t          |t          |	¦  «        |t          |¦  «        ¦  «        }‰                     |¦  «        r…t                               d	|› d
�¦  «         t!          ‰||¦  «        }|j        D ]'}| j                             |j        |j        ¦  «         Œ(| j                             |j        |j        ¦  «         |S ‰j        r&‰                     |¦  «        rt1          ‰|¬¦  «        ‚t                               d|¦  «          ‰| ||fi |¤Žƒ d {V —†}t3          ‰||¦  «        ƒ d {V —† |S )Nr[   ÚauthÚdatarK   z9data and json parameters can not be used at the same timerµ   rp   ÚAUTHORIZATIONzPlaying response for z from cassette)r”   Úfailed_requestz*%s not in cassette, sending to real server)rf   Ú_prepare_headersÚ
ValueErrorÚencoder   r½   Úpopr   ÚCOOKIEr³   r   r€   r…   r“   rn   Úinfor˜   rw   r¥   r§   rp   r3   Úwrite_protectedÚfilter_requestr   r¡   )r   r2   r3   rI   r[   rÀ   rÁ   rµ   rp   Úrequest_urlÚc_headerr¬   ru   rx   Úredirectr”   Úreal_requests                  €€r   Únew_requestz vcr_request.<locals>.new_request  s~  øè è € à—*’*˜YÑ'Ô'ˆØ�zŠz˜&Ñ!Ô!ˆØ×'Ò'¨Ñ0Ô0ˆØ�zŠz˜&Ñ!Ô!ˆØˆ<Ø—:’:˜fÑ%Ô%ˆDˆDØ�ZŠZ˜ÑÔÐ+ÝÐXÑYÔYÐYØ—’˜HÑ%Ô%ˆØ—*’*˜YÑ'Ô'ˆàÐØ'+§{¢{¡}¤}ˆG�OÑ$à&,ÐU•c˜#‘h”h�hÕ2HÈÈfÑ2UÔ2UˆØ—;’;�tœ{¨DÑ1Ô1ˆÝ,¨T°7¸HÀkÑRÔRˆØð 	1Ø#0ˆG•D”KÑ å˜f¥c¨+Ñ&6Ô&6¸Õ>PÐQXÑ>YÔ>YÑZÔZˆà×)Ò)¨+Ñ6Ô6ð 	Ý�HŠHÐH¨[ÐHÐHÐHÑIÔIÐIÝ% h°¸VÑDÔDˆHØ$Ô,ð Pð P�ØÔ ×/Ò/°Ô0@À(Ä,ÑOÔOÐOÐOØÔ×+Ò+¨HÔ,<¸h¼lÑKÔKÐKØˆOàÔ#ð 	j¨×(?Ò(?ÀÑ(LÔ(Lð 	jÝ:ÀHÐ]hÐiÑiÔiÐiå�ŠÐ=¸{ÑKÔKÐKà%˜ d¨F°CÐBÐB¸6ÐBÐBÐBÐBÐBÐBÐBÐBˆÝ˜x¨°hÑ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Øˆr    )Ú	functoolsÚwraps)r”   rÏ   rÐ   s   `` r   ru   ru     s@   øø€ Ý„_�\Ñ"Ô"ð&ð &ð &ð &ð &ñ #Ô"ð&ðP Ðr    )8Ú__doc__r>   rÑ   ÚinspectrK   ÚloggingÚcollections.abcr   Úhttp.cookiesr   r   r   Útypesr   Úaiohttpr   r	   r
   r   r   r   Úaiohttp.helpersr   Ú	multidictr   r   r   Úyarlr   Ú
vcr.errorsr   Úvcr.requestr   Ú	getLoggerr*   rn   Ú	signaturer=   Ú
parametersÚ_CLIENT_RESPONSE_PARAMSr;   ÚStreamReaderr   r/   r}   r…   re   r˜   rš   r¡   r³   r€   ÚintÚfloatr½   ru   r-   r    r   ú<module>ræ      se  ðØ $Ð $à €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø !Ð !Ð !Ð !Ð !Ð !à `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø /Ð /Ð /Ð /Ð /Ð /Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð à€gÔ˜Ñ!Ô!€ð ,˜'Ô+¨NÔ,CÑDÔDÔOÐ Ø)8Ð<SÐ)SÐ &ð;ð ;ð ;ð ;ð ;�Ô%ñ ;ô ;ð ;ð 'ð 'ð 'ð 'ð '˜ñ 'ô 'ð 'ðTð ð ð<ð ð ð	2ð 	2ð 	2ðð ð ðB/ð /ð /ð&;ð ;ð ;ðB0ð 0ð 0ð6 Cð °¸¸cÀC¹iÈ%Ñ>OÐ9OÔ1Pð ÐUXð ð ð ð ð*ð *ð *ð *ð *r    