
    .i6'                     v    d dl Zd dlZd dlmc mZ d dlZd dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZ  G d d      Zy)    N)CategoricalDtype	DataFrameIndex
MultiIndexSeries)BooleanDtypec                       e Zd Zd Zej
                  j                  dddg      d        Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zej
                  j                  dg d      d        Zd Zd Zy)TestMultiIndexBasicc                    t        g dg dt        j                  j                  d      j                  d      d      j	                  ddg      }t        j                  |      5  |j                  d    d d d        |j                  g d	   }t        j                  |      5  |j                  d
    d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)N)r   r      r   )xr   zy      )jimjoejolier   r   )r   r   )r   r      r   )r   )	r   nprandomdefault_rng	set_indextmassert_produces_warninglociloc)selfperformance_warningdfs      n/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/indexing/multiindex/test_multiindex.pytest_multiindex_perf_warnz-TestMultiIndexBasic.test_multiindex_perf_warn   s    #+..q188;
 )UEN
# 	 ''(;< 	FF8	 WW\"''(;< 	FF4L	 			 		 	s   &B=$C	=C	Coffset   c           
      ^   d}||z   }|j                         5  |j                  t        d|       t        t	        j
                  |      t        j                  dg|z  t	        j
                  |      f            }|d   dk(  sJ |d   dk(  sJ |d   d	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
N   _SIZE_CUTOFFa)r)   r%   r%   )r)      r*   )r)      r+   )contextsetattrlibindexr   r   aranger   from_arrays)r   monkeypatchr#   size_cutoffnss         r!   (test_indexing_over_hashtable_size_cutoffz<TestMultiIndexBasic.test_indexing_over_hashtable_size_cutoff#   s    &   " 	$.+Fryy|Z%;%;cUQY		RS<U%VWA X;!###X;!###X;!###	$ 	$ 	$s   BB##B,c           	         t        ddt        j                  dgg dddt        j                  dgd      }|j                  d	d
gd      }t        ddt        j                  dgg dddt        j                  dgdt	        ddt        j                  dgd	      t	        g dd
      g      }t        j                  ||       y )NR1R2R4C1C2C3C4
      r'   r)   bcr)   rB   F)dropnameindex)r   r   nanr   r   r   assert_frame_equal)r   r    resultexpecteds       r!   test_multi_nan_indexingz+TestMultiIndexBasic.test_multi_nan_indexing1   s    D"&&$/-"bffb)
 sCju5D"&&$/-"bffb) tT26640s;.S9

 	fh/    c           	         t        t        j                  t        j                  t        j                  t        j                  gg dddt        j                  dgd      }|j                  ddg      }t        dddt        j                  dgit        t        j                  t        j                  t        j                  t        j                  gd	      t        g dd	      g
      }t        j                  ||       y )Nr:   r?   r@   r'   rA   r)   rB   rC   rE   rG   )	r   pdNaTr   rI   r   r   r   rJ   )r   r    rL   s      r!   "test_exclusive_nat_column_indexingz6TestMultiIndexBasic.test_exclusive_nat_column_indexingH   s     ffbffbffbff5-"bffb)
 \\3*%b"bffb) rvvrvvrvvrvv6SA.S9	
 	b(+rN   c                 B   t        j                  g d      }t        g d      }t        j                  ||gddg      }t        g dt        j                  t        j                  t        j                  gd|      }t        |d	   d
d
t        j                  gd|      }|j                  d      }d
|j                  |d   dfdf<   t        j                  ||       |j                  d      }d
|j                  |d   dfgdf<   t        j                  ||       y )N)20190101rT   20190102)r)   r)   rC   index1index2namesr   r   r   )c1c2rG   r[         ?T)deepr   r)   r\   )rP   to_datetimer   r   r0   r   r   rI   copyr   r   rJ   )r   dtiidxmir    rL   df2df3s           r!   test_nested_tuples_duplicatesz1TestMultiIndexBasic.test_nested_tuples_duplicates^   s     nnABO$##S#Jx6JKi/GHPRSBtHS#rvv4FGrRgg4g '*Qt#$
c8,gg4g ),#a&#%&
c8,rN   c                    t        t        d      d      }t        j                  dddd      }t	        j
                  ||g      }t        t        j                  j                  d      j                  d	      |
      }|j                  d   j                  }t        j                  ||       |j                  |j                  k(  sJ y )Nr   ArE   z
2020-01-01r+   DB)periodsfreqrF   )   r   rG   r   )r   rangerP   
date_ranger   from_productr   r   r   r   standard_normalr   rH   r   assert_index_equalrl   )r   rb   ra   rc   r    rK   s         r!   2test_multiindex_with_datatime_level_preserves_freqzFTestMultiIndexBasic.test_multiindex_with_datatime_level_preserves_freqq   s    E!H3'mmL!#CH$$c3Z0ryy,,Q/??HPRS
fc*{{chh&&&rN   c                     g d}g d}t        |||d      }|j                  ddgd       t        d|it        j                  ||gd	
            }t	        j
                  ||       y )N)y      ?       @y      @      y      $@      )r   r   r%   )r   r   r   r   r   T)inplacer   )r   r   rX   rG   )r   r   r   r0   r   rJ   )r   complex_datanon_complex_datarK   rL   s        r!   test_multiindex_complexz+TestMultiIndexBasic.test_multiindex_complex{   s}    0$!%%
 	#sT2"#((/0 
 	fh/rN   c                     t        j                  g d      }t        |      }|j                  ddid      }t        j                  g d      }t        |      }t	        j
                  ||       y )N))rh   catrj   rz   r{   rG   rh   Appler   )rH   level))r|   rz   r{   r{   )r   from_tuplesr   renamer   rJ   )r   rc   r    mi2rL   s        r!   &test_rename_multiindex_with_duplicatesz:TestMultiIndexBasic.test_rename_multiindex_with_duplicates   s^    ##$NOR YYc7^1Y5$$%ST3'
b(+rN   c                    t        j                  dt        j                  gt        j                  t        j                  gg      }t        j                  t        j                  dgt        j                  t        j                  gg      }t	        ddg|      }t	        ddg|      }|j                  |      \  }}t        j                  ddt        j                  gt        j                  t        j                  t        j                  gg      }t	        dt        j                  dg|      }t	        t        j                  ddg|      }	t        j                  ||       t        j                  ||	       y )N     @T@g     T@r   r   rG   r]   g       @r   r0   r   rI   r   alignr   assert_series_equal
r   mi1r   ser1ser2result1result2rc   	expected1	expected2s
             r!   2test_series_align_multiindex_with_nan_overlap_onlyzFTestMultiIndexBasic.test_series_align_multiindex_with_nan_overlap_only   s
   $$tRVVnrvvrvv6F%GH$$rvvtnrvvrvv6F%GHq!fC(q!fC(::d+##dD"&&%9BFFBFFBFF;S$TUC-R8	BFFC-R8	
w	2
w	2rN   c                    t        j                  dt        j                  gt        j                  t        j                  gg      }t        j                  t        j                  dgt        j                  t        j                  gg      }t	        ddg|      }t	        ddg|      }|j                  |      \  }}t        j                  dt        j                  gt        j                  t        j                  gg      }t	        ddg|      }t	        ddg|      }	t        j                  ||       t        j                  ||	       y )Nr   r   r   rG   r   r   s
             r!   %test_series_align_multiindex_with_nanz9TestMultiIndexBasic.test_series_align_multiindex_with_nan   s    $$tRVVnrvvrvv6F%GH$$rvvtnrvvrvv6F%GHq!fC(q!fC(::d+##dBFF^bffbff5E$FGAq6,	Aq6,	
w	2
w	2rN   c                     t        ddgddgg      j                  ddg      j                  j                         }|dk(  sJ y )Nr   r   r   )r   r   rH   nunique)r   r3   s     r!   test_nunique_smokez&TestMultiIndexBasic.test_nunique_smoke   sB    1v1v&'111a&9??GGIAvvrN   c           
          t        j                  t        ddgt        j                  ddgg            j
                  g d   t        g dt        j                  g dg                   y )Nr   r   r)   rB   )r)   r)   rB   rB   )r   r   r   r   )r   r   r   r   r0   r   )r   s    r!   test_multiindex_repeated_keysz1TestMultiIndexBasic.test_multiindex_repeated_keys   sX    
Aq6:11C:,?@DD$ <!7!79M8N!OP		
rN   c                     t        j                  g dg dg dd      }t        j                  t        d      5  |dg    d d d        y # 1 sw Y   y xY w)NrZ   )r%   r*   r+   )   	   r   ))foo)bar)Nmissing_key)match)r   )r   	from_dictpytestraisesKeyError)r   r    s     r!   #test_multiindex_with_na_missing_keyz7TestMultiIndexBasic.test_multiindex_with_na_missing_key   sQ      ##"
 ]]8=9 	# !"	# 	# 	#s   AAc                 j   t        j                  dgddg      }t        dg|      j                  d      }|d   }t	        |d	   j
                  t              sJ t        d
dgdd
ggddgddgddgg      j                  t        ddgd            }t	        |d   j
                  t              sJ y )Nrh   rj   lvl1lvl2rX   valuecolumnscategoryrh   rj   r   r   r   locationr   r   TFbooleandtype)boolsr   )
r   r~   r   astype
isinstancer   r   assignr   r   )r   r   r    df_no_multiindexs       r!   "test_multiindex_dtype_preservationz6TestMultiIndexBasic.test_multiindex_dtype_preservation   s    ((*ff=MNy'299*Ec7*3/557GHHH VaVZ(c

 &vtUm9=&
> 	 "W+++\:::rN   c                    t        j                  dt        j                  dg      }t        j                  dt        j                  t        j                  t        j                  fdg      }t	        j
                  ||       y )NrA   )d r   )r   r~   r   rI   r   rr   )r   rK   rL   s      r!   $test_multiindex_from_tuples_with_nanz8TestMultiIndexBasic.test_multiindex_from_tuples_with_nan   s\    ''"&&-(PQ))rvvrvvrvv6F
 	fh/rN   	operation)divmuladdsubc                    t        g dg dg dgg d      }|d   j                  d      |d<   |d   j                  j                  dd	d
      |d<   |j	                  ddg      d   j                         }|j	                  ddg      j                         } t        ||      |      } t        ||      |j                  d            }t        j                  ||       y )N)Crj   rj   )rj   rh   rh   )rj   rh   rj   )012r   r   r   rj   r   )r   rj   r   )byr   F)	ascending)r   r   rz   rename_categoriesgroupbyvalue_countssizegetattr
sort_indexr   r   )r   r   datar)   rB   rK   rL   s          r!   9test_groupyby_rename_categories_operation_with_multiindexzMTestMultiIndexBasic.test_groupyby_rename_categories_operation_with_multiindex   s     o?
 I$$Z0S	IMM33#C4HIS	LLS#JL',99;LLS#JL',,.&I&q)(71i()FG
vx0rN   c                 L   t        j                  dg      }t        t        d      D cg c]  }|g c}|      }|j	                         }|j	                         }|d   j                  d      j                         }|j	                         }|j	                         }||d<   ||d<   t        j                  ||       ||d<   t        j                  ||       t        j                  ||       ||d<   t        j                  ||       t        j                  ||       y c c}w )Nr   r   r   rh   r   r   )r   r   )	r   r~   r   rn   r`   rollingmeanr   rJ   )	r   colsidf1rd   re   s1s2s3s	            r!   /test_multiindex_assign_aligns_as_implicit_tuplezCTestMultiIndexBasic.test_multiindex_assign_aligns_as_implicit_tuple   s    %%zl3eAh/!/>hhjhhjXa %%'WWYWWYCI
c3'C
c3'
c3'C
c3'
c3'# 0s   
D!c           	      h   t        j                  g dt        j                  g d      g      }t	        |t
              }|d   j                  d      |d<   t	        t        g t
              t        g t
              t        g d      t        g d      d|      }t        j                  ||       y )	N)r)   r)   r   r   )r   r   r   r   )r   r   r   int64r   ))r)   r   )r)   r   )r   r   )r   r   )r   r   )
r   r0   rP   Categoricalr   objectr   r   r   rJ   )r   r   metarK   s       r!   6test_multiindex_assign_alignment_with_non_string_dtypezJTestMultiIndexBasic.test_multiindex_assign_alignment_with_non_string_dtype  s    ((!2>>,#?@
 7I$$W-S	 62 62 73 73	 
 	dF+rN   N)__name__
__module____qualname__r"   r   markparametrizer5   rM   rR   rf   rs   rx   r   r   r   r   r   r   r   r   r   r   r    rN   r!   r
   r
      s      [[XAw/$ 0$0.,,-&'0*,33


#;$0 [[[*FG1 H1 (,,rN   r
   )numpyr   r   pandas._libs.index_libsrH   r.   pandasrP   r   r   r   r   r   pandas._testing_testingr   pandas.core.arrays.booleanr   r
   r   rN   r!   <module>r      s2      % %    3T, T,rN   