
    bMh%                        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                            d          d             Z G d d          ZdS )z, test scalar indexing, including at and iat     )datetime	timedeltaN)	DataFrameSeries	Timedelta	Timestamp
date_rangeFc                 H    | 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   h   K   | ]-}t          t          t          |                              V  .d S )N)listrangelen).0axs     a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/indexing/test_scalar.py	<genexpr>z#generate_indices.<locals>.<genexpr>   s6      44U3r77^^$$444444    )axes	itertoolsproduct)fvaluesr   s      r   generate_indicesr      s4     6D 544t444d##r   c                      e Zd Zej                            dddg          ej                            dddg          d                         Zej                            dddg          ej                            dg d          d	                         Zej                            dddg          ej                            dg d
          d                         ZdS )
TestScalarkindseriesframecolintsuintsc                     |                     | d|           }t          |d          }|D ].}d|j        |<   |j        |         }t	          j        |d           /d S )N_T   )getfixturevaluer   iatr   tmassert_almost_equalselfr   r   requestr   indicesiexpecteds           r   test_iat_set_intszTestScalar.test_iat_set_ints#   su     ##tOOcOO44"1d++ 	0 	0AAE!Hx{H"8Q////	0 	0r   )labelstsfloatsc                     |                     | d|           }d}t          j        t          |          5  t	          t          |d                    }d|j        |<   d d d            d S # 1 swxY w Y   d S )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-   s     ##tOOcOO44A]:S111 	 	'51122CAE#J	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   (A--A14A1)r    r!   r0   r1   r2   c                     |                     | d|           }t          |d          }|D ].}d|j        |<   |j        |         }t	          j        |d           /d S )Nr#   Fr$   )r%   r   atlocr'   r(   r)   s           r   test_at_set_ints_otherz!TestScalar.test_at_set_ints_other6   su     ##tOOcOO44"1e,, 	0 	0AADGuQxH"8Q////	0 	0r   N)	__name__
__module____qualname__r6   markparametrizer/   r<   r@    r   r   r   r   "   s       [Vh%899[UVW$5660 0 76 :90 [Vh%899[U$>$>$>??  @? :9 [Vh%899[U$O$O$OPP0 0 QP :90 0 0r   r   c                       e Zd Zd Zd Ze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dS )TestAtAndiATc                     t          g dg d          }|                                D ]\  }}|j        |         |k    sJ t          t	          |                    D ]}|j        |         |dz   k    sJ d S )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   s    YYYooo666		 	& 	&HB6":%%%%%s3xx 	' 	'A71:Q&&&&&	' 	'r   c                    t          dd          }t          t          j                            d                              d          |g d          }|d         }|j        |d	                  }|j        d	         }||k    sJ d S )
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   s    :q111I!!!$$44V<<(((
 
 

 sGeAhXa[||||||r   zser, expectedz
2014-01-01z
2014-02-02zdatetime64[ns]dtypez1 daysz2 daysztimedelta64[ns]c                 8     ||          d         }||k    sJ d S )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            n# 1 swxY w Y   d	}t	          j        t          |          5  |j        d
          d d d            n# 1 swxY w Y   |j        ddg         }t          ddgddgd          }t          j        ||           |	                                }|j        d         }t          ddgd          }t          j        ||           |j        d         }|dk    sJ d S )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   s    588???'BBB{{{{q{{{{@]:S111 	 	E"II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A]:S111 	 	E#JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 A1a&1a&888
vx000ZZ\\!A3Q///
vx000{{{{{{s$   )BB
B+CC	C	c                    t           j                            d                              d                              dd          }t          |ddg          }|j        d         }|j        d                                         }t          j
        ||           |j        j        d         }t          j
        ||           d|j        d	<   t          d
d
gddgd          }t          j
        |j        d         |           d S )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    i##A&&66q99AA!QGGsS#J///v71:??$$
vx000
vx000 f3*S#JQ???
rwqz844444r   c                 6   t          ddgt          dddddd          t          ddd	d
dd          gd          }|d         j                            d          |d<   t          dd          }|j        d         }||k    sJ |j        d         }||k    sJ d S )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6dAr2r155 
 
 Z]..??6
7OLLL	"!!!!y!!!!!!!r   c                 F   t          g dg d          }|                                D ],\  }}|j        |         |j        |         cxk    r|k    sn J -t	          t          |                    D ],}|j        |         |j        |         cxk    r	|dz   k    sn J -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 )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   ???*?*?*?@@@		 	1 	1HB48quRy0000D0000000s1vv 	2 	2A58qvay1111AE1111111]85111 	 	DGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]85111 	 	E!HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   ;CCC;DDDc                    t          g dg dgg d          }|                                D ]J\  }}|                                D ]0\  }}|j        ||f         |j        ||f         cxk    r|k    sn J 1Kt          d          D ]E}t          d          D ]3}|j        ||f         |j        ||f         cxk    r|dz  |z   k    sn J 4Ft          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 )
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   s$   __ooo.8M8M8M
 
 
 ;;== 	G 	GKFCIIKK G GDuVRZ(BF62:,>FFFF$FFFFFFFG 88 	H 	HC1XX H Hvc1f~aGGGGC!GaKGGGGGGGH ]85111 	 	E$KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]85111 	 	F4LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   )DD
D)EEEc                     t          ddgddgd          }d |j        d<   t          d dgddgd          }t          j        ||           d S )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   sa    #s1a&9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LL	,''
 (+3DEEE	(##		
 " " "  :5 5 5$" " "*    $0 0 0 0 0r   rH   c                     t          dd          } | | z
  }t          |                                 t                    }t          |                                t                    }t          ||d          }|j        t          k                                    sJ |j        d         |j	        d         |j
        d         |j        d         fD ]<}||d         u sJ t          |t                    sJ t          |t                    rJ =|j        d	         |j	        d
         |j
        d	         |j        d
         fD ]<}||d         u sJ t          |t                    sJ t          |t                     rJ =d S )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      s    \1
-
-
-C
)C
""$$F
3
3
3C#$$&&f555D	4((	)	)BI$$&&&&&5="&,vN 1 1Q&(+++++fi0000005="&,vN 1 1a    &),,,,,fi0000001 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 d S )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	9	9	9B8q    5"""" WF<1$$$$9V!!!!!!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 d S )	Nr   r$   rJ   r   r   rL   r   rK   r   r   s     r   test_at_with_tuple_index_setr      s     
C!Q=(8	9	9	9B8q    BE+5"""" WF<1$$$$FIdO9T?ar   c                   `    e Zd Zd Zej                            d          d             Zd ZdS )TestMultiIndexScalarc                 ,   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 d S )	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,<===x1$$$$u[!Q&&&&vk"a'''' C|#q((((y!####z$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 d S )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,<===x1$$$$ku[!Q&&&&{vk"a'''' C|#q((((	$y!####
4z$1$$$$$$r   c                 X    t          dddgg          }|j        d         }|dk    sJ d S )N)r   r$   FTrL   r   )r   r>   )r*   s2re   s      r    test_multiindex_at_get_one_levelz5TestMultiIndexScalar.test_multiindex_at_get_one_level+  s6    FE4=/222u{{{{{{r   N)	rA   rB   rC   r   r6   rD   filterwarningsr   r   rF   r   r   r   r   	  s`        % % % [ PQQ% % RQ%$    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 2                                   
$ 
$ 
$ 
$0 0 0 0 0 0 0 0>S0 S0 S0 S0 S0 S0 S0 S0l1 1 1*
" 
" 
" LMM    NM & & & & & & & & & &r   