§
    ½Ë”j  ã                   ó¾   — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z ddlmZ  ej        e¦  «        Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )al  VCR stubs for httpx transports.

The httpx module to patch against is passed in (``httpx`` or its interoperable
fork ``httpx2``) rather than imported at module level, so a single stub serves
both. Only the ``Response`` / ``ByteStream`` classes and the ``request_context``
helper differ between the two; everything else operates on the duck-typed
request/response.
é    N)Údefaultdict)Ú(CannotOverwriteExistingCassetteException)Údecode_response)ÚRequest)Úconvert_body_to_bytesc                 ó¼   — t          t          ¦  «        }| j                             ¦   «         D ] \  }}||                              |¦  «         Œ!t          |¦  «        S )z‚
    Some headers can appear multiple times, like "Set-Cookie".
    Therefore serialize every header key to a list of values.
    )r   ÚlistÚheadersÚmulti_itemsÚappendÚdict)Úreal_responser
   ÚnameÚvalues       úCC:\Projects\DSCons\.venv\Lib\site-packages\vcr/stubs/httpx_stubs.pyÚ_serialize_headersr      sZ   € õ �$ÑÔ€Gà$Ô,×8Ò8Ñ:Ô:ð $ð $‰ˆˆeØ�Œ×Ò˜UÑ#Ô#Ð#Ð#å�‰=Œ=Ðó    c                 óF   — | j         | j        dœt          | ¦  «        d|idœS )N)ÚcodeÚmessageÚstring)Ústatusr
   Úbody)Ústatus_codeÚreason_phraser   )r   Úreal_response_contents     r   Ú_serialize_responser   $   s6   € à(Ô4ÀÔA\Ð]Ð]Ý% mÑ4Ô4ØÐ0Ð1ðð ð r   c                 ó>   — d„ |                       ¦   «         D ¦   «         S )zJ
    httpx accepts headers as list of tuples of header key and value.
    c                 ó&   — g | ]\  }}|D ]}||f‘ŒŒS © r    )Ú.0r   Úvaluesr   s       r   ú
<listcomp>z(_deserialize_headers.<locals>.<listcomp>1   s-   € ÐRÐRÐR™l˜d FÈ6ÐRÐRÀ%ˆT�5ˆMÐRÐRÐRÐRr   )Úitems)r
   s    r   Ú_deserialize_headersr%   ,   s!   € ð
 SÐR¨g¯mªm©o¬oÐRÑRÔRÐRr   c           	      óp  — d| v r9t          t          | d         d| d         id| d         idœ¦  «        ¦  «        } d }n#d| d         d	                              d
¦  «        i}|                     | d         d         t	          | d         ¦  «        |                     | d         d         ¦  «        |¬¦  «        S )Nr   r
   r   Úcontentr   )r
   r   r   r   r   r   Úasciir   )r
   ÚstreamÚ
extensions)r   r   ÚencodeÚResponser%   Ú
ByteStream)Úvcr_responseÚhttpxr*   s      r   Ú_deserialize_responser0   4   sÛ   € ð ˜Ð$Ð$Ý&Ý!à+¨IÔ6Ø% |°IÔ'>Ð?Ø% |°MÔ'BÐCðð ñô ñ
ô 
ˆð ˆ
ˆ
à% |°HÔ'=¸iÔ'H×'OÒ'OÐPWÑ'XÔ'XÐYˆ
à�>Š>Ø�XÔ˜vÔ&Ý$ \°)Ô%<Ñ=Ô=ð ×Ò ¨VÔ 4°XÔ >Ñ?Ô?Øð ñ ô ð r   c                 ó^   — t          | j        t          | j        ¦  «        || j        ¦  «        S ©N)Ú
VcrRequestÚmethodÚstrÚurlr
   )Úreal_requestÚreal_request_bodys     r   Ú_make_vcr_requestr9   P   s)   € Ý�lÔ)­3¨|Ô/?Ñ+@Ô+@ÐBSÐUaÔUiÑjÔjÐjr   c                 ó
  — t          ||¦  «        }|                      |¦  «        r|t          | ||¦  «        fS | j        r&|                      |¦  «        rt          | |¬¦  «        ‚t                               d|¦  «         |d fS )N)ÚcassetteÚfailed_requestz*%s not in cassette, sending to real server)r9   Úcan_play_response_forÚ_play_responsesÚwrite_protectedÚfilter_requestr   Ú_loggerÚinfo)r;   r7   r8   r/   Úvcr_requests        r   Ú_vcr_requestrD   T   s–   € Ý# LÐ2CÑDÔD€Kà×%Ò% kÑ2Ô2ð JØ�O¨H°kÀ5ÑIÔIÐIÐIàÔð f H×$;Ò$;¸KÑ$HÔ$Hð fÝ6ÀÐYdÐeÑeÔeÐeå‡L‚LÐ=¸{ÑKÔKÐKà˜ÐÐr   c                 óN   — |                       |t          ||¦  «        ¦  «         d S r2   )r   r   )r;   rC   r   r   s       r   Ú_record_responsesrF   b   s(   € Ø‡O‚O�KÕ!4°]ÐDYÑ!ZÔ!ZÑ[Ô[Ð[Ð[Ð[r   c                 óP   — |                       |¦  «        }t          ||¦  «        }|S r2   )Úplay_responser0   )r;   rC   r/   r.   r   s        r   r>   r>   f   s*   € Ø×)Ò)¨+Ñ6Ô6€LÝ)¨,¸Ñ>Ô>€MàÐr   c              ƒ   óB  K  — d                      d„ |j        2 ¦   «         ƒ d {V —†¦  «        }|                     |¦  «        |_        t          | |||¦  «        \  }}|r|S  |||¦  «        ƒ d {V —†}d                      d„ |j        2 ¦   «         ƒ d {V —†¦  «        }	|j                             |j        ¬¦  «        5  |j                             ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |                     |	¦  «        |_        t          | |||	¦  «         |S )Nr   c              “   ó"   K  — g | 3 d {V —†}|‘Œ
6 S r2   r    ©r!   Úparts     r   r#   z-_vcr_handle_async_request.<locals>.<listcomp>o   s.   è è € Ð!MÐ!MÐ!MÐ!MÐ!MÐ!MÐ!MÐ!M° $Ð!MÐ!MÐ!MÐ!Mó   …c              “   ó"   K  — g | 3 d {V —†}|‘Œ
6 S r2   r    rK   s     r   r#   z-_vcr_handle_async_request.<locals>.<listcomp>x   s.   è è € Ð%RÐ%RÐ%RÐ%RÐ%RÐ%RÐ%RÐ%R°T dÐ%RÐ%RÐ%RÐ%RrM   ©Úrequest)	Újoinr)   r-   rD   Ú_exceptionsÚrequest_contextÚ_requestÚacloserF   )
r;   Úreal_handle_async_requestÚselfr7   r/   r8   rC   r.   r   r   s
             r   Ú_vcr_handle_async_requestrX   m   s¤  è è € àŸšÐ!MÐ!M¸Ô9LÐ!MÑ!MÔ!MÐ!MÐ!MÐ!MÐ!MÐ!MÐ!MÑNÔNÐØ×*Ò*Ð+<Ñ=Ô=€LÔå ,¨X°|ÐEVÐX]Ñ ^Ô ^Ñ€K�àð ØÐà3Ð3°D¸,ÑGÔGÐGÐGÐGÐGÐGÐG€MØŸHšHÐ%RÐ%R¸]Ô=QÐ%RÑ%RÔ%RÐ%RÐ%RÐ%RÐ%RÐ%RÐ%RÑSÔSÐð 
Ô	×	*Ò	*°=Ô3IÐ	*Ñ	JÔ	Jð ,ð ,ØÔ"×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð !×+Ò+Ð,AÑBÔB€MÔå�h ¨]Ð<QÑRÔRÐRàÐs   Â< C(Ã(C,Ã/C,c                 óN   ‡ ‡‡— t          j        ‰¦  «        ˆ ˆˆfd„¦   «         }|S )Nc                 ó*   •— t          ‰‰| |‰¦  «        S r2   )rX   )rW   r7   r;   r/   rV   s     €€€r   Ú_inner_handle_async_requestz=vcr_handle_async_request.<locals>._inner_handle_async_request‡   s   ø€ å(¨Ð3LÈdÐT`ÐbgÑhÔhÐhr   ©Ú	functoolsÚwraps)r;   rV   r/   r[   s   ``` r   Úvcr_handle_async_requestr_   †   sM   øøø€ Ý„_Ð.Ñ/Ô/ðið ið ið ið ið iñ 0Ô/ðið 'Ð&r   c                 óæ  — d                      |j        ¦  «        }|                     |¦  «        |_        t          | |||¦  «        \  }}|r|S  |||¦  «        }d                      |j        ¦  «        }	|j                             |j        ¬¦  «        5  |j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   |                     |	¦  «        |_        t          | |||	¦  «         |S )Nr   rO   )	rQ   r)   r-   rD   rR   rS   rT   ÚcloserF   )
r;   Úreal_handle_requestrW   r7   r/   r8   rC   r.   r   r   s
             r   Ú_vcr_handle_requestrc   Ž   s:  € àŸš Ô!4Ñ5Ô5ÐØ×*Ò*Ð+<Ñ=Ô=€LÔå ,¨X°|ÐEVÐX]Ñ ^Ô ^Ñ€K�àð ØÐà'Ð'¨¨lÑ;Ô;€MØŸHšH ]Ô%9Ñ:Ô:Ðð 
Ô	×	*Ò	*°=Ô3IÐ	*Ñ	JÔ	Jð %ð %ØÔ×"Ò"Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð !×+Ò+Ð,AÑBÔB€MÔå�h ¨]Ð<QÑRÔRÐRàÐs   ÂB:Â:B>ÃB>c                 óN   ‡ ‡‡— t          j        ‰¦  «        ˆ ˆˆfd„¦   «         }|S )Nc                 ó*   •— t          ‰‰| |‰¦  «        S r2   )rc   )rW   r7   r;   r/   rb   s     €€€r   Ú_inner_handle_requestz1vcr_handle_request.<locals>._inner_handle_request¨   s   ø€ å" 8Ð-@À$ÈÐV[Ñ\Ô\Ð\r   r\   )r;   rb   r/   rf   s   ``` r   Úvcr_handle_requestrg   §   sM   øøø€ Ý„_Ð(Ñ)Ô)ð]ð ]ð ]ð ]ð ]ð ]ñ *Ô)ð]ð !Ð r   )Ú__doc__r]   ÚloggingÚcollectionsr   Ú
vcr.errorsr   Úvcr.filtersr   Úvcr.requestr   r3   Úvcr.serializers.compatr   Ú	getLoggerÚ__name__rA   r   r   r%   r0   r9   rD   rF   r>   rX   r_   rc   rg   r    r   r   ú<module>rq      sY  ððð ð Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø -Ð -Ð -Ð -Ð -Ð -Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8à
ˆ'Ô
˜HÑ
%Ô
%€ðð ð ðð ð ðSð Sð Sðð ð ð8kð kð kðð ð ð\ð \ð \ðð ð ðð ð ð2'ð 'ð 'ðð ð ð2!ð !ð !ð !ð !r   