
    Owg%                         d Z ddlmZmZ ddlZddlZddlZddlmZm	Z	m
Z
mZmZ ddlmZ ddZ G d d      Z G d d	      Zd
 Zd Zej*                  j-                  d      d        Z G d d      Zy)z, test scalar indexing, including at and iat     )datetime	timedeltaN)	DataFrameSeries	Timedelta	Timestamp
date_rangec                 T    | j                   }|r	d |D        }t        j                  | S )zf
    generate the indices
    if values is True , use the axis values
    is False, use the range
    c              3   V   K   | ]!  }t        t        t        |                   # y w)N)listrangelen).0axs     X/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexing/test_scalar.py	<genexpr>z#generate_indices.<locals>.<genexpr>   s     4U3r7^$4s   '))axes	itertoolsproduct)fvaluesr   s      r   generate_indicesr      s+     66D4t4d##    c                      e Zd Zej                  j                  dddg      ej                  j                  dddg      d               Zej                  j                  dddg      ej                  j                  dg d      d	               Zej                  j                  dddg      ej                  j                  dg d
      d               Zy)
TestScalarkindseriesframecolintsuintsc                     |j                  | d|       }t        |d      }|D ]6  }d|j                  |<   |j                  |   }t	        j
                  |d       8 y )N_T   )getfixturevaluer   iatr   tmassert_almost_equalselfr   r   requestr   indicesiexpecteds           r   test_iat_set_intszTestScalar.test_iat_set_ints#   sc     ##tfAcUO4"1d+ 	0AAEE!Hxx{H""8Q/	0r   )labelstsfloatsc                     |j                  | d|       }d}t        j                  t        |      5  t	        t        |d            }d|j                  |<   d d d        y # 1 sw Y   y xY w)Nr#   z1iAt based indexing can only have integer indexersmatchFr$   )r%   pytestraises
ValueErrornextr   r&   )r*   r   r   r+   r   msgidxs          r   test_iat_set_otherzTestScalar.test_iat_set_other-   se     ##tfAcUO4A]]:S1 	'512CAEE#J	 	 	s   %A""A+)r    r!   r0   r1   r2   c                     |j                  | d|       }t        |d      }|D ]6  }d|j                  |<   |j                  |   }t	        j
                  |d       8 y )Nr#   Fr$   )r%   r   atlocr'   r(   r)   s           r   test_at_set_ints_otherz!TestScalar.test_at_set_ints_other6   sc     ##tfAcUO4"1e, 	0AADDGuuQxH""8Q/	0r   N)	__name__
__module____qualname__r6   markparametrizer/   r<   r@    r   r   r   r   "   s    [[Vh%89[[UVW$560 7 :0 [[Vh%89[[U$>? @ : [[Vh%89[[U$OP0 Q :0r   r   c                       e Zd Zd Zd Zej                  j                  d eddgd       e	d      g edd	gd
       e
d	      gg      d        Zd Zd Zd Zd Zd Zd Zy)TestAtAndiATc                     t        g dg d      }|j                         D ]  \  }}|j                  |   |k(  rJ  t        t	        |            D ]  }|j
                  |   |dz   k(  rJ  y )N)r$         )g?g?g333333?indexr$   )r   itemsr>   r   r   r&   )r*   serelitemr-   s        r   test_float_index_at_iatz$TestAtAndiAT.test_float_index_at_iatD   sn    Yo6		 	&HB66":%%%	&s3x 	'A771:Q&&&	'r   c                     t        dd      }t        t        j                  j	                  d      j                  d      |g d      }|d   }|j                  |d	      }|j                  d	   }||k(  sJ y )
Nz1/1/2000   periodsrJ   )rT      )ABCD)rM   columnsrX      )r	   r   nprandomdefault_rngstandard_normalr>   r   )r*   datesdfsresultxps         r   test_at_iat_coercionz!TestAtAndiAT.test_at_iat_coercionK   sp    :q1II!!!$44V<(

 sGeAhXXa[||r   zser, expectedz
2014-01-01z
2014-02-02zdatetime64[ns]dtypez1 daysz2 daysztimedelta64[ns]c                 (     ||      d   }||k(  sJ y )Nr$   rF   )r*   indexer_ialrO   r.   re   s        r   test_iloc_iat_coercion_datelikez,TestAtAndiAT.test_iloc_iat_coercion_datelikeY   s!      S!!$!!!r   c                    t        t        d      g dd      }|j                  d   }|dk(  sJ |j                  d   }|dk(  sJ d}t	        j
                  t        |      5  |j                  d    d d d        d	}t	        j
                  t        |      5  |j                  d
    d d d        |j                  ddg   }t        ddgddgd      }t        j                  ||       |j                         }|j                  d   }t        ddgd      }t        j                  ||       |j                  d   }|dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr]   )r$   r$   rJ   rJ   rK   int64)rM   ri   rJ   z0index 10 is out of bounds for axis 0 with size 5r4   
   z1index -10 is out of bounds for axis 0 with size 5irK   rh   r   rM   name)rJ   r   )
r   r   ilocr&   r6   r7   
IndexErrorr'   assert_series_equalto_frame)r*   rd   re   r:   r.   rc   s         r   test_imethods_with_dupsz$TestAtAndiAT.test_imethods_with_dupsl   s8    58?'B{{q{{@]]:S1 	EE"I	A]]:S1 	EE#J	 A1a&1a&8
vx0ZZ\!A3Q/
vx0{{!	 		 	s   #EEEEc                    t         j                  j                  d      j                  d      j	                  dd      }t        |ddg      }|j                  d   }|j                  d   j                         }t        j                  ||       |j                  j                  d   }t        j                  ||       d|j                  d	<   t        d
d
gddgd      }t        j                  |j                  d   |       y )NrJ      rK   rX   r\   r   rX   r   )rX   r   )r$   rX   g       @r$   rp   )r^   r_   r`   ra   reshaper   r>   rr   copyr'   rt   Tr   )r*   arrrc   re   r.   s        r   !test_frame_at_with_duplicate_axesz.TestAtAndiAT.test_frame_at_with_duplicate_axes   s    ii##A&66q9AA!QGsS#J/v771:??$
vx0
vx0 f3*S#JQ?
rwwqz84r   c                    t        ddgt        dddddd      t        ddd	d
dd      gd      }|d   j                  j                  d      |d<   t        dd      }|j                  d   }||k(  sJ |j
                  d   }||k(  sJ y )NJohnAndersoni  rK          8   rJ         ro   )rq   dater   zAsia/Shanghaiz2017-03-13 13:32:56+0800)tz)r   r   )r   r   dttz_localizer?   r>   )r*   rc   r.   re   s       r   test_at_getitem_dt64tz_valuesz*TestAtAndiAT.test_at_getitem_dt64tz_values   s    ,dAr2r26dAr2r15
 Z]]..?6
7OL	"!!!y!!!!r   c                 2   t        g dg d      }|j                         D ]/  \  }}|j                  |   |j                  |   cxk(  r|k(  r,J  J  t	        t        |            D ]/  }|j                  |   |j                  |   cxk(  r
|dz   k(  r,J  J  t        j                  t        d      5  |j                  d    d d d        t        j                  t        d      5  |j                  d    d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)N)r$   rJ   rK   rW   r]   abcr$   rJ   rL   r$   z^4$r4   rW   )r   rN   r>   r?   r   r   r&   rr   r6   r7   KeyError)r*   rd   rP   rQ   r-   s        r   'test_mixed_index_at_iat_loc_iloc_seriesz4TestAtAndiAT.test_mixed_index_at_iat_loc_iloc_series   s    ?*?@	 	1HB448quuRy0D00000	1s1v 	2A558qvvay1AE11111	2 ]]851 	DDG	]]851 	EE!H	 		 		 	s   5D(DD
Dc                    t        g dg dgg d      }|j                         D ]K  \  }}|j                         D ]3  \  }}|j                  ||f   |j                  ||f   cxk(  r|k(  r0J  J  M t        d      D ]F  }t        d      D ]6  }|j                  ||f   |j                  ||f   cxk(  r|dz  |z   k(  r3J  J  H t        j                  t        d      5  |j                  d	    d d d        t        j                  t        d      5  |j                  d	    d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)
N)r   r$   rJ   rK   rW   )r]   rx      rT   	   r   ry   rJ   r]   z^3$r4   )r   rK   )r   iterrowsrN   r>   r?   r   r&   rr   r6   r7   r   )r*   rc   rowIdxrowrP   rQ   r-   s          r   *test_mixed_index_at_iat_loc_iloc_dataframez7TestAtAndiAT.test_mixed_index_at_iat_loc_iloc_dataframe   sJ   o.8M
 ;;= 	GKFCIIK GDuuVRZ(BFF62:,>F$FFFFFG	G 8 	HC1X Hvvc1f~aGC!GaKGGGGGH	H ]]851 	EE$K	]]851 	FF4L	 		 		 	s   #D/D;/D8;Ec                     t        ddgddgd      }d |j                  d<   t        d dgddgd      }t        j                  ||       y )Ng        g      ?rW   r]   )r   r   r   r   r$   )r   r&   r'   assert_frame_equal)r*   re   r.   s      r   'test_iat_setter_incompatible_assignmentz4TestAtAndiAT.test_iat_setter_incompatible_assignment   sN    #s1a&9:

4D!9Aq6:;
fh/r   N)rA   rB   rC   rR   rg   r6   rD   rE   r   r   r   rl   rv   r   r   r   r   r   rF   r   r   rH   rH   A   s    ' [[ l3;KL,'
 (+3DE(#		
"":5$"*$0r   rH   c                     t        dd      } | | z
  }t        | j                         t              }t        |j	                         t              }t        ||d      }|j                  t        k(  j                         sJ |j                  d   |j                  d   |j                  d   |j                  d   fD ]/  }||d   u sJ t        |t              sJ t        |t              s/J  |j                  d	   |j                  d
   |j                  d	   |j                  d
   fD ]/  }||d   u sJ t        |t              sJ t        |t               s/J  y )Nz
2016-01-01rK   rU   rh   )rX   rY   rz   r   r   )r$   rY   )r$   r$   r$   )r	   r   to_pydatetimeobjectto_pytimedeltar   dtypesallr>   r&   r?   rr   
isinstancer   r   r   r   )dtitdirO   ser2rc   re   s         r   &test_iat_dont_wrap_object_datetimeliker      sC    \1
-C
)C
""$F
3C#$$&f5D	4(	)BII$$&&&55="&&,vN 1Q&(+++fi0001
 55="&&,vN 1a   &),,,fi0001r   c                      t        dddgiddg      } | j                  j                  dk(  sJ | j                  d   dk(  sJ | d   }|j                  j                  dk(  sJ |j                  d   dk(  sJ y )Nr   r$   rJ   r$   rJ   rK   rW   rL   r   r   r   rM   nlevelsr>   rc   r   s     r   test_at_with_tuple_index_getr      s     
C!Q=(8	9B88q   55""" WF<<1$$$99V!!!r   .ignore:Setting a value on a view:FutureWarningc                  ,   t        dddgiddg      } | j                  j                  dk(  sJ d| j                  d<   | j                  d   dk(  sJ | d   }|j                  j                  dk(  sJ d|j                  d<   |j                  d   dk(  sJ y )	Nr   r$   rJ   r   r   rL   r   rK   r   r   s     r   test_at_with_tuple_index_setr      s     
C!Q=(8	9B88q   BEE+55""" WF<<1$$$FIIdO99T?ar   c                   Z    e Zd Zd Zej
                  j                  d      d        Zd Zy)TestMultiIndexScalarc                 H   t        dddgiddgddgg      }|j                  j                  dk(  sJ |j                  d   dk(  sJ |j                  d   dk(  sJ |d   }|j                  j                  dk(  sJ |j                  d   dk(  sJ |j                  d   dk(  sJ y )	Nr   r$   rJ   rK   rW   rL   r$   rK   r   r   r   rM   r   r>   r?   r*   rc   r   s      r   test_multiindex_at_getz+TestMultiIndexScalar.test_multiindex_at_get
  s     aV}aVaV,<=xx1$$$uu[!Q&&&vvk"a''' C||##q(((yy!###zz$1$$$r   r   c                    t        dddgiddgddgg      }|j                  j                  dk(  sJ d|j                  d<   |j                  d   dk(  sJ d|j                  d<   |j                  d   dk(  sJ |d   }|j                  j                  dk(  sJ d|j                  d	<   |j                  d	   dk(  sJ d
|j                  d	<   |j                  d	   d
k(  sJ y )Nr   r$   rJ   rK   rW   rL   r   r]   r   rx   r   r   s      r   test_multiindex_at_setz+TestMultiIndexScalar.test_multiindex_at_set  s     aV}aVaV,<=xx1$$$kuu[!Q&&&{vvk"a''' C||##q(((		$yy!###

4zz$1$$$r   c                 P    t        dddgg      }|j                  d   }|dk(  sJ y )N)r   r$   FTrL   r   )r   r>   )r*   s2re   s      r    test_multiindex_at_get_one_levelz5TestMultiIndexScalar.test_multiindex_at_get_one_level+  s-    FE4=/2u{{r   N)	rA   rB   rC   r   r6   rD   filterwarningsr   r   rF   r   r   r   r   	  s1    % [[ PQ% R%$r   r   )F)__doc__r   r   r   numpyr^   r6   pandasr   r   r   r   r	   pandas._testing_testingr'   r   r   rH   r   r   rD   r   r   r   rF   r   r   <module>r      s|    2     
$0 0>S0 S0l1*
" LM  N & &r   