
    EgT                        d dl Zd dlZd dlmZmZmZ d dlmZ	 d dl
mZ d dlmZ d Zd Zej                            dej        gdgfej        ej        gd	dgf ej        ej        g          dgf ej        ej        ej        g          d	dgfg          d
             Zej                            dg  ej        g           g          d             Zd Zej                            deeg          d             Zd Zej                            di dg ig dddg dg dgddgg dg          d             Zej                            dddg          d             Zg dZd eD             Zej                            dg ed           d             Zej                            de          d             Z d Z!ej                            dddg          d              Z"d! Z#dS )"    N)	DataFrame
MultiIndexSeries)frame_transform_kernels)
zip_framesc                 b    |t           ur%| d         } |dk    rt          j        d|            | S )zm
    Helper to ensure we have the right type of object for a test parametrized
    over frame_or_series.
    Ar   z%Test is only for DataFrame with axis=)r   pytestskip)objklassaxiss      \/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/apply/test_frame_transform.py
unpack_objr      s?    
 I#h199KFFFGGGJ    c                    t          |||           }t          j        d          5  t          j        |          }d d d            n# 1 swxY w Y   |                    t          j        |           }|}t          j        ||           d S )Nignoreallr   )r   nperrstatesqrt	transformtmassert_equal)r   float_frameframe_or_seriesr   f_sqrtresultexpecteds          r   test_transform_ufuncr"      s    
[/4
8
8C		"	"	"                 ]]27]..FHOFH%%%%%s   AAAz
ops, namesr   absolutec                    | dv rdnd}t          j        d          5  t          fd|D             |          }d d d            n# 1 swxY w Y   | dv r!t          j        j        |g          |_        n t          j        j        |g          |_                            ||           }t          j	        ||           d S )N>   indexr      r   r   r   c                 &    g | ]} |          S  r(   ).0opr   s     r   
<listcomp>z+test_transform_listlike.<locals>.<listcomp>4   s!    ===2rr+===r   r   )
r   r   r   r   from_productcolumnsr%   r   r   assert_frame_equal)r   r   opsnames
other_axisr!   r    s    `     r   test_transform_listliker2   '   s,    l**J		"	"	" P P=======JOOOP P P P P P P P P P P P P P P|%2K4G3OPP#0+2CU1KLL""3T"22F&(+++++s   A		AAr/   c                     t          | |d          }t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S Nr   z$No transform functions were providedmatchr   r
   raises
ValueErrorr   r   r/   r   r   s       r   test_transform_empty_listliker;   =   s    
[/1
5
5C	z)O	P	P	P  c                    AAAc                     t          dg di          } dd}dd}d}t          j        t          |	          5  |                     ||gdd
d
d           d d d            n# 1 swxY w Y   |                     ||gdd
d          }t          ddgddgddggt          j        ddg                    }t          j        ||           d S )Nxr&         r&   r   c                     | |z   |z   S Nr(   )r>   acs      r   foo1z4test_transform_listlike_func_with_args.<locals>.foo1I       1uqyr   r@   c                     | |z   |z   S rC   r(   )r>   brE   s      r   foo2z4test_transform_listlike_func_with_args.<locals>.foo2L   rG   r   z/foo1\(\) got an unexpected keyword argument 'b'r5   rA      rI   rE   )rE      	   
   )r>   rF   )r>   rJ   r-   )r&   r   )r@   r   )	r   r
   r8   	TypeErrorr   r   from_tuplesr   r.   )dfrF   rJ   msgr    r!   s         r   &test_transform_listlike_func_with_argsrU   E   sH   	C#	$	$B       =C	y	,	,	, 3 3
dD\1a12223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 \\4,1\22F
Q!Q"b"&}'EFF  H &(+++++s   A""A&)A&boxc                 h   | dv r4|j         d         }||g                             t          j                  }n8|j        d         }|j        dg                             t          j                  }|                     ||t          j        i          |           }t          j        ||           d S )N)r   r%   r   r   )r-   r   r   absr%   ilocr   r.   )r   r   rV   er!   r    s         r   test_transform_dictliker[   [   s     |"s#--bf55a #QC(2226::""3326{#3#3$"??F&(+++++r   c                      t          ddgddgddgd          } |                     ddgdd          }t          g dg d	gt          dd
gddg                    }t          j        ||           d S )Nr&   r@   rK   )rD   rI   rE   r   rX   rL   )      ?r&   r]   )       @rK   r^   )r   rX   )r   r   r&   )r   r&   r   rP   )r   r   r   r   r.   )rS   r    r!   s      r   test_transform_dictlike_mixedr_   h   s    	!Qq!fAq6::	;	;B\\f==>>F	&J89i:PQQ  H &(+++++r   r	   cumsumr	   Bc                     t          | |d          }t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S r4   r7   r:   s       r   test_transform_empty_dictlikerd   s   s     [/1
5
5C	z)O	P	P	P  c                 r<   	use_applyTFc                     t          ||           }fd}|                    ||           }|dz   }t          j        ||           d S )Nc                 D    t          |           k    rt          | dz   S Nr&   
isinstancer9   )r>   r   re   s    r   funcz test_transform_udf.<locals>.func   s'    
1o66661ur   r   r&   )r   r   r   r   )r   r   re   r   r   rk   r    r!   s     ``    r   test_transform_udfrl      sm     [/4
8
8C      ]]4d]++FQwHOFH%%%%%r   )ffillbfillfillnapadbackfillshiftc                 $    g | ]}|t           v|S r(   )	wont_fail)r)   r>   s     r   r+   r+      s"    PPPQQi=O=Oq=O=O=Or   r*   c                     | dz   S rh   r(   r>   s    r   <lambda>rw      s
    A r   c                 D   | dk    r9|                     t          j                            t          d                     t          ddt          gz  i          }t          j        ||          }t          }d
                    ddg          }t          j        ||	          5  |                    |            d d d            n# 1 swxY w Y   t          j        ||	          5  |                    | g           d d d            n# 1 swxY w Y   t          j        ||	          5  |                    d| i           d d d            n# 1 swxY w Y   t          j        ||	          5  |                    d| gi           d d d            d S # 1 swxY w Y   d S )
Nngroupngroup not valid for NDFramer8   reasonr	   rA   |4not supported between instances of 'type' and 'type'unsupported operand typer5   )applymarkerr
   markxfailr9   r   objectr   get_objrQ   joinr8   r   )r*   r   requestr   errorrT   s         r   test_transform_bad_dtyper      s    
X~~KZ8VWW	
 	
 	
 S!vh,'
(
(C
*S/
*
*CE
((B&	
 C 
uC	(	(	(  b              	uC	(	(	(  rd              	uC	(	(	( ! !sBi   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	uC	(	(	( # #sRDk"""# # # # # # # # # # # # # # # # # #sH   #CC	C	&D		DD*EEE/FFFc                 2   |dk    r9|                      t          j                            t          d                     t          dt          gz  g dd          }t          }d                    dd	g          }t          j	        ||
          5  |
                    |g           d d d            n# 1 swxY w Y   t          j	        ||
          5  |
                    ||d           d d d            n# 1 swxY w Y   t          j	        ||
          5  |
                    |g|gd           d d d            n# 1 swxY w Y   t          j	        ||
          5  |
                    |dg|gd           d d d            d S # 1 swxY w Y   d S )Nry   rz   r{   rA   r?   ra   r}   r~   r   r5   rr   )r   r
   r   r   r9   r   r   rQ   r   r8   r   )r   r*   rS   r   rT   s        r    test_transform_failure_typeerrorr      s    
X~~KZ8VWW	
 	
 	

 
fXIII66	7	7BE
((B&	
 C 
uC	(	(	(  
bT               
uC	(	(	( ) )
2B''((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
uC	(	(	( - -
B4rd++,,,- - - - - - - - - - - - - - - 
uC	(	(	( 6 6
B=t445556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6sH   B44B8;B8C::C>C>EE	E#FFFc                     d } t          g dg dd          }d}t          j        t          |          5  |                    | g           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    | | d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    | g| gd           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    | dg| gd           d d d            d S # 1 swxY w Y   d S )Nc                 h    t          j        t          j        |                     dk     rt          | S NrO   )r   sumr9   rv   s    r   r*   z-test_transform_failure_valueerror.<locals>.op   s*    6"&))r!!r   r?   )i  i  iX  ra   zTransform function failedr5   rr   )r   r
   r8   r9   r   )r*   rS   rT   s      r   !test_transform_failure_valueerrorr      s^     
 
99	:	:B
%C	z	-	-	-  
bT               
z	-	-	- ) )
2B''((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
z	-	-	- - -
B4rd++,,,- - - - - - - - - - - - - - - 
z	-	-	- 6 6
B=t445556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6sG   AA!A B%%B),B)C22C69C6EEEc                 f     ddgddi fd}  dg          j         |dgR i  d S )Nr&   r@   rE   rA   c                 n    t          |           k    rt          ||gk    sJ |d         k    sJ | S )NrE   ri   )r>   rD   rI   rE   expected_argsexpected_kwargsr   re   s       r   fz%test_transform_passes_args.<locals>.f   sN    
1o66661v&&&&OC(((((r   r   )r   )re   r   r   r   r   s   `` @@r   test_transform_passes_argsr      s{     FMAhO        #OOQC"1aK-KKK?KKKKKr   c                      t          g ddg          } |                     d           }t          j        ||            | d                             d           }t          j        || d                    d S )Ncol1col2rP   c                     | dz   S r   r(   rv   s    r   rw   z0test_transform_empty_dataframe.<locals>.<lambda>  s
    AF r   c                     | dz   S r   r(   rv   s    r   rw   z0test_transform_empty_dataframe.<locals>.<lambda>  s
    AF r   )r   r   r   r.   assert_series_equal)rS   r    s     r   test_transform_empty_dataframer     sy    	2/	0	0	0B\\**++F&"%%%Z!!"2"233F62f:.....r   )$numpyr   r
   pandasr   r   r   pandas._testing_testingr   pandas.tests.apply.commonr   pandas.tests.frame.commonr   r   r"   r   parametrizer   rX   arrayr2   r;   rU   dictr[   r_   rd   rl   rt   frame_kernels_raiser   r   r   r   r   r(   r   r   <module>r      sW                
       = = = = = = 0 0 0 0 0 0	 	 	
& 
& 
& 
'VH
&"'	Z01	27)		vh'	2627#	$	$z6&:;	 
, 
, 
, XRXb\\ 233  43, , ,, v//	, 	, 0/	,, , , 	
	b	x  R  z""jr""
 
 
 
 tUm44& & 54&" EDD	PP"9PPP  F!4FooFGG# # HG#6 2336 6 436>6 6 6. tUm44L L 54L$/ / / / /r   