
    .i.              	          d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlmZ d dlZd dlmZ d dlmc mZ e
j*                  j-                  d ej.                  dg dg dgz  g d       ej0                  dg dz  d	
      g      e
j*                  j-                  dg d      d               Ze
j*                  j-                  d ej.                  dg dg dgz  g d       ej0                  dg dz  d	
      g      e
j*                  j-                  dddg      d               Ze
j*                  j-                  ddddiej6                  fdi ej8                  fdi ej:                  fg      d        Ze
j*                  j-                  dddddej6                  ddifdi ej8                  ddifdi ej:                  i fg      d        Zd Z d Z!d Z"d  Z#e
j*                  jH                  d!        Z%e
j*                  jH                  d"        Z&e
j*                  j-                  d ej.                  dg dg dgz  g d       ej0                  dg dz  d	
      g      e
j*                  j-                  dg d      d#               Z'e
j*                  j-                  d ej.                  dg dg dgz  g d       ej0                  dg dz  d	
      g      e
j*                  j-                  dg d      d$               Z(e
j*                  j-                  d ej.                  dg dg dgz  g d       ej0                  dg dz  d	
      g      e
j*                  j-                  dg d      d%               Z)e
j*                  j-                  d&d'ejT                  fd(ejV                  fg      d)        Z,d* Z-d+ Z.d, Z/d- Z0y).    N)is_platform_windowsobjd   g~Ϛ?g9DܜJ?g>D)?g.4i(@g33333@g̤AXYZcolumnsr	   namemethod)	to_pickleto_jsonto_csvc                     |dk(  rddd}|} t        | |      ||       t        j                  j                  |      } t        | |      |d        t        j                  j                  |      }||kD  sJ y )Ntarw:gzr   modecompressiongetattrospathgetsize)r   r   compression_only	temp_filer   compressed_sizeuncompressed_sizes          ^/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/test_compression.pytest_compression_sizer%      sv     5 &+V<DGC+;<ggood+OGC40-...    r   r   c                    |}t        j                  ||dk(  rdnd|      5 } t        | |      |j                         |j                  j                  rJ 	 d d d        t
        j                  j                  |      }|j                  |j                   d|j                   z  }|j                          t        j                  |dd       5 } t        | |      |j                         |j                  j                  rJ 	 d d d        t
        j                  j                  |      }||kD  sJ y # 1 sw Y   xY w# 1 sw Y   <xY w)Nr   r   wr   _uncompressed)icom
get_handler   handleclosedr   r   r   parentstemsuffixtouch)	r   r   r    r!   r   handlesr"   path2r#   s	            r$   test_compression_size_fhr4   ,   s'    D	"e+$
 ) 
VW^^,>>((((() ggood+O )..!1y?O?O>PQQE	KKM		6 )'VW^^,>>((((() ....!) )) )s   5D45E 4D= E	z'write_method, write_kwargs, read_methodindexFr   c                     t        j                  g dg dgg d      }||   }|j                  d| z  } t        ||       |fi |  |||      }	t	        j
                  |	|       y )N)g      ?r   )g333333@      r   r   
compressedr   )pd	DataFramer.   r   tmassert_frame_equal)
write_methodwrite_kwargsread_methodr    compression_to_extensionr!   input	extensionr   outputs
             r$   ,test_dataframe_compression_defaults_to_inferrF   L   sn    " LL,4oNE()9:I
9+66D GE< 66+;<F&%(r&   z1write_method,write_kwargs,read_method,read_kwargsT)r5   headersqueezetypseriesc                 4   t        j                  g dd      }||   }|j                  d| z  }	 t        ||       |	fi | d|v r.|j	                         }
|
d=  ||	fd|i|
j                  d      }n ||	fd|i|}t        j                  ||d	       y )
N)r   r8   
   r	   r   r:   rH   r   r   F)check_names)r;   Seriesr.   r   copyrH   r=   assert_series_equal)r?   r@   rA   read_kwargsr    rB   r!   rC   rD   r   kwargsrE   s               r$   )test_series_compression_defaults_to_inferrT   e   s    $ IIn3/E()9:I
9+66D GE< 66K!!#9TJ/?J6JRR
 TO/?O;O65e<r&   c                 @   t        j                  dg dg dgz  g d      }|}t        j                  |d|       5 }t	        j
                  t        d	      5  |j                  |j                  |        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   r   r   r   r   r(   r   zhas no effectmatch)	r;   r<   r*   r+   r=   assert_produces_warningRuntimeWarningr   r,   )r    r!   dfr   r2   s        r$   test_compression_warningr[      s     
-/MNN
B D	s0@	A DW''oN 	DIIgnn2BIC	DD D	D 	DD Ds#   BB7BB	BBc                    t        j                  dt        j                  d      j	                  d      z  t        j
                  t        d            t        j
                  t        d      D cg c]  }d| 	 c}            }|}t        |d	      5 }|j                  |d| 
       |j                  d       ddd       t        j                  |t        j                  |d|              t        j                         }|j                  |d| 
       |j                  d       t        j                  |t        j                  |d|              yc c}w # 1 sw Y   xY w)z?
    Binary file handles support compression.

    GH22555
    皙?x         ABCDr`   i-r   r5   wb)r   )r   r   r   N)	index_colr   )r;   r<   nparangereshapeIndexlistrangeopenr   seekr=   r>   read_csvioBytesIO)r    r!   irZ   r   files         r$   test_compression_binaryrt      s    
biin$$W--f&hh%)4Q"QC45
B D	d	 $
		$T/?	@		! 
BKK7GH
 ::<DIId+;I<IIaL
BKK7GH! 5
 s   /E&EE$c                    t        j                  dt        j                  d      j	                  d      z  t        j
                  t        d            t        j
                  t        d      D cg c]  }d| 	 c}            }dd	d
}| }|j                  ||       |j                         }|j                  ||       ||j                         k(  sJ yc c}w )z
    Gzip should create reproducible archives with mtime.

    Note: Archives created with different filenames will still be different!

    GH 28103
    r]   r^   r_   rb   r`   rc   rd   gzip   r   mtimer   N)
r;   r<   rg   rh   ri   rj   rk   rl   r   
read_bytes)r!   rr   rZ   compression_optionsr   rE   s         r$   #test_gzip_reproducibility_file_namer|      s     
biin$$W--f&hh%)4Q"QC45
B
 &,a8 DIId 3I4__FIId 3I4T__&&&& 5s   /Cc                     t        j                  dt        j                  d      j	                  d      z  t        j
                  t        d            t        j
                  t        d      D  cg c]  } d|  	 c}             }dd	d
}t        j                         }|j                  ||d       |j                         }t        j                         }|j                  ||d       ||j                         k(  sJ yc c} w )zL
    Gzip should create reproducible archives with mtime.

    GH 28103
    r]   r^   r_   rb   r`   rc   rd   rv   rw   rx   re   )r   r   N)r;   r<   rg   rh   ri   rj   rk   rl   rp   rq   r   getvalue)rr   rZ   r{   bufferrE   s        r$   %test_gzip_reproducibility_file_objectr      s     
biin$$W--f&hh%)4Q"QC45
B
 &,a8 ZZ\FIIf"5DIA__FZZ\FIIf"5DIAV__&&&& 5s   /Dc                      t        j                  d      } t        j                  t        j
                  d| gt        j                         y)z6Tests if import pandas works when lzma is not present.zT        import sys
        sys.modules['lzma'] = None
        import pandas
        -cstderrNtextwrapdedent
subprocesscheck_outputsys
executablePIPEcodes    r$   test_with_missing_lzmar      s8     ??	D S^^T48Qr&   c                      t        j                  d      } t        j                  t        j
                  d| gt        j                         y)zcTests if ModuleNotFoundError is hit when calling lzma without
    having the module available.
    a	  
        import sys
        import pytest
        sys.modules['lzma'] = None
        import pandas as pd
        df = pd.DataFrame()
        with pytest.raises(ModuleNotFoundError, match='import of lzma'):
            df.to_csv('foo.csv', compression='xz')
        r   r   Nr   r   s    r$   test_with_missing_lzma_runtimer      s8    
 ??	
D S^^T48Qr&   c                     |} t        | |      |d       t        j                  j                  |      } t        | |      |ddd       t        j                  j                  |      }||k  sJ y )Nrv   r   rw   r   compresslevelr   r   r   r!   r   compressed_size_defaultcompressed_size_fasts         r$   test_gzip_compression_levelr      si     DGC62 ggood3GCfq+QR77??40"%9999r&   c                 "   |} t        | |      |d       t        j                  j                  |      } t        | |      |ddd       t        j                  j                  |      }||k  sJ |dk(  rt	        j
                  |d       y y )Nxzr   rw   )r   presetr   )r   r   r   r   r;   ro   r   s         r$   test_xz_compression_level_readr     s     DGC40 ggood3GCda+HI77??40"%9999
Dd+ r&   c                 6    |} t        | |      |ddd       y)zGH33196 bzip needs file size > 100k to show a size difference between
    compression levels, so here we just check if the call works when
    compression is passed as a dict.
    bz2rw   r   r   N)r   )r   r   r!   r   s       r$   test_bzip_compression_levelr   *  s!      DGCea+PQr&   zsuffix,archivez.zipz.tarc                     |j                   d|  z  } ||d      5  	 d d d        t        j                  t        d      5  t	        j
                  |       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Narchiver(   zZero files foundrV   )r.   pytestraises
ValueErrorr;   ro   )r0   r   r!   r   s       r$   test_empty_archive_zipr   >  sr     x00D	s	 	z);	< 
D   s   A A, A),A5c                 J   | j                   dz  }t        j                  |d      5 }|j                  dd       |j                  dd       d d d        t	        j
                  t        d      5  t        j                  |       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nzarchive.zipr(   a.csvzfoo,barb.csvz Multiple files found in ZIP filerV   )	r.   zipfileZipFilewritestrr   r   r   r;   ro   )r!   r   rs   s      r$   test_ambiguous_archive_zipr   M  s    m+D	s	# *tgy)gy)* 
z)K	L 
D * * s   %B.BBB"c                    | dz  }t        |dd      5 }|j                  d       d d d        | dz  }t        |dd      5 }|j                  d       d d d        | dz  }t        j                  |d      5 }|j	                  |d       |j	                  |d       d d d        t        j                  t        d	      5  t        j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)
Nr   r(   zutf-8)encodingzfoo,bar
r   zarchive.tarz#Multiple files found in TAR archiverV   )
rm   writetarfileTarFileaddr   r   r   r;   ro   )tmp_pathcsvAPathacsvBPathbtarpathr   s          r$   test_ambiguous_archive_tarr   V  s    '!H	hg	. !	'!H	hg	. !	 &G	#	& ##'"'"# 
z)N	O 
G   # # s/   CC)6%C5>DC&)C25C>D
c                    | j                   dz  }t        j                  ddggddg      j                  |ddd	d
       t	        j
                  |      5 }t        j                  |      5 }|j                         }t        |      dk(  sJ |j                  |d         j                         j                  d      }t               rd}nd}||k(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nzarchive.foo12foobarr   r   r   r   F)r   r5   )fileobjrw   r   utf8zfoo,bar
1,2
zfoo,bar
1,2
)r.   r;   r<   r   rv   rm   r   r   
getmemberslenextractfilereaddecoder   )r!   rs   uncompressedr   memberscontentexpecteds          r$   !test_tar_gz_to_different_filenamer   g  s    m+DLL
s fT%@fN	4 'L__\2 
	'g((*Gw<1$$$))'!*5::<CCFKG"$/+h&&&
	'' '
	' 
	'' 's%   C3-A(C'C3'C0	,C33C<c                      t        j                         5 } t        j                  | d      5  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr(   )r   r   )rp   rq   r*   _BytesTarFile)r   s    r$   test_tar_no_error_on_closer   {  sO    	 S9 		 	 	 s!   AA A A		AA)1rv   rp   r   r   r   r   r   r   numpyrg   r   pandas.compatr   pandasr;   pandas._testing_testingr=   pandas.io.commoncommonr*   markparametrizer<   rO   r%   r4   ro   	read_jsonread_picklerF   rT   r[   rt   r|   r   
single_cpur   r   r   r   r   r   r   r   r   r   r   r    r&   r$   <module>r      s'    	 	  
      -     	13QRR#	
 			#66SA	 #EF	/ G		/ 	13QRR#	
 			#66SA	 Hi#89/ :	/* -	GU#R[[1	B%	b"..)))" 7	Ud3R[[9dBST	Buh&78	b".."-==2
D<'.', 
R 
R R R$ 	13QRR#	
 			#66SA	 #EF: G	: 	13QRR#	
 			#66SA	 #EF, G	, 	13QRR#	
 			#66SA	 #EFR G	R 	!	!"'(r&   