
    HWh%                        S r SSKrSSKJrJrJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJrJrJr  SS jrS	 rSS
 jrSS jrS rS rS rSS.S jr\" SS9S 5       r " S S\5      r\" S\/ S/SSS.4\S/S/SS04\S/S/SS04\S/SSS0/SS04\SS/S/0 4\/ SSS0/SSS.4\S/SSSS./SS04\/ SSS0/SS04\/ S /SS04/	5      S! 5       rS" r\" S\/ S/SS/ 0 S#.4\/ S$/SSSS%/0 S#.4\/ S&S'S0/SS(/ S'S0S#.4\S)/S*S'S0/SSS'S0S+.4/5      S, 5       r\/ SSS0/SSS.4\/ SSS0/SSSS-.4/r\" S\/ S.S'S0/SS/S'S0S/.4\/ S0/SS%/0 S/.4/\-   5      S1 5       rS2 r \" S3\S44\S54\S64/5      S7 5       r!S8 r"S9 r#S: r$S;S<S=.S> jr%S?\&S@\&SAS4SB jr'SC r(SD r)\" SE\*SF\SGSH/4\*SI\SG/SH/4\*SJ\/ /4/5      SK 5       r+SL r,SM r-\" SN\\." \/" SO5      5      /0 SP4\/ SQQSSR0SS4/5      ST 5       r0SU r1\SV 5       r2SW r3SX r4SY r5g)Zz
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                     g N xys     ?/usr/lib/python3/dist-packages/joblib/test/test_func_inspect.pyfr              c                     g r   r   r   s    r   gr      r   r   c                     g r   r   )r   r   argskwargss       r   hr      r   r      c                     g r   r   r   s    r   ir        r   r   c                     g r   r   )r   r   r   s      r   jr"   $   r   r   c                      g r   r   )r   r   s     r   kr$   (   r   r   c                    g r   r   r   s     r   m1r&   ,   r   r      )zc                    g r   r   r   r   r(   s      r   m2r+   0   r   r   module)scopec                 v    U R                  S5      n[        UR                  5      nUR                  S 5       nU$ )Njoblib_test_func_inspectc                     U $ r   r   r   s    r   cached_func_inner&cached_func.<locals>.cached_func_inner<   s    r   )mktempr   strpathcache)tmpdir_factorycachedirmemr1   s       r   cached_funcr9   4   sC    
 $$%?@H
!!
"CYY  r   c                       \ rS rSrS rSrg)KlassC   c                     U$ r   r   )selfr   s     r   r   Klass.fE   s    r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r;   r;   C   s    r   r;   zfunc,args,filtered_argsr   r   r   r   )r   r      )rF   c                 (    [        U /UQ76 U:X  d   eg r   r   funcr   filtered_argss      r   test_filter_argsrL   L   s     t#d#}444r   c                  X    [        5       n [        U R                  / S5      SU S.:X  d   eg )NrE   r   )r   r>   r;   r   r   )objs    r   test_filter_args_methodrP   Z   s)    
'Csuub%(!S,AAAAr   )r   r   ***)r   rF   r'      rS   )r      eerT   rQ   )r   rF   rT   r   r   rR   c                 (    [        U /UQ76 U:X  d   eg r   rH   rI   s      r   test_filter_varargsrX   _   s     t#d#}444r   r*   r   rF   rQ   rR   r'   rS   c                 (    [        U /UQ76 U:X  d   eg r   rH   rI   s      r   test_filter_kwargsr]   r   s     t#d#}444r   c                      [        [        / SSS05      SSSS0S.:X  d   e[        R                  " [        S5      n [        U / S5      S/0 S.:X  d   e[        U S/S5      S/0 S.:X  d   eg )	NrY   rU   rF   r   rV   rE   rZ   r   )r   r"   	functoolspartialr   ffs    r   test_filter_args_2rc   |   s    2vay1!D!9-. / . 
		1a	 Br2u%s")====rC5%(1#R,@@@@r   zfunc,funcnamer   r   r9   c                 ,    [        U 5      S   U:X  d   eg )Nr   r   )rJ   funcnames     r   test_func_namerg      s    
 q!X---r   c                 ,    [        U 5      S   S:X  d   eg )Nr   r1   re   )r9   s    r   test_func_name_on_inner_funcri      s     %a(,????r   c                  P    S n S nU " 5       u  p#U" 5       u  pEX5:X  d   eX$:w  d   eg )Nc                      S n [        U 5      $ )Nc                      g r   r   r   r   r   
inner_funcEtest_func_name_collision_on_inner_func.<locals>.f.<locals>.inner_func       r   re   rm   s    r   r   1test_func_name_collision_on_inner_func.<locals>.f       	Z((r   c                      S n [        U 5      $ )Nc                      g r   r   r   r   r   rm   Etest_func_name_collision_on_inner_func.<locals>.g.<locals>.inner_func   ro   r   re   rp   s    r   r   1test_func_name_collision_on_inner_func.<locals>.g   rr   r   r   )r   r   r,   nameother_module
other_names         r   &test_func_name_collision_on_inner_funcrz      s9    )
)
 3LF sL!!!r   c                  |   [        SR                  5      S   S:X  d   e[        SR                  5      SS  S:X  d   eS n [        U SS9S   S	:X  d   e[        U 5      S   [        R	                  S
S5      :X  d   eSU l        [        U SS9S   S	:X  d   e[        U 5      S   [        R	                  S
S5      :X  d   eg )Nalowerr   )Nr}   c                     U $ r   r   r   s    r   <lambda>*test_func_inspect_errors.<locals>.<lambda>   s    1r   F)win_charactersz<lambda>z.pycz.py__main__)r   r~   r   __file__replacerA   ra   s    r   test_func_inspect_errorsr      s    #B'7222#AB':555	BE226*DDDQ8#3#3FE#BBBBBME226*DDDQ8#3#3FE#BBBBr   kw1kw2r   r   c                    g r   r   r|   br   r   s       r   func_with_kwonly_argsr      r   r   r|   r   returnc                     g r   r   r|   r   s     r   func_with_signaturer      r   r   c                  T   [        [        / SSSS.5      SSSSS.:X  d   e[        [        5       n [        [        / SS	S05        S S S 5        W R	                  S
5        [        [        SS	/SSSS.5      SSS.:X  d   e[        [
        S/S5      SS0:X  d   eg ! , (       d  f       NZ= f)NrY   r'   rS   r   r   rF   r   )r   rF   r'   r   z?Keyword-only parameter 'kw1' was passed as positional parameterr   )r|   r   r|   )r   r   r   
ValueErrormatchr   )excinfos    r   test_filter_args_edge_casesr      s    )2va(	*a!,	-.	- 

	w)2y5!*E 
MM   	)C<a(	*		 +cUF;QxGHG 
	s   B
B'c                      [        5       n [        5       n[        U R                  / S5      [        UR                  / S5      :w  d   eg)zyMake sure that calling the same method on two different instances
of the same class does resolv to different signatures.
rE   NrN   r   s     r   test_bound_methodsr      s:     	AAqssB&+acc2u*EEEEr   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                     [        U 5       n[        U/UQ76   SSS5        WR                  U5        g! , (       d  f       N = f)zTMake sure that filter_args returns decent error messages, for the
sake of the user.
N)r   r   r   )	exceptionregexrJ   r   r   s        r   test_filter_args_error_msgr      s5     
		gD 4  
MM% 
	s	   3
Ac                  D    SS0n [        [        / / U 5        U SS0:X  d   eg)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   s    r   #test_filter_args_no_kwargs_mutationr      s-     1XF2r6"c1Xr   c                  >    Sn [        U 5      nS H
  nX!;  a  M
   e   g )NzC:\foo\bar\main.py)\:<>!)r   )stringmangled_stringchars      r   test_clean_win_charsr      s'    "F%f-N*))) +r   zfunc,args,kwargs,sgn_expected   zg([0, 1, 2, 3, 4]))r   rF   r[   Tzk(1, 2, (3, 4), y=True)c                 4    [        U /UQ70 UD6u  pEXS:X  d   eg r   )r   )rJ   r   r   sgn_expectedpath
sgn_results         r   test_format_signaturer      s'    
 (>t>v>D%%%r   c                     Sn SnSU -  n[        [        U5      u  p4[        U5      U:  d   eSn[        U5       Vs/ s H  o2PM     nn[        [        /UQ76 u  p4[        U5      X-  :  d   e[	        U5       VVs0 s H  u  pr[        U5      U_M     nnn[        [        40 UD6u  p4[        U5      X-  :  d   e[        [        /UQ70 UD6u  p4[        U5      US-  U-  :  d   eg s  snf s  snnf )Ni  i  r|   r   rF   )r   r   lenrange	enumeratestr)	shortening_thresholdshortening_targetarg_	signaturenb_argsr   r    r   s	            r   $test_format_signature_long_argumentsr     s    !
$
$C#As+LAy>----Gw(ACD(#A--LAy>-7777(1$8fac!fckF8#A00LAy>-7777#A777LAy>-1G;;;; ) 9s   C)<C.c                      g)z5Test the format signature formatting with numpy.
    Nr   r   r   r   test_format_signature_numpyr      s    r   c                  \    SSK Jn   [        U 5      u  pnUS:X  d   eSU;   d   eSU;   d   eg )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_lines       r   test_special_source_encodingr   &  s<    E)6v)>&IJ??i'''/;>>>r   c                  *    SSK Jn   [        U 5      S   $ )Nr   r   r   r   s    r   	_get_coder   .  s    E ##r   c                     ^ SSK Jn Jm  U " SS9" U4S j[        S5       5       5      n[	        [        U5      5      S:X  d   eg )Nr   )ParalleldelayedrF   )n_jobsc              3   F   >#    U  H  nT" [         5      " 5       v   M     g 7fr   )r   ).0r   r   s     r   	<genexpr>-test_func_code_consistency.<locals>.<genexpr>5  s     FXwy133Xs   !r   r   )joblib.parallelr   r   r   r   set)r   codesr   s     @r   test_func_code_consistencyr   3  s5    1AFU1XFFEs5z?ar   )6__doc__r_   joblib.func_inspectr   r   r   r   r   joblib.memoryr   joblib.test.commonr	   joblib.testingr
   r   r   r   r   r   r    r"   r$   r&   r+   r9   objectr;   rL   rP   rX   test_filter_kwargs_extra_paramsr]   rc   rg   ri   rz   r   r   intr   r   r   r   r   r   r   listr   r   r   r   r   r   r   r   r   r   <module>r      s    I I B   ) 7 7
							  	 	x F  &2u+QQ/0C5%.3(+C5%.3(+C5%#q*S!H5C:u%r*2tc1X&aa(89C5"AA./#q:2rC8$sAh/2u+Qx(*	+5	+5B
 &2u+QRr242|$QaV2682wq	*Rbq	:<C5*tQi0QtQi0234545
 "dS!H	QQ/0"dS!H	QQQ78#  &2vay)VD!9-/2v,V2&() -	-.5.5A _3x!S +];= >.>.@"(
C (-% 		3 	3 	4 	I*F (N5(#%KE7H%'62$		* ,4a>"B(<=.3+/HIKL&L&<0  
?$
 r   