a
    hÝEb´8  ã                   @   s  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 d dl	m
Z
mZ d dlmZ d dlmZ ddlmZ ddlmZmZ G d	d
„ d
ejƒZG dd„ dejƒZG dd„ dejƒZe ¡ ZG dd„ dejƒZG dd„ dƒZG dd„ deƒZ e Z!G dd„ deƒZ"G dd„ dej#j$ƒZ%dS )é    N)Údoctests)Ú
ErrorClassÚErrorClassPlugin)ÚPlugin)Úsrcé   )Úget_package_name)ÚKnownFailureExceptionÚKnownFailureTestc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚNumpyDocTestFinderc                 C   s´   |du rdS t  |¡r"|j|ju S t  |¡r8|j|jkS t  |¡rN|j|jkS t  |¡rh|j|j	j
jkS t  |¡dur„|t  |¡u S t|dƒrš|j|jkS t|tƒr¨dS tdƒ‚dS )zY
        Return true if the given object is defined in the given
        module.
        NTÚ
__module__z"object must be a class or function)ÚinspectÚ
isfunctionÚ__dict__Ú__globals__Ú	isbuiltinÚ__name__r   ÚisclassÚismethodÚ__self__Ú	__class__Ú	getmoduleÚhasattrÚ
isinstanceÚpropertyÚ
ValueError)ÚselfÚmoduleÚobject© r   úb/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/testing/_private/noseclasses.pyÚ_from_module   s"    





zNumpyDocTestFinder._from_modulec              
   C   sD  t j | |||||||¡ ddlm}m}	m}
m}m} |
|ƒr˜| j	r˜|j
 ¡ D ]H\}}|› d|› �}||ƒst|	|ƒrN|  ||¡rN|  |||||||¡ qN|	|ƒ�r@| j	�r@|j
 ¡ D ]Š\}}t|tƒrÐt||ƒ}t|tƒræt||ƒj}||ƒ�s|	|ƒ�s||ƒ�st|tƒr´|  ||¡r´|› d|› �}|  |||||||¡ q´dS )zm
        Find tests for the given object and any contained objects, and
        add them to `tests`.
        r   )Ú	isroutiner   Úismoduler   r   Ú.N)ÚdoctestÚDocTestFinderÚ_findr   r"   r   r#   r   r   Z_recurser   Úitemsr!   r   ÚstaticmethodÚgetattrÚclassmethodÚ__func__r   )r   ÚtestsÚobjÚnamer   Zsource_linesÚglobsÚseenr"   r   r#   r   r   ZvalnameÚvalZvalname1r   r   r    r'   :   s<    ÿ
ÿÿ


ÿÿ
þÿzNumpyDocTestFinder._findN)r   r   Ú__qualname__r!   r'   r   r   r   r    r      s   r   c                   @   s   e Zd Zdd„ ZdS )ÚNumpyOutputCheckerc                 C   sz   t j | |||¡}|svd|v r"dS | dd¡}| dd¡}dD ]$}| d| d¡}| d| d¡}q>t j | |||¡}|S )Nz#randomTz'>z'<)é   é   z'<i%d'Úint)r%   ÚOutputCheckerÚcheck_outputÚreplace)r   ZwantÚgotÚoptionflagsÚretÚszr   r   r    r9   l   s    ÿ
ÿzNumpyOutputChecker.check_outputN)r   r   r3   r9   r   r   r   r    r4   k   s   r4   c                   @   s   e Zd Zddd„ZdS )ÚNumpyDocTestCaser   NÚ_c                 C   s(   || _ || _tjj| |||||d� d S )N)r<   ÚsetUpÚtearDownÚchecker)Z_result_varZ	_nose_objr%   ÚDocTestCaseÚ__init__)r   Útestr<   rA   rB   rC   r.   Ú
result_varr   r   r    rE   ‰   s    
ýzNumpyDocTestCase.__init__)r   NNNNr@   )r   r   r3   rE   r   r   r   r    r?   ˆ   s     ÿr?   c                   @   sj   e Zd ZdZdZejejB ZddgZ	e
ZeZeZejfdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdS )ÚNumpyDoctestZnumpydoctestiè  zgenerate_numpy_api.pyzsetup.pyc                 C   s   t  | ||¡ d| _d | _d S )NT)r   ÚoptionsZdoctest_testsÚdoctest_result_var©r   ÚparserÚenvr   r   r    rI   ¦   s    zNumpyDoctest.optionsc                 C   sB   t  | ||¡ |  ¡ | _t ¡ | _| jr>dd„ |jjD ƒ|j_d S )Nc                 S   s   g | ]}|j d kr|‘qS )r%   )r/   ©Ú.0Úpr   r   r    Ú
<listcomp>¹   s   
ÿz*NumpyDoctest.configure.<locals>.<listcomp>)	r   Ú	configureÚtest_finder_classÚfinderr%   ZDocTestParserrL   ÚenabledÚplugins©r   rI   Úconfigr   r   r    rR   ¯   s
    

zNumpyDoctest.configurec                 C   sX   t tj |j¡ƒ}tddtdœ|_d|v rT| d¡}|d }t	||ji |gƒ|j|< dS )a`   Configure `test` object to set test context

        We set the numpy / scipy standard doctest namespace

        Parameters
        ----------
        test : test object
            with ``globs`` dictionary defining namespace

        Returns
        -------
        None

        Notes
        -----
        `test` object modified in place
        Ú__main__)Ú__builtins__Ú__file__r   ÚnpZscipyr$   éÿÿÿÿN)
r   ÚosÚpathÚdirnameÚfilenamerZ   Únumpyr0   ÚsplitÚ
__import__)r   rF   Úpkg_namerP   Úp2r   r   r    Úset_test_context¼   s    
ý
zNumpyDoctest.set_test_contextc                 c   s¦   |   |j¡stj d|¡ d S z| j |¡}W n tyB   Y d S 0 |sLd S | ¡  t	|j
ƒ}|D ]>}|jsnqb|jsz||_|  |¡ | j|| j|  ¡ | jd�V  qbd S )NzDoctest doesn't want module %s)r<   rC   rG   )Úmatchesr   ÚnpdÚlogÚdebugrT   ÚfindÚAttributeErrorÚsortr   r[   Zexamplesra   rg   Údoctest_case_classÚdoctest_optflagsÚout_check_classrJ   )r   r   r-   Zmodule_filerF   r   r   r    ÚloadTestsFromModuleæ   s,    

ýz NumpyDoctest.loadTestsFromModulec                 C   s   t jf i t¤Ž d S ©N)rb   Zset_printoptionsÚprint_state©r   r   r   r    ÚafterContext  s    zNumpyDoctest.afterContextc                 C   s(   t j |¡}|| jv rdS tj | |¡S )NF)r^   r_   ÚbasenameÚdoctest_ignoreri   ÚDoctestÚwantFile)r   ÚfileZbnr   r   r    rz     s    
zNumpyDoctest.wantFileN)r   r   r3   r/   Úscorer%   ZNORMALIZE_WHITESPACEÚELLIPSISrp   rx   r?   ro   r4   rq   r   rS   r^   ÚenvironrI   rR   rg   rr   rv   rz   r   r   r   r    rH   •   s   ÿ	*rH   c                   @   s6   e Zd ZdZdZdZdZddd„Zdd	„ Zd
d„ Z	dS )Ú	Unpluggerzi Nose plugin to remove named plugin late in loading

    By default it removes the "doctest" plugin.
    Z	unpluggerTi   r%   c                 C   s
   || _ d S rs   )Ú	to_unplug)r   r€   r   r   r    rE     s    zUnplugger.__init__c                 C   s   d S rs   r   rK   r   r   r    rI     s    zUnplugger.optionsc                    s   ‡ fdd„|j j D ƒ|j _ d S )Nc                    s   g | ]}|j ˆ jkr|‘qS r   )r/   r€   rN   ru   r   r    rQ     s   ÿz'Unplugger.configure.<locals>.<listcomp>)rV   rW   r   ru   r    rR     s    zUnplugger.configureN)r%   )
r   r   r3   Ú__doc__r/   rU   r|   rE   rI   rR   r   r   r   r    r     s   
r   c                   @   s8   e Zd ZdZdZeeddd�Zej	fdd„Z
dd	„ Zd
S )ÚKnownFailurePlugina1  Plugin that installs a KNOWNFAIL error class for the
    KnownFailureClass exception.  When KnownFailure is raised,
    the exception will be logged in the knownfail attribute of the
    result, 'K' or 'KNOWNFAIL' (verbose) will be output, and the
    exception will not be counted as an error or failure.TZ	KNOWNFAILF)ÚlabelZ	isfailurec                 C   s$   d}|j ddd| |d¡dd� d S )NZNOSE_WITHOUT_KNOWNFAILz--no-knownfailÚ
store_trueÚnoKnownFailFz3Disable special handling of KnownFailure exceptions)ÚactionÚdestÚdefaultÚhelp)Ú
add_optionÚget)r   rL   rM   Zenv_optr   r   r    rI   -  s
    þzKnownFailurePlugin.optionsc                 C   s*   | j s
d S || _t|ddƒ}|r&d| _d S )Nr…   F)Zcan_configureÚconfr*   rU   )r   rI   rŒ   Údisabler   r   r    rR   4  s    zKnownFailurePlugin.configureN)r   r   r3   r�   rU   r   r	   Z	knownfailr^   r~   rI   rR   r   r   r   r    r‚   "  s   þr‚   c                   @   s   e Zd ZdZdd„ ZdS )ÚFPUModeCheckPluginzx
    Plugin that checks the FPU mode before and after each test,
    raising failures if the test changed the mode.
    c                    s   ddl m‰  ‡ ‡fdd„}|S )Nr   )Úget_fpu_modec                    sZ   ˆ ƒ }ˆ  | ¡ ˆ ƒ }||krVztd ||¡ƒ‚W n" tyT   |  ˆt ¡ ¡ Y n0 d S )Nz6FPU mode changed from {0:#x} to {1:#x} during the test)rF   ÚAssertionErrorÚformatZ
addFailureÚsysÚexc_info)ÚresultZold_modeZnew_mode©r�   rF   r   r    ÚrunH  s    
ÿÿz/FPUModeCheckPlugin.prepareTestCase.<locals>.run)Znumpy.core._multiarray_testsr�   )r   rF   r–   r   r•   r    ÚprepareTestCaseE  s    z"FPUModeCheckPlugin.prepareTestCaseN)r   r   r3   r�   r—   r   r   r   r    rŽ   ?  s   rŽ   c                   @   s   e Zd Zdd„ ZdS )ÚNumpyTestProgramc                 C   sh   | j du r(tjj| jj| jj| jd�| _ | jj | j ¡}|durF|| _ | j  	| j
¡| _| j ¡ | _| jS )a  Run Tests. Returns true on success, false on failure, and
        sets self.success to the same value.

        Because nose currently discards the test result object, but we need
        to return it to the user, override TestProgram.runTests to retain
        the result
        N)ÚstreamÚ	verbosityrX   )Z
testRunnerÚnoseÚcoreZTextTestRunnerrX   r™   rš   rV   ZprepareTestRunnerr–   rF   r”   ZwasSuccessfulÚsuccess)r   Zplug_runnerr   r   r    ÚrunTests[  s    
þzNumpyTestProgram.runTestsN)r   r   r3   rž   r   r   r   r    r˜   Z  s   r˜   )&r^   r’   r%   r   rb   r›   Znose.pluginsr   ri   Znose.plugins.errorclassr   r   Znose.plugins.baser   Z	nose.utilr   Z
nosetesterr   Úutilsr	   r
   r&   r   r8   r4   rD   r?   Zget_printoptionsrt   ry   rH   r   r‚   ZKnownFailurerŽ   rœ   ZTestProgramr˜   r   r   r   r    Ú<module>   s*   	Ox