
    dD{                     .   d dl Zd dlZd dlmZmZ d dlZd dlmZm	Z	m
Z
mZ d dlmZ ej        d             Zej        d             Z G d d          Zej                            dg g fd	g ed
          fd	dgg fddgg fdgg fej        dddgf          eddd
          fej        ddddgf          eddd
          fg          d             Zej                            dg  ed          fdgg f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%d  Z& G d! d"          Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-ej                            d)g d*g d+g          d,             Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7dS )6    N)IndexingErrorPerformanceWarning)	DataFrameIndex
MultiIndexSeriesc                  4    t          g dgg dgdg          S )zsingle level MultiIndex)foobarbazqux)r            first)levelscodesnames)r        e/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/indexing/multiindex/test_loc.pysingle_level_multiindexr      s3     ,,,-lll^G9   r   c                      ddgg dg} g dg dg}t          | |          }t          t          j                            dd          |	          S )
Nr   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r      r   index)r   r   nprandomrandn)r   r   r   s      r   %frame_random_data_integer_multi_indexr!      s`    !fiii F!3!3!34EfE222ERY__Q**%8888r   c                   R   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
ddgddgfdgg fddgg fg          d             Zd Zd Zd Zd Zd Zej                            deeeeej        eef          ej                            deeeeej        eef          d                         Zd Zej                            dddg          d             Zej                            d ed          d fd!ej         fg          d"             Z!d# Z"d$ Z#dS )%TestMultiIndexLocc                     |}d|j         d<   |j         d         dk    sJ |                                }t          t          d                    |_        d|j         d<   |j         d         dk    sJ d S )N   )r   twoBr      )r&   r   )loccopylistrangecolumns)self multiindex_dataframe_random_dataframedfs       r   &test_loc_setitem_frame_with_multiindexz8TestMultiIndexLoc.test_loc_setitem_frame_with_multiindex$   s{    0)*	%&y,-2222 ZZ\\%((^^
$% !v'(A------r   c                    |}ddddddddddddd	d
d	d	d	dd}t          |          }|                    ||d          }|                    ddg          }d}t          j        t
                    5  t          j        |j        |         |j        dd                     d d d            n# 1 swxY w Y   |	                    d          }|J |j        |         }t          j        dgdz  |          }t          j        d	gdz  |          }	t          j        ||	gddg          }
t          dg di|
          }t          j        ||           d S )Ni  iX     M    )r   r   r   r      g      @      @      )amountcolnum)r=   r>   r=   r>   )keys)r9   r:   r   T)inplacer   dtyper   r<   )r5   r6   r7   r   )r   astype	set_indextmassert_produces_warningr   assert_frame_equalr*   iloc
sort_indexr   arrayr   from_arrays)r/   any_real_numpy_dtyperB   datar2   keyreturn_valuerescol_arryear_arrr   expecteds               r   test_loc_getitem_generalz*TestMultiIndexLoc.test_loc_getitem_general/   s   $####>>ssss;;bRB266
 

 t__YYuU3344\\u~\.. '(:;; 	< 	<!"&+rwqrr{;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< }}T}22###fSk (C519E2228RD1HE222&':5%.QQQh8FFF
c8,,,,,s   5.B//B36B3c                     t          t          j                            dd          g dg dgg dg dg          }t	          j        t          d          5  |j        d	          d d d            d S # 1 swxY w Y   d S 
Nr   r   r   r8   r      
   r8   r8   rZ   rZ   r[   r:   r.   r   z^2$matchr   r   r   r   r    pytestraisesKeyErrorr*   r/   r2   s     r   0test_loc_getitem_multiindex_missing_label_raiseszBTestMultiIndexLoc.test_loc_getitem_multiindex_missing_label_raisesL   s    IOOAq!!YY


+99kkk*
 
 
 ]86222 	 	F1II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A33A7:A7c                     |d         }|                     |j        dd                   }|j        ddg         }t          j        ||           d S )NA1   3   )  r   r[   )rl   r      )reindexr   r*   rF   assert_series_equal)r/   /multiindex_year_month_day_dataframe_random_dataserrT   results        r   /test_loc_getitem_list_of_tuples_with_multiindexzATestMultiIndexLoc.test_loc_getitem_list_of_tuples_with_multiindexW   sT     >cB;;syB/00-78
vx00000r   c                    t          j        g dg dg          }t          |t          d          t          j                  }t          ddg          }t          g dt          j        ddgg dg          t          j                  }|j        |         }t          j        ||           |j        ddg         }t          j        ||           t          ddgdd	g
          }|j        |         }t          j        ||           t          g t          j                  }t          g t          |j	        g g gt          j                  t          j                  }|j        |         }t          j        ||           d S )Nr   r   r   ri   r(   C	   r   rN   rB   r   r   r   r   r   r   r)   rZ   rN   r   rB   r   r   )rN   rB   r   r   rB   r   rB   )
r   from_productr   r-   r   float64r*   rF   ro   r   )r/   r   xyrT   rr   y1emptys           r   test_loc_getitem_seriesz)TestMultiIndexLoc.test_loc_getitem_series_   su    'OOO(DEEU1XXRZ@@@Aq6NN###)Aq6???*CDD*
 
 

 q
vx0001v
vx000 QF1a&)))r
vx000Bbj111ELR
SSS*
 
 

 u
vx00000r   c                    t          j        g dg dg          }t          |t          d          t          j                  }t	          j        ddg          }t          g dt          j        ddgg dg          t          j                  }|j        |         }t          j	        ||           t	          j        g           }t          g t          |j
        g g gt          j        	          d
          }|j        |         }t          j	        ||           t	          j        d          }t          g dg dt          j                  }|j        |         }t          j	        ||           d S )Nru   rv   rx   ry   r   r   rz   r{   r|   r   r}   r   )r   r~   r   r-   r   r   rK   r*   rF   ro   r   int64)r/   r   r   r   rT   rr   r   scalars           r   test_loc_getitem_arrayz(TestMultiIndexLoc.test_loc_getitem_array~   sa    'OOO(DEEU1XXRZ@@@HaV###)Aq6???*CDD*
 
 

 q
vx000 ELR
SSS
 
 

 u
vx000 !yyyrzRRRv
vx00000r   c                    t          t          j                            dd          g dg dgg dg dg          }|j        ddg                             d          }|j        d         }t          j        ||           |j        d d d	gf                             dd
          }|j        d d df         }t          j        ||           |j        d	gd	gf                             d                              dd
          }|j        d         j        d d df         }t          j        ||           |j        ddg         }|j        d         }t          j        ||           d S )Nr   )ir   j)ri   ri   r(   )Xr   Yr^   r   r   r   r   axisr   )r   r   	r   r   r   r    rI   	droplevelr*   rF   rH   r/   r2   rT   rr   s       r   test_loc_multiindex_labelsz,TestMultiIndexLoc.test_loc_multiindex_labels   sp   IOOAq!!$__ooo6"??OOO4
 
 
 7Aq6?,,Q//
fh/// 7111qc6?,,QQ,773
fh/// 7A38$..q11;;AA;FFC(
fh/// 7Aq6?
#
fh/////r   c                    t          t          j                            dd          g dg dgg dg dg          }|j        ddg                             d          }|j        d	         }t          j        ||           d S )
Nr   rX   rY   r\   r]   r^   r   r   r8   r   r   s       r   test_loc_multiindex_intsz*TestMultiIndexLoc.test_loc_multiindex_ints   s    IOOAq!!YY


+99kkk*
 
 

 7Aq6?,,Q//
fh/////r   c                     t          t          j                            dd          g dg dgg dg dg          }t	          j        t          d          5  |j        d	          d d d            d S # 1 swxY w Y   d S rW   ra   re   s     r   (test_loc_multiindex_missing_label_raisesz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raises   s    IOOAq!!YY


+99kkk*
 
 
 ]86222 	 	F1II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rg   zkey, posr   r8   r   r   r   c                     t          t          j                            dd          g dg dgg dg dg          }t	          j        t          d          5  |j        |          d d d            d S # 1 swxY w Y   d S )	Nr   rX   rY   r\   r]   r^   znot in indexr_   ra   )r/   rO   posr2   s       r   &test_loc_multiindex_list_missing_labelz8TestMultiIndexLoc.test_loc_multiindex_list_missing_label   s     IOOAq!!YY


+99kkk*
 
 
 ]8>::: 	 	F3KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rg   c           	         t          t          d          t          j        ddgddgddgg                    }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   t	          j        t          d
          5  |j        d          d d d            d S # 1 swxY w Y   d S )NrZ   abcdefr   z^\('a', 'b'\)$r_   r   r   z^\('a', 'd', 'g'\)$)r   r   gzToo many indexers)r   r   r   r   )	r   r-   r   r~   rb   rc   rd   r*   r   )r/   ss     r   (test_loc_multiindex_too_many_dims_raisesz:TestMultiIndexLoc.test_loc_multiindex_too_many_dims_raises   s   !HH)C:SzC:*NOO
 
 

 ]8+<=== 	 	E(OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8+ABBB 	! 	!E-  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]=0CDDD 	& 	&E$%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s6   A//A36A3B//B36B3C00C47C4c                 L   d t          d          D             }d t          d          D             }t          j        ||g          }dt          j                            dd          z  dz   }t          ||          }||         }t          j        ||           t          t          j	        d	          
                    d
d          t          j        g dg dg                    }|j        ddgfd d f         }|j        ddg         }t          j        ||           d S )Nc                 2    g | ]}d t          |          z   S )	Attributestr.0r   s     r   
<listcomp>zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>   s#    ===qkCFF*===r   r   c                 2    g | ]}d t          |          z   S )Valuer   r   s     r   r   zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>   s#    ???Gc!ff,???r   r%   g?r[   g      ?r.   r:   r   r   r   r8   ru   r   r   )r-   r   r~   r   r   r    r   rF   rH   arangereshaper*   )r/   
attributesattribute_valuesr   r2   rr   rT   s          r    test_loc_multiindex_indexer_nonez2TestMultiIndexLoc.test_loc_multiindex_indexer_none   s*    >=E!HH===
??eAhh???'5E(FGG29??2u---3r5)))J
fb))) IbMM!!"a(()<<<*CDD
 
 

 6Aq6)QQQ,'A
fh/////r   c                    t          t          j        dd          t          j        t          d          g dg                    }|j        d d ddf         }|j        dd	ddf         }t          j        ||           |j        d d	ddf         }t          j        ||           |j        dd ddf         }t          j        ||           t          t          j        dd          t          j        t          d          g dg                    }|j	        g d
         }|j        dd	dddf         }t          j        ||           d S )N   r   rA   r%   r   r   r   r   r   r   r8   )r   r)   rZ   r:   rm      r   )
r   r   r   r   r~   r-   r*   rF   ro   rI   )r/   r   rT   rr   s       r   test_loc_multiindex_incompletez0TestMultiIndexLoc.test_loc_multiindex_incomplete   se    Ib(((#U1XX$?@@
 
 5CG$qsCG|$
vx000rr3s7{#
vx000qrr3s7{#
vx000 Ib(((#U1XX$?@@
 
 6///0q1uc#g~&
vx00000r   c                     |}t          t          j                            t	          |                    |          }|j        D ]
}||          d S )Nr   )r   r   r   r    lenvalues)r/   r   single_levelr   ks        r   test_get_loc_single_levelz+TestMultiIndexLoc.test_get_loc_single_level  sV    .29??3|#4#455\JJJ$ 	 	AaDDD	 	r   c                    t          j        g dddgg          }t          t          j                            dd          ||          }|j        ddd d f         }|}t          j        ||           t          j        g dddgg          }t          t          j                            dd          ||          }|j        ddd d f         }|j	        d	d          }t          j        ||           |j        d
d d f         }|j	        dd	         }ddg|_
        t          j        ||           |j        d d d
f         }|d
         }t          j        ||           d S )N)r   r)   rZ   r   r   r   rZ   r[         r   r   r   r[   r   )r   r~   r   r   r   r    r*   rF   rH   rI   r   )r/   r   r2   rr   rT   s        r   test_loc_getitem_int_slicez,TestMultiIndexLoc.test_loc_getitem_int_slice  s`    'S#J(?@@ryq!,,eU;;!QQQ
fh///'Sz(BCCryq!,,eU;;2qqq!7122;
fh/// AAA71Q3<s
fh///2b6
fh/////r   indexer_type_1indexer_type_2c                 \   d g d}g d}t          j        ||g          }t          t          j        t          |          d          |dg          }dd	gd
dgf}||f}t          fdt          ||          D                       }	|t          u s	|t          u rDt          j
        t          d          5  |j        |	df          d d d            n# 1 swxY w Y   d S |j        |	df         }
t          g ddt          j        |                    }t          j        |
|           d S )Nc                     | t           j        k    rt          j        |          S | t          k    r	t          | S  | |          S N)r   ndarrayrK   slice)indexer_typer?   s     r   convert_nested_indexerzQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerC  sB    rz))x~~%u$$d|#<%%%r   r   ru   r   rA   Datar   r.   r[   r   r   r   c              3   6   K   | ]\  }} ||          V  d S r   r   )r   r   r   r   s      r   	<genexpr>zDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>V  sH       
 
a #"<33
 
 
 
 
 
r   zas an indexer is not supportedr_   )r   r   r8   r%   namer   )r   r~   r   r   r   r   tuplezipsetrb   rc   	TypeErrorr*   r   rF   ro   )r/   r   r   r   r   r   r2   r?   typesindexerrr   rT   r   s               @r   test_loc_getitem_nested_indexerz1TestMultiIndexLoc.test_loc_getitem_nested_indexer8  s   	& 	& 	& LLII'A//Ic%jj000x
 
 
 R1a&!0  
 
 
 
#&ud#3#3
 
 
 
 
 S  Nc$9$9y0PQQQ ( (w''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( FVGVO,FLLvZ-DT-J-J
 
 
 	vx00000s   9CCCc                     t          j        ddg          } |ddg|          }d|j        d<    |ddg|          }t          j        ||           d S )Nr   ri   r   ri   r   r   r   r   r   )r   from_tuplesr*   rF   assert_equal)r/   frame_or_seriesmiobjrT   s        r   )test_multiindex_loc_one_dimensional_tuplez;TestMultiIndexLoc.test_multiindex_loc_one_dimensional_tupleg  sj    #Z$<==oq!fB///"?Aq6444
X&&&&&r   r   r   r   c                     t          j        ddg          }t          ddg|          }d|j        |d d f<   t          ddg|          }t	          j        ||           d S )Nr   r   r   r   r   r   r   r   r   r*   rF   rH   )r/   r   r   r   rT   s        r   -test_multiindex_one_dimensional_tuple_columnsz?TestMultiIndexLoc.test_multiindex_one_dimensional_tuple_columnso  sr     #Z$<==Ab)))
aV2...
c8,,,,,r   zindexer, exp_valueN      ?r   r   c                     t          j        ddg          }t          ddgddgg|ddg	          }d
|j        |ddgf<   t          g ddd||gg|g d	          }t	          j        ||           d S )Nr   r   r8   r   r   r   r8   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r/   r   	exp_valuer   r2   rT   s         r   )test_multiindex_setitem_columns_enlargingz;TestMultiIndexLoc.test_multiindex_setitem_columns_enlargingx  s    
 #VV$455AA'rC:FFF&)wc
"#1i;<(((
 
 

 	b(+++++r   c                    t          j        t          j        dd          t	          ddg          g          }t          d|          }t          d|d d                   }t          j        ||gd          }|                                }|j        d	d
         }t          j
        ||           t          ||d          }|j        d	d
         }t          j
        ||           t          j        ||                    |j                  gd          }|j        d	d
         }t          j
        ||           d S )N20110101r   periodsr   r   r   r   r   z
2011-01-01z
2011-01-02r   r   )r   r~   pd
date_ranger   r   concatr+   r*   rF   rH   r   rn   r   )r/   midxser1ser2r2   rT   rr   s          r   "test_sorted_multiindex_after_unionz4TestMultiIndexLoc.test_sorted_multiindex_after_union  s8   &]:q1115#s3D3DE
 
 at$$$atBQBx(((Yd|!,,,7799\12
fh///4D))**\12
fh///Ydll4:667a@@@\12
fh/////r   c           	         t          t          j        t          d          t          d          t          d          g          dg          }|j        t
          j        d d dd d f                  }t          t          j        t          d          t          d          g          dg          }t          j        ||           d S )Nabcdr   Valr   r   )	r   r   r~   r,   r*   r   s_rF   rH   )r/   r2   rQ   rT   s       r   test_loc_no_second_level_indexz0TestMultiIndexLoc.test_loc_no_second_level_index  s    )4::tDzz499*MNNG
 
 
 fRU111c1119%&)4::tCyy*ABBUG
 
 
 	c8,,,,,r   )$__name__
__module____qualname__r3   rU   rf   rs   r   r   r   r   r   rb   markparametrizer   r   r   r   r   r   r,   r   r   r   r   r   r   r   r   r   r   nanr   r   r  r   r   r   r#   r#   #   sc       	. 	. 	.- - -:	 	 	1 1 11 1 1>1 1 1<0 0 060 0 0   [ZAq6Aq6*:aS"IAPR|)TUU	 	 VU	& & &0 0 0.1 1 18  0 0 04 [4UBJN  [4UBJN '1 '1  '1R' ' ' [Y#88- - 98- [dS1FBF3CD 
, 
, 
,0 0 0(
- 
- 
- 
- 
-r   r#   zindexer, posri   r   DEr
   r   bahc                    t          j        g dg dgddg          }t          t          j        dd          |	                                          }|j        |         }|j        d
k    rV| g k    rPt          j	        t          t          |                     5  |j        |           d d d            d S # 1 swxY w Y   d S | t          d           ddgfk    rCt          j	        t          d          5  |j        |           d d d            d S # 1 swxY w Y   d S |j        |          }t          j        ||           d S )Nrv   r
   r   r   oner'   rC   rx   r   rA   r   r   r_   r
   r  z'bah')r   r~   r   r   r   rJ   rI   sizerb   rc   rd   r   r*   r   rF   ro   )r   r   idxrq   rT   rr   s         r   7test_loc_getitem_duplicates_multiindex_missing_indexersr    s    
!	///0  C 1G,,,C
8
8
8
C
C
E
ECx}H}gmm]83w<<888 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		U4[[5%.1	1	1]87333 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !
vx00000s$   B77B;>B;6DDDcolumns_indexerc                    t          j        g dddgf          }t          t          j                            dd          t          d          |          }|                    dd	          }t          t          d          |                    g           d                   }|j	        d d | f         }t          j        ||           d S )
Nr  alphabetar%   r   r   r   r   )levelr   )r   r~   r   r   r   r    r-   rJ   rn   r*   rF   rH   )r  multi_indexr2   rT   rr   s        r   4test_loc_getitem_duplicates_multiindex_empty_indexerr    s     )+@+@+@7FBS*TUUK	29??1a((a+	N	N	NB	QQ	'	'BuQxx1D1DR1H1H1KLLLHVAAA&'F&(+++++r   c                      t          t          j        t          j        gddggt	          j        ddg          ddg          } | j        d         }t          j        }||k    sJ d S )	Nmeanmedianfunctsr  )r  r  functionr   r^   )r  r  )r   r   r  r  r   r   r*   r2   rr   rT   s      r   =test_loc_getitem_duplicates_multiindex_non_scalar_type_objectr!    sx     

'29	12&(:<P'QRR6"
 
 
B
 V23FwHXr   c                  z   t          t          j        d          t          j        d          t          j                            d          t          j                            d          d                              ddg          } | j        d         }| j        dd d f         }t          j        ||           d S )Nr[   r   r   r   )r   r   )	r   r   r   r   r    rE   r*   rF   ro   )r2   rT   rr   s      r   !test_loc_getitem_tuple_plus_slicer#    s    	22$$$$		
 	

 
 ic
  vd|HVFAAAIF68,,,,,r   c                     | }|j         d         }|dd          }|j                            d          |_        t          j        ||           d S )Nr   r   )r*   r   r   rF   rH   )r!   r2   rr   rT   s       r   test_loc_getitem_intr&    sO    	.BVAYF"##wH^--a00HN&(+++++r   c                     | }t          j        t          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )Nz^3$r_   r   )rb   rc   rd   r*   )r!   r2   s     r   %test_loc_getitem_int_raises_exceptionr(    s    	.B	xv	.	.	.  
q		                 s   9= =c                     | }t          j        t          d          5  |j        d          d d d            n# 1 swxY w Y   d|j        d<   d}|                                j        d         }||k    sJ d S )Nz^\('bar', 'three'\)$r_   ))r   threer(   r   )rb   rc   rd   r*   rJ   )r0   r2   rT   rr   s       r    test_loc_getitem_lowerdim_cornerr+     s    	)B 
x'>	?	?	? & &
$%%& & & & & & & & & & & & & & & %&BF !H]]__ !67FXs   8<<c                  r   t          dt          d          t          j        dgdg                    } d| d<   | j        | j        d d df<   t          j        t          j	        | d                   t          j	        | j                             t          t          j
        t          d          t          j        g d	                    } |                                 }t          j        d          | j        d d d
f<   t          j        d          |j        d d df<   t          j        | |           d S )NstringabcdMain)anotherr  r   r   labelsr8   ))ri   1)ri   2)r(   r2  r(   r   )r   r,   r   r~   r   r*   rF   assert_numpy_array_equalr   asarrayr	  r-   r   r+   r   rI   rH   )r2   rT   s     r   $test_loc_setitem_single_column_slicer6    s   	6ll'&3E(FGG
 
 
B
 BxL(BF111h;
2h< 8 8"*RX:N:NOOO 

Ahh&'K'K'KLL
 
 
B
 wwyyHYq\\BF111c6N)A,,HM!!!Q$"h'''''r   c            
      B   ddt           j        fddt           j        fddt           j        fddt           j        fdddd	t           j        fdd
t           j        fg} t          t          j        d          t	          g d          t          j        | g d                    }|j        d         j        d         }t          t          j        d          t	          t           j        gdd          t	          g dd                    }t          j	        ||           d S )NzGood Thingsrw   Rz
Bad ThingsT)Okay ThingsNr(   )r:  r;  r
  r:  r(   r
  )rZ   r8   )d1d2d3d4)u1u2u3rC   r^   )r   r8   objectrB  )rB   r   rA   r   )
r   r	  r   onesr   r   r   r*   rF   rH   )tupsr2   rr   rT   s       r   test_loc_nan_multiindexrF  %  s#    
RV$	RV$	sBF#	sBF#!!	RV$	RV$	D 

...//$T1C1C1CDDD
 
 
B
 VM"&s+F
RVHH4888...h???  H
 &(+++++r   c                  *   t          j        ddd          } d}t          j        | |fd          }t	          |d	          }|j        d
         }|j        | d         dfdf         }t          j        |          sJ t          j        |          sJ d S )N2013Q12013Q4Q)freq)W  i  i  )PeriodCVRrC   )	OMSOMKRES	DRIFT_IND
OEVRIG_INDFIN_INDVARE_UDLOEN_UDFIN_UDr   ))rH  rL  rO  r   rL  rO  )r   period_ranger   r~   r   r*   r   isnan)r   r   r  r2   rr   alts         r   test_loc_period_string_indexingr[  ?  s    
(555AA

!1a&0A
B
B
BC	


 
 
B V+,F
&!A$u$
%C8C== 8Fr   c            
         t          j        ddg          } t          j        | | gddg          }t	          ddgdd	gd
dgddgg|ddg          }|j        | d         |j                            d          dk    fdf         }t          dgdt          j	        t          j
        d          t          j
        d          fgddg                    }t          j        ||           d S )Nz
2017-05-04z
2017-05-05Idx1Idx2rC   r   r   r   r8   r%   r   r)   C1C2rN   r   r.   r   r   )r   to_datetimer   r~   r   r*   r   get_level_valuesr   r   	TimestamprF   ro   )dt_idxm_idxr2   rr   rT   s        r   test_loc_datetime_mask_slicingrg  `  s   ^\<899F#VV$4VV<LMMME	!fq!fq!fq!f-UT4L
 
 
B VVAY!:!:1!=!=!LNPTTUF	
$l<((",|*D*DEF6"
 
 
  H 68,,,,,r   c                      t          j        d          } t          dt          j        d| fgddg          d          }|j        d d | gf         }t          j        ||           d S )N2000r   r   r   rC   r   )r   r   )r   rd  r   r   r   r*   rF   ro   )daterq   rr   s      r   &test_loc_datetime_series_tuple_slicingrk  s  sy    <D
	$sDk]3*EEE  C
 WQQQYF63'''''r   c                  `   t          ddgddgddgddggt          j        g ddd	g
          ddg          } t          j        ddgdd	g
          }| j        |d d f         }t          ddgddgddggt          j        g ddd	g
          ddg          }t	          j        ||           d S )Nr   r   r   r   r   r   )r   )r   r   r   r   rm  r   rj  rC   authorpricera  r   rm  )r   rm  rm  r   )r   r   r   r*   rF   rH   )r2   r  rr   rT   s       r   test_loc_with_mi_indexerrp    s   	Aha3(S!H5$,,,Wf4E
 
 
 7#
 
 
B 
 &&!1'69J
K
K
KCVCF^F
qC8c1X&$%=%=%=gvEVWWW7#  H
 &(+++++r   c                     t          j        ddd          } t          t          d          |           }|                                }| |d<   |                    dd	          }|j        j        d
k    sJ |j                            | d                    |j	        | d                  }|j
        dg                             d           }t          j        ||           |d         }|j        j        d
k    sJ |j	        | d                  }|j
        dg                             d           }t          j        ||           d S )Nz
2016-01-01r   z
US/Pacific)r   tzr   r   r   T)append)Nr   )r   r   r   r-   to_framerE   r   r   get_locr*   rI   r   rF   rH   ro   )dtirq   r2   df2rr   rT   r   s          r   test_loc_mi_with_level1_named_0rx    s*   
-aL
A
A
AC
q
%
%
%C	BBqE
,,q,
&
&C9?i''''Ic!fWSV_Fx}&&t,,H&(+++q6D:y((((Xc!fFy!~''--H68,,,,,r   c                     | dddd          }t          j        |dg          }|                    ddg                                          }|j        dt          d	          fd d f                             d
          }|j        d         j        t          d	          d d f         }t          j        ||           d S )Nr   mergerN   zquotes2.csvtime)parse_datestickerAAPLz2016-05-25 13:30:00r   )	r   read_csvrE   rJ   r*   r   r   rF   rH   )datapathpathr2   rw  rQ   rT   s         r   test_getitem_str_slicer    s    8Iw>>D	Tx	0	0	0B
,,&)
*
*
5
5
7
7C
'65!6778!!!;
<
F
Fq
I
ICwv"5)>#?#?#BCH#x(((((r   c                     t          j        g ddd          } g d}g d}t          j        | ||g          }t	          t          d          |t          j                  }|j        | d	         d
df         }|dk    sJ d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400datetimer(   )r   rK  )ri   ri   ZW)r(   rw   rJ  Fr8   r}   r   ri   g        )	r   PeriodIndexr   rL   r   r-   r   r   r*   )pilev2lev3r   rq   rr   s         r   !test_3levels_leading_period_indexr    s    	LLL
 
 
B
  DD		T4 0	1	1B
q2:
6
6
6CWbeS#&'FS======r   c                        e Zd Zd Zd Zd ZdS )TestKeyErrorsWithMultiIndexc                 (   t          t          j        d                              dd          g d          }|                    ddg          }t          j        t          d	          5  |j        d
          d d d            d S # 1 swxY w Y   d S )Nr:   r8   r   rv   r   ri   r(   r2  r_   r   r   )	r   r   r   r   rE   rb   rc   rd   r*   )r/   r2   rw  s      r   !test_missing_keys_raises_keyerrorz=TestKeyErrorsWithMultiIndex.test_missing_keys_raises_keyerror  s    ry}},,Q22OOOLLLllC:&&]83/// 	 	GFOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ,BBBc                     t          dt          j        ddggdz                      }t          j        t
          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   r   z\(0, 3\)r_   )r   r   )r   r   r~   rb   rc   rd   r*   )r/   rq   s     r   !test_missing_key_raises_keyerror2z=TestKeyErrorsWithMultiIndex.test_missing_key_raises_keyerror2  s    Rz6Ax!|DDEEE]8;777 	 	GDMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A  A$'A$c                    t          j        t          j        g d          t          j        g d          t          j        g d          gg d          }t	          t          j                            dd          |          }d	}t          j        t          |
          5  |j
        ddt          d           fd d f          d d d            n# 1 swxY w Y   t          j        t          |
          5  |j                            ddt          d           f           d d d            n# 1 swxY w Y   t          j        t          d
          5  |j
        dd d f          d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   )r2  r3  r3  3)r   r   r   r   )r  r'   r*  rC   r8   r   r   z'\('b', '1', slice\(None, None, None\)\)r_   r   r2  z\('b', '1'\))r   r2  )r   rL   r   rK   r   r   randrb   rc   rd   r*   r   r   get_locs)r/   r   r2   msgs       r   test_missing_key_combinationz8TestKeyErrorsWithMultiIndex.test_missing_key_combination  s6   #---..---..---..
 *))
 
 
 ry~~a++26668]83/// 	/ 	/FCeDkk*AAA-..	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]83/// 	7 	7HsCt5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]8?;;; 	" 	"F:qqq=!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s6   $"CCC8+D//D36D3E44E8;E8N)r  r  r  r  r  r  r   r   r   r  r    sA            " " " " "r   r  c                 z    | }|d         }|d         }|j         d         d         }t          j        ||           d S )Nri   )rl   r%   )r*   rF   ro   )rp   r2   rq   rr   rT   s        r   test_getitem_loc_commutabilityr    sB    	8B
S'C\Fvgs#H68,,,,,r   c                     t          g dddt          j        gg dd                              ddg          } | j        dg         }t          dd	git          j        d
gddg                    }t          j        ||           | j        d         }t          dd	git          d	gd                    }t          j        ||           d S )N)r   r   r%   r   r   )r   r8   r%   )r=   ind1ind2r  r  r=   r   )r   r   rC   r   r   )
r   r   r	  rE   r*   r   r   rF   rH   r   r   s      r   test_loc_with_nanr    s    			Cbf#5yyyII
 
i !!  VSE]F	J2H:ffEUVVV  H &(+++VC[F%!UA3V-D-D-DEEEH&(+++++r   c                      t          g dgg d                              g d          } t          j        t          d          5  | j        d          d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   z\(2\.0, 2\.0, 3\.0\)r_   )       @r        @)r   rE   rb   rc   rd   r*   r2   s    r   test_getitem_non_found_tupler    s    	LLL>+?+?+?	@	@	@	J	J
 
B 
x'>	?	?	?    
                                   s   A""A&)A&c                  6   t          j        dd          } t          j        | g          }|                    d          t          ddd           k    sJ |                     d          t          ddd           k    sJ |d d d                             d          }| d d d                             d          }||k    sJ |                    d                              d          }|                     d                              d          }||k    sJ |                    |                              d          }|                     |                               d          }t          j	        |
                                d         |           d S )Nz
2001-01-01d   r   z2001-01r      r   )r   r   r   rL   ru  r   repeatrs  rF   r4  nonzero)r   r   r*   rT   s       r   test_get_loc_datetime_indexr  
  sh   M,444E			(	(B::i  E!R$6$66666==##uQD'9'99999
SSqS'//)
$
$CSSqSz!!),,H(????
))A,,

y
)
)C||A&&y11H(????
))B--

	
*
*C||E""**955Ha 0(;;;;;r   c                  0   t          j        ddgddgg          } t          ddgddgdd	gd
dgg|           }dddgf}t          j        ddgddgg          |j        |d d f<   t          ddgddgdd	gd
dgg|           }t          j        ||           d S )Nr   r   r   r   r   r   r8   r%   r   r)   rZ   r   rx   r[   r;   r:   )r   r~   r   r   rK   r*   rF   rH   )r   r2   r   rT   s       r   ,test_loc_setitem_indexer_differently_orderedr     s    		 3*q!f!5	6	6B	QFQFQFQF32	>	>	>BQFmGAr7RH"566BF7AAA:2r(QGaVaV<BGGGH"h'''''r   c                     t          ddgddgddgddggg d	g d
gddg          } | j        t          d           ddgfd d f         }t          ddgddgddgddggg dg dgddg          }t          j        ||           d S )Nr   r   r   r8   r%   r   r)   rZ   r  r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r*   r   rF   rH   r   s      r   5test_loc_getitem_index_differently_ordered_slice_noner  +  s    	
Q!Q!Q!Q(###\\\2c

 
 
B
 VU4[[1a&)111,-F
Q!Q!Q!Q(###\\\2c
  H
 &(+++++r   r   )r   r   r)   r   r   r   rZ   r)   )r   r   r)   r   r   rZ   c                    t          dgdz  t          j        g d          dg          }|j        t	          d           | fd d f         }t          dgdz  g dg dgdg          }t          j        ||           |j        |j                            | d          d d f         }t          j        ||           d S )	Nr   rZ   )rm  r   )r   r)   r  )r   r   )r   r   )r   rZ   )r   r)   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r)   r)   r   r   rZ   )r  )	r   r   r   r*   r   rF   rH   r   isin)r   r2   rr   rT   s       r   @test_loc_getitem_index_differently_ordered_slice_none_duplicatesr  ;  s     
	
a$LLL
 
 
 
 
B VU4[['*AAA-.F	
a''')A)A)AB  H
 &(+++VBHMM'M33QQQ67F&"%%%%%r   c                     t          j        dgdgdggg d          } t          ddgi|           }|                    dd	g          }|j        dd d df         }t          j        ||           t          dg|           }|j        dd d df         }t          dgt          dgd
                    }t          j	        ||           d S )Nr   r   zr   rC   r   r   r   r   r   r  )
r   rL   r   r   r*   rF   rH   r   r   ro   )r   r2   rT   rr   rq   s        r   3test_loc_getitem_drops_levels_for_one_row_dataframer  Q  s    		#u 5___	M	M	MB	C!:R	(	(	(B||QF##HVCCK F&(+++
!B


CWS!!!S[!Fqcu3!7!7!7888H68,,,,,r   c                  >   t          j        g dddgg          } t          t          j        d          |           }|j        d d ddgf         }t          t          j        d          t          j        g d	                    }t          j        ||           d S )
Nrv   r   r   )r%   r   r   r(   ri   )r%   r8   ))r(   r   )r(   r   )ri   r   )ri   r   )	r   r~   r   r   zerosr*   r   rF   rH   )colsr2   rr   rT   s       r   $test_mi_columns_loc_list_label_orderr  _  s    "OOOaV#<==D	28F##T	2	2	2BVAAASzM"F
&'O'O'OPP  H &(+++++r   c                  N   t          t          j        d                              d          g dg dgg dg dg          } dd	g| j        _        d
dg| j        _        t          j        t          d          5  | j
        ddgdf          d d d            d S # 1 swxY w Y   d S )Nr:   )r8   r   r  r  )Ohior  Colorado)GreenRedr  r   key1key2statecolorz\[2\] not in indexr_   r   r   r  )r   r   r   r   r   r   r.   rb   rc   rd   r*   )r1   s    r   $test_mi_partial_indexing_list_raisesr  k  s   
	"f%%###\\\2---/H/H/HI  E
  (EK"G,EM	x'=	>	>	> ( (	3(J&''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   ;BB!Bc                      t          t          d          t          j        ddgddgg                    } t	          j        t          d          5  | j        d	d
g          d d d            d S # 1 swxY w Y   d S )Nr8   r   r   r   r   r   z\['not' 'found'\] not in indexr_   notfound)r   r-   r   r~   rb   rc   rd   r*   )r   s    r   (test_mi_indexing_list_nonexistent_raisesr  x  s    uQxxz6Ac
7KLLMMMA	x'I	J	J	J    	ug                                   s   A//A36A3c            	         t          g dg dgddgt          j        ddgddgg                    } d	| j        d
<   d| j        d<   d| j        d<   t          g dg dg ddt          j        t          j        t          j        ggg dt          j        ddgddgg                    }t          j        | |           d S )N)r   r   r%   r   )r   r8   r)   rZ   r   r   r   ri   r(   r   r   r   r   )r   r   ri   )r   r  )r   r  g      @g      @)r  r9   g      @g       @)r  g      r   r   r  )r   r   r   r   )r   r   r~   r*   r   r	  rF   rH   )rr   rT   s     r   'test_mi_add_cell_missing_row_non_uniquer    s    	|||$Cj'!Q#s(<==  F
 FJsO !FJ} !FJ}      "&"&"&)		
 #""'!Q#s(<==	 	 	H &(+++++r   c                  B   t          dddt          j        dgdggddg          	          } | j        d
         }|dk    sJ t	          |t
          j                  sJ | j        dgdf         j        d         }|dk    sJ t	          |t
          j                  sJ d S )Nr   r   r   r   r8   r   r   rC   r   )r   r   r   r   r   )r   r   rL   r*   
isinstancer   r   rI   )r2   rr   s     r   $test_loc_get_scalar_casting_to_floatr    s    	*"81#sCQT:"V"V"V
 
 
B VK FQ;;;;fbh'''''VVHcM"'*FQ;;;;fbh'''''''r   c                  ,   t          j        ddgddggddg          } t          | t          j                  }|j        d         }t          t          j        t          j        gt          ddgd	          
          }t          j	        ||           d S )Nr   r   ri   r(   r   r   rC   r}   r  r   )
r   r~   r   r   r   r*   r	  r   rF   ro   )r  s2rr   rT   s       r   )test_loc_empty_single_selector_with_namesr    s    

!C:Sz":1a&
I
I
IC	c	,	,	,BVC[Frvrv&eS#JQ.G.G.GHHHH68,,,,,r   c                      t          g dg dt          d          d          } |                     ddg          } t          j        t
          d          5  | j        d	          d d d            d S # 1 swxY w Y   d S )
N)r  r     r  ,  r  )r[   r[   r      r  !   r   rv   ri   r(   z^1$r_   )r  r   )r   r-   rE   rb   rc   rd   r*   r  s    r   'test_loc_keyerror_rightmost_key_missingr    s     
///)))q	
 	

 
B 
sCj	!	!B	xu	-	-	-  
x                 s   A22A69A6c                      t          j        ddg          } t          ddg|           }|j        d         }|dk    sJ d S )Nr   )r   )r8   r%   r   r   r   )r   r   r   r*   )r   rq   rr   s      r   *test_multindex_series_loc_with_tuple_labelr    sJ    		 5	6	6B
!Qr
"
"
"CW[!FQ;;;;;;r   )8numpyr   rb   pandas.errorsr   r   pandasr   r   r   r   r   pandas._testing_testingrF   fixturer   r!   r#   r  r  r   
IndexSlicer  r  r!  r#  r&  r(  r+  r6  rF  r[  rg  rk  rp  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s?              
                         9 9 9B- B- B- B- B- B- B- B-J 	R
a
sR
sR
	qqq5'z	"EE!T1$5$56	qqq5%.(	)55D!+<+<= 1 1 1* *b%%++->%",NOO	, 	, PO	,
 
 
- - -, , ,    ( ( (., , ,4  B- - -&	( 	( 	(, , ,&- - -0) ) )   !" !" !" !" !" !" !" !"H- - -, , ,      < < <,( ( (, , ,  %=%=%=?Q?Q?Q$RSS& & TS&*- - -	, 	, 	,
( 
( 
(     , , ,.
( 
( 
(- - -      r   