
    bMh3                        d dl Zd dlZd dlmZmZmZmZ d dlm	Z
 d dlmZ ej                            dd d d g          ej                            dd  ed	gd g
          fd	 eddgd	dg
          fg          d                         Zej                            dddg          d             Zd Zd Zej                            dd edfd edfd edfd edfd edfd edfd edfg          d              Zd! Zd" Zej                            d#d$ d%fd& d'fg          d(             Zd) Zd* Zej                            d+d,  ed          fd-  edd.          fd/  edd.          fg          d0             Zd1 Zd2 Zej                            d3d4gd5ej        gf eddgd.d6gg ej         d7d4ej        fg          d89          fd:d4g eg d;g d<g ej         d=d7d4ej        fg          d89          fd4g eddgd.d6gg ej         d7d4ej        fg          d89          fd4gd5gf edgd.gg ej         d7g          d89          fd4gej        gf edgd6gg ed	gd>ggd:d4gd5d?gg@          d89          fd4ej        f edd6gd8d4ej        fA          fg          dB             Z!ej"        dC             Z#ej                            dDdE dF g          dG             Z$dH Z%dI Z&dJ Z'dK Z(dS )L    N)	DataFrameIndex
MultiIndexSeries)IndexingErroraccess_methodc                     | d d |f         S N sxs     m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/indexing/multiindex/test_getitem.py<lambda>r      s    !AAAqD'     c                 $    | j         d d |f         S r
   locr   s     r   r   r      s    aaad r   c                 0    |                      |d          S )N   )level)xsr   s     r   r   r      s    !$$qPQ$BRBR r   zlevel1_value, expectedr   index      c                     t          j        g dddg          }t          g d|          }d|j        _         | ||          }t          j        ||           d S )N))r   r   )r   r   )r   r   ABnamesr   r   r   r   )r   from_tuplesr   r   nametmassert_series_equal)r   level1_valueexpectedmiserresults         r   test_series_getitem_multiindexr,      sn     
	 8 8 8c
	K	K	KB
"
%
%
%CHN]3--F68,,,,,r   level0_valueDr   c                    t          | ddgg dgg dg dgddg          }t          j                            d	                              t          |          d
f          }t          ||dg          }| dk    r@t          j        t          d          5  |j
        d          d d d            n# 1 swxY w Y   t          j        t          d          5  |j
        d          d d d            n# 1 swxY w Y   |j
        |          }t          |                                dd         dt          g dd                    }t          j        ||           d S )Nr   C)r         %   9   C   K   R   )
r   r   r   r   r   r   r   r   r   r   )
r   r         r   r   r   r         tagdaylevelscodesr!   r   r   valr   columnsr   z^'A'$matchz^'X'$Xr   r   )r1   r3   r4   r$   )r$   r   )r   nprandomdefault_rngstandard_normallenr   pytestraisesKeyErrorrA   r   ravelr   r%   r&   )r-   r   arrdfr+   r(   s         r   )test_series_getitem_duplicates_multiindexrS   &   s   
 sC(*I*I*IJ---/M/M/MNen  E
 )


"
"
2
2CJJ?
C
CC	3eeW	5	5	5B s]88444 	 	F3KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
xx	0	0	0  
s               VL!F		AaCuE,,,U,K,K,K  H 68,,,,,s$   B11B58B5C11C58C5c                 
   | d         }|                     |j        dd                   }|j                            d                              d          |_         ||          d         }t          j        ||           d S )Nr   *   A   r   )  r   )reindexr   	droplevelr%   r&   /multiindex_year_month_day_dataframe_random_data
indexer_slr   r(   r+   s        r   test_series_getitemr]   B   sw    7<AyyB((H^--a00::1==HNZ]]7#F68,,,,,r   c                 b    | d         }|j         d         } ||          d         }||k    sJ d S )Nr   1   )rW   r   
   )ilocrZ   s        r   "test_series_getitem_returns_scalarrb   K   sB     	8<AvbzHZ]];'FXr   z)indexer,expected_error,expected_error_msgc                 ,    |                      d          S N)rW   r   r8   )__getitem__r   s    r   r   r   X   s    1==.. r   z^\(2000, 3, 4\)$c                     | d         S rd   r   rf   s    r   r   r   Y   s
    1\? r   c                     | j         d         S rd   r   rf   s    r   r   r   Z   s    15& r   c                     | j         d         S )N)rW   r   r8   r:   r   rf   s    r   r   r   [   s    15) r   zToo many indexersc                 F    |                      t          |                     S r
   )re   rL   rf   s    r   r   r   \   s    1==Q(( r    c                 ,    | t          |                    S r
   )rL   rf   s    r   r   r   ]   s    1SVV9 r   c                 6    | j         t          |                    S r
   )ra   rL   rf   s    r   r   r   _   s    afSVVn r   z*single positional indexer is out-of-boundsc                     | d         }t          j        ||          5   ||           d d d            d S # 1 swxY w Y   d S )Nr   rD   )rM   rN   )r[   indexerexpected_errorexpected_error_msgr   s        r   #test_series_getitem_indexing_errorsrr   U   s    , 	8<A	~-?	@	@	@  


                 s   8<<c                 |    | d         }|d |D                      }||dk             }t          j        ||           d S )Nr   c              3   "   K   | ]
}|d k    V  dS )r   Nr   ).0r   s     r   	<genexpr>z7test_series_getitem_corner_generator.<locals>.<genexpr>t   s&      !!!A!!!!!!r   r   )r%   r&   )r[   r   r+   r(   s       r   $test_series_getitem_corner_generatorrw   p   sM     	8<A!!q!!!"FQxH68,,,,,r   c                 z    | j         }|j        d d df         }|d         j        }t          j        ||           d S )Nr   )fooone)Tvaluesr%   assert_almost_equal) multiindex_dataframe_random_datarR   r(   r+   s       r   test_getitem_simpler   ~   sC    	)	+ByAH$F68,,,,,r   zindexer,expected_error_msgc                     | d         S )N)ry   fourr   rR   s    r   r   r      s    B' r   z^\('foo', 'four'\)$c                     | d         S )Nfoobarr   r   s    r   r   r      s
    BxL r   z
^'foobar'$c                     | j         }t          j        t          |          5   ||           d d d            d S # 1 swxY w Y   d S )NrD   )r{   rM   rN   rO   )r~   ro   rq   rR   s       r   #test_frame_getitem_simple_key_errorr      s     
*	+B	x'9	:	:	:                   s   <A A c                     t          j        g d          } t          t          d          t          dd          t          dd          g|           }d|d	<   |                                }|j                                        |_        d|d
<   |dd
g         }t          ddgddgddggt          dd
g                    }t          j	        ||           d S )N)aaa)r   ab)bba)r   bbr8   r   r:   r   r9   rC   r   single_indexnew_single_indexr   )
r   r#   r   rangecopyrC   to_flat_indexr   r%   assert_frame_equal)r)   rR   df_flatr+   r(   s        r   test_tuple_string_column_namesr      s    		 T T T	U	UB	E!HHeAqkk5A;;7	D	D	DBB~ggiiGo3355GO"#Gk#567F
Q!Q!Q %>P0Q*R*R  H &(+++++r   c                      t          g dg dd          } ddgddgdd	gg| _        | d         }t          d
gdgdgg| j        dg          }t          j        ||           d S )N)123)r   r   4)r   r   zlevel1 item1zlevel1 item2rk   zlevel2 item2zlevel3 item1zlevel3 item2r   r   r   rB   )r   rC   r   r%   r   rR   r+   r(   s      r   *test_frame_getitem_multicolumn_empty_levelr      s    	??	@	@B	(	^	(BJ F
uRX7G  H &(+++++r   zindexer,expected_slicec                     | d         S )Nry   r   r   s    r   r   r      
    BuI r   c                     | d         S Nbarr   r   s    r   r   r      r   r   r:   c                 $    | j         d d df         S r   r   r   s    r   r   r      s    BF111e8$ r   c                     | j         }|                    |j        |                   }|j                            d          |_         ||          }t	          j        ||           d S )Nr   r   )r{   rX   rC   rY   r%   r   )r~   ro   expected_slicerR   r(   r+   s         r   test_frame_getitem_toplevelr      se     
*	+Bzz"*^"<z==H'11!44HWR[[F&(+++++r   c                     g dg dg dg} t          t          |            }t          j        |          }t	          t
          j                            d                              d          |          }|d         }|d         	                    d          }t          j        ||           |d	         }|d
         }|	                    d	          }t          j        ||           d S )N)r   topr   routine1r   routine2)rk   ODr   result1result2r   )rk   wxwyrk   rk   rk   r   )r8   r9   r   r   )r   rk   rk   )r   r   )r   r   rk   )sortedzipr   r#   r   rH   rI   rJ   rK   renamer%   r&   )arraystuplesr   rR   r+   r(   s         r   test_frame_mixed_depth_getr      s    ???999$$$F CL!!F"6**E	29((++;;FCCU	S	S	SBWF+%%c**H68,,,%&F+,H677H68,,,,,r   c                 z   | }g d}t          d|dgd|dgd|dgd|d	gg|
                              ddg          }|d                             d          |d<   d|f}|j        d |         }t          d|dgd|dgg|
                              ddg          }|d                             d          |d<   t	          j        ||           |j        |d          }t          d|dgd|dgd|d	gg|
                              ddg          }|d                             d          |d<   t	          j        ||           d|fd|f}}|j        ||         }t          d|dgd|dgg|
                              ddg          }|d                             d          |d<   t	          j        ||           d S )N)r   r   c               !   )   +   r   r   r   r   int64)r   	set_indexastyper   r%   r   )	nulls_fixturencolsrR   idxr+   r(   idx1idx2s	            r   !test_frame_getitem_nan_multiindexr      s
    	A??D	
ar1bkB2;Q<
 
 
 ic
  gnnW%%BsGq'CVDSD\F2q"+Ar{3TBBBLLcSVZXXHSM((11HSM&(+++VCDD\F
ar1bkB2;/  ic
  SM((11HSM&(+++a2q'$DVDIF2q"+Ar{3TBBBLLcSVZXXHSM((11HSM&(+++++r   zindexer,expectedr   r   r9   r   r   r   rC   dtyper   r"   r8   r:   r9   r   ry   ry   )r@   r?   )r   r$   c           	          t          g dg dgt          j        ddd|fg          d          }|j        d d | f         }t	          j        ||           d S )Nr"   r   r   r   r   r   r   )r   r   r#   r   r%   assert_equal)ro   r(   r   rR   r+   s        r   &test_frame_getitem_nan_cols_multiindexr      s{    F 
	III&<#})=>
 
 
 
 
B VAAAwJFOFH%%%%%r   c                      g dg dg dg} g d}t          ddgg dgg dg dgd	d
g          }t          | ||          S )z;Fixture for DataFrame used in tests for gh-4145 and gh-4146)r   der   fr   )r   r8   r:   r   r9   r   h1h3h5r   r   )A1A2B1B2)r   r   r   r   r   r   )r   r   r   r   r   r   mainsubr>   rB   )r   r   )datar   rC   s      r   dataframe_with_duplicate_indexr   N  s     +**,>,>,>@R@R@RSDEc
4445!!!#5#5#56uo  G
 T8888r   ro   c                     | d         S Nr   r   r   r   s    r   r   r   \  s
    2k? r   c                 $    | j         d d df         S r   r   r   s    r   r   r   \  s    rvaaan7M r   c                     | }t          g d          }t          j        dgddg          }t          g dg||          j        } ||          }t          j        ||           d S )Nr   r   r   r   r    r   r   r   rB   )r   r   r#   r   r{   r%   r   )r   ro   rR   r   rC   r(   r+   s          r   test_frame_mi_accessr   [  s{    
 
(B$$$%%E$k]65/JJJG+++guEEEGHWR[[F&(+++++r   c                 |    | }t          g dg dd          }|d         d         }t          j        ||           d S )Nr   r   r   )r   r$   r   )r   r%   r&   r   rR   r(   r+   s       r   #test_frame_mi_access_returns_seriesr   i  sN    
 
(Bkkk);););$GGGHWT]F68,,,,,r   c                     | }t          g dg dgt          ddgd          g d          j        }|d         d         }t          j        ||           d S )	N)r   r8   r8   )r   r:   r:   r   r   rG   r   rB   r   )r   r   r{   r%   r   r   s       r   "test_frame_mi_access_returns_framer   t  sx    	'B	kkk"T4Lu---"""   	 
 WT]F&(+++++r   c                      t          dt          d          t          j        dgdgg                    } | g          }t          ddgt          dgdggg g g                    }t	          j        ||           d S )Nr   r   r   rB   )r?   r@   )r   r   r   from_productr%   r   r   s      r   test_frame_mi_empty_slicer     s    	1E!HHj.EsQCj.Q.Q	R	R	RBVF!fj!qc
2r(KKK  H &(+++++r   c                     g dg dg} t          j        | d          }t          g d|dg          }|j        |j        d d df         dk    d d f         j        }|j        |d d f         }|j        d	gt          |j                  z  d d f         }t          j        ||           d
|j        |j        |j        d d df         dk             j        df<   |}t          g d|dg          }t          j        ||           d S )N)r   r   r   r   )r   r   r   r   )r   r   r    )r   r   r   r8   valuerB   r   Fr:   )r   from_arraysr   r   r   rL   r%   r   )r   r   rR   empty_multiindexr+   r(   s         r   test_loc_empty_multiindexr     s.   """$8$8$89F"61ABBBE	<<<uwi	@	@	@B vbfQQQZ0A5qqq89?V$aaa'(FvugBH-qqq01H&(+++ >?BF26"&G$)*0'9:FUWIFFFH&(+++++r   ))numpyrH   rM   pandasr   r   r   r   pandas._testing_testingr%   pandas.core.indexingr   markparametrizer,   rS   r]   rb   rO   
IndexErrorrr   rw   r   r   r   r   slicer   r   r   nanr#   r   fixturer   r   r   r   r   r   r   r   r   <module>r     s                         . . . . . . 335R5RS  A3			 1ffaVAq6&B&B&B"CD 	- 	-	 	 	- #s44- - 54-6- - -   /	.	.:MN	"	"H.AB	&	&2EF	)	)=:MN	(	((B7		h+$$8	
   !  - - -- - -  	'	')?@	 	 -0   , , ,", , , 		uuQxx(		uuQ{{+	$	$eeAqkk2 , , ,- - -*, , ,>  UUBFO$	VaV$2J2L3-3PQQ!  		
 3Z	YY			*2J2%|c26]C  "  	
 U	VaV$2J2L3-3PQQ!  		
 UUG	S1#J2J2L>BB!  		
 URVH	S1#J&J !sRDkC:u~2N   "  	
 rv1vWC=IIIJo8; ;x& &y; ;x&0 	9 	9 	9 **,M,MN , , ,- - -	, 	, 	,, , ,, , , , ,r   