
    Owgl>                         d dl Z d dlZd dlZd dlm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)SettingWithCopyError)	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     Z/var/www/horilla/myenv/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y)TestXSc                    |j                         }|j                  d   }|j                  |      }|j                         D ]E  \  }}	t	        j
                  |	      rt	        j
                  ||   |         r7J |	||   |   k(  rEJ  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 t        j                  t        t        j                  d            5  |j                  |j                  d   t               z
         d d d        |j                  d
d      }|d
   }t        j                   ||       |j                  d
d      }t        j"                  |      5  d|d d  d d d        |r2t        j                   |d
   |d
          |dk(  j%                         rJ y |dk(  j%                         sJ y # 1 sw Y   xY w# 1 sw Y   _xY w)Nr   r   r   )12r/   r0   3)r/   r0   r1   )ABr2   r3   z Timestamp('1999-12-31 00:00:00')matchr   )axis)copyr#   xsitemsr%   isnanr   dtypeobject_pytestraisesKeyErrorreescaper
   tmassert_series_equalassert_cow_warningall)selffloat_framedatetime_frameusing_copy_on_writewarn_copy_on_writefloat_frame_origidxr8   itemvalue	test_dataframeseriesexpecteds                 r)   test_xszTestXS.test_xs'   s     '++-"^^C 88: 	7KD%xxxxD 1# 6777D 1# 6666		7 !"*s31OP	)$XXc]xx2::%%%#w!||#w#~~]]BII&HI
 	@ n2215>?	@ !,s#
vx0 !,""#56 	F1I	"";s#35Ec5JK A**,,,,M&&((('	@ 	@	 	s   *G2G>2G;>Hc                 r   t        dg      }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   r#         ?r2   foor3          @CbarD      @E)rV   rW   rX   rZ   r\   r!   )r#   namer   r   cr   )r^   r;   )r   r8   r   r'   rB   rC   r%   float64)rF   dfr8   expresultrR   s         r)   test_xs_cornerzTestXS.test_xs_cornerP   s    aS!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   r`   r   r   rU   r`   )	r   r%   randomdefault_rngstandard_normalr8   ilocrB   rC   )rF   rb   crossrc   s       r)   test_xs_duplicateszTestXS.test_xs_duplicatesc   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)rw   ru   rt   rt   F)level
drop_levelr   )rs   rn   rw   )r   	set_indexr8   rB   assert_frame_equalrF   rb   rd   rR   s       r)   test_xs_keep_levelzTestXS.test_xs_keep_levelm   s     U++=B T*	
 ).
/ 	 uEe<bq6
fh/}VUON
fh/r+   c                    t        t        j                  d      j                  dd      t	        d      t	        d            }|j                         }|rHt        j                         5  d|j                  d      d d  d d d        t        j                  ||       y |r_d}t        j                  t        |      5  d|j                  d      d d  d d d        |j                  d      dk(  j                         rJ y t        j                         5  d|j                  d      d d  d d d        |j                  d      dk(  j                         sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   FxY w)	Nr   r   r   r"      r   zC\nA value is trying to be set on a copy of a slice from a DataFramer4   )r   r%   arangereshaperanger7   rB   raises_chained_assignment_errorr8   r{   r=   r>   r   anyrE   )rF   using_array_managerrI   rJ   dmdf_origmsgs          r)   test_xs_viewzTestXS.test_xs_view}   s1    ryy..q!4E!HeTUhW'')335 ! a!!!"g.  YC33? ! a!aB++----335 ! a!EE!HN'')))! !! !! !s$   *E=E!E-E!E*-E6N)__name__
__module____qualname__rS   re   rl   r}   r    r+   r)   r-   r-   &   s    ')R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)rZ   rZ   bazr   rW   rW   quxr   )r   r   r   r   r   r   r   r   firstsecondr    r   )r      )r2   r3   rY   r"   )r   rZ   )r   r   r   rx   r6   r   )r'   zipr   from_tuplesr   r%   rg   rh   ri   r8   rj   rB   r{   )rF   arraystuplesr#   rb   rd   rR   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rx   )r   r'   r   from_productr   r%   rg   rh   ri   lenr8   locrB   r{   )rF   datesidsr#   rb   rd   rR   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   )rW   rZ   r   r   r   r^   )r8   r#   get_level_valuesr   rB   r{   rF    multiindex_dataframe_random_datarb   rd   rR   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)r`   rz)r   r   r   r   r   rU   r   r   r   r`   r   	r%   rg   rh   ri   r   r   r8   rB   r{   )rF   r(   r#   rb   rR   rd   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      }|s|rd|d d  n+d}t        j                  t        |      5  d|d d  d d d        t        j                  ||       y # 1 sw Y    xY w)Nr   r   r   rq   AA value is trying to be set on a copy of a slice from a DataFramer4   r7   r8   r=   r>   r   rB   r{   )rF   r   rI   rJ   rb   r   rd   r   s           r)   test_xs_setting_with_copy_errorz4TestXSWithMultiIndex.test_xs_setting_with_copy_error   sz     .'')uH-"4F1I VC33? q	
b'* s   A22A;c                     |}|j                         }|j                  dddg      }|s|rd|d d  n+d}t        j                  t        |      5  d|d d  d d d        t        j                  ||       y # 1 sw Y    xY w)Nr   r   r   r   r   rq   r   r4   r   )rF   r*   rI   rJ   rb   r   rd   r   s           r)   (test_xs_setting_with_copy_error_multiplez=TestXSWithMultiIndex.test_xs_setting_with_copy_error_multiple   s~     ('')xv7"4F1I VC33? q	
b'* s   A44A=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_uniquer8   
isinstancer'   tuplerB   r{   )rF   keyrx   r   rP   rb   rR   rd   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   rU   r   r   )r   rz   r   r%   nanr8   rB   r{   )rF   accrb   rR   rd   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+   rZ   rW   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   )rZ   rW   helloworld)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )
rF   r   rx   exp_arr	exp_indexr(   r#   rb   rd   rR   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   r8   rb   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>0  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'   rB   r{   rF   r   r*   rb   expected_valuesexpected_indexrR   rd   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rZ   r   r   )r8   valuesrB   assert_almost_equalr   s        r)   test_xs_valuesz#TestXSWithMultiIndex.test_xs_valuesT  s8    -~&--99Q<
vx0r+   c                 t    |}|j                  d      }|j                  d   }t        j                  ||       y )Nr   )r8   r   rB   rC   r   s        r)   test_xs_loc_equalityz)TestXSWithMultiIndex.test_xs_loc_equalityZ  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))rW   rZ   r   )rW   r   r   rW   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )   r   rU   r   )r   r   r%   rg   rh   ri   r   rj   	droplevelr8   r   rB   assert_equalr   )rF   frame_or_seriesr#   objrR   rd   s         r)   +test_xs_IndexSlice_argument_not_implementedz@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implemented`  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)Nr2   r   r   r   zIndex must be a MultiIndexr4   r   asr   )r   r   r=   r>   	TypeErrorr8   )rF   r   r   r   s       r)   test_xs_levels_raisesz*TestXSWithMultiIndex.test_xs_levels_raisest  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r6   ry   r   r  r  )r   r   r   r8   rB   r{   )rF   mirb   rd   rR   s        r)   "test_xs_multiindex_droplevel_falsez7TestXSWithMultiIndex.test_xs_multiindex_droplevel_false}  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  r_   r   r   r   Fr  )r   r   r8   rB   r{   r|   s       r)   test_xs_droplevel_falsez,TestXSWithMultiIndex.test_xs_droplevel_false  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 t        j                  |      5  d	|j
                  d
<   d d d        |rt        ddgi      }nt        dd	gi      }t        j                  ||       t        g dgt        g d            }|j                  ddd      }d	|j
                  d
<   |rt        ddgi      }n|rt        dd	gi      }nt        ddgi      }t        j                  ||       y # 1 sw Y   xY w)Nr  r_   r   r   r   Fr  r   r   )r   r   )r   g      @r   )
r   r   r8   r%   shares_memoryrj   _valuesrB   rD   r{   )rF   r   rI   rJ   rb   rd   rR   s          r)   test_xs_droplevel_false_viewz1TestXSWithMultiIndex.test_xs_droplevel_false_view  sJ    	{E/,BCsu5AqD 1 9 92771a4=;P;PQQQ""#56 	BGGDM	 #s,H !#s,H
fh/ o0FGsu5 #s,H  #s,H !#s,H
fh/3	 	s   E%%E.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   or`   r  )r   r   r   r   r   r4   )r   r   Fr   )ry   r6   )r   r   r   r=   r>   r?   r8   )rF   r  rb   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   r=   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"0H8r+   r   )r@   numpyr%   r=   pandas.errorsr   pandasr   r   r   r   r   r	   pandas._testing_testingrB   pandas.tseries.offsetsr
   fixturer*   r-   r   r   r+   r)   <module>r"     sT    	   .   ' > > n* n*be8 e8r+   