a
    Žù»jb$  ã                   @   sÀ  d Z ddlZddl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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d/gi d-œfeg d0d1d'igdd2g d1d'id-œfed3gd4d1d'igdd'd1d'id5œfgƒd6d7„ ƒZeg d!d$d'igdd'd"œfeg d!d$d'igdd'dd8œfgZed eg d9d1d'igdd'gd1d'id:œfeg d;gdd/gi d:œfge ƒd<d=„ ƒZd>d?„ Z ed@edfed
fedfgƒdAdB„ ƒZ!dCdD„ Z"dEdF„ Z#dGdH„ Z$dIdJdKœdLdM„Z%e&e&ddNœdOdP„Z'dQdR„ Z(dSdT„ Z)edUe*dVedWdXgfe*dYedWgdXgfe*dZeg gfgƒd[d\„ ƒZ+d]d^„ Z,d_d`„ Z-edaee.e/dbƒƒgi dcfeg dd¢d$deidffgƒdgdh„ ƒZ0didj„ Z1edkdl„ ƒZ2dmdn„ Z3dodp„ Z4dqdr„ Z5dS )vz
Test the func_inspect module.
é    N)Ú_clean_win_charsÚfilter_argsÚformat_signatureÚget_func_codeÚget_func_name)ÚMemory)Ú
with_numpy)ÚfixtureÚparametrizeÚraisesc                 C   s   d S ©N© ©ÚxÚyr   r   úCE:\soccer\ml_env\Lib\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   Úm11   s    r   é   )Úzc                C   s   d S r   r   ©r   r   r   r   r   r   Úm25   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_innerA   s    z&cached_func.<locals>.cached_func_inner)Úmktempr   ZstrpathÚcache)Ztmpdir_factoryZcachedirZmemr#   r   r   r   Úcached_func9   s
    


r&   c                   @   s   e Zd Zdd„ ZdS )ÚKlassc                 C   s   |S r   r   )Úselfr   r   r   r   r   I   s    zKlass.fN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r'   H   s   r'   zfunc,args,filtered_args©r   r   r   r   )r   r   é   )r-   c                 C   s   t | g|¢R Ž |ksJ ‚d S r   ©r   ©Úfuncr   Zfiltered_argsr   r   r   Útest_filter_argsQ   s    r1   c                  C   s&   t ƒ } t| jg dƒd| dœks"J ‚d S )Nr,   r   )r   r(   ©r'   r   r   )Úobjr   r   r   Útest_filter_args_methodc   s    r4   )r   r   Ú*ú**)r   r-   r   é   r7   )r   é   Úeer8   r5   )r   r-   r8   ©r   r   r6   c                 C   s   t | g|¢R Ž |ksJ ‚d S r   r.   r/   r   r   r   Útest_filter_varargsh   s    
r;   r   ©r   r-   ©r5   r6   ©r   r7   c                 C   s   t | g|¢R Ž |ksJ ‚d S r   r.   r/   r   r   r   Útest_filter_kwargs{   s    	r?   c                  C   sp   t tg dddiƒddddidœks&J ‚t td¡} t | g dƒdgi dœksNJ ‚t | dgdƒdgi dœkslJ ‚d S )	Nr<   r9   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J ‚d S )Nr   ©r   )r0   Úfuncnamer   r   r   Útest_func_name�   s    rG   c                 C   s   t | ƒd dksJ ‚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s0J ‚||ks<J ‚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_funcrE   ©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_funcrE   rJ   r   r   r   r   §   s    z1test_func_name_collision_on_inner_func.<locals>.gr   )r   r   r!   ÚnameZother_moduleZ
other_namer   r   r   Ú&test_func_name_collision_on_inner_funcž   s    

rL   c                  C   sª   t djƒd dksJ ‚tdjƒdd … dks0J ‚dd„ } t | dd	�d d
ksPJ ‚t| ƒd t dd¡kslJ ‚d| _t | dd	�d d
ksŠJ ‚t| ƒd t dd¡ks¦J ‚d S )NÚaéÿÿÿÿÚlowerr   )NrN   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   rO   r   Ú__file__Úreplacer*   rB   r   r   r   Útest_func_inspect_errors´   s    rU   Úkw1Úkw2©rV   rW   c                C   s   d S r   r   ©rM   ÚbrV   rW   r   r   r   Úfunc_with_kwonly_argsÁ   s    r[   )rM   rZ   Úreturnc                 C   s   d S r   r   ©rM   rZ   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&J ‚ttƒ�"} t tg dd	diƒ W d   ƒ n1 sV0    Y  |  d
¡ t tdd	gddddœƒdddœks�J ‚t tdgdƒddiksªJ ‚d S )Nr<   r   r7   rX   r   r-   rY   )r   r-   r   rW   z?Keyword-only parameter 'kw1' was passed as positional parameterrZ   )rM   rV   rM   )r   r[   r   Ú
ValueErrorÚmatchr^   )Úexcinfor   r   r   Útest_filter_args_edge_casesÉ   s    ü	
0
ÿþrb   c                  C   s0   t ƒ } t ƒ }t| jg dƒt|jg dƒks,J ‚dS )z�Make sure that calling the same method on two different instances
    of the same class does resolv to different signatures.
    r,   Nr2   r]   r   r   r   Útest_bound_methodsÞ   s    rc   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   sF   t | ƒ� }t|g|¢R Ž  W d  ƒ n1 s.0    Y  | |¡ dS )z\Make sure that filter_args returns decent error messages, for the
    sake of the user.
    N)r   r   r`   )Ú	exceptionÚregexr0   r   ra   r   r   r   Útest_filter_args_error_msgç   s    
.rg   c                  C   s*   ddi} t tg g | ƒ | ddiks&J ‚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   Ú#test_filter_args_no_kwargs_mutation  s    rh   c                  C   s&   d} t | ƒ}dD ]}||vsJ ‚qd S )NzC:\foo\bar\main.py)ú\ú:ú<ú>ú!)r   )ÚstringZmangled_stringÚcharr   r   r   Útest_clean_win_chars  s    rp   zfunc,args,kwargs,sgn_expectedé   zg([0, 1, 2, 3, 4]))r   r-   r>   Tzk(1, 2, (3, 4), y=True)c                 C   s*   t | g|¢R i |¤Ž\}}||ks&J ‚d S r   )r   )r0   r   r   Zsgn_expectedÚpathZ
sgn_resultr   r   r   Útest_format_signature  s    	rs   c                     sà   d} d}d|  ‰ t tˆ ƒ\}}t|ƒ|k s.J ‚d}‡ fdd„t|ƒD ƒ}t tg|¢R Ž \}}t|ƒ|| k spJ ‚dd„ t|ƒD ƒ}t tfi |¤Ž\}}t|ƒ|| k sªJ ‚t tg|¢R i |¤Ž\}}t|ƒ|d	 | k sÜJ ‚d S )
NiÜ  iÆ  rM   rq   c                    s   g | ]}ˆ ‘qS r   r   ©Ú.0Ú_©Úargr   r   Ú
<listcomp>.  rQ   z8test_format_signature_long_arguments.<locals>.<listcomp>c                 S   s   i | ]\}}t |ƒ|“qS r   )Ústr)ru   r   rx   r   r   r   Ú
<dictcomp>2  rQ   z8test_format_signature_long_arguments.<locals>.<dictcomp>r-   )r   r   ÚlenÚrangeÚ	enumerate)Zshortening_thresholdZshortening_targetrv   Ú	signatureZnb_argsr   r   r   rw   r   Ú$test_format_signature_long_arguments"  s    r€   c                   C   s   dS )z0Test 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&J ‚d|v s2J ‚d|v s>J ‚d S )Nr   ©Úbig5_frq   zdef big5_f():Z"test_func_inspect_special_encoding©Z.joblib.test.test_func_inspect_special_encodingrƒ   r   )rƒ   Ú	func_codeÚ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   Ú	_get_codeH  s    r‰   c                     sH   ddl m} m‰  | dd�‡ fdd„tdƒD ƒƒ}tt|ƒƒdksDJ ‚d S )	Nr   )ÚParallelÚdelayedr-   )Zn_jobsc                 3   s   | ]}ˆ t ƒƒ V  qd S r   )r‰   rt   ©r‹   r   r   Ú	<genexpr>Q  rQ   z-test_func_code_consistency.<locals>.<genexpr>rq   r   )Zjoblib.parallelrŠ   r‹   r}   r|   Úset)rŠ   Úcodesr   rŒ   r   Útest_func_code_consistencyN  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'   r1   r4   r;   Ztest_filter_kwargs_extra_paramsr?   rD   rG   rH   rL   rU   r[   Úintr^   rb   rc   r_   rg   rh   rp   Úlistr}   rs   r€   r�   rˆ   r‰   r�   r   r   r   r   Ú<module>   sº   



	÷þ
  üþ	
þ þüþ
	
	üüóþ
	þþ

	