
    OwgT                        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                   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                   j#                  dg  ej(                  g       g      d        Zd Zej                   j#                  deeg      d        Zd Zej                   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                   j#                  dddg      d        Zg dZeD  cg c]	  } | evs|  c} Zej                   j#                  dg ed       d        Zej                   j#                  de      d        Z d Z!ej                   j#                  dddg      d        Z"d  Z#yc c} w )!    N)	DataFrame
MultiIndexSeries)frame_transform_kernels)
zip_framesc                 Z    |t         ur"| d   } |dk7  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/horilla/myenv/lib/python3.12/site-packages/pandas/tests/apply/test_frame_transform.py
unpack_objr      s5    
 I#h19KK?vFGJ    c                    t        |||       }t        j                  d      5  t        j                  |      }d d d        |j	                  t        j                  |       }}t        j                  ||       y # 1 sw Y   CxY w)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"      si    
[/4
8C		"  ]]277].FHOOFH% s   A<<Bz
ops, namesr   absolutec           	         | dv rdnd}t        j                  d      5  t        |D cg c]
  } ||       c}|      }d d d        | dv r't        j                  |j
                  |g      _        n&t        j                  |j                  |g      _        |j                  ||       }t        j                  ||       y c c}w # 1 sw Y   xY w)N>   indexr      r   r   r   r   )
r   r   r   r   from_productcolumnsr%   r   r   assert_frame_equal)r   r   opsnames
other_axisopr!   r    s           r   test_transform_listliker.   '   s     l*J		" P=2r+=JOP|%22K4G4G3OP#00+2C2CU1KL""3T"2F&(+ >P Ps   
C	C
	C	C		Cr*   c                     t        | |d      }t        j                  t        d      5  |j	                  |       d d d        y # 1 sw Y   y xY wNr   z$No transform functions were providedmatchr   r
   raises
ValueErrorr   r   r*   r   r   s       r   test_transform_empty_listliker7   =   s@    
[/1
5C	z)O	P c     AAc                  v   t        dg di      } dd}dd}d}t        j                  t        |      5  | j	                  ||gdddd	
       d d d        | j	                  ||gddd	      }t        ddgddgddggt        j                  ddg            }t        j                  ||       y # 1 sw Y   bxY w)Nxr&         r   c                     | |z   |z   S N )r:   acs      r   foo1z4test_transform_listlike_func_with_args.<locals>.foo1I       1uqyr   c                     | |z   |z   S r?   r@   )r:   brB   s      r   foo2z4test_transform_listlike_func_with_args.<locals>.foo2L   rD   r   z/foo1\(\) got an unexpected keyword argument 'b'r1   r=      rF   rB   )rB      	   
   )r:   rC   )r:   rG   r(   )r&   r   )r<   r   )	r   r
   r4   	TypeErrorr   r   from_tuplesr   r)   )dfrC   rG   msgr    r!   s         r   &test_transform_listlike_func_with_argsrR   E   s    	C#	$B =C	y	, 3
dD\1a123 \\4,1\2F
Q!Q"b"&&}'EFH &(+3 3s   B//B8boxc                 h   | dv r3|j                   d   }||g   j                  t        j                        }n<|j                  d   }|j
                  dg   j                  t        j                        }|j                   ||t        j                  i      |       }t        j                  ||       y )N)r   r%   r   r   )r(   r   r   absr%   ilocr   r)   )r   r   rS   er!   r    s         r   test_transform_dictlikerX   [   s     |"s#--bff5a ##QC(22266:""3266{#3$"?F&(+r   c                      t        ddgddgddgd      } | j                  ddgdd      }t        g dg d	gt        dd
gddg            }t        j                  ||       y )Nr&   r<   rH   )rA   rF   rB   r   rU   rI   )      ?r&   rZ   )       @rH   r[   )r   rU   )r   r   r&   )r   r&   r   rM   )r   r   r   r   r)   )rP   r    r!   s      r   test_transform_dictlike_mixedr\   h   sn    	!Qq!fAq6:	;B\\f=>F	&J89i:PQH &(+r   r	   cumsumr	   Bc                     t        | |d      }t        j                  t        d      5  |j	                  |       d d d        y # 1 sw Y   y xY wr0   r3   r6   s       r   test_transform_empty_dictlikera   s   sB     [/1
5C	z)O	P c  r8   	use_applyTFc                     t        ||       }fd}|j                  ||       }|dz   }t        j                  ||       y )Nc                 8    t        |       k(  rt        | dz   S Nr&   
isinstancer5   )r:   r   rb   s    r   funcz test_transform_udf.<locals>.func   s!    
1o661ur   r   r&   )r   r   r   r   )r   r   rb   r   r   rh   r    r!   s     ``    r   test_transform_udfri      sC     [/4
8C ]]4d]+FQwHOOFH%r   )ffillbfillfillnapadbackfillshiftr-   c                     | dz   S re   r@   r:   s    r   <lambda>rr      s
    A r   c                    | dk(  r4|j                  t        j                  j                  t        d             t        ddt        gz  i      }t        j                  ||      }t        }dj                  ddg      }t        j                  ||	      5  |j                  |        d d d        t        j                  ||	      5  |j                  | g       d d d        t        j                  ||	      5  |j                  d| i       d d d        t        j                  ||	      5  |j                  d| gi       d d d        y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)
Nngroupngroup not valid for NDFramer4   reasonr	   r=   |4not supported between instances of 'type' and 'type'unsupported operand typer1   )applymarkerr
   markxfailr5   r   objectr   get_objrN   joinr4   r   )r-   r   requestr   errorrQ   s         r   test_transform_bad_dtyper      sE    
X~KKZ8VW	
 S!vh,'
(C
**S/
*CE
((B&	
C 
uC	( b	uC	( rd	uC	( !sBi !	uC	( #sRDk"# #  ! !# #s0   E	E8E!+E-	EE!E*-E6c                    |dk(  r4| j                  t        j                  j                  t        d             t        dt        gz  g dd      }t        }dj                  dd	g      }t        j                  ||
      5  |j                  |g       d d d        t        j                  ||
      5  |j                  ||d       d d d        t        j                  ||
      5  |j                  |g|gd       d d d        t        j                  ||
      5  |j                  |dg|gd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)Nrt   ru   rv   r=   r;   r^   rx   ry   rz   r1   ro   )r{   r
   r|   r}   r5   r   r~   rN   r   r4   r   )r   r-   rP   r   rQ   s        r    test_transform_failure_typeerrorr      sJ    
X~KKZ8VW	

 
fXI6	7BE
((B&	
C 
uC	( 
bT 
uC	( )
2B'() 
uC	( -
B4rd+,- 
uC	( 6
B=t456 6 ) )- -6 6s0   D?4E(EE#?EEE #E,c                  X   d } t        g dg dd      }d}t        j                  t        |      5  |j	                  | g       d d d        t        j                  t        |      5  |j	                  | | d       d d d        t        j                  t        |      5  |j	                  | g| gd       d d d        t        j                  t        |      5  |j	                  | dg| gd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)Nc                 h    t        j                  t        j                  |             dk  rt        | S NrL   )r   sumr5   rq   s    r   r-   z-test_transform_failure_valueerror.<locals>.op   s&    66"&&)r!r   r;   )i  i  iX  r^   zTransform function failedr1   ro   )r   r
   r4   r5   r   )r-   rP   rQ   s      r   !test_transform_failure_valueerrorr      s    
 
9	:B
%C	z	- 
bT 
z	- )
2B'() 
z	- -
B4rd+,- 
z	- 6
B=t456 6 ) )- -6 6s/   C<)D!DD <DDD D)c                 h     ddgddi fd}  dg      j                   |dgi  y )Nr&   r<   rB   r=   c                 X    t        |       k(  rt        ||gk(  sJ |d   k(  sJ | S )NrB   rf   )r:   rA   rF   rB   expected_argsexpected_kwargsr   rb   s       r   fz%test_transform_passes_args.<locals>.f   sB    
1o661v&&&OC((((r   r   )r   )rb   r   r   r   r   s   `` @@r   test_transform_passes_argsr      sA     FMAhO #OQC""1aK-K?Kr   c                      t        g ddg      } | j                  d       }t        j                  ||        | d   j                  d       }t        j                  || d          y )Ncol1col2rM   c                     | dz   S r   r@   rq   s    r   rr   z0test_transform_empty_dataframe.<locals>.<lambda>  s
    AF r   c                     | dz   S r   r@   rq   s    r   rr   z0test_transform_empty_dataframe.<locals>.<lambda>  s
    AF r   )r   r   r   r)   assert_series_equal)rP   r    s     r   test_transform_empty_dataframer     s[    	2/	0B\\*+F&"%Z!!"23F62f:.r   )$numpyr   r
   pandasr   r   r   pandas._testing_testingr   pandas.tests.apply.commonr   pandas.tests.frame.commonr   r   r"   r|   parametrizer   rU   arrayr.   r7   rR   dictrX   r\   ra   ri   	wont_failframe_kernels_raiser   r   r   r   r   rq   s   0r   <module>r      s\     
  = 0	
& 
''VH
&&"''	Z01	277)	vh'	266277#	$z6&:;	
,
, XRXXb\ 23 4,, v/	, 0	,, 	
	b	x R z"jr"

 tUm4& 5&" E	"9PQQi=OqP  F!4FoFG# H#6 236 46>6. tUm4L 5L$/S Qs   	HH