§
    ½Ë”j^  ã                   ó<  — d dl Z d dlmZmZmZmZmZmZ d dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlmZ erd dlmZ dd	lmZmZ dd
lmZ ddlmZ dZde
ddfd„Zd-d„Zdeddfd„Zdeddfd„Z ej         d¬¦  «        dede!fd„¦   «         Z" ej         d¬¦  «        dede#fd„¦   «         Z$ej         defd„¦   «         Z%ej         dedee!         fd„¦   «         Z&ej         dedee         fd„¦   «         Z' ej         d¬¦  «        dede!d ee         ded         fd!„¦   «         Z( ej         d¬¦  «        ded ee         d"e!de!d#e#d$e
deed%                  fd&„¦   «         Z) ej         d'¬¦  «        dede!fd(„¦   «         Z*ej         dede!fd)„¦   «         Z+d*ed+e!de!fd,„Z,dS ).é    N)ÚTYPE_CHECKINGÚAnyÚDictÚIteratorÚListÚOptional)ÚConfigÚPytestPluginManager)ÚParser)Ú
SubRequest)ÚMark)ÚCassetteé   )ÚhooksÚnetwork)Úmerge_kwargs)Úvalidate_block_network_mark)ÚonceÚnew_episodesÚnoneÚallÚrewriteÚconfigÚreturnc                 ó.  — | j                              d¦  «        rt          d¦  «        ‚|                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         t	          j        ¦   «          d S )NÚvcrzx`pytest-recording` is incompatible with `pytest-vcr`. Please, uninstall `pytest-vcr` in order to use `pytest-recording`.Úmarkersz#vcr: Mark the test as using VCR.py.z=block_network: Block network access except for VCR recording.z5default_cassette: Override the default cassette name.zRallowed_hosts: List of regexes to match hosts to where connection must be allowed.)ÚpluginmanagerÚ
has_pluginÚRuntimeErrorÚaddinivalue_liner   Úinstall_pycurl_wrapper)r   s    úEC:\Projects\DSCons\.venv\Lib\site-packages\pytest_recording/plugin.pyÚpytest_configurer$      s¯   € ØÔ×&Ò& uÑ-Ô-ð 
ÝðQñ
ô 
ð 	
ð ×Ò˜IÐ'LÑMÔMÐMØ
×Ò˜IÐ'fÑgÔgÐgØ
×Ò˜IÐ'^Ñ_Ô_Ð_Ø
×ÒØØ\ñô ð õ Ô"Ñ$Ô$Ð$Ð$Ð$ó    c                  ó,   — t          j        ¦   «          d S ©N)r   Úuninstall_pycurl_wrapper© r%   r#   Úpytest_unconfigurer*   $   s   € ÝÔ$Ñ&Ô&Ð&Ð&Ð&r%   Úparserc                 ó  — |                       d¦  «        }|                     ddd t          d¬¦  «         |                     dddd	¬
¦  «         |                     ddd d¬
¦  «         |                     dddd¬
¦  «         d S )NÚ	recordingú--record-modeÚstorez&VCR.py record mode. Default to "none".)ÚactionÚdefaultÚchoicesÚhelpú--block-networkÚ
store_trueFz.Block network access except for VCR recording.)r0   r1   r3   ú--allowed-hostszXList of regexes, separated by comma, to match hosts to where connection must be allowed.ú--disable-recordingúDisable VCR.py integration.)ÚgetgroupÚ	addoptionÚRECORD_MODES)r+   Úgroups     r#   Úpytest_addoptionr=   (   sÂ   € Ø�OŠO˜KÑ(Ô(€EØ	‡O‚OØØØÝØ5ð ñ ô ð ð 
‡O‚OØØØØ=ð	 ñ ô ð ð 
‡O‚OØØØØgð	 ñ ô ð ð 
‡O‚OØØØØ*ð	 ñ ô ð ð ð r%   r   c                 ó:   — |                       t          ¦  «         d S r'   )Úadd_hookspecsr   )r   s    r#   Úpytest_addhooksr@   E   s   € Ø×Ò¥Ñ&Ô&Ð&Ð&Ð&r%   Úsession)ÚscopeÚrequestc                 ó:   — | j                              d¦  «        pdS )z]When recording is disabled the VCR recording mode should be "none" to prevent network access.r.   r   ©r   Ú	getoption©rC   s    r#   Úrecord_moderH   I   s   € ð Œ>×#Ò# OÑ4Ô4Ð>¸Ð>r%   c                 ó6   — | j                              d¦  «        S )r8   r7   rE   rG   s    r#   Údisable_recordingrJ   O   s   € ð Œ>×#Ò#Ð$9Ñ:Ô:Ð:r%   c                  ó   — i S )z4A shareable configuration for VCR.use_cassette call.r)   r)   r%   r#   Ú
vcr_configrL   U   s	   € ð €Ir%   c                 ó`  — | j                              d¬¦  «        }|                      d¦  «        }t          |di ¦  «                             d¦  «        p.| j                             d¦  «        p|                     d¦  «        }t          |t          ¦  «        r| 	                    d¦  «        }|S )zCList of regexes to match hosts to where connection must be allowed.Úblock_network©ÚnamerL   ÚkwargsÚallowed_hostsr6   ú,)
ÚnodeÚget_closest_markerÚgetfixturevalueÚgetattrÚgetr   rF   Ú
isinstanceÚstrÚsplit)rC   rN   r   rR   s       r#   rR   rR   [   s­   € ð ”L×3Ò3¸Ð3ÑIÔI€MØ×$Ò$ \Ñ2Ô2€Fõ 	�˜x¨Ñ,Ô,×0Ò0°ÑAÔAð 	'ØŒ>×#Ò#Ð$5Ñ6Ô6ð	'à�:Š:�oÑ&Ô&ð õ
 �-¥Ñ%Ô%ð 1Ø%×+Ò+¨CÑ0Ô0ˆØÐr%   c                 óR   — t          | j                             d¬¦  «        ¦  «        S )zaAll markers applied to the certain test together with cassette names associated with each marker.r   rO   )ÚlistrT   Úiter_markersrG   s    r#   Úvcr_markersr_   n   s%   € õ �”×)Ò)¨uÐ)Ñ5Ô5Ñ6Ô6Ð6r%   T)ÚautouserH   r_   c              #   óò  K  — | j                              d¬¦  «        }|�t          |¦  «         |rU|                      d¦  «        }t	          ||¦  «        }| j                             d¦  «        €|                     dd¦  «        }|s| j                             d¦  «        rQ|r|dk    rI|                      d	¦  «        }t          j	        |¬
¦  «        5  dV — ddd¦  «         dS # 1 swxY w Y   dS dV — dS )zCBlock network access in tests except for "none" VCR recording mode.rN   rO   NrL   r.   rH   r   r4   rR   )rR   )
rT   rU   r   rV   r   r   rF   rX   r   Úblocking_context)rC   rH   r_   rN   r   Úmerged_configrR   s          r#   rN   rN   t   sb  è è € ð ”L×3Ò3¸Ð3ÑIÔI€MØÐ Ý# MÑ2Ô2Ð2Øð 	Cð
 ×(Ò(¨Ñ6Ô6ˆÝ$ V¨[Ñ9Ô9ˆàŒ>×#Ò# OÑ4Ô4Ð<Ø'×+Ò+¨M¸6ÑBÔBˆKàð ˜œ×1Ò1Ð2CÑDÔDð È{ð Ð^iÐmsÒ^sÐ^sØ×/Ò/°Ñ@Ô@ˆÝÔ%°MÐBÑBÔBð 	ð 	ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ˆˆˆˆˆs   ÃC&Ã&C*Ã-C*Úvcr_cassette_dirrJ   Úpytestconfigr   c              #   óä   K  — |rdV — dS |r_ddl m} |                      d¦  «        }|                      d¦  «        } |||||||¦  «        5 }	|	V — ddd¦  «         dS # 1 swxY w Y   dS dV — dS )z>Install a cassette if a test is marked with `pytest.mark.vcr`.Nr   )Úuse_cassetterL   Údefault_cassette_name)Ú_vcrrg   rV   )
rC   r_   rd   rH   rJ   re   rg   r   Údefault_cassetteÚcassettes
             r#   r   r   �   sÿ   è è € ð ð Øˆ
ˆ
ˆ
ˆ
ˆ
Ø	ð Ø&Ð&Ð&Ð&Ð&Ð&à×(Ò(¨Ñ6Ô6ˆØ"×2Ò2Ð3JÑKÔKÐØˆ\ØØØØØØñ
ô 
ð 	ð ØˆNˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð ˆ
ˆ
ˆ
ˆ
ˆ
s   ÁAÁA#Á&A#Úmodulec                 óp   — | j         j        }t          j                             |j        d|j        ¦  «        S )zæEach test module has its own cassettes directory to avoid name collisions.

    For example each test module could have test function with the same names:
      - test_users.py:test_create
      - test_profiles.py:test_create
    Ú	cassettes)rT   ÚfspathÚosÚpathÚjoinÚdirnameÚpurebasename)rC   rl   s     r#   rd   rd   «   s+   € ð Œ\Ô €FÝŒ7�<Š<˜œ¨°VÔ5HÑIÔIÐIr%   c                 ó´   — | j                              d¦  «        }|�|j        s
J d¦   «         ‚|j        d         S t          | j        | j         j        ¦  «        S )Nrj   z]You should pass the cassette name as an argument to the `pytest.mark.default_cassette` markerr   )rT   rU   ÚargsÚget_default_cassette_nameÚclsrP   )rC   Úmarkers     r#   rh   rh   ·   sa   € àŒ\×,Ò,Ð-?Ñ@Ô@€FØÐØŒ{ð 	
ð 	
Økñ	
ô 	
ˆ{ð Œ{˜1Œ~ÐÝ$ W¤[°'´,Ô2CÑDÔDÐDr%   Ú
test_classÚ	test_namec                 ó|   — | rd                      | j        |¦  «        }n|}dD ]}|                     |d¦  «        }Œ|S )Nz{}.{}z<>?%*:|\"'/\\ú-)ÚformatÚ__name__Úreplace)rz   r{   Úcassette_nameÚchs       r#   rw   rw   Â   sU   € Øð "ØŸš zÔ':¸IÑFÔFˆˆà!ˆð
 ð 7ð 7ˆØ%×-Ò-¨b°#Ñ6Ô6ˆˆØÐr%   )r   N)-rp   Útypingr   r   r   r   r   r   ÚpytestÚ_pytest.configr	   r
   Ú_pytest.config.argparsingr   Ú_pytest.fixturesr   Ú_pytest.mark.structuresr   Úvcr.cassetter   Ú r   r   Úutilsr   Ú
validationr   r;   r$   r*   r=   r@   ÚfixturerZ   rH   ÚboolrJ   rL   rR   r_   rN   r   rd   rh   rw   r)   r%   r#   ú<module>r�      sü  ðØ 	€	€	€	Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø (Ð (Ð (Ð (Ð (Ð (àð &Ø%Ð%Ð%Ð%Ð%Ð%à Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3àA€ð%˜Vð %¨ð %ð %ð %ð %ð 'ð 'ð 'ð 'ð˜Vð ¨ð ð ð ð ð:'Ð#6ð '¸4ð 'ð 'ð 'ð 'ð €„�iÐ Ñ Ô ð?˜ð ?¨ð ?ð ?ð ?ñ !Ô ð?ð
 €„�iÐ Ñ Ô ð;˜zð ;¨dð ;ð ;ð ;ñ !Ô ð;ð
 „ð�Dð ð ð ñ „ðð
 „ð˜:ð ¨$¨s¬)ð ð ð ñ „ðð$ „ð7˜ð 7¨¨T¬
ð 7ð 7ð 7ñ „ð7ð
 €„˜ÐÑÔð˜:ð °Cð ÀdÈ4Äjð ÐU]Ð^bÔUcð ð ð ñ Ôðð0 €„˜ÐÑÔðØðà�d”ðð ðð ð	ð
 ðð ðð ˆh�zÔ"Ô#ðð ð ñ Ôðð: €„�hÐÑÔðJ˜jð J¨Sð Jð Jð Jñ  ÔðJð „ðE :ð E°#ð Eð Eð Eñ „ðEð¨#ð ¸#ð À#ð ð ð ð ð ð r%   