
    .i9                     >   d dl Z d dlmZ d dlZd dlZd dlmZ d dlZd dlZd dl	m
Z
mZ d dlmZ d dlZd dlmZ d dlmZ ej*                  d        Z ej*                  d edd	      fd
d	gfg      d        Z G d d      Zd Zd Zd Zd Zd Zej>                  jA                  ed      d        Z!ej>                  jE                  dddg      d        Z#d Z$d Z%d Z&ej>                  jE                  dddg      d         Z'd! Z(ej>                  jS                  ed"      d#        Z*ej>                  jS                  ed"      d$        Z+ej>                  jA                  ed      d%        Z,d& Z-ej>                  jE                  d'g d(      d)        Z.d* Z/d+ Z0y),    N)datetime)Path)IS64WASM)EmptyDataError)SAS7BDATReaderc                      | ddd      S )Niosasdata )datapaths    _/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/sas/test_sas7bdat.pydirpathr      s    D%((             )paramsc                    | j                   \  }}t        j                  j                  |d| d      }t	        j
                  |      }t        ddd      }t	        j                  |d   d      }||z   j                  d      |d<   t	        j                  |d	   d      }||z   j                  d      |d	<   t        |j                  d         D ]s  }	|j                  d d |	f   }
|
j                  t        j                  k(  s4|j                  |	|j                  d d |	f   j                  t        j                                u ||fS )
Ntest_sas7bdat_z.csvi  r   Column4D)unitM8[s]Column12)paramospathjoinpdread_csvr   to_timedeltaastyperangeshapeilocdtypenpint64isetitemfloat64)requestr   itest_ixfnamedfepocht1t2kcols              r   data_test_ixr7      s   JAwGGLLN1#T":;E	U	BT1a E	IS	1BRZ''0ByM	Jc	2Bbj((1BzN288A; =ggadm99 KK2771a4=//

;<= w;r   c            	          e Zd Zej                  j
                  d        Zej                  j
                  d        Zej                  j
                  d        Zej                  j
                  d        Z	ej                  j
                  ej                  j                  dd      ej                  j                  d edd	            d
                      Zd Zy)TestSAS7BDATc                     |\  }}|D ]S  }t         j                  j                  |d| d      }t        j                  |d      }t        j                  ||       U y Ntest	.sas7bdatutf-8encoding)r   r   r    r!   read_sastmassert_frame_equalselfr   r7   expectedr/   r5   r0   r1   s           r   test_from_filezTestSAS7BDAT.test_from_file.   sX    (' 	0AGGLLD9*=>EUW5B!!"h/	0r   c                    |\  }}|D ]  }t         j                  j                  |d| d      }t        |d      5 }|j	                         }d d d        t        j                        }	t        j                  |	ddd      5 }
|
j	                         }d d d        t        j                  |        y # 1 sw Y   ixY w# 1 sw Y   .xY w)Nr<   r=   rbsas7bdatTr>   formatiteratorr@   )r   r   r    openreadr
   BytesIOr!   rA   rB   rC   )rE   r   r7   rF   r/   r5   r0   fbytsbufrdrr1   s               r   test_from_bufferzTestSAS7BDAT.test_from_buffer6   s    (' 		0AGGLLD9*=>EeT"  avvx **T"CJ  XXZ  !!"h/		0      s   B4C 4B=	 C		c           	         |\  }}|D ]  }t         j                  j                  |d| d      }t        j                  |dd      5 }|j                  d      }t        j                  ||j                  ddd d f          |j                  d      }t        j                  ||j                  dd	d d f          d d d         y # 1 sw Y   xY w)
Nr<   r=   Tr>   rM   r@   r   r         )	r   r   r    r!   rA   rO   rB   rC   r'   )	rE   r   r7   rF   r/   r5   r0   rT   r1   s	            r   test_from_iteratorzTestSAS7BDAT.test_from_iteratorD   s    (' 	AAGGLLD9*=>EUTGD AXXa[%%b(--!Q*?@XXa[%%b(--!Q*?@	A A	AA As   A5CC	c           	          |\  }}|D ]\  }t        t        j                  j                  |d| d            }t	        j
                  |d      }t        j                  ||       ^ y r;   )r   r   r   r    r!   rA   rB   rC   rD   s           r   test_path_pathlibzTestSAS7BDAT.test_path_pathlibO   s]    (' 	0AgaS	/BCDEUW5B!!"h/	0r   	chunksize)rX   rY   
      r5   r      c                     t         j                  j                  |d| d      }t        j                  ||d      5 }d}|D ]  }||j
                  d   z  } 	 d d d        j                  k(  sJ y # 1 sw Y   xY w)Nr<   r=   r>   )r]   r@   r   )r   r   r    r!   rA   r&   	row_count)rE   r   r5   r]   r0   rT   yxs           r   test_iterator_loopzTestSAS7BDAT.test_iterator_loopW   s    
 WQCy&9:[[)gF 	 #A  QWWQZ 	  CMM!!!		  	 s   A44A=c                    t         j                  j                  |d      }t        j                  |ddd      5 }|j                  |j                  dz         }d d d        t        j                  |dd      5 }|j                  |j                  dz         }d d d        t        j                         y # 1 sw Y   _xY w# 1 sw Y   ,xY w)Ntest1.sas7bdatrJ   Tr>   rK      rW   )	r   r   r    r!   rA   rO   rb   rB   rC   )rE   r   r0   rT   d1d2s         r   test_iterator_read_too_muchz(TestSAS7BDAT.test_iterator_read_too_muchc   s    W&67[[*tg
 	.#--",-B	.
 [[@ 	.C#--",-B	.
b"%	. 	.
	. 	.s   B79C7C CN)__name__
__module____qualname__pytestmarkslowrG   rU   rZ   r\   parametrizer%   re   rk   r   r   r   r9   r9   -   s    [[0 0 [[0 0 [[A A [[0 0 [[[[[.9[[S%2,/" 0 : "
&r   r9   c                 &    | dddd      }t        j                  |      }t        j                  |d      }|j                  D ]$  }	 ||   j                  j	                  d      ||<   & t        j                  ||       t        j                  t        |d            5 }|j                         }d d d        t        |j                  j                        D ]  \  }}||j	                         k(  rJ  y # t
        $ r Y w xY w# 1 sw Y   VxY w)	Nr
   r   r   rg   r>   r?   F)convert_header_text)r!   rA   columnsstrdecodeAttributeErrorrB   rC   
contextlibclosingr   rO   zip)	r   r0   df1df2r6   rT   df3rd   rc   s	            r   test_encoding_optionsr   p   s    T5&*:;E
++e
C
++eg
.C{{ 	3x||**73CH
 #s#			N5eL	M QThhjCKK- 1AHHJ  		 s   !C8!D8	DDDc                 \    | dddd      }t        j                  |dd      5 }|j                  dk(  sJ |j                         }d d d        t        j                  |dd      5 }|j                         }d d d        t	        j
                         y # 1 sw Y   QxY w# 1 sw Y   ,xY w)	Nr
   r   r   rg   inferT)r@   rM   cp1252)r!   rA   inferred_encodingrO   rB   rC   )r   r0   
df1_readerr|   
df2_readerr}   s         r   test_encoding_inferr      s    T5&*:;E	UWt	<  
++x777oo 
 
UX	=  oo  #s#   
   s   "B&B"B"B+c                 :    | dddd      }t        j                  |d      } | dddd      }t        j                  |dg	      }g d
}||   j                  t        j
                        ||<   |d   j                  d      |d<   t        j                  ||       y )Nr
   r   r   zproductsales.sas7bdatr>   r?   zproductsales.csvMONTHparse_dates)ACTUALPREDICTQUARTERYEARr   r!   rA   r"   r$   r)   r,   rB   rC   )r   r0   r1   df0vns        r   test_productsalesr      s    T5&*ABE	UW	-BT5&*<=E
++e'
3C	1B"gnnRZZ(CGw<&&w/CL"c"r   c                      | dddd      }t        j                  |      } | dddd      }t        j                  |      }|j                  t        j
                        }t        j                  ||       y )Nr
   r   r   ztest_12659.sas7bdatztest_12659.csvr   r   r0   r1   r   s       r   
test_12659r      sb    T5&*?@E	U	BT5&*:;E
++e
C
**RZZ
 C"c"r   c                      | dddd      }t        j                  |      } | dddd      }t        j                  |      }|j                  t        j
                        }t        j                  ||       y )Nr
   r   r   zairline.sas7bdatzairline.csvr   r   s       r   test_airliner      sa    T5&*<=E	U	BT5&-8E
++e
C
**RZZ
 C"c"r   zPyodide/WASM has 32-bitness)reasonc                 *    | dddd      }t        j                  |      } | dddd      }t        j                  |g d      }|j                  d d df   j                  j                  d	      ||j                  d   <   |d
   j                  d      |d
<   |d   j                  d      |d<   |d   j                  d      |d<   |d   j                  d      |d<   |d   j                  d      j                  j                  d      }|j                  d      |d<   t        sZ|j                  dxx   t        j                  dd      z  cc<   |j                  ddgdfxx   t        j                  dd      z  cc<   t        j                  ||       y )Nr
   r   r   zdatetime.sas7bdatzdatetime.csv)Date1Date2DateTime
DateTimeHiTaiwr   rX   usr   r   r   r   M8[ms]r   r   zM8[us]ms)r   r   r   r   )r!   rA   r"   r'   dtroundru   r$   r   locr)   timedelta64rB   rC   )r   r0   r1   r   ress        r   test_date_timer      sk    T5&*=>E	U	BT5&.9E
++OC 1((..t4Brzz!}w<&&w/CLw<&&w/CL*o,,X6C
Of+$$W-CK
l

"
"8
,
/
/
5
5d
;C

8,C BNN1d$;; A$%4)@@%"c"r   columnWGTCYLc                      | dddd      }t        j                  |d      }||   }||   j                         }t        j                  ||d       y )	Nr
   r   r   zcars.sas7bdatlatin-1r?   T)check_exact)r!   rA   r   rB   assert_series_equal)r   r   r0   r1   resultrF   s         r   test_compact_numerical_valuesr      sS     T5&/:E	UY	/B
 ZF&z!H68>r   c                      | dddd      }t        j                  |d      } | dddd      }t        j                  |d      }t        j                  ||       y )Nr
   r   r   zmany_columns.sas7bdatr   r?   zmany_columns.csvr!   rA   r"   rB   rC   r   s       r   test_many_columnsr      sT    T5&*ABE	UY	/BT5&*<=E
++ei
0C"c"r   c                 h     | dddd      }t        j                  |d      }t        |      dk(  sJ y )Nr
   r   r   zload_log.sas7bdatr   r?   i1  r!   rA   lenr   r0   r1   s      r    test_inconsistent_number_of_rowsr      s3    T5&*=>E	UY	/Br7d??r   c                      | dddd      }t        j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr
   r   r   zzero_variables.sas7bdatzNo columns to parse from filematch)ro   raisesr   r!   rA   )r   r0   s     r   test_zero_variablesr      sC    T5&*CDE	~-L	M 
E  s   AAr@   utf8c                      | dddd      }t        j                  ||      }|dnd}t        j                  |dd	g      j                  d d
 }t	        j
                  ||       y )Nr
   r   r   zzero_rows.sas7bdatr?      aag      ?)
char_field	num_fieldr   )r!   rA   	DataFramer'   rB   rC   )r   r@   r0   r   	str_valuerF   s         r   test_zero_rowsr      sf     T5&*>?E[[2F (cI||ICHIJOOPRQRSH&(+r   c                      | dddd      }d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr
   r   r   zcorrupt.sas7bdatz4'SAS7BDATReader' object has no attribute 'row_count'r   )ro   r   rx   r!   rA   )r   r0   msgs      r   test_corrupt_readr      sI     T5&*<=E
@C	~S	1 
E  s   AAz-failing with currently set tolerances on WASMc                     | dddd      }t        j                  |d      }t        j                  ddgd	d
gt        j                  t        ddddddd      t        ddddddd      gd      ddgt        j                  t        ddd      t        ddd      gd      dg d      }t        s/|j                  d d dfxx   t        j                  dd      z  cc<   t        j                  ||       y )Nr
   r   r   max_sas_date.sas7bdat
iso-8859-1r?   maxnormal`MBA'           ;   X> i     r   r   r(      qgFA    @@r   textdt_as_floatdt_as_dtdate_as_floatdate_as_dateru   r   r   )r!   rA   r   r)   arrayr   r   r   r   rB   rC   r   r0   r1   rF   s       r   test_max_sas_dater     s     T5&*ABE	U\	2B||H%,n=T2r2r2v>T1aRV<  (1HHT2r*T1a( 	
& U)H. Q
]#r~~a'>>#"h'r   c                 @   g d} | dddd      }g }t        j                  |dd      D ]&  }|j                  d	d	
       |j                  |       ( t        j                  dgdgt        j                  t        ddddddd      gd      dgt        j                  t        ddd      gd      d|      t        j                  dgdgt        j                  dgd      dgt        j                  dgd      d|      g}t        s\|d   j                  dxx   t        j                  dd      z  cc<   |d   j                  dxx   t        j                  dd      z  cc<   t        j                  |d   |d          t        j                  |d   |d          y ) Nr   r
   r   r   r   r   r   )r@   r]   T)inplacedropr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z2019-08-01 23:59:59.999r   z
2019-08-01r   )r   r   r   )r!   rA   reset_indexappendr   r)   r   r   r   r   r   rB   rC   )r   	col_orderr0   resultsr1   rF   s         r   test_max_sas_date_iteratorr   .  s    UIT5&*ABEGkk%,!D 
t$/r
 	 01HHdBBB?@ #, "(4R*@)A Q 	
 	!
 ./HH&?%@Q") ",w G 		
H0 &"..D*AA&&"..D*AA&'!*hqk2'!*hqk2r   c                     | dddd      }t        j                  |d      }t        j                  t        j                  t        ddd	      t        j                  d
      gd      t        j                  t        ddd	dddd      t        j                  d
      gd      d      }t        s+|j                  dxx   t        j                  dd      z  cc<   t        j                  ||       y )Nr
   r   r   zdates_null.sas7bdatr>   r?   r   r   r   NaTr   r   r   r   r   r   )datecoldatetimecol)r   r   r   r   )r!   rA   r   r)   r   r   
datetime64r   r   r   rB   rC   r   s       r   test_null_dater   \  s    T5&*?@E	UW	-B||xxT2r*MM%(  88T2r2r2v>MM%( 	
H$ %&"..D*AA&"h'r   c                 d     | dddd      }t        j                  |      }t        |      dk(  sJ y )Nr
   r   r   ztest_meta2_page.sas7bdati  r   r   s      r   test_meta2_pager   y  s1    T5&*DEE	U	Br7d??r   z8test_file, override_offset, override_value, expected_msg))test2.sas7bdat    Out of bounds)r   r   r   zunknown control byte)ztest3.sas7bdati    r   c                 H   t         | ddd|      d      5 }t        |j                               }ddd       ||<   t        j                  t
        |      5  t        j                  t        j                  |      d       ddd       y# 1 sw Y   ]xY w# 1 sw Y   yxY w)	z1Errors in RLE/RDC decompression should propagate.r
   r   r   rI   Nr   rJ   )rL   )
rN   	bytearrayrO   ro   r   	Exceptionr!   rA   r
   rP   )r   	test_fileoverride_offsetoverride_valueexpected_msgfdr   s          r   test_rle_rdc_exceptionsr    s     
htUFI6	= $#$*D	y	5 9
BJJt$Z89 9$ $9 9s   B+BBB!c                      | dddd      }t        j                  |d      } | dddd      }t        j                  |d	      }t        j                  ||       y )
Nr
   r   r   z0x40controlbyte.sas7bdatasciir?   z0x40controlbyte.csvrv   r   r   r   s       r   test_0x40_control_byter    sT    T5&*DEE	UW	-BT5&*?@E
++e5
)C"c"r   c                 |     | dddd      }t        t        j                  |d            }|j                  dk(  sJ y )Nr
   r   r   z0x00controlbyte.sas7bdat.bz2*  )r]   )r  rh   )nextr!   rA   r&   r   s      r   test_0x00_control_byter	    s:    T5&*HIE	bkk%62	3B88|###r   )1ry   r   r
   r   pathlibr   numpyr)   ro   pandas.compat._constantsr   r   pandas.errorsr   pandasr!   pandas._testing_testingrB   pandas.io.sas.sas7bdatr   fixturer   r%   r7   r9   r   r   r   r   r   rp   skipifr   rr   r   r   r   r   r   r   xfailr   r   r   r   r  r  r	  r   r   r   <module>r     s     	 	    )   1 ) ) E!RL)At956 7"@& @&F"$	### D!>?# @#: E5>2
? 3
?# dF^4, 5, 4 OP$( Q$(N 4 OP*3 Q*3Z D!>?( @(8 >99#$r   