Ë
    
_ßd¥  ã                   óð   — d dl 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mZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZ ddlmZ d dlmZ d d	lmZ d d
lmZ  G d„ de«      Z G d„ d«      Z G d„ de«      Zy)é    N)ÚDistutilsErrorÚDistutilsOptionError)Úlog)Ú
TestLoader)Úresource_listdirÚresource_existsÚnormalize_pathÚworking_setÚevaluate_markerÚadd_activation_listenerÚrequireé   )Úmetadata)ÚCommand)Úunique_everseen)Ú	pass_nonec                   ó   — e Zd Zd„ Zdd„Zy)ÚScanningLoaderc                 óL   — t        j                  | «       t        «       | _        y ©N)r   Ú__init__ÚsetÚ_visited©Úselfs    ú9/usr/lib/python3/dist-packages/setuptools/command/test.pyr   zScanningLoader.__init__   s   € Ü×Ñ˜DÔ!Ü›ˆ�ó    Nc                 ó‚  — || j                   v ry| j                   j                  |«       g }|j                  t        j                  | |«      «       t        |d«      r|j                  |j                  «       «       t        |d«      r”t        |j                  d«      D ]{  }|j                  d«      r|dk7  r|j                  dz   |dd z   }n-t        |j                  |d	z   «      r|j                  dz   |z   }nŒ\|j                  | j                  |«      «       Œ} t        |«      d
k7  r| j                  |«      S |d   S )a  Return a suite of all tests cases contained in the given module

        If the module is a package, load tests from all the modules in it.
        If the module has an ``additional_tests`` function, call it and add
        the return value to the tests.
        NÚadditional_testsÚ__path__Ú z.pyz__init__.pyú.éýÿÿÿz/__init__.pyé   r   )r   ÚaddÚappendr   ÚloadTestsFromModuleÚhasattrr   r   Ú__name__Úendswithr   ÚloadTestsFromNameÚlenÚ
suiteClass)r   ÚmoduleÚpatternÚtestsÚfileÚ	submodules         r   r'   z"ScanningLoader.loadTestsFromModule   s  € ð �T—]‘]Ñ"ØØ�‰×Ñ˜&Ô!àˆØ�‰”Z×3Ñ3°D¸&ÓAÔBä�6Ð-Ô.Ø�L‰L˜×0Ñ0Ó2Ô3ä�6˜:Ô&Ü(¨¯©¸"Ó=ò @�Ø—=‘= Ô'¨D°MÒ,AØ &§¡°#Ñ 5¸¸S¸b¸	Ñ A‘Iä& v§¡¸¸~Ñ8MÔNØ$*§O¡O°cÑ$9¸DÑ$@™	à Ø—‘˜T×3Ñ3°IÓ>Õ?ð@ô ˆu‹:˜Š?Ø—?‘? 5Ó)Ð)à˜‘8ˆOr   r   )r)   Ú
__module__Ú__qualname__r   r'   © r   r   r   r      s   „ òôr   r   c                   ó   — e Zd Zd„ Zdd„Zy)ÚNonDataPropertyc                 ó   — || _         y r   ©Úfget)r   r:   s     r   r   zNonDataProperty.__init__C   s	   € Øˆ�	r   Nc                 ó,   — |€| S | j                  |«      S r   r9   )r   ÚobjÚobjtypes      r   Ú__get__zNonDataProperty.__get__F   s   € Øˆ;ØˆKØ�y‰y˜‹~Ðr   r   )r)   r3   r4   r   r>   r5   r   r   r7   r7   B   s   „ òôr   r7   c                   óà   — e Zd ZdZdZg d¢Zd„ Zd„ Zed„ «       Z	d„ Z
d„ Zej                  g fd	„«       Zeej                  d
„ «       «       Zed„ «       Zd„ Zd„ Zed„ «       Zeed„ «       «       Zy)Útestz.Command to run unit tests after in-place buildz0run unit tests after in-place build (deprecated)))ztest-module=Úmz$Run 'test_suite' in specified module)ztest-suite=Úsz9Run single test, case or suite (e.g. 'module.test_suite'))ztest-runner=ÚrzTest runner to usec                 ó<   — d | _         d | _        d | _        d | _        y r   )Ú
test_suiteÚtest_moduleÚtest_loaderÚtest_runnerr   s    r   Úinitialize_optionsztest.initialize_options[   s!   € ØˆŒØˆÔØˆÔØˆÕr   c                 ó¦  — | j                   r| j                  rd}t        |«      ‚| j                   €<| j                  €| j                  j                   | _         n| j                  dz   | _         | j                  €t        | j                  dd «      | _        | j                  €d| _        | j                  €t        | j                  dd «      | _        y y )Nz1You may specify a module or a suite, but not bothz.test_suiterG   z&setuptools.command.test:ScanningLoaderrH   )rE   rF   r   ÚdistributionrG   ÚgetattrrH   )r   Úmsgs     r   Úfinalize_optionsztest.finalize_optionsa   s»   € Ø�?Š?˜t×/Ò/ØEˆCÜ& sÓ+Ð+à�?‰?Ð"Ø×ÑÐ'Ø"&×"3Ñ"3×">Ñ">�•à"&×"2Ñ"2°]Ñ"B�”à×ÑÐ#Ü& t×'8Ñ'8¸-ÈÓNˆDÔØ×ÑÐ#ØGˆDÔØ×ÑÐ#Ü& t×'8Ñ'8¸-ÈÓNˆDÕð $r   c                 ó4   — t        | j                  «       «      S r   )ÚlistÚ
_test_argsr   s    r   Ú	test_argsztest.test_argss   s   € ä�D—O‘OÓ%Ó&Ð&r   c              #   ó‚   K  — | j                   sd–— | j                  rd–— | j                   r| j                   –— y y ­w)NÚdiscoverz	--verbose)rE   Úverboser   s    r   rQ   ztest._test_argsw   s6   è ø€ Ø�ŠØÒØ�<Š<ØÒØ�?Š?Ø—/‘/Ó!ð ùs   ‚=?c                 ó\   — | j                  «       5   |«        ddd«       y# 1 sw Y   yxY w)zI
        Backward compatibility for project_on_sys_path context.
        N)Úproject_on_sys_path)r   Úfuncs     r   Úwith_project_on_sys_pathztest.with_project_on_sys_path   s*   € ð ×%Ñ%Ó'ñ 	ÙŒF÷	÷ 	ñ 	ús   ‘"¢+c              #   óÞ  K  — | j                  d«       | j                  dd¬«       | j                  d«       | j                  d«      }t        j                  d d  }t        j
                  j                  «       }	 t        |j                  «      }t        j                  j                  d|«       t        j                  «        t        d„ «       t        |j                  ›d|j                  ›�«       | j!                  |g«      5  d –— d d d «       |t        j                  d d  t        j
                  j#                  «        t        j
                  j%                  |«       t        j                  «        y # 1 sw Y   ŒnxY w# |t        j                  d d  t        j
                  j#                  «        t        j
                  j%                  |«       t        j                  «        w xY w­w)NÚegg_infoÚ	build_extr$   )Úinplacer   c                 ó"   — | j                  «       S r   )Úactivate)Údists    r   ú<lambda>z*test.project_on_sys_path.<locals>.<lambda>—   s   € °·±³€ r   z==)Úrun_commandÚreinitialize_commandÚget_finalized_commandÚsysÚpathÚmodulesÚcopyr	   Úegg_baseÚinsertr
   r   r   r   Úegg_nameÚegg_versionÚpaths_on_pythonpathÚclearÚupdate)r   Úinclude_distsÚei_cmdÚold_pathÚold_modulesÚproject_paths         r   rW   ztest.project_on_sys_path†   sY  è ø€ à×Ñ˜Ô$ð 	×!Ñ! +°qÐ!Ô9Ø×Ñ˜Ô%à×+Ñ+¨JÓ7ˆä—8‘8™A�;ˆÜ—k‘k×&Ñ&Ó(ˆð	#Ü)¨&¯/©/Ó:ˆLÜ�H‰H�O‰O˜A˜|Ô,Ü× Ñ Ô"Ü#Ñ$@ÔAÜ §£°×1CÒ1CÐDÔEØ×)Ñ)¨<¨.Ó9ñ Û÷ð #ŒC�H‰H‘QˆKÜ�K‰K×ÑÔÜ�K‰K×Ñ˜{Ô+Ü× Ñ Õ"÷ð ûð #ŒC�H‰H‘QˆKÜ�K‰K×ÑÔÜ�K‰K×Ñ˜{Ô+Ü× Ñ Õ"üs9   ‚A8G-Á;BF ÄE8ÄF ÄA%G-Å8FÅ=F ÆA&G*Ç*G-c              #   óh  K  — t        «       }t        j                  j                  d|«      }t        j                  j                  dd«      }	 t        j                  j                  t        | «      «      }t        d||g«      }t        j                  j                  |«      }|r|t        j                  d<   d–— ||u r!t        j                  j                  dd«       y|t        j                  d<   y# ||u r!t        j                  j                  dd«       w |t        j                  d<   w xY w­w)zë
        Add the indicated paths to the head of the PYTHONPATH environment
        variable so that subprocesses will also see the packages at
        these paths.

        Do this in a context that restores the value on exit.
        Ú
PYTHONPATHr!   N)	ÚobjectÚosÚenvironÚgetÚpathsepÚjoinr   ÚfilterÚpop)ÚpathsÚnothingÚorig_pythonpathÚcurrent_pythonpathÚprefixÚto_joinÚnew_paths          r   rm   ztest.paths_on_pythonpath¡   sß   è ø€ ô “(ˆÜŸ*™*Ÿ.™.¨°wÓ?ˆÜŸZ™ZŸ^™^¨L¸"Ó=Ðð	;Ü—Z‘Z—_‘_¤_°UÓ%;Ó<ˆFÜ˜T FÐ,>Ð#?Ó@ˆGÜ—z‘z—‘ wÓ/ˆHÙØ+3”—
‘
˜<Ñ(Ûà 'Ñ)Ü—
‘
—‘˜|¨TÕ2à+:”—
‘
˜<Ò(øð  'Ñ)Ü—
‘
—‘˜|¨TÕ2à+:”—
‘
˜<Ò(üs   ‚AD2ÁA.C5 Â<9D2Ã5:D/Ä/D2c                 ó  — | j                  | j                  «      }| j                  | j                  xs g «      }| j                  d„ | j                  j	                  «       D «       «      }t        j                  |||«      S )z†
        Install the requirements indicated by self.distribution and
        return an iterable of the dists that were built.
        c              3   ód   K  — | ](  \  }}|j                  d «      rt        |dd «      r|–— Œ* y­w)ú:r$   N)Ú
startswithr   )Ú.0ÚkÚvs      r   ú	<genexpr>z%test.install_dists.<locals>.<genexpr>Ã   s5   è ø€ ò %
á��1Ø�|‰|˜CÔ ¤_°Q°q°r°UÔ%;ô ñ%
ùs   ‚.0)Úfetch_build_eggsÚinstall_requiresÚtests_requireÚextras_requireÚitemsÚ	itertoolsÚchain)r`   Úir_dÚtr_dÚer_ds       r   Úinstall_distsztest.install_dists»   sv   € ð ×$Ñ$ T×%:Ñ%:Ó;ˆØ×$Ñ$ T×%7Ñ%7Ò%=¸2Ó>ˆØ×$Ñ$ñ %
à×+Ñ+×1Ñ1Ó3ô%
ó 
ˆô
 �‰˜t T¨4Ó0Ð0r   c                 ó  — | j                  dt        j                  «       | j                  | j                  «      }dj                  | j                  «      }| j                  r| j                  d|z  «       y | j                  d|z  «       t        t        j                  d«      |«      }| j                  |«      5  | j                  «       5  | j                  «        d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nz»WARNING: Testing via this command is deprecated and will be removed in a future version. Users looking for a generic test entry point independent of test runner are encouraged to use tox.ú zskipping "%s" (dry run)zrunning "%s"Úlocation)Úannouncer   ÚWARNr˜   rK   r|   Ú_argvÚdry_runÚmapÚoperatorÚ
attrgetterrm   rW   Ú	run_tests)r   Úinstalled_distsÚcmdr   s       r   Úrunztest.runÊ   sÝ   € Ø�‰ðô �H‰Hô	
ð ×,Ñ,¨T×->Ñ->Ó?ˆà�h‰h�t—z‘zÓ"ˆØ�<Š<Ø�M‰MÐ3°cÑ9Ô:Øà�‰�n sÑ*Ô+ä”H×'Ñ'¨
Ó3°_ÓEˆØ×%Ñ% eÓ,ñ 	!Ø×)Ñ)Ó+ñ !Ø—‘Ô ÷!÷	!ð 	!÷!ð !ú÷	!ð 	!ús$   Â<C;ÃC/ÃC;Ã/C8	Ã4C;Ã;Dc           	      óZ  — t        j                  d d | j                  | j                  | j                  «      | j                  | j
                  «      d¬«      }|j                  j                  «       s:d|j                  z  }| j                  |t        j                  «       t        |«      ‚y )NF)Ú
testLoaderÚ
testRunnerÚexitzTest failed: %s)ÚunittestÚmainrž   Ú_resolve_as_eprG   rH   ÚresultÚwasSuccessfulrœ   r   ÚERRORr   )r   r@   rM   s      r   r£   ztest.run_testsá   sŠ   € Ü�}‰}ØØØ�J‰JØ×*Ñ*¨4×+;Ñ+;Ó<Ø×*Ñ*¨4×+;Ñ+;Ó<Øô
ˆð �{‰{×(Ñ(Ô*Ø# d§k¡kÑ1ˆCØ�M‰M˜#œsŸy™yÔ)Ü  Ó%Ð%ð +r   c                 ó"   — dg| j                   z   S )Nr«   )rR   r   s    r   rž   z
test._argvï   s   € àˆ|˜dŸn™nÑ,Ð,r   c                 óX   —  t        j                  | dd¬«      j                  «       «       S )zu
        Load the indicated attribute value, called, as a as if it were
        specified as an entry point.
        N)ÚvalueÚnameÚgroup)r   Ú
EntryPointÚload)Úvals    r   r­   ztest._resolve_as_epó   s(   € ð LŒx×"Ñ"¨°4¸tÔD×IÑIÓKÓMÐMr   N)r)   r3   r4   Ú__doc__ÚdescriptionÚuser_optionsrI   rN   r7   rR   rQ   rY   Ú
contextlibÚcontextmanagerrW   Ústaticmethodrm   r˜   r¦   r£   Úpropertyrž   r   r­   r5   r   r   r@   r@   L   sÉ   „ Ù8àD€Kò€Lò òOð$ ñ'ó ð'ò"òð ×ÑØ02ò #ó ð#ð4 Ø×Ññ;ó ó ð;ð0 ñ1ó ð1ò!ò.&ð ñ-ó ð-ð ØñNó ó ñNr   r@   )rx   r¡   re   r¼   r“   r«   Údistutils.errorsr   r   Ú	distutilsr   r   Úpkg_resourcesr   r   r	   r
   r   r   r   Ú
_importlibr   Ú
setuptoolsr   Ú setuptools.extern.more_itertoolsr   Ú"setuptools.extern.jaraco.functoolsr   r   r7   r@   r5   r   r   ú<module>rÇ      sd   ðÛ 	Û Û 
Û Û Û ß AÝ Ý ÷÷ ñ õ "Ý Ý <Ý 8ô$�Zô $÷Pñ ônNˆ7õ nNr   