o
    e                  	   @   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   `/var/www/html/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.     
 