
    .i4                         d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ ej                   d        Z G d d      Z G d d      Zy)	    N)	DataFrameIndex
IndexSlice
MultiIndexSeriesconcat)BDayc                      t        j                  g dg dg dg      } t        ddgddgg dg d	gg d
g dg dg dgg d      }t        | |t	        d            S )NgEJYgr鷯g|?5^ݿg6?gK?g-?gT?g9#?g9]?g46<R?)gQg^)gxֿgI&?g=U@axbq)ı.n$@      4@g      >@)         )r   r      )r   r   r   )r   r      )r   r   r   )onetwothreefourlevelscodesnamesABCDEindexcolumns)nparrayr   r   list)arrr"   s     a/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/frame/indexing/test_xs.pyfour_level_index_dataframer)      sc    
((757	
C c
S#J(=yI)Y	:-E
 StG}==    c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestXSc                     |j                   d   }|j                  |      }|j                         D ]E  \  }}t        j                  |      rt        j                  ||   |         r7J |||   |   k(  rEJ  y )Nr   )r"   xsitemsr$   isnan)selffloat_frameidxr.   itemvalues         r(   test_xszTestXS.test_xs%   sx    "^^C 88: 	7KD%xxxxD 1# 6777D 1# 6666		7r*   c                     dddddddd}t        |      }|j                  d      }|j                  t        j                  k(  sJ |d	   dk(  sJ |d
   dk(  sJ y )Nr   r   )12r8   r9   3)r8   r9   r:   )ABr;   r<   )r   r.   dtyper$   object_)r1   	test_dataframer.   s       r(   test_xs_mixedzTestXS.test_xs_mixed.   se     !*s31OP	)$XXc]xx2::%%%#w!||#w#~~r*   c                     t        j                  t        t        j                  d            5  |j                  |j                  d   t               z
         d d d        y # 1 sw Y   y xY w)Nz Timestamp('1999-12-31 00:00:00')matchr   )pytestraisesKeyErrorreescaper.   r"   r	   )r1   datetime_frames     r(   test_xs_dt_errorzTestXS.test_xs_dt_error7   sX    ]]BII&HI
 	@ n2215>?	@ 	@ 	@s   *A""A+c                    |j                         }|j                  dd      }|d   }t        j                  ||       |j                  dd      }d|d d  t        j                  |d   |d          |dk(  j	                         rJ y )Nr;   r   )axisr   )copyr.   tmassert_series_equalall)r1   r2   float_frame_origseriesexpecteds        r(   test_xs_otherzTestXS.test_xs_other=   s    &++-!,s#
vx0 !,q	
{3/1A#1FGM&&((((r*   c                    t        dgt        g d            }d|d<   d|d<   d	|d
<   d|d<   d|d<   |j                  d      }t        g dt	        d      d      }t        j                  ||       t        g d      }|j                  d      }t        g dt        j                        }t        j                  ||       y )Nr   str)r=   r!         ?r;   foor<          @CbarD      @E)rX   rY   rZ   r\   r^   r    )r"   namer   r   cr"   r   )r`   r=   )	r   r   r.   r   r&   rO   rP   r$   float64)r1   dfr.   expresultrT   s         r(   test_xs_cornerzTestXS.test_xs_cornerK   s    aS%%*@A33333UU1X2$w-aP
r3' _-s"3bjj9
vx0r*   c                     t        t        j                  j                  d      j	                  d      g d      }|j                  d      }|j                  d   }t        j                  ||       y )Nr   )r   r   )r   r   rb   r   r   rc   rb   )	r   r$   randomdefault_rngstandard_normalr.   ilocrO   rP   )r1   re   crossrf   s       r(   test_xs_duplicateszTestXS.test_xs_duplicates^   sX    II!!!$44V<+

 c
ggaj
uc*r*   c                    t        ddddddddddddd      j                  g d	      }|j                  dd
d      }|d d }t        j                  ||       |j                  ddd
gd      }t        j                  ||       y )Nsatsun)r   r   
strawberry
        )dayflavoursalesyear)rz   rx   rw   rw   F)level
drop_levelr   )rv   rq   rz   )r   	set_indexr.   rO   assert_frame_equalr1   re   rg   rT   s       r(   test_xs_keep_levelzTestXS.test_xs_keep_levelh   s     U++=B T*	
 ).
/ 	 uEe<bq6
fh/}VUON
fh/r*   c                 P   t        t        j                  d      j                  dd      t	        d      t	        d            }|j                         }t        j                         5  d|j                  d      d d  d d d        t        j                  ||       y # 1 sw Y    xY w)Nr   r   r   r!      r   )
r   r$   arangereshaperangerN   rO   raises_chained_assignment_errorr.   r~   )r1   dmdf_origs      r(   test_xs_viewzTestXS.test_xs_viewx   s}     ryy..q!4E!HeTUhW'')//1 	BEE!HQK	
b'*	 	s   (BB%N)__name__
__module____qualname__r6   rA   rK   rU   rh   ro   r   r    r*   r(   r,   r,   $   s+    7@)1&+0 	+r*   r,   c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  ddd	gd
gfg      d        Zd Ze	j                  j                  dddd  eddgd      fddd  edgd      fg      d        Ze	j                  j                  dd d g      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y&)'TestXSWithMultiIndexc                 \   g dg dg}t        t        |       }t        j                  |ddg      }t	        t
        j                  j                  d      j                  d      g d|	      }|j                  d
dd      }|j                  d d dgf   }t        j                  ||       y )N)r\   r\   bazr   rY   rY   quxr   )r   r   r   r   r   r   r   r   firstsecondr   r   )r      )r;   r<   r[   r!   )r   r\   )r   r   r   r{   rM   r   )r&   zipr   from_tuplesr   r$   rj   rk   rl   r.   rm   rO   r~   )r1   arraystuplesr"   re   rg   rT   s          r(   test_xs_doc_examplez(TestXSWithMultiIndex.test_xs_doc_example   s     ED
 c6l#&&vgx5HIII!!!$44V<!
 ~-@qI771qc6?
fh/r*   c                 l   t        dd      }t        d      }t        j                  ||gddg      }t	        t
        j                  j                  d      j                  t        |      df      |g d	      }|j                  dd
      }|j                  dd d f   }t        j                  ||       y )Nia2ie2abcdedatesecidr   r   r   )XYZr{   )r   r&   r   from_productr   r$   rj   rk   rl   lenr.   locrO   r~   )r1   datesidsr"   re   rg   rT   s          r(   test_xs_integer_keyz(TestXSWithMultiIndex.test_xs_integer_key   s    h)7m''VW<MNII!!!$44c%j!_E
 xv.66(A+&
fh/r*   c                     |}|j                  dd      }||j                  j                  d      dk(     }t        g dd      |_        t	        j
                  ||       y )Nr   r   r   r   )rY   r\   r   r   r   r`   )r.   r"   get_level_valuesr   rO   r~   r1    multiindex_dataframe_random_datare   rg   rT   s        r(   test_xs_levelz"TestXSWithMultiIndex.test_xs_level   sV    -uH-bhh//2e;<;'J
fh/r*   c                 2   t         j                  j                  d      j                  d      }t	        g dg dg dgg dg dg dg      }t        ||      }t        |d	d d
gdgg      }|j                  dd      }t        j                  ||       y )Nr   )r   r   )r   pr   )r   r   y)rb   rz)r   r   r   r   r   rc   r   r   r   rb   r   	r$   rj   rk   rl   r   r   r.   rO   r~   )r1   r'   r"   re   rT   rg   s         r(   test_xs_level_eq_2z'TestXSWithMultiIndex.test_xs_level_eq_2   s    ii##A&66v>#_oFi3
 s%(S1XsecU^<s!$
fh/r*   c                     |}|j                         }|j                  dd      }d|d d  t        j                  ||       y )Nr   r   r   rt   rN   r.   rO   r~   )r1   r   re   r   rg   s        r(   test_xs_setting_with_copy_errorz4TestXSWithMultiIndex.test_xs_setting_with_copy_error   s=    -'')uH-q	
b'*r*   c                     |}|j                         }|j                  dddg      }d|d d  t        j                  ||       y )Nr   r   r   r   r   rt   r   )r1   r)   re   r   rg   s        r(   (test_xs_setting_with_copy_error_multiplez=TestXSWithMultiIndex.test_xs_setting_with_copy_error_multiple   sA    ''')xv7q	
b'*r*   z
key, level)r   r   r   r   c                 F   |}t        |gdz        }|j                  j                  du sJ t        |j                  dd      gdz        }t	        |t
              r|j                  t        |      |      }n|j                  ||      }t        j                  ||       y )Nr   Fr   r   r   )	r   r"   	is_uniquer.   
isinstancer&   tuplerO   r~   )r1   keyr{   r   r@   re   rT   rg   s           r(   test_xs_with_duplicatesz,TestXSWithMultiIndex.test_xs_with_duplicates   s     1UGaK xx!!U***588E8:;a?@c4 UU5:UU3FUU3eU,F
fh/r*   c           	          g d}t        |g d      j                  ddg      }t        dg dit        dt        j                  d	d
gd            }|j                  dd      }t        j                  ||       y )N))r   r   r   )r   bbcder   )r   yzcde   )r   xbcde   )r   N   )r   zbcder   )r   ybcder   )a1a2cntr#   r   r   r   )r   r   r   r   r   r   r   r   rc   r   r   )r   r}   r   r$   nanr.   rO   r~   )r1   accre   rT   rg   s        r(   test_xs_missing_values_in_indexz4TestXSWithMultiIndex.test_xs_missing_values_in_index   su    
 s$78BBD$<P$%"&&'7;$G

 s$'
fh/r*   zkey, level, exp_arr, exp_indexr   lvl0c                     | d d ddf   S )Nr   r   r   r   s    r(   <lambda>zTestXSWithMultiIndex.<lambda>   s    Aa1fI r*   r\   rY   lvl1r   c                     | d d ddf   S )Nr   r   r   r   s    r(   r   zTestXSWithMultiIndex.<lambda>   s    a1Q3i r*   c                 ,   t         j                  j                  d      j                  d      }t	        ddgg dgg dg dgdd	g
      }t        ||      }|j                  ||d      }t         ||      |      }	t        j                  ||	       y )Nr   )r   r   r   r   )r\   rY   helloworld)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )
r1   r   r{   exp_arr	exp_indexr'   r"   re   rg   rT   s
             r(   test_xs_named_levels_axis_eq_1z3TestXSWithMultiIndex.test_xs_named_levels_axis_eq_1   s     ii##A&66v>#J @A.6"

 sE*s%a0WS\9=
fh/r*   indexerc                 ,    | j                  dddg      S )Nr   r   r   r   r.   re   s    r(   r   zTestXSWithMultiIndex.<lambda>  s    ruuXeV_u= r*   c                 F    | j                  d      j                  dd      S )Nr   r   r   r   r   r   s    r(   r   zTestXSWithMultiIndex.<lambda>  s    ruuSz}}Qf}5 r*   c                     |}g dg}t        dgdggdgdggddg      }t        ||t        d      	      } ||      }t        j                  ||       y )
Nr   r   r   r   r   r   r   r    r!   r   r   r&   rO   r~   r1   r   r)   re   expected_valuesexpected_indexrT   rg   s           r(   test_xs_level_multiplez+TestXSWithMultiIndex.test_xs_level_multiple  si     (DE#ED6?A3*UG<L
 >4=
 
fh/r*   c                 (    | j                  dd      S )Nr   r   r   r   r   s    r(   r   zTestXSWithMultiIndex.<lambda>  s    ruuSu2 r*   c                 $    | j                  d      S )Nr   r   r   s    r(   r   zTestXSWithMultiIndex.<lambda>  s    ruuSz r*   c                     |}g dg dg}t        ddgddgddggd	d
gd	d
gd
d	ggg d      }t        ||t        d            } ||      }t        j                  ||       y )Nr   r   r   r   r   r   r   r   r   r   )r   r   r   r   r    r!   r   r   s           r(   test_xs_level0z#TestXSWithMultiIndex.test_xs_level0  s     (75
 $#J$!Q8q6Aq6Aq6**

 >4=
 
fh/r*   c                     |}|j                  d      j                  }|j                  d   }t        j                  ||       y )Nr\   r   r   )r.   valuesrO   assert_almost_equalr   s        r(   test_xs_valuesz#TestXSWithMultiIndex.test_xs_values,  s8    -~&--99Q<
vx0r*   c                 t    |}|j                  d      }|j                  d   }t        j                  ||       y )Nr   )r.   r   rO   rP   r   s        r(   test_xs_loc_equalityz)TestXSWithMultiIndex.test_xs_loc_equality2  s3    -~&66.)
vx0r*   c                    t        g dddggg dg dg      }t        t        j                  j	                  d      j                  d      |	      }|t        u r|d   }|j                  d
d  j                  d      }|j                  t        dd d f         }t        j                  ||       |j                  t        dd d f      }t        j                  ||       y )N))rY   r\   r   )rY   r   r   rY   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )   r   rc   r   )r   r   r$   rj   rk   rl   r   rm   	droplevelr.   r   rO   assert_equalr   )r1   frame_or_seriesr"   objrT   rg   s         r(   +test_xs_IndexSlice_argument_not_implementedz@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implemented8  s     MPQSTvV%'9:

 		--a0@@HPUVf$a&C88BC=**1-
#4a#789
)$5q$89:
)r*   c                     t        dg di      }|t        u r|d   }d}t        j                  t        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)Nr;   r   r   r   zIndex must be a MultiIndexrC   r   asr   )r   r   rE   rF   	TypeErrorr.   )r1   r   r   msgs       r(   test_xs_levels_raisesz*TestXSWithMultiIndex.test_xs_levels_raisesL  sZ    i()f$c(C*]]9C0 	"FF1DF!	" 	" 	"s   AA c                     t        j                  g dddg      }t        g dg|      }|j                  ddd	
      }t        ddggt        j                  ddgddg            }t	        j
                  ||       y )N)r   r   r   r   )r   r   level1level2r   r  r   r   r   FrM   r|   r   r  r  )r   r   r   r.   rO   r~   )r1   mire   rg   rT   s        r(   "test_xs_multiindex_droplevel_falsez7TestXSWithMultiIndex.test_xs_multiindex_droplevel_falseU  s    ##088L
 	{B/su5VH**Z(80D
 	fh/r*   c                     t        g dgt        g d            }|j                  ddd      }t        ddgi      }t        j                  ||       y )Nr  ra   r   r   r   Fr  )r   r   r.   rO   r~   r   s       r(   test_xs_droplevel_falsez,TestXSWithMultiIndex.test_xs_droplevel_falsed  sI    	{E/,BCsu5cA3Z(
fh/r*   c                 (   t        g dgt        g d            }|j                  ddd      }t        j                  |j
                  d d df   j                  |j
                  d d df   j                        sJ d	|j
                  d
<   t        ddgi      }t        j                  ||       t        g dgt        g d            }|j                  ddd      }d	|j
                  d
<   t        ddgi      }t        j                  ||       y )Nr  ra   r   r   r   Fr  r   r   )r   r   )r   g      @r   )	r   r   r.   r$   shares_memoryrm   _valuesrO   r~   r   s       r(   test_xs_droplevel_false_viewz1TestXSWithMultiIndex.test_xs_droplevel_false_viewk  s    	{E/,BCsu5AqD 1 9 92771a4=;P;PQQQcA3Z(
fh/o0FGsu5cA3Z(
fh/r*   c                     t        j                  g d      }t        g dg dg|      }t        j                  t
        d      5  |j                  ddd	
       d d d        y # 1 sw Y   y xY w)N))r   mr   )r   nr   )r   orb   r  )r   r   r   r   r   rC   )r   r   Fr   )r|   rM   )r   r   r   rE   rF   rG   r.   )r1   r  re   s      r(   $test_xs_list_indexer_droplevel_falsez9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_false~  sY    ##$WX	9-r:]]83/ 	8EE*QE7	8 	8 	8s   A$$A-N)r   r   r   r   r   r   r   r   r   rE   markparametrizer   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r*   r(   r   r      s;   0*00	0++ [[\,=(?T+UV0 W00* [[(&-ueU^&/QRF/u61JK	
00 [[=5	

0
0 [[24IJ00$11*("000&8r*   r   )rH   numpyr$   rE   pandasr   r   r   r   r   r   pandas._testing_testingrO   pandas.tseries.offsetsr	   fixturer)   r,   r   r   r*   r(   <module>r!     sQ    	     ' > > ]+ ]+@8 8r*   