o
    ðT·jË  ã                	   @   sÂ   d dl Z d dlmZmZ edkoedu Zer-ej e e 	e 
e¡d¡¡¡ d dlmZ nd dlmZ edddddddd	�ZG d
d„ deƒZG dd„ deƒZG dd„ de jƒZer_e  ¡  dS dS )é    N)ÚsysÚpathÚ__main__z..)ÚCCompilerOpt)ÚgccÚclangÚiccÚiccwÚmsvc)r   r   )r   )Úx86Úx64Úppc64Úppc64leÚarmhfÚaarch64Únarchc                   @   s:   e Zd ZdZdd„ Zdd„ Zdd„ Zedd	œd
d„ƒZdS )ÚFakeCCompilerOpt)ÚarchÚcompilerÚ
extra_argsc                 O   s   t j| d fi |¤Ž d S ©N)r   Ú__init__)ÚselfÚargsÚkwargs© r   úp/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/numpy/distutils/tests/test_ccompiler_opt_conf.pyr      s   zFakeCCompilerOpt.__init__c                 K   s   |S r   r   )r   ÚsourcesÚflagsr   r   r   r   Údist_compile   s   zFakeCCompilerOpt.dist_compilec                 C   s   t jS r   )r   Ú	fake_info©r   r   r   r   Ú	dist_info   s   zFakeCCompilerOpt.dist_infoF)Ústderrc                 G   s   d S r   r   )r#   r   r   r   r   Údist_log   s   zFakeCCompilerOpt.dist_logN)	Ú__name__Ú
__module__Ú__qualname__r    r   r   r"   Ústaticmethodr$   r   r   r   r   r      s    r   c                   @   sH   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )Ú_TestConfFeatureszlA hook to check the sanity of configured features
-   before it called by the abstract class '_Feature'
    c                 C   sX   | j }| ¡ D ]\}}|  d|||¡ qt | ¡}| ¡ D ]\}}|  d|||¡ q|S )Nzattribute conf_featureszconf_features_partial())Úconf_featuresÚitemsÚtest_featurer   Úconf_features_partial)r   Úconf_allÚfeature_nameÚfeatureÚconf_partialr   r   r   r-   &   s   þ
þz'_TestConfFeatures.conf_features_partialc                 C   sŠ   d  ||| j| j¡}| ¡ st|d ƒ‚| ¡ D ]\}}|  |||¡ |  |||¡ q|  ||||¡ |  	||||¡ |  
||||¡ d S )NzJduring validate '{}' within feature '{}', march '{}' and compiler '{}'
>> z!feature name must be in uppercase)ÚformatÚcc_marchÚcc_nameÚisupperÚAssertionErrorr+   Útest_option_typesÚtest_duplicatesÚtest_impliesÚ
test_groupÚtest_extra_checks)r   ÚlogÚ	search_inr/   Úfeature_dictÚ	error_msgÚoptionÚvalr   r   r   r,   6   s   ýz_TestConfFeatures.test_featurec                 C   s¨   t tfdft fdftfdftfdfttd ƒfdffD ]-\}}||v }|s%qt||ƒsGdd„ g |¢R D ƒ}d |¡}t|d	||t|ƒjf  ƒ‚ |sRt|d
|  ƒ‚d S )N©ÚimpliesÚheadersr   ÚgroupÚdetectÚextra_checks)Údisable)Úinterest)Úimplies_detect)Úautovecc                 S   s   g | ]}|j ‘qS r   )r%   )Ú.0Útr   r   r   Ú
<listcomp>U   s    z7_TestConfFeatures.test_option_types.<locals>.<listcomp>z or z+expected '%s' type for option '%s' not '%s'zinvalid option name '%s')	ÚstrÚlistÚintÚboolÚtypeÚ
isinstanceÚjoinr6   r%   )r   r?   r@   rA   ÚtpÚ	availableÚfound_itÚerror_tpr   r   r   r7   G   s*   
ù	

ÿÿÿz#_TestConfFeatures.test_option_typesc                 C   sF   |dvrd S t |tƒr| ¡ }t|ƒtt|ƒƒkr!t|d|  ƒ‚d S )NrB   z duplicated values in option '%s')rT   rO   ÚsplitÚlenÚsetr6   )r   r?   r@   rA   r   r   r   r8   `   s   
ÿz!_TestConfFeatures.test_duplicatesc                 C   s”   |  d¡d ur	d S |  dd¡}|sd S t|tƒr| ¡ }||v r&t|d ƒ‚|D ]}|  |¡}|d ur@d|v r?t|d|  ƒ‚q(t|d|  ƒ‚d S )NÚdisabledrC   Ú zfeature implies itselfrH   zimplies disabled feature '%s'zimplies non-exist feature '%s'©ÚgetrT   rO   rZ   r6   )r   r?   r=   r/   r>   rC   ÚimplÚ	impl_dictr   r   r   r9   k   s"   

úz_TestConfFeatures.test_impliesc                 C   ól   |  d¡d ur	d S |  dd¡}|sd S t|tƒr| ¡ }|D ]}|  |¡}|r+d|v r,qt|d|  ƒ‚d S )Nr]   rE   r^   rH   z8in option 'group', '%s' already exists as a feature namer_   )r   r?   r=   r/   r>   rE   Úfrb   r   r   r   r:      ó   

ÿüz_TestConfFeatures.test_groupc                 C   rc   )Nr]   rG   r^   rH   zOin option 'extra_checks', extra test case '%s' already exists as a feature namer_   )r   r?   r=   r/   r>   rG   rd   rb   r   r   r   r;   �   re   z#_TestConfFeatures.test_extra_checksN)r%   r&   r'   Ú__doc__r-   r,   r7   r8   r9   r:   r;   r   r   r   r   r)   !   s    r)   c                   @   s&   e Zd Zd	dd„Zdd„ Zdd„ ZdS )
ÚTestConfFeaturesÚrunTestc                 C   s   t j | |¡ |  ¡  d S r   )ÚunittestÚTestCaser   Ú_setup)r   Ú
methodNamer   r   r   r   ¢   s   zTestConfFeatures.__init__c                 C   s
   dt _d S )NT)r   Úconf_nocacher!   r   r   r   rk   ¦   s   
zTestConfFeatures._setupc                 C   s2   t  ¡ D ]\}}|D ]}||dft_tƒ  q
qd S )Nr^   )Úarch_compilersr+   r   r    r)   )r   r   Ú	compilersÚccr   r   r   Útest_features©   s   þÿzTestConfFeatures.test_featuresN)rh   )r%   r&   r'   r   rk   rq   r   r   r   r   rg   ¡   s    
rg   )ri   Úosr   r   r%   Ú__package__Úis_standaloneÚappendÚabspathrU   ÚdirnameÚ__file__Úccompiler_optr   Únumpy.distutils.ccompiler_optÚdictrn   r   r)   rj   rg   Úmainr   r   r   r   Ú<module>   s.     ù
 ÿ