o
    ^Zhb$                     @   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 d%ddZd	d
 Zd%ddZd!d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%dNe&dOe&dPdfdQdRZ'dSdT Z(dUdV Z)edWe*dXedYdZgfe*d[edYgdZgfe*d\eg gfgd]d^ Z+d_d` Z,dadb Z-edcee.e/ddgi defeg dfd$dgidhfgdidj Z0dkdl Z1edmdn Z2dodp Z3dqdr Z4dsdt Z5dS )uz
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      d S N xyr   r   L/var/www/auris/lib/python3.10/site-packages/joblib/test/test_func_inspect.pyf      r   c                 C   r   r   r   r   r   r   r   g   r   r   c                 O   r   r   r   )r   r   argskwargsr   r   r   h!   r   r      c                 C   r   r   r   r   r   r   r   i%   r   r   c                 K   r   r   r   )r   r   r   r   r   r   j)   r   r   c                  O   r   r   r   )r   r   r   r   r   k-   r   r   c                C   r   r   r   r   r   r   r   m11   r   r      )zc                C   r   r   r   r   r   r    r   r   r   m25   r   r"   module)scopec                 C   s&   |  d}t|j}|jdd }|S )NZjoblib_test_func_inspectc                 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   r   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      )r0   c                 C      t | g|R  |ksJ d S r   r   funcr   Zfiltered_argsr   r   r   test_filter_argsQ   s   r5   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    r8   )r   r   ***)r   r0   r      r;   )r      eer<   r9   )r   r0   r<   r   r   r:   c                 C   r1   r   r2   r3   r   r   r   test_filter_varargsh   s   
r?   r!   r   r0   r9   r:   r   r;   c                 C   r1   r   r2   r3   r   r   r   test_filter_kwargs{   s   	rC   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s'J t | dgddgi dks6J d S )	Nr@   r=   r0   r   r>   r/   rA   r   )r   r   	functoolspartialr   ffr   r   r   test_filter_args_2   s   &"rH   zfunc,funcnamec                 C   s   t | d |ks
J d S )Nr   r   )r4   funcnamer   r   r   test_func_name      rK   c                 C   s   t | d dks
J d S )Nr   r&   rI   )r)   r   r   r   test_func_name_on_inner_func   rL   rM   c                  C   s@   dd } dd }|  \}}| \}}||ksJ ||ksJ d S )Nc                  S      dd } t | S )Nc                   S   r   r   r   r   r   r   r   
inner_func   r   zEtest_func_name_collision_on_inner_func.<locals>.f.<locals>.inner_funcrI   rO   r   r   r   r         z1test_func_name_collision_on_inner_func.<locals>.fc                  S   rN   )Nc                   S   r   r   r   r   r   r   r   rO      r   zEtest_func_name_collision_on_inner_func.<locals>.g.<locals>.inner_funcrI   rP   r   r   r   r      rQ   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   

rS   c                  C   s   t djd dksJ tdjdd  dksJ dd } t | dd	d d
ks(J t| d tddks6J d| _t | dd	d d
ksEJ t| d tddksSJ d S )Nalowerr   )NrU   c                 S   r%   r   r   r   r   r   r   <lambda>       z*test_func_inspect_errors.<locals>.<lambda>F)Zwin_charactersz<lambda>z.pycz.py__main__)r   rV   r   __file__replacer-   rF   r   r   r   test_func_inspect_errors   s    r\   kw1kw2r]   r^   c                C   r   r   r   rT   br]   r^   r   r   r   func_with_kwonly_args   r   rb   rT   ra   returnc                 C   r   r   r   rT   ra   r   r   r   func_with_signature   r   re   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 s+w   Y  | d
 t tdd	gdddddddksHJ t tdgdddiksUJ d S )Nr@   r   r;   r_   r   r0   r`   )r   r0   r   r^   z?Keyword-only parameter 'kw1' was passed as positional parameterra   )rT   r]   rT   )r   rb   r   
ValueErrormatchre   )excinfor   r   r   test_filter_args_edge_cases   s    
	
ri   c                  C   s0   t  } t  }t| jg dt|jg dksJ dS )zMake sure that calling the same method on two different instances
    of the same class does resolv to different signatures.
    r/   Nr6   rd   r   r   r   test_bound_methods   s   $rj   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w   Y  || dS )z\Make sure that filter_args returns decent error messages, for the
    sake of the user.
    N)r   r   rg   )	exceptionregexr4   r   rh   r   r   r   test_filter_args_error_msg   s   
rn   c                  C   s*   ddi} t tg g |  | ddiksJ 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   #test_filter_args_no_kwargs_mutation  s   ro   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
   rw   zfunc,args,kwargs,sgn_expected   zg([0, 1, 2, 3, 4]))r   r0   rB   Tzk(1, 2, (3, 4), y=True)c                 C   s*   t | g|R i |\}}||ksJ d S r   )r   )r4   r   r   Zsgn_expectedpathZ
sgn_resultr   r   r   test_format_signature  s   	rz   c                     s   d} d}d|   t t \}}t||k sJ d} fddt|D }t tg|R  \}}t||| k s8J dd t|D }t tfi |\}}t||| k sUJ t tg|R i |\}}t||d	 | k snJ d S )
Ni  i  rT   rx   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)r|   r   r   r   r   r   
<dictcomp>2  s    z8test_format_signature_long_arguments.<locals>.<dictcomp>r0   )r   r   lenrange	enumerate)Zshortening_thresholdZshortening_targetr}   	signatureZnb_argsr   r   r   r~   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:  rX   r   c                  C   sB   ddl m}  t| \}}}|dksJ d|v sJ d|v sJ d S )Nr   big5_frx   zdef big5_f():Z"test_func_inspect_special_encodingZ.joblib.test.test_func_inspect_special_encodingr   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   	_get_codeH  s   r   c                     sH   ddl m} m  | dd fddtdD }tt|dks"J d S )	Nr   )Paralleldelayedr0   )Zn_jobsc                 3   s    | ]} t  V  qd S r   )r   r{   r   r   r   	<genexpr>Q  s    z-test_func_code_consistency.<locals>.<genexpr>rx   r   )Zjoblib.parallelr   r   r   r   set)r   codesr   r   r   test_func_code_consistencyN  s    r   )6__doc__rD   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*   r5   r8   r?   Ztest_filter_kwargs_extra_paramsrC   rH   rK   rM   rS   r\   rb   intre   ri   rj   rf   rn   ro   rw   listr   rz   r   r   r   r   r   r   r   r   r   <module>   s    



	
  
	 
	
	
	

	