
    Ćh7                        S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r
  SSKrSSKrSSKrSSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  S rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S  r*S! r+g)"zJBasic tests for slicer.
An unholy balance of use cases and test coverage.
    N   )AtomicSlicer)Slicer)Alias)Obj)
csc_matrix)
csr_matrix)
dok_matrix)
lil_matrix)ctr_eqc                     [         R                  " [         R                  " SS/5      [         R                  " / SQ5      /[        S9n [         R                  " [         R                  " / SQ5      /5      n[        XS9nUS   n[	        UR
                  US   S   5      (       d   e[	        UR                  U S   S   5      (       d   eg )Nr   r   )         )dtype)         )valuesdatar   r   )nparrayobjectSr   r   r   )r   r   slicersliceds       eC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\slicer/test_slicer.pytest_slicer_ragged_numpyr      s    XX
!Q
 F 88
 D f(FD\F&++tAwqz****&--1....    c            
         SS/SS//n SS/SS//nS	S	/nS
S/nSS/nSn[        U U[        US5      [        US5      [        US5      US9nUS S 2S4   nUR                  SS/:X  d   eUR                  S
S/:X  d   eUR                  S:X  d   eUR
                  SS/:X  d   eUS   nUR                  SS/:X  d   eUR                  S
S/:X  d   eUR                  S:X  d   eUR
                  SS/:X  d   eUSS/S4   n	U	R                  SS/:X  d   eU	R                  S:X  d   eU	R                  S
S/:X  d   eU	R
                  SS/:X  d   eUS   n
U
R                  S:X  d   eU
R                  S:X  d   eU
R                  S
:X  d   eU
R
                  S:X  d   eUS   n
U
R                  SS/:X  d   eU
R                  S:X  d   eU
R                  S
S/:X  d   eU
R
                  SS/:X  d   eUS S  S S 2S4   nUR                  SS/:X  d   eUR                  S:X  d   eUR                  S
S/:X  d   eUR
                  SS/:X  d   eUS	   S S 2S4   n
U
R                  SS/:X  d   eU
R                  S:X  d   eU
R                  S
S/:X  d   eU
R
                  SS/:X  d   eUS
   n
U
S   n
U
R                  S:X  d   eU
R                  S:X  d   eU
R                  S
:X  d   eU
R
                  S:X  d   eg )Nr   r   r   r   r   r   r      id1r1r2f1f2Ar   r   r   identifiersinstance_namesfeature_names	full_name.r   )r$   r'   )r#   r'   )r   r(   r   r+   r,   r   )r   r   r*   r+   r,   r-   r   colon_actualellipses_actualarray_index_actualalias_actualchained_actuals               r   test_slicer_basicr4   )   s   FQFD!fq!fF%.KD\N4LMIk1%+q)F !Q$<LA&&&&&4,666%%---1a&(((VnOAq6)))))dD\999((D000!!aV+++A	*""q!f,,,++t333,,t<<<$$A...*%L!!!%%---&&$...!###+&LA&&&%%---&&4,6661a&(((AYq!t_N1a&(((''4///((T4L888  QF***%=D)LA&&&%%---&&4,6661a&((($<L%L!!!%%---&&$...!###r    c                     / SQn / SQn[        X5      nUS   R                  u  p4US:X  d   eUS:X  d   e[        R                  " SS/SS//5      n[        R                  " SS/S	S
//5      n[        XV5      nUS S 2S4   R                  u  px[	        UR
                  SS/5      (       d   e[	        UR
                  SS	/5      (       d   eg )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r"   r   )r   opd	DataFramer   r   )	abr   actual_aactual_bdf1df2actual_1actual_2s	            r   test_slicer_unnamedrC   l   s    AAqWFHq==q==
,,AA'
(C
,,AA'
(Cs[F1H(//Aq6****(//Aq6****r    c                  l   SS/SS//n SS/SS//nS	S
/SS//nSS/SS//n[        XS9nX$l        X4l        U?US   nUR                  S:X  d   e[        R
                  " [        5         UR                  nS S S 5        UR                  S
:X  d   eU?UR                  / :X  d   eg ! , (       d  f       N5= f)Nr   r   r   r   r   r   r   r"   	   
                     )r   r   r   )r   extrar   r   pytestraises	Exceptionr8   )r   r   rM   
overriddenr   r   _s          r   test_slicer_crudrS   ~   s    FQFD!fq!fFWr2hEr(RH%JD(FLKD\F;;"	y	!MM 
" <<288r>> 
"	!s   )B%%
B3c                      [         R                  " SS/SS//SS/S9n [        U 5      n[        USS 5      (       d   e[        US	S 5      (       d   eUS S 2S4   R                  n[        USS/5      (       d   eg )
Nr   r   r   r   r(   BcolumnsindexrW   )r9   r:   r   getattrr8   r   )dfr   actuals      r   test_slicer_default_aliasr\      s    	1v1v&c
	;BrUF67D))))69d++++AsF^F&1a&!!!!r    c                  Z    / SQ/ SQS.n [        U 5      nUS   R                  nUS:X  d   eg )Nr6   r7   r;   r<   )r;   r   r   )r   r8   )dir   results      r   test_slicer_anon_dictra      s0    y	)BrUFF^FQ;;r    c                     SS/SS/SS//n / SQ/ SQ// S	Q/ S
Q// SQ/ SQ//n/ SQn[        X[        US5      S9nUS   n[        UR                  U 5      (       d   eUR                  S:X  d   eUSS S 2S4   n[        UR                  U S   5      (       d   eUR                  S:X  d   eUSS S 24   S S 2S4   n[        UR                  U S   5      (       d   eUR                  S:X  d   eg )Nr   r   r   r   r   r   r6   r7   r   r"   rE   rF   rG   rH   rI   rJ   rK   rL         )r;   r<   c)r   r   namesr.   r<   r   )r   r(   r   r   rj   )data_2d	values_3drj   r   r[   s        r   test_slicer_3drm      s   1v1v1v&G	I	L!	|$I
 EGQua[AFF^F&++w''''<<3Aq!G_F&++wqz****<<3AqD\!Q$F&++wqz****<<3r    c                      / SQn SnSS//n[        U [        US 5      [        US 5      S9nUS S nUR                  U S S :X  d   eUR                  U:X  d   e[	        UR
                  U5      (       d   eg )Nr   r   r   r   r   r"   rE   )r   	primitive
collectionr   )r   Or   rp   r   rq   )r   rp   rq   r   r[   s        r   test_untrackedrs      s    DIa&JDAi$61ZQUCVWFBQZF;;$r("""y(((&##Z0000r    c                      [        [        R                  " S5      [        [        R                  " S5      S/5      S9n U S S 2S S 2S4   R
                  R                  S:X  d   eg )Nr7   )r   r   r   r   r^   r   )r   r   zerosrr   onesr<   shape)ss    r   test_partial_untrackedry      sK    	BHHY1RWWY%7!#=>AQ1W:<<***r    c                     / SQn [        U S9n[        R                  " S5      nX   R                  S:X  d   e[        R                  " SS/5      n[        X   R                  SS/5      (       d   e[        R                  " SS/SS//5      n[        R                  " [        5         X   nS S S 5        g ! , (       d  f       g = f)Nro   )r   r   r   r   r   r   )	r   r   int64r   r   r   rN   rO   
ValueError)r   r   subkeyrR   s       r   test_numpy_subkeysr~      s    DD\FXXa[F>!###XXq!fF&.%%1v....XX1v1v&'F	z	"N 
#	"	"s   'B55
Cc                  l    [        SS/SS/SS/S9n [        U 5        [        / SQ5      n[        U5        g )	Nr   r   r;   r<   r   r   )namedro   )r   printr   )r   atomics     r   test_repr_smoker      s4    1vSz!Q0F	&M,'F	&Mr    c                      SS/SS/SS/S.n [        U 5      nUS   nUR                  n[        US5      (       d   eX S	.n[        U5      S
   R                  n[        US5      (       d   eg )Nr   r   r   r   r   r   r(   rU   C)rU   r   )XY)r   rU   r   )r   r8   r   )r_   r   r[   	nested_dis       r   test_slicer_simple_dir      sw    1vQF!Q	0BrUFF^FXXF&!"Iy\+&((F&!r    c                  z   [         R                  " / SQ/ SQ/ SQ/5      n [        U 5      n[        U 5      n[	        U 5      n[        U 5      nXX4/nU GHe  n[        S[        U5      5        [        U5      nUS   n[        UR                  S5      (       d   eUS   n[        UR                  S5      (       d   eUS   n[         R                  " / SQ5      n	[        UR                  U	5      (       d   eUS S 2S4   n[         R                  " / S	Q5      n	[        UR                  U	5      (       d   eUS S 2S S 24   n[         R                  " / SQ/ SQ/ SQ/5      n	[        UR                  U	5      (       d   eUSS S 24   n[         R                  " / SQ5      n	[        UR                  U	5      (       a  GMf   e   g )
N)r   r   r   )r   r   r   )r   r   r   testing:r   r   r   )r   r   r   )r   r   r   )r   r   r   r	   r
   r   r   typer   r   r8   )
r   	csc_array	csr_array	dok_array	lil_array
candidates	candidater   r[   expecteds
             r   test_slicer_sparser      su   HHiI67E5!I5!I5!I5!I	=J	j$y/*9fhh""""fhh""""88I&fhh))))188I&fhh))))188Y	9=>fhh))))188I&fhh))))-  r    c                      SS K n U R                  " SS/SS//5      nU R                  " SS/SS	//5      nS
S/n[        X[        US5      S9nUS   nUR                  S:X  d   eUR
                  S:X  d   eg )Nr   r   r   r   r   r   r   r   r"   r&   r'   )r   r   alias)r   r'   )torchtensorr   r(   r   r   )r   r   r   r   r   r   s         r   test_slicer_torchr     s    <<!Q!Q()D\\Aq6Aq6*+F4LEDq{;FG_F;;!==Ar    c                     SS/SS/SS/S.n [         R                  " U 5      n[        U5      nUS   R                  S:X  d   e[	        US S 2S	4   R                  SS/5      (       d   e[	        US
S S 24   R                  / SQ5      (       d   e[         R                  " U SS/S9n[        U5      nUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   e[        US	   5      nUS   R                  S:X  d   eUS
   R                  S:X  d   e[	        US S  R                  SS/5      (       d   eg )Nr   r   r   r   r   r   r   )r   r(   r(   r   )r   r   r   r   r   )rX   )r   r(   r   )r9   r:   r   r8   r   )r_   rZ   r   s      r   test_slicer_pandasr     sI   1vQF!Q	0B	b	BrUF&>q   &C.""QF++++&A,..),,,,	bc
	+BrUF("""&>q   $<>>Qr#wZF#;==A!9;;!&)++1v&&&&r    c                  b    SSK Jn   SnSnU " X5      nUS[        S 5      [        S 5      4:X  d   eg )Nr   )_handle_newaxis_ellipses)r   r   )slicer_internalr   slice)r   	index_tupmax_dimexpanded_index_tups       r   test_handle_newaxis_ellipsesr   2  s7    9IG1)E!U4[%+!>>>>r    c                     SS/n [        U SS9n[        U S/S9n[        U SS9n[        R                  " [        5         [        U S S9nS S S 5        [        R                  " [        5         [        U SS/S9nS S S 5        [	        U SS9n[	        U S/S9n[	        U SS9ng ! , (       d  f       N]= f! , (       d  f       N?= f)Nr(   rU   r   dim)r   r   )r(   rN   rO   rP   rr   )lirR   s     r   test_tracked_dim_arg_smoker   <  s    
sB	"!A	"1#A	"$A 
y	!bdO 
" 
y	!bqe 
" 	
"!A	"1#A	"$A 
"	! 
"	!s   B +B1 
B.1
B?c                     / SQn U n[        U 5      n[        U 5       VVs0 s H  u  p4X4_M	     nnn[        R                  " U 5      n[        R
                  " U 5      n[        R                  " U 5      nXXxXV/n	U	 H  n
[        S[        U
5      5        [        U
5      n[        US   U S   5      (       d   e[        U/ SQ   U 5      (       d   e[        U/ SQ   U S S 5      (       d   e[        US S  U S S  5      (       d   e[        U[        5          U 5      (       d   e[        U
[        5      (       a  M  [        US   U S   5      (       d   e[        USSS2   U SSS2   5      (       a  M   e   g s  snnf )	Nro   r   r   )r   r   r   r   r   r   r   r   r   )tuple	enumerater9   Seriesr   r   r   r   r   r   r   r   
isinstancedict)elementsr   tupixr_   seriesr   torch_array
containersctrr   s               r   test_operations_1dr   P  sk   H	B
/C$X.	/.41!$.B	/YYx FHHXE,,x(K5r:Jj$s)$c"fQi!---- f\*H5555fY'#27777 fQi!----fUWox0000 #t$$&*hrl3333&1Q-!Aa%9999#  
0s   E4c            
         / SQ/ SQ/ SQ/n U n[         R                  " U / SQS9n[        U 5      n[        U 5      n[	        U 5      n[        U 5      nXX4XV/nU GH  n[        S[        U5      5        [        U5      n	[        U	S   U S   5      (       d   e[        U[        5      (       d=  [        U	S   U S   5      (       d   e[        U	SSS	S
24   U S   SS	S
2   5      (       d   e[        U	/ SQS S 24   U 5      (       d   e[        U	S S  U 5      (       d   e[        U	[        5          U 5      (       d   e[        U	S S 2S4   [        U 5       V
Vs/ s H  u  pX
   S   PM     snn
5      (       d   e[        U	SS/S4   S V
s/ s H
  oU
   S   PM     sn
5      (       d   e[        U	SS/S4   S V
s/ s H
  oU
   S   PM     sn
5      (       d   e[        U	SS S 24   U S   5      (       d   e[        U	S   U S   S   5      (       d   e[        U	S   [        U 5       V
Vs/ s H  u  pX
   S   PM     snn
5      (       a  GM   e   g s  snn
f s  sn
f s  sn
f s  snn
f )Nr6   r7   rc   r   rV   r   r   r   r   r   r   r   r   ).r   )r9   r:   r   r	   r
   r   r   r   r   r   r   r   r   r   )r   r   rZ   
sparse_csc
sparse_csr
sparse_dok
sparse_lilr   r   r   r   rR   s               r   test_operations_2dr   m  sg   9i0H	B	h	8BH%JH%JH%JH%J**IJj$s)$c"fQi!---- #t$$&*hrl3333&AaE*HQK!A,>???? fY\*H5555 fQi****fUWox0000fQTl	(@S$T@SX[^@S$TUUUUfaVQY'&)I&Q1+a.&)IJJJJfaVQY'&)I&Q1+a.&)IJJJJfQTlHQK0000fTlHQKN3333fVn)HBU&VBU$!x{1~BU&VWWWW1 $ %U)I)I 'Ws   II5I$Ic            
         / SQ/ SQ// SQ/ SQ// SQ/ SQ//n Sn[         R                  " U 5      n[        R                  " U 5      nU nUn[        R                  " U S   5      [        R                  " U S	   5      [        R                  " U S
   5      /n[        R                  " U S   5      [        R                  " U S	   5      [        R                  " U S
   5      S.nUUUUUU/nU GHg  n	[	        S[        U	5      5        [        U	5      n
[        U
S   U S   5      (       d   e[        U	[        5      (       d=  [        U
S   U S   5      (       d   e[        U
SSSS
24   U S   SSS
2   5      (       d   e[        U
/ SQS S 24   U 5      (       d   e[        U
S S  U 5      (       d   e[        U
[        5          U 5      (       d   e[        U
S S 2S4   [        U 5       VVs/ s H  u  pX   S   PM     snn5      (       d   e[        U
SS	/S4   S Vs/ s H
  oU   S   PM     sn5      (       d   e[        U
SS	/S	4   S Vs/ s H
  oU   S	   PM     sn5      (       d   e[        U
SS S 24   U S   5      (       d   e[        U
S   U S   S	   5      (       d   e/ n[        U 5       HG  u  p/ n[        X   5       H  u  pUR                  X   U   S	   5        M      UR                  U5        MI     [        U
S   U5      (       d   e[        U
S   [        [        U S   5      5       Vs/ s H  oS   U   S	   PM     sn5      (       a  GMh   e   g s  snnf s  snf s  snf s  snf )Nr6   r7   rc   rd   re   rf   ))r6   r7   )rc   rd   )re   rf   r   r   r   r   r   r   r   r   r.   )r   .r   )r   r   r   r   r   r   r   r   r   r   r   r   appendrangelen)r   tuple_elementsr   multi_arraylist_of_liststuples_of_tupleslist_of_multi_arraysdi_of_multi_arraysr   r   r   r   rR   rowscolsjs                   r   test_operations_3dr     sr    
I	L!	|$H
N
 ,,x(K((8$KM%
!
!
! 88HQK 88HQK 88HQK  	J j$s)$c"fQi!---- #t$$&*hrl3333&AaE*HQK!A,>???? fY\*H5555 fQi****fUWox0000fQTl	(@S$T@SX[^@S$TUUUUfaVQY'&)I&Q1+a.&)IJJJJfaVQY'&)I&Q1+a.&)IJJJJfQTlHQK0000fTlHQKN3333h'DAD!(+.HKN1-. /KK	 (
 fVnd++++95Xa[AQ;RS;RaAq 1;RS
 
 	
 
? $ %U)I)I  Ts   #MMM!.M&c            
         SS/SS//n SS/SS//nS	S	/nS
S/nSS/nSn[        U U[        US5      [        US5      [        US5      US9nSS/Ul        UR                  SS/:X  d   eUS S 2S4   R                  S:X  d   e[        R                  " [
        5         US S 2S4   nS S S 5        [        SS/SS9Ul        UR                  SS/:X  d   eUSS S 24   R                  S:X  d   eg ! , (       d  f       NM= f)Nr   r   r   r   r   r   r   r"   r#   r$   r%   r&   r'   r(   r   r)   f3f4f5f6r   )r   r(   r,   rN   rO   rP   )r   r   r*   r+   r,   r-   exprR   s           r   test_attribute_assignmentr     s)   FQFD!fq!fF%.KD\N4LMI
k1%+q)C tCt,,,q!t9""d***	y	!4L 
" 4,A.Ct,,,q!t9""d*** 
"	!s   
C,,
C:),__doc__rN   r   r    r   r   r   r(   r   rr   pandasr9   numpyr   r   scipy.sparser   r	   r
   r   utils_testingr   r   r4   rC   rS   r\   ra   rm   rs   ry   r~   r   r   r   r   r   r   r   r   r   r   r    r    r   <module>r      s             # # # # "/ @$F+$,".1+
	*B
'(?(::#XLD
L+r    