+
    nDj@                        ^ RI t ^ RIt^ RIt ^ RIt^ RIt^ RIt^ RI	H
t
  ^ RIHt ^ RI	HtHt  ^ RIt^ RIHt ^ RI	Ht ]P,                  P                  t]P,                  P                   R 4       t]P,                  P                   R 4       t]P,                  P                   R 4       t]P,                  P                   R 4       t]P,                  P                   R	 4       t]P,                  P                   ]P,                  P;                  R
. RO4      R 4       4       t]P,                  P                   ]P,                  P;                  RRR.4      R 4       4       t]P,                  P;                  R
. RO4      R 4       t R t!]P,                  P                   R 4       t"]P,                  P                   R 4       t#]P,                  P                   R 4       t$R t%R#   ] d    Rt ELi ; i  ] d    Rt ELi ; i  ] d	    R;tt ELi ; i)    N)_check_roundtrip)_read_table_write_table)_roundtrip_pandas_dataframec                  (   \         P                  ! \        P                  ! R ^	^4      .RR7      p V P                  P	                  R4      p W n        \         P                  ! RV RV P                  P                  R4      /V R7      p\        P                  ! 4       p\        P                  P                  V4      p\        W24       VP                  ^ 4       \        P                   ! V4      pVP#                  4       p\$        P&                  ! W4       R# )	  zdatetime64[us]dtypeutctz_aware
tz_easternz
US/EasternindexN)pdSeriesdatetimedttz_localizer   	DataFrame
tz_convertioBytesIOpaTablefrom_pandasr   seekpqread_pandas	to_pandastmassert_frame_equal)sdffarrow_table
table_readdf_reads         ]/data/cameron/venvs/s3viz/lib/python3.14/site-packages/pyarrow/tests/parquet/test_datetime.pytest_pandas_parquet_datetime_tzr)   4   s    
 			8$$T1a019IJA	AG 
z1#QTT__\%BD
B 	

A((&&r*K FF1I"J""$G"&    c            
          \         P                   ! R ^^^^^-\         P                  P                  R7      p \        P                  ! RV ./4      p\        V/ R7       R# )i  )tzinfofoowrite_kwargsN)r   timezoner   r   r   r   )valuer#   s     r(   test_datetime_timezone_tzinfor2   O   sL    dAq!R%-%6%6%:%:<E	uug&	'B4r*   c           	         ^ RI Hp V! 4       p\        P                  ! R\        P                  ! \        P
                  ! R4      4      4      .p\        P                  ! . RORR7      RR\        P                  ! . RORR7      .VR&   \        P                  ! V4      p\        P                  ! V4      pV R,          p\        P                  P                  WER7      p\        WvR	R
R7       \        V4      pVP                  4       p	VP!                  4       p
\#        V
R,          4       FG  w  r\%        V\        P&                  4      '       g   K'  VP)                  R4      V
P*                  VR3&   KI  	  \,        P.                  ! W4       \0        P2                  ! \4        4      ;_uu_ 4        \        WvR	RR7       RRR4       R#   + '       g   i     R# ; i)r   )OrderedDict
datetime64msNdatetime64[ms]r	   zpandas_roundtrip.parquetschema2.6usversioncoerce_timestampszM8[us]unknown)z2007-07-13T01:23:34.123456789N2010-08-13T05:46:57.437699912)z2007-07-13T02Nr@   )collectionsr4   r   fieldlist_	timestampnparrayr   r   r9   r   r   r   r   r   copy	enumerate
isinstancendarrayastypelocr    r!   pytestraises
ValueError)tempdirr4   arraysfieldsr#   r9   filenamer%   r&   r'   df_expectedixs   &            r(   test_coerce_timestampsrW   X   sh   ' ]Fhh|xxT 235 6F 	 3 (	) 	
 3 (	)F< 
f	BYYvF33H((&&r&9KNX&J""$G'')K+l34a$$/0xx/AKOOA|O, 5 +/	z	"	"[E'0	2 
#	"	"	"s   *GG	c           
     >   \         P                   ! R^^^^^^R7      p\         P                   ! R^^^^^R7      p\        P                  ! R\        P                  ! R4      4      .pRW./p\        P
                  ! V4      p\        P                  ! V4      pV R,          p\        P                  P                  WVR7      p\        WRR	R
R7       \        V4      p	V	P                  4       p
RW"./p\        P
                  ! VRR7      p\        P                  ! W4       R# )zW
ARROW-2555: Test that we can truncate timestamps when coercing if
explicitly allowed.
r   )yearmonthdayhourminutesecondmicrosecond)rY   rZ   r[   r\   r]   r^   r5   r;   zpandas_truncated.parquetr8   r:   r6   T)r=   r>   allow_truncated_timestampsr7   r	   N)r   r   rB   rD   r   r   r9   r   r   r   r   r   r    r!   )rP   dt_usdt_ms	fields_us	arrays_usdf_us	schema_usrS   table_ustable_msdf_msarrays_expectedrT   s   &            r(    test_coerce_timestamps_truncatedrk      s     4qaa%&A7E4qaa%&(E ,T(:;<I~.ILL#E		)$I33Hxx##E#<HUd,028$H E#e^4O,,6FGK+-r*   c           	         \         P                  ! 4       p\        P                  ! . RORR7      p\         P                  ! W!R7      p\         P                  ! 4       pVP                  R4      R,          p\         P                  ! WTR7      p\         P                  ! R4      p\        P                  ! R4      P                  R,          p\        P                  ! W^,           V^,           .RR7      p	\         P                  ! WR7      p
\         P                  ! R	4      p\        P                  ! ^R
R7      p\         P                  ! WR7      p\         P                  ! R4      p\         P                  ! VP                  R4      VR7      p\         P                  ! R4      p\         P                  ! VVR7      p\         P                  ! R	4      p\         P                  ! VR,          VR7      p\         P                  ! R4      p\        P                  ! R4      P                  p\        P                  ! WR,           VR,           .RR7      p\         P                  ! VVR7      p\         P                  P                  W6WVVV.. RO4      p\         P                  P                  W3WVVV.. RO4      p\        VVRR7       \         P                  ! R	4      p\        P                  ! ^RR7      p\         P                  ! VVR7      p\         P                  ! R4      p\        P                  ! ^RR7      p\         P                  ! W!R7      p\         P                  ! R4      p\        P                  ! ^RR7      p\         P                  ! WTR7      p\         P                  P                  VW6.. RO4      p\         P                  P                  VW6.. RO4      pV R,          p\!        VVRR7       \"        P$                  ! V4      P&                  p\)        ^4       F%  pVP+                  V4      P,                  R8X  d   K%  Q h	  \/        V4      pVP1                  V4      '       g   Q h\         P                  ! R4      p \        P                  ! VR,          RR7      p!\         P                  ! V!V R7      p"\         P                  ! R4      p#\        P                  ! VR,          RR7      p$\         P                  ! V$V#R7      p%\         P                  P                  V"V%V.. RO4      pV R,          p\!        VVRRR7       \"        P$                  ! V4      P&                  p\)        ^4       F%  pVP+                  V4      P,                  R8X  d   K%  Q h	  \/        V4      pVP1                  V4      '       g   Q hV R,          p\!        VVRRR7       \"        P$                  ! V4      P&                  p\)        ^4       F%  pVP+                  V4      P,                  R8X  d   K%  Q h	  \/        V4      pVP1                  V4      '       g   Q hR# )kC  int32r	   typeint64i \&r;   z
2001-01-01  r6   i4r"   ns  r:   expectedr=   zint64_timestamps.parquetr=   INT64i@B z!explicit_int96_timestamps.parquetTr=   use_deprecated_int96_timestampsINT96zspark_int96_timestamps.parquetspark)r=   flavorN)rm   ilC  imC  )date32date64ztimestamp[us]z	time32[s]z
time64[us]ztime32_from64[s]ztimestamp[ns])zts[ms]zts[us]zts[ns])r   r   rE   rF   r   rK   rD   r   	Timestampr1   time32arangetime64r   from_arraysr   r   r   ParquetFiler9   rangecolumnphysical_typer   equals)&rP   t1data1a1t2data2a2t3startdata3a3t4data4a4t5a5t6a6ex_t6ex_a6t7data7a7tablerw   t0data0a0rS   parquet_schemarU   
read_tablet0_nsdata0_nsa0_nst1_nsdata1_nsa1_nss&   &                                     r(   test_date_time_typesr      s   	BHH*':E	%	!B	BLL!H,E	%	!B	d	BLL&,,t3EHHeQY	2'BE	%	!B	4BIIat$E	%	!B	4B	%,,w'b	1B	3B	%b	!BIIdOEHHUT\.E	d	BLL&,,EHHeT\54<8"$E	%b	!BHH  """b"!="34E xx##RRR$C%67H UXu=	d	BIIaw'E	%b	!B	d	BIIaw'E	%	!B	d	BIIaw'E	%	!BHH  "b!?AExx##RL$BDH 33H%0^^H-44N1X$$Q'55@@@ X&JX&&&&LLExxw7HHHXE*ELLExxG4HHHXE*Exx##UE2$6$BDH <<H%157^^H-44N1X$$Q'55@@@ X&JX&&&& 99H%!^^H-44N1X$$Q'55@@@ X&JX&&&&r*   unitc                 :   \         P                  ! R 4      P                  R,          p\        P                  ! W^
,           ^RR7      pVR,          pVR,          pVR,          p\
        P                  ! V\
        P                  ! R4      R7      p\
        P                  ! V\
        P                  ! R4      R7      p\
        P                  ! V\
        P                  ! R4      R7      p\
        P                  ! V\
        P                  ! R	4      R7      p	RVRVRVR	V	/p
. ROp\
        P                  P                  WgW.V4      p\
        P                  P                  V
P                  V 4      .^,          V4      pR
V /p\        WVRR7       \        WRVRR7       R# )
2010-01-01 ʚ;rq   r	   rr   r"   ro   r6   r;   rt   coerce_int96_timestamp_unitT)read_table_kwargsr{   r:   )r=   r   r{   N)ts_sts_msts_usts_ns)r   r   r1   rE   r   r   rF   rD   r   r   getr   )r   i_sd_sd_msd_usd_nsa_sa_msa_usa_nsrQ   namesr   rw   r   s   &              r(    test_coerce_int96_timestamp_unitr     s@    ,,|
$
*
*Z
7C
))Cr1G
4C:D$;D$;D
((3R\\#.
/C88Dr||D12D88Dr||D12D88Dr||D12D3dD$d;F/EHH  #T!8%@E xx##VZZ%5$6q$8%@H6=U'859; Ue'859;r*   pq_reader_methodr   r   c                    R  p\         P                   ! R^^4      \         P                   ! R^^4      \         P                   ! R^^4      .p\        P                  ! RV/4      p\        P                  ! V4      pVR,          p\
        P                  ! WVRRR7       V! W4      p\        P                  ! 4       ;_uu_ 4        \        P                  ! R	R
\        4       VR,          P                  4       V8w  g   Q h RRR4       V! WRR7      pVP                  RR7      p	VR,          P                  \        4      VR&   \        P                   ! WI4       R#   + '       g   i     Lc; i)c                     V R 8X  d&   \         P                  ! V3/ VB P                  4       # V R8X  d   \         P                  ! V3/ VB # R# )r   r   N)r   r   readr   )r   rS   kwargss   &&,r(   	get_table7test_coerce_int96_timestamp_overflow.<locals>.get_table0  sH    },>>(5f5::<<-==4V44 .r*   rr   ru     az test_round_trip_overflow.parquetT1.0)r{   r=   ignorez,Discarding nonzero nanoseconds in conversionNr"   )r   )timestamp_as_object)r   r   r   r   r   r   write_tablewarningscatch_warningsfilterwarningsUserWarning	to_pylistr   rK   objectr    r!   )
r   rP   r   oob_dtsr#   r   rS   	tab_errortab_correct
df_corrects
   &&        r(   $test_coerce_int96_timestamp_overflowr   ,  s,   5 	$1%$1%$1%G
 
sGn	%BHHRLE;;HNN5D "
 *5I		 	 	"	" N +	- ~'')W444	 
# K &&4&@JgnnV$BsG") 
#	"s    ;EE'	c                     \         P                  ! V R R7      p\         P                  ! . ROVR7      p\         P                  ! V.R.R7      p\	        V4       R# )America/New_Yorktzro   f0r   N)         )r   rD   rF   r   r   )r   tyarrts   &   r(   test_timestamp_restore_timezoner   U  sA     
d1	2B
((92
&C
#tf%AQr*   c                  :   \         P                  ! R RR7      p \         P                  ! . R
OV R7      p\         P                  ! V.R.R7      p\         P                  ! RRR7      p\         P                  ! VP	                  V4      .R.R7      p\        W$RR7       R	# )rt   r   r   ro   r   r   r;   2.4rv   N)rr   ru   r   )r   rD   rF   r   castr   )r   r   r   ty_usrw   s        r(   *test_timestamp_restore_timezone_nanosecondr   ^  sr     
d1	2B
((%B
/CHHcU4&)ELL"45Exx%)$8HUu=r*   c                      \         P                  ! . RORR7      p \         P                  ! RV P                  ./4      p\	        V/ R7       R# )09:00z%H:%M)formattimer.   N)r   z09:30z10:00z10:30z11:00z11:30z12:00)r   to_datetimer   r   r   )timesr#   s     r(   $test_list_of_datetime_time_roundtripr   i  s=     NN .6=?E	v

|,	-B4r*   c                     \         P                  ! R 4      P                  R,          p \        P                  ! W ^
,           ^RR7      pVR,          pVR,          pVR,          p\
        P                  ! V\
        P                  ! R4      R7      p\
        P                  ! V\
        P                  ! R4      R7      p\
        P                  ! V\
        P                  ! R4      R7      p\
        P                  ! V\
        P                  ! R	4      R7      p. ROp	. ROp
\
        P                  P                  WVWx.V
4      p\
        P                  P                  WfWw.V
4      p\        WR
R7       \        WRR7       \
        P                  P                  WfWx.V
4      p\        WRR7       \
        P                  P                  WfWf.V
4      pV	 F  p\        WRVR7       K  	  \
        P                  P                  WwWw.V
4      pV	 F  p\        WVRR7       K  	  \
        P                  P                  WW.V
4      pV	 F  p\        WVRR7       K  	  R# )r   r   rq   r	   rr   r"   ro   r6   r;   rt   r   r   r:   rx   r>   r=   r<   Trz   N)r   r   r:   )zts:szts:mszts:uszts:ns)r   r   r1   rE   r   r   rF   rD   r   r   r   )r   r   r   r   r   r   r   r   r   all_versionsr   r   rw   vers                 r(   *test_parquet_version_timestamp_differencesr   r  s   
,,|
$
*
*Z
7C
))Cr1G
4C:D$;D$;D
((3R\\#.
/C88Dr||D12D88Dr||D12D88Dr||D12D(L/EHH  #T!8%@E xx##T$<eDHUe4Ue4 xx##T$<eDHUe4 xx##T$<eDHD#N  xx##T$<eDH#N " xx##T$<eDH#9=	? r*   c           	      r   ^	p\         P                  ! R\        V4      /\         P                  ! RRVR7      R7      p\        P
                  P                  V4      pV R,          p \        P                  ! W4RR7       VP                  4       '       g   Q h\        P                  ! V4      pVP                  V4      '       g   Q hV R	,          p\        P                  ! \        4      ;_uu_ 4        \        P                  ! W4R
RR7       RRR4       R#   \         d     Li ; i  + '       g   i     R# ; i)	   rV   z
2017-01-01rt   )freqperiodsr   zwritten.parquetr:   rx   znot_written.parquetr6   r   N)r   r   r   
date_ranger   r   r   r   r   	Exceptionexistsr   r   rM   rN   rO   )rP   nr#   tbrS   recovered_tables   &     r(   5test_noncoerced_nanoseconds_written_without_exceptionr    s     	
A	sE!HoMM,T1M
OB			b	!B**H
rU3 ??mmH-O99_%%%% ..H	z	"	"
rtUK 
#	"   
#	"	"s   &D 0D%D"!D"%D6	c            	          R U u. uF1  p \         P                  ! . RO\         P                  ! V 4      R7      NK3  	  pp \         P                  P	                  V. RO4      p\        V4       R# u up i )r"   ro   Nr"   r6   r;   rt   )r   r   r   r   )zd[s]zd[ms]zd[us]zd[ns])r   rF   durationr   r   r   )r   rQ   r   s      r(   test_duration_typer    s\     231$ hh|"++d*;<1  3HH  )LMEU	3s   7A-r  )r6   r;   rt   )&r   r   r   numpyrE   ImportErrorrM   pyarrowr   pyarrow.tests.parquet.commonr   pyarrow.parquetparquetr   r   r   pandasr   pandas.testingtestingr    r   mark
pytestmarkr)   r2   rW   rk   r   parametrizer   r   r   r   r   r   r  r   r*   r(   <module>r     s0  $  	    9 F
H [[  
 ' '4 5 5 '2 '2T . .: h' h'V !89; : ;: +m\-JK$* L $*N !34 5> 5 5 8? 8?v L L0_  	B  	B  NBs3   G G, G< 	G)(G),	G98G9<H
H