
    d;                         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dS )
    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     _/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/frame/indexing/test_xs.pyfour_level_index_dataframer*      s    
(777555777	
 C c
S#J(=(=(=yyyIyy)))YYY			:---  E
 StG}}====    c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestXSc                 @   |                                 }|j        d         }|                    |          }|                                D ]P\  }}t	          j        |          r#t	          j        ||         |                   sJ <|||         |         k    sJ Qdddddddd	}	t          |	          }
|
                    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        d         t                      z
             d d d            n# 1 swxY w Y   |                    d
d          }|d
         }t          j        ||           |                    d
d          }d|d d <   |r=t          j        |d
         |d
                    |dk                                    rJ d S |dk                                    sJ d S )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all)selffloat_framedatetime_frameusing_copy_on_writefloat_frame_origidxr8   itemvalue	test_dataframeseriesexpecteds                r)   test_xszTestXS.test_xs'   s   &++--"^^C  88:: 	7 	7KD%x 7xD 1# 6777777D 1# 666666 !"**s31O1OPP	)$$XXc]]x2:%%%%#w!||||#w#~~~~]BI&HII
 
 
 	@ 	@ n215>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ !,,s#
vx000 !,,qqq	 	)";s#35Ec5JKKK A**,,,,,,,M&&(((((((s   ,0E((E,/E,c                    t          dg          }d|d<   d|d<   d|d<   d	|d
<   d|d<   |                    d          }t          g dt          d          d          }t	          j        ||           t          g d          }|                    d          }t          g dt          j                  }t	          j        ||           d S )Nr   r#         ?r2   foor3          @CbarD      @E)rT   rU   rV   rX   rZ   r!   )r#   namer   r   cr   )r\   r;   )r   r8   r   r'   rB   rC   r%   float64)rE   dfr8   expresultrP   s         r)   test_xs_cornerzTestXS.test_xs_cornerM   s    aS!!!33333UU1XX222$w--aPPP
r3''' ___---s"3bj999
vx00000r+   c                     t          t          j                            dd          g d          }|                    d          }|j        d         }t          j        ||           d S )Nr   r   )r   r   r^   r   r   rS   r^   )r   r%   randomrandnr8   ilocrB   rC   )rE   r`   crossra   s       r)   test_xs_duplicateszTestXS.test_xs_duplicates`   s^    ryq!,,4M4M4MNNNc

gaj
uc*****r+   c                 <   t          ddddddddddddd                              g d	          }|                    dd
d          }|d d         }t          j        ||           |                    ddd
gd          }t          j        ||           d S )Nsatsun)r   r   
strawberry
        )dayflavoursalesyear)rt   rr   rq   rq   F)level
drop_levelr   )rp   rk   rt   )r   	set_indexr8   rB   assert_frame_equalrE   r`   rb   rP   s       r)   test_xs_keep_levelzTestXS.test_xs_keep_levelg   s     U+++==B T**	 
 
 )...
/
/ 	 uEe<<bqb6
fh///}VUONN
fh/////r+   c                    t          t          j        d                              dd          t	          d          t	          d                    }|                                }|r\t          j                    5  d|                    d          d d <   d d d            n# 1 swxY w Y   t          j	        ||           d S |r~d}t          j        t          |          5  d|                    d          d d <   d d d            n# 1 swxY w Y   |                    d          dk                                    rJ d S d|                    d          d d <   |                    d          dk                                    sJ d S )	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   rx   r=   r>   r   anyrD   )rE   using_array_managerrH   dmdf_origmsgs         r)   test_xs_viewzTestXS.test_xs_vieww   s    ry..q!44E!HHeTUhhWWW'')) 	*355 ! ! a! ! ! ! ! ! ! ! ! ! ! ! ! ! !!"g.....  		* YC33??? ! ! a! ! ! ! ! ! ! ! ! ! ! ! ! ! !aB++-------BEE!HHQQQKEE!HHN'')))))))s$   <B##B'*B'$DDDN)__name__
__module____qualname__rQ   rc   ri   rz   r    r+   r)   r-   r-   &   s`        $) $) $)L1 1 1&+ + +0 0 0 * * * * *r+   r-   c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            ddd	gd
gfg          d             Zd Ze	j
                            dddd  eddgd          fddd  edgd          fg          d             Ze	j
                            dd d g          d             Ze	j
                            dd d g          d             Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd&S )'TestXSWithMultiIndexc                 T   g dg dg}t          t          |           }t          j        |ddg          }t	          t
          j                            dd          g d|	          }|                    d
dd          }|j	        d d dgf         }t          j        ||           d S )N)rX   rX   bazr   rU   rU   quxr   )r   r   r   r   r   r   r   r   firstsecondr    r      )r2   r3   rW   r"   )r   rX   )r   r   r   ru   r6   r   )r'   zipr   from_tuplesr   r%   re   rf   r8   rg   rB   rx   )rE   arraystuplesr#   r`   rb   rP   s          r)   test_xs_doc_examplez(TestXSWithMultiIndex.test_xs_doc_example   s     EDDDDD
 c6l##&vgx5HIIIryq!,,OOOUSSS~-@qII7111qc6?
fh/////r+   c                 n   t          dd          }t          d          }t          j        ||gddg          }t	          t
          j                            t          |          d          |g d          }|	                    dd	          }|j
        dd d f         }t          j        ||           d S )
Nia2ie2abcdedatesecidr   r   )XYZru   )r   r'   r   from_productr   r%   re   rf   lenr8   locrB   rx   )rE   datesidsr#   r`   rb   rP   s          r)   test_xs_integer_keyz(TestXSWithMultiIndex.test_xs_integer_key   s    h))7mm'VW<MNNNrys5zz155uoooNNxv..6(AAA+&
fh/////r+   c                     |}|                     dd          }||j                            d          dk             }t          g dd          |_        t	          j        ||           d S )Nr   r   r   r   )rU   rX   r   r   r   r\   )r8   r#   get_level_valuesr   rB   rx   rE    multiindex_dataframe_random_datar`   rb   rP   s        r)   test_xs_levelz"TestXSWithMultiIndex.test_xs_level   so    -uH--bh//22e;<;;;'JJJ
fh/////r+   c                 @   t           j                            d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          }|                    dd
          }t          j        ||           d S )Nr   r   )r   pr   )r   r   y)r^   rz)r   r   r   r   r   rS   r   r   r   r   r^   r   r%   re   rf   r   r   r8   rB   rx   )rE   r(   r#   r`   rP   rb   s         r)   test_xs_level_eq_2z'TestXSWithMultiIndex.test_xs_level_eq_2   s    iooa###OO___oooF99iii3
 
 
 s%(((S1XsecU^<<<s!$$
fh/////r+   c                    |}|                                 }|                    dd          }|rd|d d <   n<d}t          j        t          |          5  d|d d <   d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   r   r   rn   AA value is trying to be set on a copy of a slice from a DataFramer4   r7   r8   r=   r>   r   rB   rx   )rE   r   rH   r`   r   rb   r   s          r)   test_xs_setting_with_copy_errorz4TestXSWithMultiIndex.test_xs_setting_with_copy_error   s     .''))uH-- 	F111II VC33???  qqq	              
b'*****s   A))A-0A-c                    |}|                                 }|                    dddg          }|rd|d d <   n<d}t          j        t          |          5  d|d d <   d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   r   r   r   r   rn   r   r4   r   )rE   r*   rH   r`   r   rb   r   s          r)   (test_xs_setting_with_copy_error_multiplez=TestXSWithMultiIndex.test_xs_setting_with_copy_error_multiple   s     (''))xv77 	F111II VC33???  qqq	              
b'*****s   A++A/2A/z
key, level)r   r   r   r   c                 l   |}t          |gdz            }|j        j        du sJ t          |                    dd          gdz            }t	          |t
                    r%|                    t          |          |          }n|                    ||          }t          j        ||           d S )Nr   Fr   r   r   )	r	   r#   	is_uniquer8   
isinstancer'   tuplerB   rx   )rE   keyru   r   rN   r`   rP   rb   s           r)   test_xs_with_duplicatesz,TestXSWithMultiIndex.test_xs_with_duplicates   s     1UGaK  x!U****588E8::;a?@@c4   	-UU5::UU33FFUU3eU,,F
fh/////r+   c           	         g d}t          |g d                              ddg          }t          dg dit          dt          j        d	d
gd                    }|                    dd          }t          j        ||           d S )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   rS   r   r   )r   rw   r   r%   nanr8   rB   rx   )rE   accr`   rP   rb   s        r)   test_xs_missing_values_in_indexz4TestXSWithMultiIndex.test_xs_missing_values_in_index   s    
 
 
 s$7$7$7888BBD$<PP$$$%"&'7;$GG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    Aaaa1fI r+   rX   rU   lvl1r   c                     | d d ddf         S )Nr   r   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>  s    a1Q3i r+   c                 6   t           j                            dd          }t          ddgg dgg dg dgddg	          }t	          ||
          }|                    ||d          }t	           ||          |
          }	t          j        ||	           d S )Nr   r   r   )rX   rU   helloworld)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )
rE   r   ru   exp_arr	exp_indexr(   r#   r`   rb   rP   s
             r)   test_xs_named_levels_axis_eq_1z3TestXSWithMultiIndex.test_xs_named_levels_axis_eq_1  s     iooa###J @ @ @A<<.6"
 
 

 sE***s%a00WWS\\9===
fh/////r+   indexerc                 4    |                      dddg          S )Nr   r   r   r   r8   r`   s    r)   r   zTestXSWithMultiIndex.<lambda>  s    ruuXeV_u== r+   c                 V    |                      d                               dd          S )Nr   r   r   r   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>  s     ruuSzz}}Qf}5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        ||           d S )
Nr   r   r   r   r   r   r   r!   r"   r   r   r'   rB   rx   rE   r   r*   r`   expected_valuesexpected_indexrP   rb   s           r)   test_xs_level_multiplez+TestXSWithMultiIndex.test_xs_level_multiple  s     (DDDE#ED6?A3*UG<L
 
 
 >4==
 
 
 
fh/////r+   c                 0    |                      dd          S )Nr   r   r   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>,  s    ruuSu22 r+   c                 ,    |                      d          S )Nr   r   r   s    r)   r   zTestXSWithMultiIndex.<lambda>,  s    ruuSzz 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        ||           d S )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77555
 $#J$!Q8q6Aq6Aq6****
 
 

 >4==
 
 
 
fh/////r+   c                     |}|                     d          j        }|j        d         }t          j        ||           d S )NrX   r   r   )r8   valuesrB   assert_almost_equalr   s        r)   test_xs_valuesz#TestXSWithMultiIndex.test_xs_values@  s?    -~&&-9Q<
vx00000r+   c                 x    |}|                     d          }|j        d         }t          j        ||           d S )Nr   )r8   r   rB   rC   r   s        r)   test_xs_loc_equalityz)TestXSWithMultiIndex.test_xs_loc_equalityF  s=    -~&&6.)
vx00000r+   c                    t          g dddggg dg dg          }t          t          j                            dd          |	          }|t
          u r|d         }|j        d
d                              d          }|                    t          dd d f                   }t          j        ||           |j        t          dd d f                  }t          j        ||           d S )N))rU   rX   r   )rU   r   r   rU   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r      r   rS   r   )r   r   r%   re   rf   r   rg   	droplevelr8   r   rB   assert_equalr   )rE   frame_or_seriesr#   objrP   rb   s         r)   +test_xs_IndexSlice_argument_not_implementedz@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implementedL  s     MMMPQSTvV%%%'9'9'9:
 
 

 	1--U;;;f$$a&C8BCC=**1--
#4aaa#7899
)))$5qqq$89:
)))))r+   c                     t          dg di          }|t          u r|d         }d}t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr2   r   r   r   zIndex must be a MultiIndexr4   r   asr   )r   r   r=   r>   	TypeErrorr8   )rE   r   r   r   s       r)   test_xs_levels_raisesz*TestXSWithMultiIndex.test_xs_levels_raises`  s    iii())f$$c(C*]9C000 	" 	"FF1DF!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A''A+.A+c                    t          j        g dddg          }t          g dg|          }|                    ddd	
          }t          ddggt          j        ddgddg                    }t	          j        ||           d S )N)r   r   r   r   )r   r   level1level2r   r   r   r   r   Fr6   rv   r   r  r  )r   r   r   r8   rB   rx   )rE   mir`   rb   rP   s        r)   "test_xs_multiindex_droplevel_falsez7TestXSWithMultiIndex.test_xs_multiindex_droplevel_falsei  s    #00088L
 
 
 			{B///su55VH*Z(80D  
 
 
 	fh/////r+   c                     t          g dgt          g d                    }|                    ddd          }t          ddgi          }t          j        ||           d S )Nr   r]   r   r   r   Fr  )r   r   r8   rB   rx   ry   s       r)   test_xs_droplevel_falsez,TestXSWithMultiIndex.test_xs_droplevel_falsex  si    			{E///,B,BCCCsu55cA3Z((
fh/////r+   c                    t          g dgt          g d                    }|                    ddd          }t          j        |j        d d df         j        |j        d d df         j                  sJ d	|j        d
<   |rt          ddgi          }nt          dd	gi          }t          j        ||           t          g dgt          g d                    }|                    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        ||           d S )Nr   r]   r   r   r   Fr  r   r   )r   r   )r   g      @r   )	r   r   r8   r%   shares_memoryrg   _valuesrB   rx   )rE   r   rH   r`   rb   rP   s         r)   test_xs_droplevel_false_viewz1TestXSWithMultiIndex.test_xs_droplevel_false_view  sy   			{E///,B,BCCCsu55AAAqD 1 927111a4=;PQQQQQ 	- #s,,HH !#s,,H
fh/// ooo0F0FGGGsu55 		- #s,,HH  	- #s,,HH !#s,,H
fh/////r+   c                     t          j        g d          }t          g dg dg|          }t          j        t
          d          5  |                    ddd	
           d d d            d S # 1 swxY w Y   d S )N))r   mr   )r   nr   )r   or^   r   )r   r   r   r   r   r4   )r   r   Fr   )rv   r6   )r   r   r   r=   r>   r?   r8   )rE   r	  r`   s      r)   $test_xs_list_indexer_droplevel_falsez9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_false  s    #$W$W$WXX			999-r:::]83/// 	8 	8EE*QE777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   	A//A36A3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      s6       0 0 0"	0 	0 	00 0 0	0 	0 	0+ + +$+ + +$ [\,=(?T+UVV0 0 WV00 0 0* [(&--uueU^&/Q/Q/QRF//u61J1J1JK	
 0 0 0 [==55	
 
0 
0 
0 [224I4IJ 0 0 0$1 1 11 1 1* * *(" " "0 0 00 0 00 0 0B8 8 8 8 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     s5   				      . . . . . .                      ' ' ' ' ' ' > > > e* e* e* e* e* e* e* e*PW8 W8 W8 W8 W8 W8 W8 W8 W8 W8r+   