o
    `^h%                     @   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 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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%dOe&dPe&dQdfdRdSZ'dTdU Z(dVdW Z)edXe*dYedZd[gfe*d\edZgd[gfe*d]eg gfgd^d_ Z+d`da Z,dbdc Z-eddee.e/degi dffeg dgd%dhidifgdjdk Z0dldm Z1edndo Z2dpdq Z3drds Z4dtdu 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      d S N xyr   r   [/home/air/shanriGPT/back/venv/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   m1,   r   r      )zc                C   r   r   r   r   r   r    r   r   r   m20   r   r"   module)scopec                 C   s&   |  d}t|j}|jdd }|S )Njoblib_test_func_inspectc                 S      | S r   r   r   r   r   r   cached_func_inner<   s   z&cached_func.<locals>.cached_func_inner)mktempr   strpathcache)tmpdir_factorycachedir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   r   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      )r5   c                 C      t | g|R  |ksJ d S r   r   funcr   filtered_argsr   r   r   test_filter_argsL   s   r;   c                  C   s&   t  } t| jg dd| dksJ d S )Nr4   r   )r   r0   r/   r   r   )objr   r   r   test_filter_args_methodZ   s    r>   )r   r   ***)r   r5   r      rA   )r      eerB   r?   )r   r5   rB   r   r   r@   c                 C   r6   r   r7   r8   r   r   r   test_filter_varargs_   s   
rE   r!   r   r5   r?   r@   r   rA   c                 C   r6   r   r7   r8   r   r   r   test_filter_kwargsr   s   rI   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 )	NrF   rC   r5   r   rD   r4   rG   r   )r   r   	functoolspartialr   ffr   r   r   test_filter_args_2|   s   "rN   zfunc,funcnamec                 C   s   t | d |ks
J d S )Nr   r   )r9   funcnamer   r   r   test_func_name   s   rQ   c                 C   s   t | d dks
J d S )Nr   r'   rO   )r.   r   r   r   test_func_name_on_inner_func   s   rR   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_funcrO   rT   r   r   r   r         z1test_func_name_collision_on_inner_func.<locals>.fc                  S   rS   )Nc                   S   r   r   r   r   r   r   r   rT      r   zEtest_func_name_collision_on_inner_func.<locals>.g.<locals>.inner_funcrO   rU   r   r   r   r      rV   z1test_func_name_collision_on_inner_func.<locals>.gr   )r   r   r#   nameother_module
other_namer   r   r   &test_func_name_collision_on_inner_func   s   

rZ   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   )Nr\   c                 S   r&   r   r   r   r   r   r   <lambda>       z*test_func_inspect_errors.<locals>.<lambda>F)win_charactersz<lambda>z.pycz.py__main__)r   r]   r   __file__replacer2   rL   r   r   r   test_func_inspect_errors   s    rd   kw1kw2re   rf   c                C   r   r   r   r[   bre   rf   r   r   r   func_with_kwonly_args   r   rj   r[   ri   returnc                 C   r   r   r   r[   ri   r   r   r   func_with_signature   r   rm   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 )NrF   r   rA   rg   r   r5   rh   )r   r5   r   rf   z?Keyword-only parameter 'kw1' was passed as positional parameterri   )r[   re   r[   )r   rj   r   
ValueErrormatchrm   )excinfor   r   r   test_filter_args_edge_cases   s   

rq   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.
    r4   Nr<   rl   r   r   r   test_bound_methods   s   $rr   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 )za Make sure that filter_args returns decent error messages, for the
        sake of the user.
    N)r   r   ro   )	exceptionregexr9   r   rp   r   r   r   test_filter_args_error_msg   s   
rv   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   rw   c                  C   s&   d} t | }dD ]}||vsJ qd S )NzC:\foo\bar\main.py)\:<>!)r   )stringmangled_stringcharr   r   r   test_clean_win_chars   s
   r   zfunc,args,kwargs,sgn_expected   zg([0, 1, 2, 3, 4]))r   r5   rH   Tzk(1, 2, (3, 4), y=True)c                 C   s*   t | g|R i |\}}||ksJ d S r   )r   )r9   r   r   sgn_expectedpath
sgn_resultr   r   r   test_format_signature   s   r   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  r[   r   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>  s    z8test_format_signature_long_arguments.<locals>.<dictcomp>r5   )r   r   lenrange	enumerate)shortening_thresholdshortening_targetr   	signaturenb_argsr   r   r   r   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   r_   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_fr   zdef big5_f():"test_func_inspect_special_encoding.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_code.  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delayedr5   )n_jobsc                 3   s    | ]} t  V  qd S r   )r   r   r   r   r   	<genexpr>5  s    z-test_func_code_consistency.<locals>.<genexpr>r   r   )joblib.parallelr   r   r   r   set)r   codesr   r   r   test_func_code_consistency3  s    r   )6__doc__rJ   joblib.func_inspectr   r   r   r   r   joblib.memoryr   joblib.test.commonr   joblib.testingr	   r
   r   r   r   r   r   r   r   r   r"   r.   objectr/   r;   r>   rE   test_filter_kwargs_extra_paramsrI   rN   rQ   rR   rZ   rd   rj   intrm   rq   rr   rn   rv   rw   r   listr   r   r   r   r   r   r   r   r   r   r   <module>   s    



	

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