U
    e%                     @   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   ^/var/www/html/assets/scripts/venv/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stt| d tddkst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st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 )zNone-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 stt tf||\}}t||d	 | k st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   



	

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