
    .i&                         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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Index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     _/var/www/app/trading-bot/venv/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ej                  ej                  g      d        Z	ej                  j                  d e
 ed      e       edd       e
 ed	d
d      ej                        g      d        Zej                  j                  d e
 ed      e       edd       e
 ed	d
d      ej                         e
 ed	d
d      ej                         e
 ed	d
d      ej                        g      d        Zy)
TestScalardtypec                      |t        d      t        g d|            }t        |d      }|D ]6  }d|j                  |<   |j                  |   }t        j                  |d       8 y )N   )r         r   indexTr    )r   r   r   iatr   tmassert_almost_equal)selfr   frame_or_seriesr   indicesiexpecteds          r   test_iat_set_intszTestScalar.test_iat_set_ints%   s^    E!HE)5,IJ"1d+ 	0AAEE!Hxx{H""8Q/	0r   r$   abcdr"   20130101   periodsr      r!   c                      |t        t        |            |      }d}t        t        |d            }t	        j
                  t        |      5  d|j                  |<   d d d        y # 1 sw Y   y xY w)Nr#   z1iAt based indexing can only have integer indexersFmatchr    )r   r   nextr   pytestraises
ValueErrorr%   )r(   r$   r)   r   msgidxs         r   test_iat_set_otherzTestScalar.test_iat_set_other.   s`     E#e*-U;A#Au-.]]:S1 	AEE#J	 	 	s   A((A1c                      |t        t        |            |      }t        |d      }|D ]6  }d|j                  |<   |j                  |   }t        j                  |d       8 y )Nr#   Fr    )r   r   r   atlocr&   r'   )r(   r$   r)   r   r*   r+   r,   s          r   test_at_set_ints_otherz!TestScalar.test_at_set_ints_other=   s^     E#e*-U;"1e, 	0AADDGuuQxH""8Q/	0r   N)__name__
__module____qualname__r8   markparametrizenpint64uint64r-   r   r   objectr
   r   float64r=   rA    r   r   r   r   $   s   [[Wrxx&;<0 =0 [[$v,f-z1-%1a.

3	
 [[$v,f-z1-%1a.

3%1a.		2%1a.1	
	0	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    r!   r   )g?g?g333333?r#   r    )r   itemsr?   r   r   r%   )r(   serelitemr+   s        r   test_float_index_at_iatz$TestAtAndiAT.test_float_index_at_iatS   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/2000r3   r1   r!   )r3   r0   )ABCD)r$   columnsrV      )r
   r   rG   randomdefault_rngstandard_normalr?   r   )r(   datesdfsresultxps         r   test_at_iat_coercionz!TestAtAndiAT.test_at_iat_coercionZ   sp    :q1II!!!$44V<(

 sGeAhXXa[||r   zser, expectedz
2014-01-01z
2014-02-02zdatetime64[ns]r"   z1 daysz2 daysztimedelta64[ns]c                 (     ||      d   }||k(  sJ y )Nr    rL   )r(   indexer_ialrQ   r,   rb   s        r   test_iloc_iat_coercion_datelikez,TestAtAndiAT.test_iloc_iat_coercion_datelikeh   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    r!   r!   r   rH   )r$   r   r!   z0index 10 is out of bounds for axis 0 with size 5r5   
   z1index -10 is out of bounds for axis 0 with size 5ir   r"   r   r$   name)r!   r   )
r   r   ilocr%   r8   r9   
IndexErrorr&   assert_series_equalto_frame)r(   ra   rb   r;   r,   r`   s         r   test_imethods_with_dupsz$TestAtAndiAT.test_imethods_with_dups{   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 )Nr!      r   rV   rZ   r   rV   r   )rV   r   )r    rV   g       @r    rj   )rG   r\   r]   r^   reshaper   r?   rl   copyr&   rn   Tr   )r(   arrr`   rb   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  r          8   r!         ri   )rk   dater   zAsia/Shanghaiz2017-03-13 13:32:56+0800)tz)r   r   )r   r	   dttz_localizer@   r?   )r(   r`   r,   rb   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    r!   r   r0   r[   abcr    r!   r#   r    z^4$r5   r0   )r   rP   r?   r@   r   r   r%   rl   r8   r9   KeyError)r(   ra   rR   rS   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    r!   r   r0   )r[   rr      r3   	   r   rs   r!   r[   z^3$r5   )r   r   )r   iterrowsrP   r?   r@   r   r%   rl   r8   r9   r   )r(   r`   rowIdxrowrR   rS   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      ?r0   r[   )r   r   r   r   r    )r   r%   r&   assert_frame_equal)r(   rb   r,   s      r   'test_iat_setter_incompatible_assignmentz4TestAtAndiAT.test_iat_setter_incompatible_assignment   sN    #s1a&9:

4D!9Aq6:;
fh/r   N)rB   rC   rD   rT   rd   r8   rE   rF   r   r	   r   rg   rp   ry   r   r   r   r   rL   r   r   rN   rN   P   s    ' [[ l3;KL,'
 (+3DE(#		
"":5$"*$0r   rN   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-01r   r1   r"   )rV   rW   rt   r   r   )r    rW   )r    r    r    )r
   r   to_pydatetimerJ   to_pytimedeltar   dtypesallr?   r%   r@   rl   
isinstancer   r	   r   r   )dtitdirQ   ser2r`   rb   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    r!   r    r!   r   r0   r#   r   r   r   r$   nlevelsr?   r`   seriess     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    r!   r   r   r#   r   r   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    r!   r   r0   r#   r    r   r   r   r   r$   r   r?   r@   r(   r`   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    r!   r   r0   r#   r   r[   r   rr   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    FTr#   r   )r   r?   )r(   s2rb   s      r    test_multiindex_at_get_one_levelz5TestMultiIndexScalar.test_multiindex_at_get_one_level:  s-    FE4=/2u{{r   N)	rB   rC   rD   r   r8   rE   filterwarningsr   r   rL   r   r   r   r     s1    % [[ PQ% R%$r   r   )F)__doc__r   r   r   numpyrG   r8   pandasr   r   r   r   r	   r
   pandas._testing_testingr&   r   r   rN   r   r   rE   r   r   r   rL   r   r   <module>r      s}    0     
$)0 )0XS0 S0l1*
" LM  N & &r   