U
    ºmœd%  ã                   @   sÊ  d Z ddlZddlmZmZm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 dsdd	„Zd
d„ Zdtdd„Zdudd„Zdd„ Zdd„ Zdd„ Zddœdd„Zedd�dd„ ƒZG dd „ d eƒZed!eg d"gddd#œfed$gd"gd%difed%gd&gd$difed%gd&d%digd$difed$d%gd&gi feg d&d%digddd#œfed%gd'd(dd#œgd$d(ifeg d'd$digd$difeg d)gd$d(ifg	ƒd*d+„ ƒZd,d-„ Zed!eg d"gddg i d.œfeg d/gdd(dd0gi d.œfeg d1d2d(igdd3g d2d(id.œfed4gd5d2d(igdd(d2d(id6œfgƒd7d8„ ƒZeg d"d%d(igdd(d#œfeg d"d%d(igdd(dd9œfgZed!eg d:d2d(igdd(gd2d(id;œfeg d<gdd0gi d;œfge ƒd=d>„ ƒZd?d@„ Z edAed	fedfedfgƒdBdC„ ƒZ!dDdE„ Z"dFdG„ Z#dHdI„ Z$dJdKdLœdMdN„Z%e&e&ddOœdPdQ„Z'dRdS„ Z(dTdU„ Z)edVe*dWedXdYgfe*dZedXgdYgfe*d[eg gfgƒd\d]„ ƒZ+d^d_„ Z,d`da„ Z-edbee.e/dcƒƒgi ddfedd(d<gd%deidffgƒdgdh„ ƒZ0didj„ Z1edkdl„ ƒZ2dmdn„ Z3dodp„ Z4dqdr„ Z5dS )vz
Test the func_inspect module.
é    N)Úfilter_argsÚget_func_nameÚget_func_code)Ú_clean_win_charsÚformat_signature)ÚMemory)Ú
with_numpy)ÚfixtureÚparametrizeÚraisesc                 C   s   d S ©N© ©ÚxÚyr   r   úV/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/joblib/test/test_func_inspect.pyÚf   s    r   c                 C   s   d S r   r   ©r   r   r   r   Úg   s    r   c                 O   s   d S r   r   )r   r   ÚargsÚkwargsr   r   r   Úh   s    r   é   c                 C   s   d S r   r   r   r   r   r   Úi    s    r   c                 K   s   d S r   r   )r   r   r   r   r   r   Új$   s    r   c                  O   s   d S r   r   )r   r   r   r   r   Úk(   s    r   c                C   s   d S r   r   r   r   r   r   Úm1,   s    r   é   )Úzc                C   s   d S r   r   ©r   r   r   r   r   r   Úm20   s    r    Úmodule)Úscopec                 C   s&   |   d¡}t|jƒ}|jdd„ ƒ}|S )NZjoblib_test_func_inspectc                 S   s   | S r   r   r   r   r   r   Úcached_func_inner<   s    z&cached_func.<locals>.cached_func_inner)Úmktempr   ZstrpathÚcache)Ztmpdir_factoryZcachedirZmemr#   r   r   r   Úcached_func4   s
    


r&   c                   @   s   e Zd Zdd„ ZdS )ÚKlassc                 C   s   |S r   r   )Úselfr   r   r   r   r   E   s    zKlass.fN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r'   C   s   r'   zfunc,args,filtered_args©r   r   r   r   )r   r   é   )r-   c                 C   s   t | f|žŽ |kst‚d S r   ©r   ÚAssertionError©Úfuncr   Zfiltered_argsr   r   r   Útest_filter_argsL   s    r2   c                  C   s&   t ƒ } t| jg dƒd| dœks"t‚d S )Nr,   r   )r   r(   ©r'   r   r   r/   )Úobjr   r   r   Útest_filter_args_methodZ   s    r5   )r   r   Ú*ú**)r   r-   r   é   r8   )r   é   Úeer9   r6   )r   r-   r9   ©r   r   r7   c                 C   s   t | f|žŽ |kst‚d S r   r.   r0   r   r   r   Útest_filter_varargs_   s    
r<   r   ©r   r-   ©r6   r7   )r   r8   c                 C   s   t | f|žŽ |kst‚d S r   r.   r0   r   r   r   Útest_filter_kwargsr   s    r?   c                  C   sp   t tg dddiƒddddidœks&t‚t td¡} t | g dƒdgi dœksNt‚t | dgdƒdgi dœkslt‚d S )	Nr=   r:   r-   r   r;   r,   r>   r   )r   r   r/   Ú	functoolsÚpartialr   ©Úffr   r   r   Útest_filter_args_2|   s    ÿrD   zfunc,funcnamec                 C   s   t | ƒd |kst‚d S )Nr   ©r   r/   )r1   Úfuncnamer   r   r   Útest_func_name†   s    rG   c                 C   s   t | ƒd dkst‚d S )Nr   r#   rE   )r&   r   r   r   Útest_func_name_on_inner_funcŽ   s    rH   c                  C   s@   dd„ } dd„ }| ƒ \}}|ƒ \}}||ks0t ‚||ks<t ‚d S )Nc                  S   s   dd„ } t | ƒS )Nc                   S   s   d S r   r   r   r   r   r   Ú
inner_func™   s    zEtest_func_name_collision_on_inner_func.<locals>.f.<locals>.inner_func©r   ©rI   r   r   r   r   ˜   s    z1test_func_name_collision_on_inner_func.<locals>.fc                  S   s   dd„ } t | ƒS )Nc                   S   s   d S r   r   r   r   r   r   rI   ž   s    zEtest_func_name_collision_on_inner_func.<locals>.g.<locals>.inner_funcrJ   rK   r   r   r   r   �   s    z1test_func_name_collision_on_inner_func.<locals>.g)r/   )r   r   r!   ÚnameZother_moduleZ
other_namer   r   r   Ú&test_func_name_collision_on_inner_func•   s    

rM   c                  C   sª   t djƒd dkst‚tdjƒdd … dks0t‚dd„ } t | dd	�d d
ksPt‚t| ƒd t dd¡kslt‚d| _t | dd	�d d
ksŠt‚t| ƒd t dd¡ks¦t‚d S )NÚaéÿÿÿÿÚlowerr   )NrO   c                 S   s   | S r   r   r   r   r   r   Ú<lambda>­   ó    z*test_func_inspect_errors.<locals>.<lambda>F)Zwin_charactersz<lambda>z.pycz.pyÚ__main__)r   rP   r/   r   Ú__file__Úreplacer*   rB   r   r   r   Útest_func_inspect_errors©   s    rV   Úkw1Úkw2©rW   rX   c                C   s   d S r   r   ©rN   ÚbrW   rX   r   r   r   Úfunc_with_kwonly_args¶   s    r\   )rN   r[   Úreturnc                 C   s   d S r   r   ©rN   r[   r   r   r   Úfunc_with_signatureº   s    r_   c               	   C   sš   t tg ddddœƒdddddœks&t‚ttƒ�} t tg dd	diƒ W 5 Q R X |  d
¡ t tdd	gddddœƒdddœks|t‚t tdgdƒddiks–t‚d S )Nr=   r   r8   rY   r   r-   rZ   )r   r-   r   rX   z?Keyword-only parameter 'kw1' was passed as positional parameterr[   )rN   rW   rN   )r   r\   r/   r   Ú
ValueErrorÚmatchr_   )Úexcinfor   r   r   Útest_filter_args_edge_cases¾   s     ÿþÿ

ÿþÿrc   c                  C   s0   t ƒ } t ƒ }t| jg dƒt|jg dƒks,t‚dS )z† Make sure that calling the same method on two different instances
        of the same class does resolv to different signatures.
    r,   Nr3   r^   r   r   r   Útest_bound_methodsÓ   s    rd   zexception,regex,func,argsz1ignore_lst must be a list of parameters to ignoreÚbarr   z-Ignore list: argument \'(.*)\' is not definedzWrong number of argumentsc              	   C   s0   t | ƒ�}t|f|žŽ  W 5 Q R X | |¡ dS )za Make sure that filter_args returns decent error messages, for the
        sake of the user.
    N)r   r   ra   )Ú	exceptionÚregexr1   r   rb   r   r   r   Útest_filter_args_error_msgÜ   s    
rh   c                  C   s*   ddi} t tg g | ƒ | ddiks&t‚dS )z®None-regression test against 0.12.0 changes.

    https://github.com/joblib/joblib/pull/75

    Make sure filter args doesn't mutate the kwargs dict that gets passed in.
    r   r   N)r   r   r/   )r   r   r   r   Ú#test_filter_args_no_kwargs_mutationì   s    ri   c                  C   s&   d} t | ƒ}dD ]}||kst‚qd S )NzC:\foo\bar\main.py)ú\ú:ú<ú>ú!)r   r/   )ÚstringZmangled_stringÚcharr   r   r   Útest_clean_win_charsø   s    rq   zfunc,args,kwargs,sgn_expectedé   zg([0, 1, 2, 3, 4])Tzk(1, 2, (3, 4), y=True)c                 C   s$   t | f|ž|Ž\}}||ks t‚d S r   )r   r/   )r1   r   r   Zsgn_expectedÚpathZ
sgn_resultr   r   r   Útest_format_signatureÿ   s    rt   c                     sÔ   d} d}d|  ‰ t tˆ ƒ\}}t|ƒ|k s.t‚d}‡ fdd„t|ƒD ƒ}t tf|žŽ \}}t|ƒ|| k snt‚dd„ t|ƒD ƒ}t tf|Ž\}}t|ƒ|| k s¤t‚t tf|ž|Ž\}}t|ƒ|d	 | k sÐt‚d S )
NiÜ  iÆ  rN   rr   c                    s   g | ]}ˆ ‘qS r   r   ©Ú.0Ú_©Úargr   r   Ú
<listcomp>  s     z8test_format_signature_long_arguments.<locals>.<listcomp>c                 S   s   i | ]\}}t |ƒ|“qS r   )Ústr)rv   r   ry   r   r   r   Ú
<dictcomp>  s      z8test_format_signature_long_arguments.<locals>.<dictcomp>r-   )r   r   Úlenr/   ÚrangeÚ	enumerate)Zshortening_thresholdZshortening_targetrw   Ú	signatureZnb_argsr   r   r   rx   r   Ú$test_format_signature_long_arguments  s    r�   c                   C   s   dS )z6 Test the format signature formatting with numpy.
    Nr   r   r   r   r   Útest_format_signature_numpy   s    r‚   c                  C   sB   ddl m}  t| ƒ\}}}|dks&t‚d|ks2t‚d|ks>t‚d S )Nr   ©Úbig5_frr   zdef big5_f():Z"test_func_inspect_special_encoding)Ú.joblib.test.test_func_inspect_special_encodingr„   r   r/   )r„   Ú	func_codeZsource_fileÚ
first_liner   r   r   Útest_special_source_encoding&  s
    rˆ   c                  C   s   ddl m}  t| ƒd S )Nr   rƒ   )r…   r„   r   rƒ   r   r   r   Ú	_get_code.  s    r‰   c                     sH   ddl m} m‰  | dd�‡ fdd„tdƒD ƒƒ}tt|ƒƒdksDt‚d S )	Nr   )ÚParallelÚdelayedr-   )Zn_jobsc                 3   s   | ]}ˆ t ƒƒ V  qd S r   )r‰   ru   ©r‹   r   r   Ú	<genexpr>5  s     z-test_func_code_consistency.<locals>.<genexpr>rr   r   )Zjoblib.parallelrŠ   r‹   r~   r}   Úsetr/   )rŠ   Úcodesr   rŒ   r   Útest_func_code_consistency3  s     r�   )r   )r   )r   )6Ú__doc__r@   Zjoblib.func_inspectr   r   r   r   r   Zjoblib.memoryr   Zjoblib.test.commonr   Zjoblib.testingr	   r
   r   r   r   r   r   r   r   r   r    r&   Úobjectr'   r2   r5   r<   Ztest_filter_kwargs_extra_paramsr?   rD   rG   rH   rM   rV   r\   Úintr_   rc   rd   r`   rh   ri   rq   Úlistr~   rt   r�   r‚   rˆ   r‰   r�   r   r   r   r   Ú<module>   sÐ   



	øÿ

ÿÿÿÿúÿ	
þÿÿþüÿ

ÿ
	 ÿ ÿ ÿüÿ
	ÿÿ

