
    .io(                         d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	Z
ddlmZ ddlmZmZ ej"                  j%                  d      Z ej(                  d      Zej"                  j,                   G d d	             Zy)
ztest feather-format compat    )datetimeN)pa_version_under18p0pa_version_under19p0)read_feather
to_featherz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpyarrowc                   &   e Zd Zd Zd Z	 ddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zej                   j"                  ej                   j$                  d               Zd Zd Zd Zd Zej                   j1                  ed      d        Zd Zy)TestFeatherc                 t    t        j                  ||      5  t        ||       d d d        y # 1 sw Y   y xY w)Nmatch)pytestraisesr   )selfdfexcerr_msg	temp_files        Z/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/test_feather.pycheck_error_on_writez TestFeather.check_error_on_write   s1     ]]3g. 	&r9%	& 	& 	&s   .7c                 x    t        j                  t              5  t        ||       d d d        y # 1 sw Y   y xY wN)tmexternal_error_raised	Exceptionr   )r   r   r   s      r   check_external_error_on_writez)TestFeather.check_external_error_on_write$   s1     %%i0 	&r9%	& 	& 	&s   09Nc                     |i }||j                         }t        ||fi | t        |fi |}t        j                  ||       y r   )copyr   r   r   assert_frame_equal)r   r   r   expectedwrite_kwargsread_kwargsresults          r   check_round_tripzTestFeather.check_round_trip+   sN     LwwyH2y1L1i7;7
fh/    c                     d}t        j                  g d      ddt        j                  d      t        j                  g d      fD ]  }| j                  |t        ||        y )Nz'feather only support IO with DataFrames         r(   foo20130101)pdSeries	Timestampnparrayr   
ValueError)r   r   msgobjs       r   
test_errorzTestFeather.test_error9   sZ    7IIi LL$HHY
 	GC %%c:sIF	Gr%   c                    t        j                  d      }t        j                  t	        d      t	        t        dd            t        j                  dd      j                  d      t        j                  dd	d
      dt        j                  dgg ddt        j                  dgt        j                  t	        d            t        j                  t	        t        j                  dd            d       t        j                  t	        t        j                  dd|            d       t        j                  d      t        j                  t        j                  d      gt        j                  t	        t        j                  ddd            d       d      }t        j                  ddd      |d<   t        j                   dd      |d<   t        j"                  ddd      |d<   |j$                  j&                  j(                  j*                  dk(  sJ |j-                         }d |j.                  d <   | j1                  |||!       y )"Nz
US/Easternabcr(      r*      u1g      @g      @float64dtypeg      ?TFTTFr,   )periods)freq)r?   tz20130103ns)r?   r@   )stringintuintfloatfloat_with_nullboolbool_with_nullcatdtdttzdt_with_nulldtns2013M)r@   r?   r?   z1 day
timedeltasr   	intervals)r(   rJ   )r    )zoneinfoZoneInfor-   	DataFramelistranger0   arangeastypenanCategoricalDatetimeIndex
date_ranger/   NaTperiod_rangetimedelta_rangeinterval_rangerM   r=   rA   keyr   locr$   )r   r   rA   r   r    s        r   
test_basiczTestFeather.test_basicD   s   |,\\u+E!QK(		!Q..t439=$'#3+#'"7~~d5k2&&z1=>T ((z1DE
 LL,FFLL,!
 ((z14HIPT+
6 S!D9--gqA<++Aq!4;ww}}##|333779,0()b)h?r%   c                     t        j                  t        j                  d      j	                  dd      t        d            j                         }| j                  ||       y )N   r8   r*   aaacolumns)r-   rV   r0   rY   reshaperW   r   r   r   r   r   s      r   test_duplicate_columnsz"TestFeather.test_duplicate_columnsk   sF     \\"))B-//15tE{KPPR**2y9r%   c                     t        j                  t        d      t        t        dd            t        d      t        t        dd            d      }ddg}| j	                  ||||   |	       y )
Nr7   r(   r8   xyz   )col1col2col3col4rq   rs   )r    rj   )r-   rV   rW   rX   r$   )r   r   r   rj   s       r   test_read_columnszTestFeather.test_read_columnsq   sf    \\UU1a[)UU1a[)	
 6"b)bk7Sr%   c                 ~    t        j                  ddgddgddgd      }|dd	g   }| j                  |||dd	g
       y )Nr(   r)   xyTF)ABCrz   ry   ri   )r-   rV   r$   )r   r   r   r    s       r   !test_read_columns_different_orderz-TestFeather.test_read_columns_different_order~   sK    \\Ac3ZtUmLMsCj>b)XSzJr%   c                 Z    t        j                  dg di      }| j                  ||       y )Na)r~   r(          @)r-   rV   r   rl   s      r   test_unsupported_otherz"TestFeather.test_unsupported_other   s%    \\3./**2y9r%   c                     t        j                  dt        j                  d      i      }| j	                  ||d       | j	                  ||d       y )Nry   i T)use_threadsF)r-   rV   r0   rY   r$   rl   s      r   test_rw_use_threadszTestFeather.test_rw_use_threads   sH    \\3		& 123b)>b)?r%   c                    t        j                  dt        j                  d      j	                  d      z  t        j
                  t        d            t        j
                  t        d      D cg c]  }d| 	 c}            j                         }t        j                  |j                  t        |      }t        j                  ||       y c c}w )N皙?x      r8   ABCDr   i-rj   index)r-   rV   r0   rY   rk   IndexrW   rX   reset_indexr   round_trip_pathlibr   r   r   )r   r   ir   r#   s        r   test_path_pathlibzTestFeather.test_path_pathlib   s    \\"))C.((11HHT&\*((eBi8bH89
 +-	 	
 &&r}}lIN
b&) 9s   /Cc                 b   t        j                  dt        j                  d      j	                  d      z  t        j
                  t        d            t        j
                  t        d      D cg c]  }d| 	 c}            j                         }| j                  ||dd	i
       y c c}w )Nr   r   r   r   r   r   r   versionr(   )r!   )
r-   rV   r0   rY   rk   r   rW   rX   r   r$   )r   r   r   r   s       r   test_passthrough_keywordsz%TestFeather.test_passthrough_keywords   s    \\"))C.((11HHT&\*((eBi8bH89
 +-	 	
 	b)9a.I 9s   /B,c                     t        |      }t        |d      5 }|j                  |j                                t        |j                        }d d d        t        j                  |       y # 1 sw Y    xY w)Nrb)content)r   openserve_contentreadurlr   r   )r   feather_file
httpserverr    fress         r   test_http_pathzTestFeather.test_http_path   sf      -,% 	/$$QVVX$6z~~.C	/ 	h,	/ 	/s   6A--A6c                 ,   t        j                  t        j                  dt         j                  dgd      t        j                  g dd      t        j                  dt         j                  dgd      t        j                  g d	d      g d
g dg dg dd      }t	        ||       t        j
                  d|      5  t        ||      }d d d        |dk(  r_t        j                  d      }|r$t        j                  |j                               }n9t        j                  |j                               }nt        j                  |      }t        j                  t        j                  dt         j                  dgd      t        j                  g dd      t        j                  dt         j                  dgd      t        j                  g d	d      t        j                  ddt         j                  gd      t        j                  g dd      t        j                  g d|      t        j                  g d|      d      }	|dk(  rNddlm}
 t        j                  |	j                  D ci c]  }| |
j!                  |	|   d            ! c}      }	|rC|	j                  j#                  t        j                  |t$        j&                              |	_        t)        j*                  |	       y # 1 sw Y   5xY wc c}w )Nr(   r*   Int64r<   r'         ?      @Float64)r   r   r   )TFNr>   )r~   bc)r~   r   N)r~   r   r   der   ghzmode.string_storagedtype_backendr   TFbooleanr   )ArrowExtensionArray)from_pandasna_value)r-   rV   r.   NAr   option_contextr   r   importorskip
ArrowDtypelarge_stringrD   StringDtypepandas.arraysr   rj   r1   rZ   r0   r[   r   r   )r   string_storager   using_infer_stringr   r   r#   pastring_dtyper    r   cols               r   test_read_feather_dtype_backendz+TestFeather.test_read_feather_dtype_backend   sH    \\YY255!}G<YYy8YYRUUC0	BYYi@(($%	
 	2y!4nE 	J!)=IF	J I%$$Y/B!!}}R__->?!}}RYY[9>>.9L<<YY255!}G<YYy8YYRUUC0	BYYi@YYeRUU39EYY2)DYYlCYY/|D	
 I%9||  (// ,RXXhsmQUX-VWWH '//66~? H 	fh/O	J 	J:s   L=$LLc                     t        j                  dg dit        j                  g dd            }| j                  ||       y )Nr~   r'   )r*   r8      test)name)r   )r-   rV   r   r$   rl   s      r   test_int_columns_and_indexz&TestFeather.test_int_columns_and_index   s2    \\3	*"((962RSb),r%   c           	          d}t        j                  dt        t        dd            i      }|j	                  |       t        j                  t        |      5  t        |d       d d d        y # 1 sw Y   y xY w)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rE   r(   r8   r   numpyr   )	r-   rV   rW   rX   r   r   r   r2   r   )r   r   r3   r   s       r   test_invalid_dtype_backendz&TestFeather.test_invalid_dtype_backend   se    % 	 \\5$uQ{"345
i ]]:S1 	;':	; 	; 	;s   A00A9c                 4   t        j                  dddgi      }|j                  |       t        j                  dd      5  t	        |      }d d d        t        j
                  t        j                        }t        j                  dddgit        j
                  t        j                              }t        j                  dddgi|t        j                  dgt        r|st        n|	      
      }t        j                  |       y # 1 sw Y   xY w)Nr~   rw   rx   )datafuture.infer_stringTr   r   r=   r<   )r   r=   rj   )r-   rV   r   r   r   r   r0   r[   r   r   objectr   r   )r   r   r   r   r#   r=   r    s          r   test_string_inferencez!TestFeather.test_string_inference   s    \\c3Z01
i 4d; 	-!),F	-/<<Sz"".."&&*I
 <<Sz"HH'0B 		
 	fh/!	- 	-s   DDznot supported before 18.0)reasonc                    dd l }ddl m} |j                  d|j                  g d|j	                               i      }|j                  ||       t        j                  dd      5  t        |      }t        j                  dg dit        j                  t        j                              }d d d        t        j                         y # 1 sw Y    xY w)	Nr   )featherr~   )Nr   r   r   Tr   r   )r   r   tabler1   string_viewwrite_featherr-   r   r   rV   r   r0   r[   r   r   )r   r   r   r   r   r#   r    s          r   &test_string_inference_string_view_typez2TestFeather.test_string_inference_string_view_type  s     	##rxx(8"..:JKLMeY/4d; 	!),F||+,BNNBFF4SH	 	fh/	 	s   &A	CCc                     t        j                  dt        j                  d      t        j                  d      gi      }| j	                  ||       y )Ndatez
1654-01-01z
1920-01-01)r-   rV   r   fromisoformatr$   rl   s      r   &test_out_of_bounds_datetime_to_featherz2TestFeather.test_out_of_bounds_datetime_to_feather  sK    \\**<8**<8
 	b),r%   )NN)__name__
__module____qualname__r   r   r$   r5   re   rm   ru   r|   r   r   r   r   r   marknetwork
single_cpur   r   r   r   r   skipifr   r   r    r%   r   r
   r
      s    && :>0	G%@N:TK:
@
*J [[[[-  -90v-;0, [[,5PQ0 R0 
-r%   r
   )__doc__r   rT   r   r0   r   pandas.compat.pyarrowr   r   pandasr-   pandas._testing_testingr   pandas.io.feather_formatr   r   r   filterwarnings
pytestmarkr   r   r   r
   r   r%   r   <module>r      su         
   =[[''C

 V# G- G- G-r%   