§
    ½Ë”j^  ã                   óV  — d dl Zd dlmc mZ 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(„¦   «         Z0ej&        dede'fd)„¦   «         Z1d*e	d+e'de'fd,„Z2d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�t          j        d¦  «        dz   dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          t          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` markerz*
>assert %(py2)s
{%(py2)s = %(py0)s.args
}Úmarker)Úpy0Úpy2r   )rT   rU   ÚargsÚ
@pytest_arÚ_format_assertmsgÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚget_default_cassette_nameÚclsrP   )rC   rv   Ú@py_assert1Ú@py_format3s       r#   rh   rh   ·   s1  € àŒ\×,Ò,Ð-?Ñ@Ô@€FØÐØŒ{ð 	
ˆ{ð 	
õ 	
ìð lñ	
ô 	
ð 	
ñ 	
ð 	
õ 	
ä	ñ	
ô 	
ð 	
ð 	
õ 	
ìð ñ 	
ô 	
ð 	
õ 	
ä 	ð ñ 	
ô 	
ð 	
ð 	
õ 	
ä 	ð ñ 	
ô 	
ð 	
ð 	
ñ 	
ð 	
õ 	
õ 	
ìð	
ñ 	
ô 	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð Œ{˜1Œ~ÐÝ$ W¤[°'´,Ô2CÑDÔDÐDr%   Ú
test_classÚ	test_namec                 ó|   — | rd                      | j        |¦  «        }n|}dD ]}|                     |d¦  «        }Œ|S )Nz{}.{}z<>?%*:|\"'/\\ú-)ÚformatÚ__name__Úreplace)r†   r‡   Úcassette_nameÚchs       r#   r‚   r‚   Â   sU   € Øð "ØŸš zÔ':¸IÑFÔFˆˆà!ˆð
 ð 7ð 7ˆØ%×-Ò-¨b°#Ñ6Ô6ˆˆØÐr%   )r   N)3Úbuiltinsr|   Ú_pytest.assertion.rewriteÚ	assertionr   rz   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   r‚   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%   