
    .i                     n   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dlm	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mc m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l"m#Z#m$Z$m%Z%m&Z&m'Z' d d	l(m)Z) d
e*de*fdZ+ejX                  d        Z- ejX                  g d      d        Z.ejX                  d        Z/ejX                  d        Z0ejb                  je                  d ejf                  d ejh                  d       ejh                  d      g       ejf                  d ejh                  d       ejh                  d      g       ejf                  d ejh                  d       ejh                  d      g       ejf                  d ejh                  d            g       G d d             Z5ejb                  je                  d ejf                  dd ejh                  d       ejh                  d      g       ejf                  dd ejh                  d       ejh                  d      g       ejf                  dd ejh                  d       ejh                  d      g       ejf                  dd ejh                  d            g      ejb                  jm                  d       G d  d!                    Z7 G d" d#      Z8 ejh                  d       ejh                  d       G d$ d%                    Z9ejb                  je                  d& e)jt                               d'        Z;y)(    N)datedatetime	timedelta)Decimal)partial)BytesIO)import_optional_dependency)	DataFrameIndex
MultiIndex
date_rangeoption_contextperiod_range)	ExcelFileExcelWriter_OpenpyxlWriter_XlsxWriterregister_writer)_writerspathreturnc                      y)Nus )r   s    `/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/excel/test_writers.pyget_exp_unitr   *   s        c                     | dd S )z?
    Returns the first ten items in fixture "float_frame".
    N
   r   )float_frames    r   framer!   .   s    
 sr   TFcolumns)paramsc                     | j                   S N)param)requests    r   merge_cellsr)   6   s    ==r   c                 n    |t        j                          |  z  }|j                          t        |      S )z9
    Fixture to open file for use in each test case.
    )uuiduuid4touchstr)exttmp_pathtmps      r   	tmp_excelr2   ;   s/    
 

~cU+
+CIIKs8Or   c              #      K   d|j                  d       d}t        ||       5  d ddd       y# 1 sw Y   yxY ww)aM  
    Fixture to set engine for use in each test case.

    Rather than requiring `engine=...` to be provided explicitly as an
    argument in each test, this fixture sets a global option to dictate
    which engine should be used to write Excel files. After executing
    the test it rolls back said change to the global option.
    z	io.excel..z.writerN)stripr   )enginer/   option_names      r   
set_enginer8   E   s@      ciin-W5K	V	,   s   ">2	>;>r/   .xlsxopenpyxlxlrdmarksz.xlsm
xlsxwriterz.odsodfc                   ^   e Zd Zej                  j                  ddej                  gdz  fddej                  gdz  ifg      d        Zej                  j                  dddgfdg fg      d	        Z	d
 Z
d Zd Zej                  j                  dddg      ej                  j                  dddg      ej                  j                  dddg      ej                  j                  dddg      d                             Zd Zd Zej                  j                  dg d      d        Zy)TestRoundTripzheader,expectedN   r   z
Unnamed: 0   c                     d}t        g dg dg dg dg      }|j                  ||dd       t        j                  ||dg|	      }t        |      }t	        j
                  ||       y )
N	no_header    d   rG         rG   rC   i,  rG   rB   i  F
sheet_nameindexheaderr   rP   usecolsrR   r
   to_excelpd
read_exceltmassert_frame_equal)selfr2   rR   expectedfilenamedfresults          r   !test_read_one_empty_col_no_headerz/TestRoundTrip.test_read_one_empty_col_no_header`   se     lL,OP
I(%N(QC
 X&
fh/r   zheader,expected_extrac                     d}t        g dg dg dg dg      }|j                  |ddd       t        j                  ||d	g|
      }t        |t        j
                  gdz  z         }t        j                  ||       y )Nwith_headerrF   rJ   rM   rN   FTrO   r   rS   rB   )r
   rV   rW   rX   npnanrY   rZ   )r[   r2   rR   expected_extrar]   r^   r_   r\   s           r   #test_read_one_empty_col_with_headerz1TestRoundTrip.test_read_one_empty_col_with_headerp   st    
 !lL,OP
I-uTR(QC
 ^rvvhl:;
fh/r   c                    t        ddgddgddggddg	      }t        |      5 }|j                  |d
dd       |j                  |dd       d d d        ddg|_        t	        |      5 }t        j                  |d
d ddg      }t        j                  |dd ddg      }d d d        t        j                  |       t        j                  |       y # 1 sw Y   xY w# 1 sw Y   BxY w)NrH   foorK   barrC   bazabr#   Data_no_headF)rP   rR   rQ   Data_with_headrP   rQ   AB)rP   rR   names)rP   	index_colrs   )	r
   r   rV   r#   r   rW   rX   rY   rZ   )r[   r2   refdfwriterreaderxlsdf_no_headxlsdf_with_heads          r   "test_set_column_names_in_parameterz0TestRoundTrip.test_set_column_names_in_parameter   s     Au:5zAu:>c
S# 	MvNN6nURWNXNN6.>eNL	M c
y! 		VMM>$sCjM !mm+Cj	O			 	mU3
ou5%	M 	M		 		s   *C*7C"C"C+c                 ~   d }g d}|D cg c]
  } ||       }}t        t        ||            }t        |      5 }|j                         D ]  \  }}|j	                  ||        	 d d d        t        j                  ||d      }	|D ]  }t        j                  ||   |	|            y c c}w # 1 sw Y   JxY w)Nc                 0    g dg d}}t        ||| g      S )N)      !   rH   rK   rC   rm   )r
   )col_sheet_namedis      r   tdfzDTestRoundTrip.test_creating_and_reading_multiple_sheets.<locals>.tdf   s    qAQN+;<<r   )AAABBBCCCrP   r   rP   rt   )	dictzipr   itemsrV   rW   rX   rY   rZ   )
r[   r2   r   sheetssdfsew	sheetnamer^   dfs_returneds
             r   )test_creating_and_reading_multiple_sheetsz7TestRoundTrip.test_creating_and_reading_multiple_sheets   s    
	= '%&!s1v&&3vs#$# 	6r!$ 6	2B956	6 }}Y6QO 	;A!!#a&,q/:	; '	6 	6s   B.,B33B<c                    t        ddiddiddiddid      }t        ddiddiddiddid      }|j                  |       t        j                  |ddgd      }t	        j
                  ||       t        ddiddiddiddid      }t        ddiddiddiddid	      }|j                  |       t        j                  |ddgd      }t	        j
                  ||       y )
Nr   rH   rC      )OnexTwoXr   Y)ZerorG   )r   r   r   )r   zUnnamed: 4_level_1rR   rt   ))BegrG   Middler   Tailr   r   r   ))r   zUnnamed: 1_level_1r   r   r   rU   )r[   r2   r^   r\   actuals        r   &test_read_excel_multiindex_empty_levelz4TestRoundTrip.test_read_excel_multiindex_empty_level   s    !f !f !f !f	
  !f !f !f12A	
 	Iy!Q1E
fh/V"#Q !1v !1v	
 011v"#Q !1v !1v	
 	Iy!Q1E
fh/r   c_idx_namesrk   r_idx_namesrl   c_idx_levelsrH   r_idx_levelsc           	      .   t        |      xs |dk  }|dk(  rt        t        d            }nSt        j                  t        |      D cg c]  }t        d       c}t        |      D 	cg c]	  }	| d|	  c}	      }|dk(  rt        t        d            }
nSt        j                  t        |      D cg c]  }t        d       c}t        |      D 	cg c]	  }	| d|	  c}	      }
t        dt        j                  d      z  ||
	      }|j                  |       t        j                  |t        t        |            t        t        |            
      }t        j                  |||       t        j                  |j                  dd d f<   |j                  |       t        j                  |t        t        |            t        t        |            
      }t        j                  |||       t        j                  |j                  dd d f<   |j                  |       t        j                  |t        t        |            t        t        |            
      }t        j                  |||       y c c}w c c}	w c c}w c c}	w )NrH   abcde   -rs   ghijk皙?)r   r   r#   rQ   )rt   rR   )check_namesr   )boolr   listr   from_arraysranger
   rc   onesrV   rW   rX   rY   rZ   rd   iloc)r[   r2   r   r   r   r   r   r#   _r   rQ   r^   acts                r   test_excel_multindex_roundtripz,TestRoundTrip.test_excel_multindex_roundtrip   s    ;'<<1+<1DM*G ,,#(#67aq75:<5HI+as+IG 1$w-(E**#(#67aq75:<5HI+as+IE "''&/!

 	Imm5./l+,

 	b#;?1
Imm5./l+,

 	b#;?A
Imm5./l+,

 	b#;?S 8I 8Is   	J*J
6JJ
c                 <   t        g dt        dd      d      }|j                         }|d   j                  j	                  d      |d<   |j                  |       t        j                  |d	      }t        j                  ||       t        j                  |dgd
      }|d d  }|d   j                  d      |d<   t        j                  ||       t        j                  |dgdd      }|d   j                  d      |d<   t        j                  ||       y )Nr   z
2012-01-01rC   )periods)coldate_stringsr   z%m/%d/%Yr   rt   )parse_datesrt   zM8[us])r   date_formatrt   )r
   r   copydtstrftimerV   rW   rX   rY   rZ   astype)r[   r2   r^   df2resr\   s         r   test_read_excel_parse_datesz)TestRoundTrip.test_read_excel_parse_dates  s   z,PQ/RS
 ggi!.144==jINYmmI3
c3'mmIN3CqQa5#+N#;#B#B8#L 
c8,mmN#3WX
 $,N#;#B#B8#L 
h,r   c                    t        j                  t        d      t        j                  t        j
                  d      dd      g      }t        t        d      |      }|j                  |       t        j                  |ddg      }t        t        d      t        j                  t        d      g d	g      t        dg      
      }t        j                  ||       y )NrB   z
2020-01-016ME)startr   freqrQ   r   rH   r   )z*(2020-01-31 00:00:00, 2020-07-31 00:00:00]z*(2020-07-31 00:00:00, 2021-01-31 00:00:00]z*(2021-01-31 00:00:00, 2021-07-31 00:00:00]z*(2021-07-31 00:00:00, 2022-01-31 00:00:00]rm   )r   r   r   rW   interval_range	Timestampr
   rV   rX   r   rY   rZ   )r[   r2   midxr^   r_   r\   s         r   "test_multiindex_interval_datetimesz0TestRoundTrip.test_multiindex_interval_datetimes5  s    %%a!!,,|4ae
 uQxt,
IyQF;!H""!H
 1#J
 	fh/r   r)   r"   c           
      n   t        dddgit        j                  t        ddd      dd	ggd
dg            }|j	                  ||       t        j                  |ddg      }t        dddgit        j                  t        j                  d      j                  d      t        j                  d      j                  d      gdd	ggd
dg            }d}|j                  j                  |j                  j                  d   j                  |      d      |_	        t        j                  ||       y )Nrq   rH   rK   z
2006-10-06z
2006-10-07D)r   endr   r   r   r   categoryr   r   r)   r   r   z2006-10-06 00:00:00r   z2006-10-07 00:00:00zdatetime64[us]level)r
   r   r   r   rV   rW   rX   to_datetimeas_unitrQ   
set_levelslevelsr   rY   rZ   )r[   r2   r)   r^   r_   r\   time_formats          r   &test_excel_round_trip_with_periodindexz4TestRoundTrip.test_excel_round_trip_with_periodindexS  s4    1a&M(( |CP#J z*	
 	I;7yQF;1a&M"" '<=EEcJ'<=EEcJ #J z*	
 '!22NN!!!$++K8 3 
 	fh/r   )__name__
__module____qualname__pytestmarkparametrizerc   rd   r`   rf   rz   r   r   r   r   r   r   r   r   r   rA   rA   T   sO    [[
1	L266(Q,#?@A
0	
0 [[
q"g	0		062;.,0\ [[]S$K8[[]S$K8[[^aV4[[^aV4:@ 5 5 9 9:@x-00< [[],DE 0 F 0r   rA   z
engine,extr8   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  dej                  ej                  ej                   ej"                  g      d	        Ze
j                  j                  dej&                  ej(                  ej*                  g      d
        Zd Zd Zd Zd Zd Zd Zd Zd Ze
j                  j?                  d      d        Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d  Z,d! Z-d" Z.e
j                  j                  d#d$d%g      e
j                  j                  d&g d'      e
j                  j                  d(g d'      d)                      Z/d* Z0d+ Z1d, Z2e
j                  j                  d-d.d/g      d0        Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@e
j                  j                  d>d?eAg      d@        ZBdA ZCdB ZDdC ZEdD ZFdE ZGe
j                  j                  dFd$d%g      dG        ZHdH ZIe
j                  j                  dId$d%g      dJ        ZJe
j                  j                  dId$d%g      dK        ZKy?)LTestExcelWriterc                    d}d}t        j                  |df      }t        j                  d|f      }t        |      }t        |      }d}t        j                  t
        |      5  |j                  |       d d d        t        j                  t
        |      5  |j                  |       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Ni  i@  rH   )shapezsheet is too largematch)rc   zerosr
   r   raises
ValueErrorrV   )	r[   r2   breaking_row_countbreaking_col_countrow_arrcol_arrrow_dfcol_dfmsgs	            r   test_excel_sheet_sizez%TestExcelWriter.test_excel_sheet_size  s    &&(("4a!89((!%7!897#7#"]]:S1 	'OOI&	' ]]:S1 	'OOI&	' 	'	' 	'	' 	's   (B8C8CCc           
         t        t        j                  j                  d      j	                  d      t        t        t        d                        }|j                  |       t        |      5 }t        j                  |dd      }d d d        t        j                  |       d}t        j                  t         |      5  t        j                  d	       d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)
NrK   r   rK   r   r   r   r   zWorksheet named '0' not foundr   0)r
   rc   randomdefault_rngstandard_normalr   r   r   rV   r   rW   rX   rY   rZ   r   r   r   )r[   r2   gtxlr^   r   s         r   test_excel_sheet_by_name_raisez.TestExcelWriter.test_excel_sheet_by_name_raise  s    II!!!$44W=U2Y(
 	Iy! 	>Rra1=B	> 	b"%-]]:S1 	#MM"c"	# 	#	> 	>	# 	#s   1C%C1%C.1C:c                    t        |      5 }|j                  |d       |j                         }|j                  d d d   |_        |j                  |d       d d d        t	        |      5 }t        j                  |dd      }t        j                  |dd      }t        j                  ||       t        j                  |       d d d        y # 1 sw Y   zxY w# 1 sw Y   y xY w)NData1r   r   Data2r   r   )	r   rV   r   r#   r   rW   rX   rY   rZ   )r[   r!   r2   rv   frame2rw   found_df	found_df2s           r   !test_excel_writer_context_managerz1TestExcelWriter.test_excel_writer_context_manager  s    # 	8vNN6gN6ZZ\F"]]4R40FNOOFwO7		8 y! 	5V}}V1MHfANI!!(E2!!)V4	5 	5	8 	8	5 	5s   AC-ACCC(c                    |j                         }t        j                  |j                  d d|j                  j                  d      f<   |j                  |d       |j                  |dddg       |j                  |dd       |j                  |dd	       |j                  |d       t        j                  |dd
      }t        j                  ||       |j                  |dd	       t        j                  |dd       }|j                  |_        t        j                  ||       |j                  |dd       t        j                  |dd
dg      }t        j                  ||       |j                  |dd       t        j                  |dd
dg      }t        j                  ||       |j                  |dd       t        j                  |dd
ddg      }t        j                  ||       |j                  |d       t        j                  |d
      }t        j                  ||       |j                  |d       t        j                  |d
      }t        j                  ||       |d   }|j                  |       t        j                  |d
      }t        j                  |j                         |       y )Nr   rq   test1r   rr   rP   r#   FrP   rR   rp   r   r   NA)rP   na_rep)rP   rt   	na_values88X   g      V@Sheet1r   r   )r   rc   rd   r   r#   get_locrV   rW   rX   rY   rZ   rQ   to_frame)r[   r!   r2   reconsr   s        r   test_roundtripzTestExcelWriter.test_roundtrip  sN   

57VV

2A2u}},,S112yW5yWsCjIyWUCyWEB 	yW5yWJ
eV,yWEByWM{{
eV,yWTB'Q4&
 	eV, 	yWTB'Q4&
 	eV,yWTB'Q2t*
 	eV, 	yX6yA6
eV,yS1yA6
eV, #J	

9yA6
ajjlF3r   c                     |j                         }d|d<   |j                  |d       t        |      5 }t        j                  |dd      }d d d        t        j                  |       y # 1 sw Y    xY w)Nri   rh   r  r   r   r   )r   rV   r   rW   rX   rY   rZ   )r[   r!   r2   mixed_framerw   r  s         r   
test_mixedzTestExcelWriter.test_mixed  so    jjl"EY7;y! 	LV]]6gKF	L
k62	L 	Ls   A,,A5c           	      L   t        |      }t        t        j                  j	                  d      j                  d      t        t        d            t        ddd            }t        j                  t        j                  |j                        d 	      }||_        |d d  }|j                  j                  |      |_        |j                  |d
       t        |      5 }t        j                   |d
d      }d d d        t#        j$                  |       y # 1 sw Y    xY w)NrK   r   rB   ABCD
2000-01-01r   rr   r   r   r   r   r  r   r   r   )r   r
   rc   r   r   r   r   r   r   rW   DatetimeIndexasarrayrQ   r   rV   r   rX   rY   rZ   )r[   r2   unitr^   rQ   r\   rw   r  s           r   test_ts_framezTestExcelWriter.test_ts_frame  s    I&II!!!$44V<$v,'\13?
   BHH!5DAa5!//5
I'2y! 	LV]]6gKF	L
h/	L 	Ls   "DD#c                 :   |j                         }t        j                  |j                  d d|j                  j                  d      f<   |j                  |d       |j                  |dddg       |j                  |dd       |j                  |dd	       y )
Nr   rq   r  r   rr   r  Fr  rp   )r   rc   rd   r   r#   r  rV   )r[   r!   r2   s      r   test_basics_with_nanz$TestExcelWriter.test_basics_with_nan  s    

57VV

2A2u}},,S112yW5yWsCjIyWUCyWEBr   np_typec                    t        t        j                  j                  d      j	                  ddd      |t        t        t        d                        }|j                  |d       t        |      5 }t        j                  |dd	
      }d d d        |j                  t        j                        }t        j                  |       t        j                  |dd	
      }t        j                  ||       y # 1 sw Y   mxY w)NrK   r   r   sizedtyperQ   r  r   r   r   )r
   rc   r   r   integersr   r   r   rV   r   rW   rX   r   int64rY   rZ   )r[   r'  r2   r^   rw   r  	int_framerecons2s           r   test_int_typeszTestExcelWriter.test_int_types  s     II!!!$--c2G-DU2Y(

 	I'2y! 	LV]]6gKF	L IIbhh'	
i0--	gK
i1	L 	Ls   7C<<Dc                    t        t        j                  j                  d      j                  d      |t	        t        t        d                        }|j                  |d       t        |      5 }t        j                  |dd      j                  |      }d d d        t        j                  |       y # 1 sw Y    xY w)NrK   r   r,  r  r   r   r   )r
   rc   r   r   r   r   r   rV   r   rW   rX   r   rY   rZ   )r[   r'  r2   r^   rw   r  s         r   test_float_typesz TestExcelWriter.test_float_types+  s     II!!!$++B/U2Y(

 	I'2y! 	V]]6gKRRF	
 	b&)	 	s   4(B;;Cc                 r   t        g dt        j                  t        t	        t        d                        }|j                  |d       t        |      5 }t        j                  |dd      j                  t        j                        }d d d        t        j                  |       y # 1 sw Y    xY w)N)rH   r   TFrB   r,  r  r   r   r   )r
   rc   bool_r   r   r   rV   r   rW   rX   r   rY   rZ   r[   r2   r^   rw   r  s        r   test_bool_typeszTestExcelWriter.test_bool_types<  s    *"((%USTXBWX
I'2y! 	V]]6gKRRF	
 	b&)	 	s   6B--B6c           
      ^   t        dt        j                  fddt        j                   fgt        t	        t        d                        }|j                  |d       t        |      5 }t        j                  |dd	      }d d d        t        j                  |       y # 1 sw Y    xY w)
NrH   )rK   rC   r   rC   r   r  r   r   r   )r
   rc   infr   r   r   rV   r   rW   rX   rY   rZ   r7  s        r   test_inf_roundtripz"TestExcelWriter.test_inf_roundtripH  s    BFFVa"&&\:%USTXBWX
I'2y! 	LV]]6gKF	L 	b&)	L 	Ls   +B##B,c           	         t        |      }t        t        j                  j	                  d      j                  d      t        t        d            t        ddd            }t        j                  t        j                  |j                        d 	      }||_        |d d  }|j                  j                  |      |_        |j                         }t        j                  |j                   d d|j"                  j%                  d
      f<   |j'                  |d       |j'                  |dd
dg       |j'                  |dd       |j'                  |dd       t)        |      5 }|j'                  |d       |j'                  |d       d d d        t+        |      5 }t        j,                  |dd      }	t/        j0                  ||	       t        j,                  |dd      }	d d d        t/        j0                  |	       dt3        j4                        k(  sJ d|j4                  d   k(  sJ d|j4                  d   k(  sJ y # 1 sw Y   xY w# 1 sw Y   nxY w)NrK   r  r  r  r   rr   r  r   r   rq   r  r   r  Fr  rp   test2r   r   rH   )r   r
   rc   r   r   r   r   r   r   rW   r!  r"  rQ   r   r   rd   r   r#   r  rV   r   r   rX   rY   rZ   lensheet_names)
r[   r!   r2   r#  tsframerQ   r\   rv   rw   r  s
             r   test_sheetszTestExcelWriter.test_sheetsQ  s   I&II!!!$44V<$v,'\13?
   GMM!:F1:!//5

57VV

2A2u}},,S112yW5yWsCjIyWUCyWEB # 	9vNN6gN6V8	9 y! 	LV]]6gKF!!%0]]6gKF	L 	h/C**++++&,,Q////&,,Q////	9 	9	L 	Ls   *'I$AIII!c                 F   |j                         }t        j                  |j                  d d|j                  j                  d      f<   |j                  |d       |j                  |dddg       |j                  |dd       |j                  |dd	       t        g d
      }|j                  |d|       t        |      5 }t        j                  |dd      }d d d        |j                         }||_        t        j                  |       y # 1 sw Y   7xY w)Nr   rq   r  r   rr   r  Fr  rp   )AAr   r   Zr   r   )r   rc   rd   r   r#   r  rV   r   r   rW   rX   rY   rZ   )r[   r!   r2   col_aliasesrw   rsxps          r   test_colaliaseszTestExcelWriter.test_colaliasesu  s    

57VV

2A2u}},,S112yW5yWsCjIyWUCyWEB 12yW[Iy! 	HVv'QGB	HZZ\ 

b"%		H 	Hs   DD c           
         |j                         }t        j                  |j                  d d|j                  j                  d      f<   |j                  |d       |j                  |dddg       |j                  |dd       |j                  |dd	       t        t        j                  j                  d
      j                  d            dk\  }|j                  |ddg|       t        |      5 }t        j                  |dd      j                  t        j                        }d d d        dg|j                   _        |j                   j"                  j                   j"                  k(  sJ t        t        j                  j                  d
      j                  d            dk\  }|j                  |dg d|       t        |      5 }t        j                  |dd      j                  t        j                        }d d d        dg|j                   _        |j                   j"                  |j                   j"                  k(  sJ t        t        j                  j                  d
      j                  d      t%        t'        t)        d                        dk\  }|j                  |dd|       t        |      5 }t        j                  |dd      j                  t        j                        }d d d        dg|j                   _        t+        j,                  ||j                  t.                     |j                  |dg dd|       |j                         }|j1                  ddg      }t        |      5 }t        j                  |dddg      }d d d        t+        j,                  ||       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   FxY w)Nr   rq   r  r   rr   r  Fr  rp   rK   r   r   test)rP   index_labelr)   r   )rJ  dummydummy2r   r   )rq   rr   Cr   )rP   r#   rQ   r)   rH   )r   rc   rd   r   r#   r  rV   r
   r   r   r   r   rW   rX   r   r/  rQ   rs   r   r   r   rY   rZ   r   	set_index)r[   r)   r!   r2   r^   rw   r  s          r   test_roundtrip_indexlabelsz*TestExcelWriter.test_roundtrip_indexlabels  sN   

57VV

2A2u}},,S112yW5yWsCjIyWUCyWEB ryy,,Q/??HIQN
'x[ 	 	
 y! 	V]]6gKRRF	 !xx~~!3!3333ryy,,Q/??HIQN
3#	 	 	
 y! 	V]]6gKRRF	 !xx~~!3!3333 		%%a(88ADrO, 	 	 	'v; 	 	
 y! 	V]]6gKRRF	 !
b&--"56(# 	 	
 ZZ\\\3*%y! 	QV]]6g!QPF	Q
b&)g	 		 	"	 	$	Q 	Qs0   76O6O6OO'OOO$'O0c                    t        t        j                  j                  d      j	                  d            }d|j
                  _        |j                  ||       t        |      5 }t        j                  ||j                  d   d      }d d d        t        j                  |       |j
                  j                  dk(  sJ y # 1 sw Y   ;xY w)NrK   )r   rB   rh   r   r   r   )r
   rc   r   r   r   rQ   namerV   r   rW   rX   r?  rY   rZ   )r[   r)   r2   r^   xfr_   s         r   test_excel_roundtrip_indexnamez.TestExcelWriter.test_excel_roundtrip_indexname  s    ryy,,Q/??HI
I;7y! 	RR]]2"..2CqQF	R 	fb)||  E)))		R 	Rs   '&CCc           	         t        |      }t        t        j                  j	                  d      j                  d      t        t        d            t        ddd            }t        j                  t        j                  |j                        d 	      }||_        |j                         }|j                  D cg c]  }|j                          c}|_        |j                  |d
|       t!        |      5 }t        j"                  |d
d      }	d d d        |d d  }
|
j                  j%                  |      |
_        t'        j(                  |
	       y c c}w # 1 sw Y   JxY w)NrK   r  r  r  r   rr   r  r   r   r  rP   r)   r   r   )r   r
   rc   r   r   r   r   r   r   rW   r!  r"  rQ   r   r   rV   r   rX   r   rY   rZ   )r[   r)   r2   r#  r@  rQ   tsfr   rw   r  r\   s              r   test_excel_roundtrip_datetimez-TestExcelWriter.test_excel_roundtrip_datetime  s   I& II!!!$44V<$v,'\13?

   GMM!:Flln'.}}5!QVVX5	Y7Ly! 	LV]]6gKF	L 1:!//5
h/ 6	L 	Ls   =E;EE&c                    t        |      }t        t        ddd      t        ddd      gt        ddd	d
dd      t        dddddd      ggddgddg      }t        t        ddd      t        ddd      gt        ddd	d
dd      t        dddddd      ggddgddg      }|j	                  d| d      }|d| z  }|j                          t        |      5 }|j                  |d       d d d        t        |dd      5 }	|j                  |	d       d d d        t        |      5 }
t        j                  |
dd      }d d d        t        |      5 }t        j                  |dd      }d d d        j	                  d| d      }t        j                  |       t        j                  ||       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   oxY w)Ni  rH      i  	      i  r         r   rB   rK         DATEDATETIMEr   r   rQ   r#   M8[]tmp2r  r   z
DD.MM.YYYYzDD.MM.YYYY HH-MM-SS)r   datetime_formatr   r   )r   r
   r   r   r   r-   r   rV   r   rW   rX   rY   rZ   )r[   r/   r2   r0   r#  r^   df_expected	filename2writer1writer2reader1rs1reader2rs2s                 r   test_excel_date_datetime_formatz/TestExcelWriter.test_excel_date_datetime_format  s    I&dAr"Dq"$56$2r2q18D!RQPR3ST :&#J
  $2&q"(=>$2r2q18D!RQPR3ST :&#J
 "((3tfA7cU|+	# 	5wKKGK4	5 $1
 	5 KKGK4	5 y! 	JW--GqIC	J y! 	JW--GqIC	J jj3tfA'
c3' 	c;//	5 	5	5 	5	J 	J	J 	Js0   F8G)GG8GGGG%z7ignore:invalid value encountered in cast:RuntimeWarningc                    t        t        j                  j                  d      j	                  ddd      t        j
                        }|j                         }t        j                  |d   d      |d<   t        j                  |d   d      j                  |st        nd	      |d<   |j                  |d
       t        |      5 }t        j                  |d
d      }d d d        t        j                  |       y # 1 sw Y    xY w)NrK   r)  r      rH   r*  r-  r   newr.   r  r   r   )r
   rc   r   r   r.  r/  r   rW   cutr   r.   rV   r   rX   rY   rZ   )r[   r2   using_infer_stringr^   r\   rw   r  s          r    test_to_excel_interval_no_labelsz0TestExcelWriter.test_to_excel_interval_no_labels!  s     II!!!$--c2G-DBHH
 779FF2a5"%5	&&!b188)Cu
 	I'2y! 	LV]]6gKF	L
h/	L 	Ls   D  D	c                     t        t        j                  j                  d      j	                  ddd      t        j
                        }|j                         }t        j                  |d   dg d	      }||d
<   t        j                  t        |            |d
<   |j                  |d       t        |      5 }t        j                  |dd      }d d d        t        j                  |       y # 1 sw Y    xY w)NrK   r)  r   rr  r*  rt  r   )
rq   rr   rN  r   EFGHIJ)labelsru  r  r   r   )r
   rc   r   r   r.  r/  r   rW   rv  Seriesr   rV   r   rX   rY   rZ   )r[   r2   r^   r\   	intervalsrw   r  s          r   test_to_excel_interval_labelsz-TestExcelWriter.test_to_excel_interval_labels7  s     II!!!$--c2G-DBHH
 779FFqE2P
	 5	))DO4
I'2y! 	LV]]6gKF	L
h/	L 	Ls   <C44C=c                    t        t        j                  j                  d      j	                  ddd      dgt        j
                        }|j                         }|d   j                  d       |d	<   |d   j                  d
       |d	<   |j                  |d       t        |      5 }t        j                  |dd      }d d d        t        j                  |       y # 1 sw Y    xY w)NrK   r)  r   rr  r*  rq   r#   r-  c                     t        |       S )Nseconds)r   r   s    r   <lambda>z9TestExcelWriter.test_to_excel_timedelta.<locals>.<lambda>U  s    Ia,@ r   ru  c                 <    t        |       j                         dz  S )Nr  iQ )r   total_secondsr  s    r   r  z9TestExcelWriter.test_to_excel_timedelta.<locals>.<lambda>W  s    i*88:UB r   r  r   r   r   )r
   rc   r   r   r.  r/  r   applyrV   r   rW   rX   rY   rZ   )r[   r2   r^   r\   rw   r  s         r   test_to_excel_timedeltaz'TestExcelWriter.test_to_excel_timedeltaJ  s     II!!!$--c2G-DE((

 779sGMM"@A5	"3---B
 	I'2y! 	LV]]6gKF	L
h/	L 	Ls   +C##C,c           	         t        t        j                  j                  d      j	                  d      t        t        d            t        ddd            }|j                  d	      j                         j                  d
      }|j                  |d       t        |      5 }t        j                  |dd      }d d d        t        j                   |j                  d
             y # 1 sw Y   /xY w)NrK   r  r  r  r   rr   r  r   MEMsht1r   r   r   )r
   rc   r   r   r   r   r   r   resamplemean	to_periodrV   r   rW   rX   rY   rZ   )r[   r2   r^   rG  rw   rF  s         r   test_to_excel_periodindexz)TestExcelWriter.test_to_excel_periodindex_  s    II!!!$44V<$v,'\13?

 [[##%//4
I&1y! 	GVv&AFB	G
b",,s"34	G 	Gs   %C,,C5c                    t        j                  t        |j                        dz  t         j                        j                  dd      }t        j                  |ddg      }||_        |j                  |dd	       |j                  |dd
dg       |j                  |d|       t        |      5 }t        j                  |dddg      }d d d        t        j                  |       y # 1 sw Y    xY w)NrK   rt  r   firstsecondr   r  Fr  rq   rr   r  rV  r   rH   r   )rc   aranger>  rQ   r/  reshaper   r   rV   r   rW   rX   rY   rZ   )r[   r)   r!   r2   arrays	new_indexrw   r^   s           r   test_to_excel_multiindexz(TestExcelWriter.test_to_excel_multiindexn  s    3u{{+a/rxx@HHBO**6'89LM	yWUCyWsCjI 	yW+Ny! 	MVv'aVLB	M
eR(	M 	Ms   5C//C8c                 ,   t        g dg dt        j                  j                  d      j                  d      d      }|j	                  ddg      }|j                  ||       t        j                  |d	d
g      }t        j                  ||       y )N)NrK   rC   )r   rs     rK   rC   rq   rr   rN  rq   rr   r   r   rH   r   )
r
   rc   r   r   rO  rV   rW   rX   rY   rZ   )r[   r)   r2   r^   df1s        r   "test_to_excel_multiindex_nan_labelz2TestExcelWriter.test_to_excel_multiindex_nan_label}  s|    !!YY**1-44Q7
 \\3*%
I;7mmI!Q8
b#&r   c                    t        g dg dg dd      }t        j                  t        |j                        dz  t        j
                        j                  dd      }t        j                  |dd	g
      }||_        t        j                  g d      }||_
        |j                  |d|       t        |      5 }t        j                  |dddgddg      }d d d        t        j                   |       t        |      5 }t        j                  |dd d       }d d d        t        t        j"                  t        j"                  ddddgt        j"                  t        j"                  d	dddgddt        j"                  dddgt        j"                  dt        j"                  dddgddt        j"                  dddgd      }	|sd|	j$                  d <   t        j                   ||	       y # 1 sw Y   xY w# 1 sw Y   xY w)!Nr   rB   r      )r      r[  r  rK   rt  r   r  r  r   ))(   rH   )r  rK   )2   rH   r  rV  r   rH   rP   rR   rt   rC   rB   r   g      D@g      ?g       @      @g      @g      @g      @g      I@g      @g       @g      "@)r   rH   rK   rC   rB   )r   rC   )r
   rc   r  r>  rQ   r/  r  r   r   from_tuplesr#   rV   r   rW   rX   rY   rZ   rd   loc)
r[   r)   r2   r!   r  r  new_cols_indexrw   r_   r\   s
             r   test_to_excel_multiindex_colsz-TestExcelWriter.test_to_excel_multiindex_cols  s   
 3u{{+a/rxx@HHBO**6'89LM	#//0KL&yW+N y! 	V]]7Aq6aVF	 	fe, y! 	V]]744F	 FFBFFGQ15FFBFFHaA6#rvvsC5FFCc37#rvvsC5
 !%HLL
fh/1	 		 	s   >G.G;.G8;Hc           	         t        |      }t        t        j                  j	                  d      j                  d      t        t        d            t        ddd            }t        j                  |j                  j                  |      t        j                  t        |j                        t        j                  	      gd
dg      |_        |j!                  |d|       t#        |      5 }t%        j&                  |dddg      }d d d        t)        j*                  |       |j                  j,                  dk(  sJ y # 1 sw Y   ;xY w)NrK   r  r  r  r   rr   r  r   rt  timerh   r   r  rV  r   rH   r   )r  rh   )r   r
   rc   r   r   r   r   r   r   r   r   rQ   r   r  r>  r/  rV   r   rW   rX   rY   rZ   rs   )r[   r)   r2   r#  r@  rw   r  s          r   test_to_excel_multiindex_datesz.TestExcelWriter.test_to_excel_multiindex_dates  s   I&II!!!$44V<$v,'\13?

 #..%%d+		#gmm,BHH= 5/
 	wKPy! 	QV]]6g!QPF	Q 	gv.||!!_444		Q 	Qs   2EEc                 L   t        ddgddgddgd      }|j                         }t        j                  dd	g      }||_        |j                  |d
d       t        |      5 }t        j                  |d
      }d d d        t        j                  |       y # 1 sw Y    xY w)Nr   rs  r  r  r  <   )rk   rl   c)F   P   )Z   rI   r  Frp   r   )r
   r   r   r  rQ   rV   r   rW   rX   rY   rZ   )r[   r2   frame1r  multi_indexrw   frame3s          r   'test_to_excel_multiindex_no_write_indexz7TestExcelWriter.test_to_excel_multiindex_no_write_index  s     "bRBxHI  ,,h	-BC" 		gUC y! 	?V]]6g>F	? 	ff-		? 	?s   #BB#c                 4   t        g g d      }t        g t        j                  g ddg      dg      }|j                  |d	       t	        |      5 }t        j                  |d	      }d d d        t        j                  |d
d
       y # 1 sw Y   #xY w)N)r   rH   rK   rm   r   rH   r   rK   rc  r  r   F)check_index_typecheck_dtype)	r
   r   r  rV   r   rW   rX   rY   rZ   )r[   r2   r\   r^   rw   r_   s         r   test_to_excel_empty_multiindexz.TestExcelWriter.test_to_excel_empty_multiindex  s    R3r!7!71a&!ITUSVW
I'2y! 	?V]]6g>F	?
Hu%	
	? 	?s   BBc                     t        g t        j                  g ddg      t        j                  dg            }|j                  |       t	        j
                  |ddgddg      }t        j                  ||       y )Nr   rH   r   rq   rr   rc  r   )r
   r   r  rV   rW   rX   rY   rZ   r[   r2   r^   r_   s       r   (test_to_excel_empty_multiindex_both_axesz8TestExcelWriter.test_to_excel_empty_multiindex_both_axes  sk    ((Aq6:**J<8

 	Iy!QAq6J
fb)r   c                 (   t        g dg dgddgg d      }|j                  |dd	       t        |      5 }t        j                  |dd
      }d d d        t        g dg dgddgg d      }t        j                  |       y # 1 sw Y   8xY w)Ng~Ϛ?g9DܜJ?g>D)?g.4i(@33333@̤Arq   rr   r   r   rD  rc  r  %.2frP   float_formatr   r   gQ?gq=
ףp?g=
ףp=?gp=
ף(@r  r  )r
   rV   r   rW   rX   rY   rZ   r[   r2   r^   rw   r_   r\   s         r   test_to_excel_float_formatz*TestExcelWriter.test_to_excel_float_format  s    +-KL*#

 	I'Gy! 	LV]]6gKF	L !>?*#

 	fh/	L 	Ls   BBc                 \   t        ddt        d      gddt        d      ggddgg d      }|j                  |       t        |      5 }t	        j
                  |d	t        
      }d d d        t        g dg dgddgg dt              }t        j                  |       y # 1 sw Y   =xY w)NGz?1.23=
ףp=@4.56rq   rr   r  rc  r   )rt   r-  )r  r  r  )r  r  r  )rQ   r#   r-  )	r
   r   rV   r   rW   rX   objectrY   rZ   r  s         r   !test_to_excel_datatypes_preservedz1TestExcelWriter.test_to_excel_datatypes_preserved  s     vwv/vwv/ *#
 	Iy! 	FV]]6QfEF	F $$ *#
 	fh/	F 	Fs   	B""B+c                     t        g dg dgddgg d      }|j                  |d       t        j                  |dd	
      }t	        j
                  ||       y )N)u   ƒu   Ɠu   Ɣ)u   ƕu   Ɩu   Ɨu   Aƒrr   )u   XƓr   rD  rc  	TestSheetr   r   r   rU   r  s       r   test_to_excel_output_encodingz-TestExcelWriter.test_to_excel_output_encoding.  sT    +-KLc")
 	I+6y[AN
fb)r   c                 X   |d| z  }|j                          t        g dg dgddgg d      }|j                  |dd	
       t        |      5 }t	        j
                  |dd      }d d d        t        g dg dgddgg d      }t        j                  |       y # 1 sw Y   8xY w)Nu   ƒu.r  r  rq   rr   r  rc  r  r  r  r   r   r  r  )r-   r
   rV   r   rW   rX   rY   rZ   )r[   r/   r0   r]   r^   rw   r_   r\   s           r   test_to_excel_unicode_filenamez.TestExcelWriter.test_to_excel_unicode_filename:  s    ..+-KL*#

 	HvFx  	LF]]6gKF	L !>?*#

 	fh/	L 	Ls   B  B)use_headersTFr_idx_nlevelsr   c_idx_nlevelsc                    dfd	}|rdnd } |t        dg      ||      }|j                  dk(  sJ |j                  d   t        j                  usJ d}	d}
|dk(  r,t        t        |
      D cg c]  }d| 	 c}t        	      }nQt        j                  t        |      D cg c]  }t        |
       c}t        |      D cg c]  }d
| 	 c}      }|dk(  r,t        t        |	      D cg c]  }d| 	 c}t        	      }nQt        j                  t        |      D cg c]  }t        |	       c}t        |      D cg c]  }d| 	 c}      }t        t        j                  |	|
f      ||      }|dkD  r2d}t        j                  t        |      5   |||d       d d d        y  |||      }|r|j                  |	|
|z   fk(  sJ |j                  |	dz
  |
|z   fk(  sJ t        t        |j                              D ]H  }t        t        |j                               D ]%  }|j                  ||f   t        j                  ur%J  J y c c}w c c}w c c}w c c}w c c}w c c}w # 1 sw Y   y xY w)Nr   c                     | j                  ||       t              5 }t        j                  ||j                  d   |      cd d d        S # 1 sw Y   y xY w)N)rR   r)   rQ   r   r  )rV   r   rW   rX   r?  )datarR   
parser_hdrrQ   rS  r)   r2   s        r   	roundtripz;TestExcelWriter.test_excel_010_hemstring.<locals>.roundtripT  sZ    MM&k   9% }}2>>!#4Z  s   %AA)rH   rK   )r   r   r   rC   rH   za-rt  i-r   zb-zj-r   z_Writing to Excel with MultiIndex columns and no index \('index'=False\) is not yet implemented.r   Fr   )Tr   T)r
   r   r   rc   rd   r   r   r  r   r   r   r   r   NotImplementedErrorr>  rQ   r#   )r[   r)   r  r  r  r2   r  parser_headerr   nrowsncolsr   r#   r   rQ   r^   r   rr  s    `   `             r   test_excel_010_hemstringz(TestExcelWriter.test_excel_010_hemstringN  se   	 )d	1#]CyyF"""xx~RVV+++ 
 AuU|<!r!X<FKG ,,',]';<!u<).})=>AA3x>G AU5\:Rs8:&IE**',]';<!u<).})=>AA3x>E
 GGUEN#
 1>  2#> 8"k78 8 B,CyyUEM,A$BBBB yyUQY0E$FFFF 3syy>* 8s3;;/0 8A88AqD>77788O = => ; => 8 8s0   1I'I!I&
3I+)I0
I5
#I::Jc                 d   t        g dg dg dgg d      }|j                  |d       t        g dg dg dgg d      }t        j                  |dd      }t	        j
                  ||       t        g d	g d
gg d      }|j                  |d       t        j                  |dd      }t        g d	g d
gg d      }t	        j
                  ||       |j                  |ddd       t        j                  |dd       }t        g d	g d
g      }t	        j
                  ||       y )Nr   )rq   rr   rr   rm   r  r   )rq   rr   B.1r   r   )rH   rK   rC   rB   )r   r  r   r  )rq   rr   rq   rr   )rq   rr   A.1r  FrO   r  rU   r[   r2   r^   r\   r_   s        r   test_duplicated_columnsz'TestExcelWriter.test_duplicated_columns  s   	9i8/R
I'2	9-7H

 yWJ
fh/ l3=QR
I'2yWJ<(2J
 	fh/ 	I'uMyWTJlL9:
fh/r   c                     t        g dg dd      }|j                  |dddg       t        j                  |dd	      }t	        j
                  |d   |d          t	        j
                  |d   |d          y )
NrH   rH   rH   rK   rK   rK   r  r  rr   rq   r  r   r  )r
   rV   rW   rX   rY   assert_series_equal)r[   r2   write_frame
read_frames       r   test_swapped_columnsz$TestExcelWriter.test_swapped_columns  sn    ii @AY7S#JO]]9K

{3/CA
{3/CAr   c                 @   t        g dg dd      }t        j                  t        d      5  |j	                  |dddg	       d d d        t        j                  t        d
      5  |j	                  |dddg	       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr  r  r  zNot all names specifiedr   r  rr   rN  r  z.'passes columns are not ALL present dataframe'r   )r
   r   r   KeyErrorrV   )r[   r2   r  s      r   test_invalid_columnsz$TestExcelWriter.test_invalid_columns  s    ii @A]]8+DE 	T  wc
 S	T ]]L
 	T   wc
 S	T 	T	T 	T	T 	Ts   B(BBBz#to_excel_index,read_excel_index_col)Tr   )FNc                     t        g dg dg dd      }|j                  |dddg|       |ddg   }t        j                  |d|	      }t	        j
                  ||       y )
Nr  r  )rC   rC   rC   r  col_subset_bugrq   rr   )rP   r#   rQ   r   rU   )r[   r2   to_excel_indexread_excel_index_colr  r\   r  s          r   test_write_subset_columnsz)TestExcelWriter.test_write_subset_columns  sq      iii PQ'#J 	 	 	
 Sz*]]"2>R

 	h
3r   c                 6   t        g dg dd      }|j                  |d       t        j                  |dd      }d |j                  d<   d |j                  d	<   d |j                  d
<   t        j                  |ddd      }t        j                  ||       y )Nonez#oner  twor  z#twor  test_cr   r   r   )rH   r   rH   rH   )rK   rH   #rP   commentrt   )r
   rV   rW   rX   r   rY   rZ   r[   r2   r^   result1result2s        r   test_comment_argz TestExcelWriter.test_comment_arg  s     3:PQR
I(3 --	h!L!T!T!T--(C1
 	gw/r   c                     t        g dg dd      }|j                  |d       t        j                  |d      }t        j                  |dd       }t	        j
                  ||       y )Nr  r  r  r  r   )rP   r
  rU   r  s        r   test_comment_defaultz$TestExcelWriter.test_comment_default  sY    
 3:PQR
I(3 --	h?--	hM
gw/r   c                     t        g dg dd      }|j                  |d       t        g dg dd      }t        j                  |ddd	
      }t	        j
                  ||       y )Nr  r  r  r  r   )r  Nr  )r  NNr  r   r	  rU   r  s        r   test_comment_usedz!TestExcelWriter.test_comment_used  s]     3:PQR
I(3 #7>QRSyXsVWX
fh/r   c                     t        ddgddgd      }|j                  |d       t        dgd	gd      }t        j                  |d
      }t	        j
                  ||       y )N1z#223)rk   rl   Fr   rH   rK   r  )r
  rU   r  s        r   test_comment_empty_linez'TestExcelWriter.test_comment_empty_line  s`     c4[Sz:;
IU+ A3aS12y#6
fh/r   c                 :   t        |      }t        dddddd      t        dddddd      t        ddddd	d
      t        dddddd      t        dddddd      t        dddddd      t        dddddd      t        dddddd      t        dddddd      t        dddddd      t        dddddd      g}t        d|i      }|j                  |d        t	        j
                  |dd!      }|j                  d"| d#      }t        j                  |d   |d          y )$Ni  rH   r`  rK   rC   -   8   rB      1   r  *   r   9   #   r[  )   r_  r}            5      %   r      rs  4   rq   r  r   r  rd  re  )	r   r   r
   rV   rW   rX   r   rY   r  )r[   r2   r#  	datetimesr  r  r\   s          r   test_datetimeszTestExcelWriter.test_datetimes!  s?   I&T1b!Q*T1b!R,T1b!R,T1b!R,T1b!R,T1b!R,T1b"b"-T1b"a,T1b"b!,T1b"b!,T1b"b"-
	  i 01Y8<]]9!L
%%D6m4
x}jo>r   c                    t               5 }t        t        j                  j	                  d      j                  d            }t        ||      5 }|j                  |       d d d        |j                  d       t        j                  |d      }t        j                  ||       d d d        y # 1 sw Y   PxY w# 1 sw Y   y xY w)NrK   r   r6   r   r   )r   r
   rc   r   r   r   r   rV   seekrW   rX   rY   rZ   )r[   r6   bior^   rv   	reread_dfs         r   test_bytes_iozTestExcelWriter.test_bytes_io9  s    Y 		1#299003CCGLMB S0 $FF#$ HHQKcQ7I!!"i0		1 		1$ $			1 		1s%   AB=B1"AB=1B:	6B==Cc                 T   t        ddddddg      }dddd}d	|d
<   d	|d<   |d
k(  r$t        j                  j                  |      sd|d
<   t	        j
                  t        t        j                  ||               5  |j                  ||ddi       d d d        y # 1 sw Y   y xY w)NrH   rK   r  rC   rB   zBOpenDocumentSpreadsheet() got an unexpected keyword argument 'foo'z3__init__() got an unexpected keyword argument 'foo')r?   r:   r>   z<Workbook.__init__() got an unexpected keyword argument 'foo'r:   r>   z8load_workbook() got an unexpected keyword argument 'foo'r   rh   ri   )r6   engine_kwargs)
r
   osr   existsr   r   	TypeErrorreescaperV   )r[   r6   r2   r^   msgss        r   test_engine_kwargsz"TestExcelWriter.test_engine_kwargsF  s    aa(*:;<NP	
 K 	Z K 	\
 Zy(AK  ]]9BIId6l,CD 	KK$en  	 	 	s   >BB'c                 f   t        dddgdddgg dg dd	      }|j                  |d
       t        j                  |d
dd      }|j	                         }|j
                  j                  t              |_        |j                  j                  d      |_        t        j                  ||       y )Nrk   rl   r  erK   )r   f)rH   rK   r  )applebananacherry)mixednumericr.   r  r   r   r  r/  )r
   rV   rW   rX   r   r@  r  r.   rA  r   rY   rZ   r[   r2   r^   readr\   s        r   test_write_lists_dictz%TestExcelWriter.test_write_lists_dicte  s    Sz1+=>&4
 	I(3}}Y8AQRS779!--c2#++227;
dH-r   c                     t        ddgddgd      }|j                  |d       t        j                  |dd	      }|}t	        j
                  ||       y )
NrH   rK   rC   rB   )renderr  r  r   r   r   rU   rB  s        r   test_render_as_column_namez*TestExcelWriter.test_render_as_column_namew  sP    1a&1a&9:
I(3}}YA>
dH-r   c                     t        ddggddgt              }|j                  ddd      j                  d	      }|j	                  |       t        j                  |dgdgd
      }t        j                  ||       y )Nrh   ri   col1col2r  TF)rh   ri   r   r   )true_valuesfalse_valuesrt   )	r
   r  replacer   rV   rW   rX   rY   rZ   )r[   r2   r^   r\   r  s        r   !test_true_and_false_value_optionsz1TestExcelWriter.test_true_and_false_value_options  ss    '&&1AP::d59:AA&I
I]]E7%A

 	j(3r   c                     t        ddgddggddg      }|j                  |dd	
       t        j                  |d      }t	        j
                  ||       y )NrH   rK   rC   rB   rI  rJ  rm   r  r  )rP   freeze_panesr   r   rU   )r[   r2   r\   r_   s       r   test_freeze_panesz!TestExcelWriter.test_freeze_panes  sU    q!fq!f-7GH)vNyA6
fh/r   c                    t        dt        j                  d      j                  d      z  t	        t        d            t	        t        d      D cg c]  }d| 	 c}            }t        |j                  |      }t        t        j                  d	
      }t        j                  ||t        j                  |            }t        j                  ||       y c c}w )Nr   x   )r  rB   r  r  r  r   r,  r   r   )r
   rc   r  r  r   r   r   r   rV   rW   rX   rY   round_trip_pathlibpathlibPathrZ   )r[   r6   r2   r   r^   rv   rw   r_   s           r   test_path_path_libz"TestExcelWriter.test_path_path_lib  s    "))C.((11$v,'595a2aS56

 V4!4&&vvw||I7NO
fb) 6s   Cc           	         t        j                  t        j                  d      t        j                  d      ft        j                  d      t        j                  d      fg      }t	        t        j                  dd      |      }|j                  |       t        j                  |dd	gd
      }|j                  j                  |j                  d   D cg c]  }t        |       c}|j                  d	   D cg c]  }t        |       c}gdd	g      |_	        t        j                  ||       y c c}w c c}w )N20182018Q12018Q2)rK   rK   r/  rt  rm   r   rH   r   r   )r   r  rW   Periodr
   rc   r   rV   rX   r#   r   r   r.   rY   rZ   )r[   r2   mir\   r_   r   s         r   test_merged_cell_custom_objectsz/TestExcelWriter.test_merged_cell_custom_objects  s    ##6"BIIh$786"BIIh$78
 RWWV7;RH)$y!Q1E#++66 iil+c!f+biil-Kc!f-KLa& 7 
 	fh/ ,-Ks   D: D?
r-  Nc                    |}t        j                  d|      }t        |g|      }t        j                  t
        d      5  |j                  |       d d d        |j                         }t        |g|      }t        j                  t
        d      5  |j                  |       d d d        y # 1 sw Y   ]xY w# 1 sw Y   y xY w)N2019)tzrt  zExcel does not supportr   )rW   r   r
   r   r   r   rV   to_pydatetime)r[   r-  tz_aware_fixturer2   ra  r  r^   s          r    test_raise_when_saving_timezonesz0TestExcelWriter.test_raise_when_saving_timezones  s     ||Fr*vU+]]:-EF 	#KK	"	# !!#vU+]]:-EF 	#KK	"	# 	#	# 	#
	# 	#s   B1B=1B:=Cc                     t        ddgddgd      }|j                  |g dd       t        j                  |      }t        g d	g d
gg d      }t	        j
                  ||       y )Nr   rH   r   r}   r  )rq   rr   rq   Fr   )r   r   r   )rH   r}   rH   )rq   rr   r  rm   rU   )r[   r2   r^   r_   r\   s        r   'test_excel_duplicate_columns_with_namesz7TestExcelWriter.test_excel_duplicate_columns_with_names  s[    aV2r(34
IeDy)j*5?PQ
fh/r   c                     d}t        j                  t        t        j                  |            5  t        |d       d d d        y # 1 sw Y   y xY w)Nz7if_sheet_exists is only valid in append mode (mode='a')r   rM  )if_sheet_exists)r   r   r   r6  r7  r   )r[   r2   r   s      r   test_if_sheet_exists_raisesz+TestExcelWriter.test_if_sheet_exists_raises  s<    G]]:RYYs^< 	>	9=	> 	> 	>s   AAc                     t        ||      5 }t               j                  |       d d d        t        j                  |      }t               }t        j                  ||       y # 1 sw Y   ?xY wNr,  )r   r
   rV   rW   rX   rY   rZ   )r[   r6   r2   rv   r_   r\   s         r   test_excel_writer_empty_framez-TestExcelWriter.test_excel_writer_empty_frame  sX    62 	)fK  (	)y);
fh/		) 	)s   A&&A/c                     t               j                  ||       t        j                  |      }t               }t	        j
                  ||       y rk  rU   )r[   r6   r2   r_   r\   s        r   test_to_excel_empty_framez)TestExcelWriter.test_to_excel_empty_frame  s<    Yv6y);
fh/r   c                     t        dddz  gi      }d}t        j                  t        |d      5  t	               }|j                  |       d d d        y # 1 sw Y   y xY w)Nrq   rk   i   z?Cell contents too long \(32768\), truncated to 32767 charactersF)r   raise_on_extra_warnings)r
   rY   assert_produces_warningUserWarningr   rV   )r[   r^   r   bufs       r   >test_to_excel_raising_warning_when_cell_character_exceed_limitzNTestExcelWriter.test_to_excel_raising_warning_when_cell_character_exceed_limit  s[    cEk]+,P''sE
 	 )CKK		 	 	s   AA
with_indexc                     t        j                  ddddddddg      }|dv r:t        j                  t        d	
      5  |j                  ||dd       d d d        y |j                  ||d|       t        j                  d      }t        j                  |j                  |            5 }|j                  }|j                  j                  J |r|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)NrH   rK   rC   r  rB   r   r  r?   %Autofilter is not supported with odf!r   TFr6   
autofilterrQ   r:   zA1:D3r
   	from_dictr   r   r   rV   importorskip
contextlibclosingload_workbookactiveauto_filterref)r[   r6   ru  r2   r^   r:   wbwss           r   test_autofilterzTestExcelWriter.test_autofilter  s      ":!!RS<T!UVW"I T IfUST T
 KK	&TKT**H ##H$:$:9$EF P"YY~~))5558Br~~))W4OO	P PT TP Ps   C8,AD8DDc                    t        j                  ddddddddg      }|dv r:t        j                  t        d	
      5  |j                  ||dd       d d d        y |j                  ||ddd       t        j                  d      }t        j                  |j                  |            5 }|j                  }|j                  j                  J |j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)NrH   rK   rC   r  rB   r   r  rw  rx  r   TFry  r   )r6   rz  startrowstartcolr:   zK11:N13r{  )r[   r6   r2   r^   r:   r  r  s          r   &test_autofilter_with_startrow_startcolz6TestExcelWriter.test_autofilter_with_startrow_startcol  s     ":!!RS<T!UVW"I T IfUST T
 KK&TBQS   **H ##H$:$:9$EF 7"YY~~))555~~))Y666	7 7T T7 7s   C7-A D7D Dr)   c                    t        dddd      }|j                  ddg      }|dv r;t        j                  t        d	      5  |j                  ||d
d|       d d d        y |r;t        j                  t        d	      5  |j                  ||d
d
|       d d d        y |j                  ||d
d
|       t        j                  d      }t        j                  |j                  |            5 }|j                  }|j                  j                  J |j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)N)horser  dogr  )blackwhitegreyr  )BlackyWendyRufusCatchy)animalcolor of furrR  r  r  rw  rx  r   TFr6   rz  rQ   r)   wExcel filters merged cells by showing only the first row. 'autofilter' and 'merge_cells' cannot be used simultaneously.r:   zA1:C5)r
   rO  r   r   r   rV   r}  r~  r  r  r  r  r  )	r[   r6   r2   r)   r^   mi_dfr:   r  r  s	            r   %test_autofilter_with_multiindex_indexz5TestExcelWriter.test_autofilter_with_multiindex_index  s    : C>
 h78W"I 	 !# +  	 	 P 
 !# +    NN'   **H ##H$:$:9$EF 5"YY~~))555~~))W444	5 5K	 	 25 5s%   D8?E.A E8EEEc                    t        ddgddggg dg dg      }t        g dg d	g|
      }|dv r;t        j                  t        d      5  |j                  ||dd|       d d d        y |r;t        j                  t        d      5  |j                  ||dd|       d d d        y |j                  ||dd|       t        j                  d      }t        j                  |j                  |            5 }|j                  }|j                  j                  J |j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   ywt)r   r   rH   )r   rH   r   )r   codesr   r  rm   rw  rx  r   TFr  r  r:   zA2:D5)r   r
   r   r   r   rV   r}  r~  r  r  r  r  r  )	r[   r6   r2   r)   r#   r^   r:   r  r  s	            r   'test_autofilter_with_multiindex_columnsz7TestExcelWriter.test_autofilter_with_multiindex_columnsN  s    #Jc
+i(
 	9-w?W"I 	 !# +  	 	 P 
 !# +    KK'   **H ##H$:$:9$EF 5"YY~~))555~~))W444	5 5K	 	 25 5s%   E	E8A EEEE#)Lr   r   r   r   r  r	  r  r  r$  r&  r   r   r   rc   int8int16int32r/  r2  float16float32float64r4  r8  r;  rA  rH  rP  rT  rX  rp  filterwarningsrx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r*  r0  r9  rD  rG  rN  rQ  rW  r^  r  rd  rf  ri  rl  rn  rt  r  r  r  r  r   r   r   r   r   w  s   .'"# 534j30(C [[Y"((BHHbhh(OP2 Q2& [[YRZZ(LM* N* 
**"0H&$A*F
*0200d [[A00&0&0*5)'"*0X5..*
	*0$0<
*0( [[]T5M:[[_i8[[_i8E8 9 9 ;E8N0:B
T [[-	
44&0*00
0?01>.$.	40
*0$ [[WtVn5# 6#0>00 [[\D%=9P :P*70 [[]T5M:65 ;65p [[]T5M:35 ;35r   r   c                       e Zd Zej                  j                  d ej                  ed ej                  d             ej                  e
d ej                  d            g      d        Zd Zd Zy	)
TestExcelWriterEngineTestsz	klass,extr9   r>   r<   r:   c                     t        |      5 }|dk(  r(t        t        dd            rt        |t              sJ t        ||      sJ d d d        y # 1 sw Y   y xY w)Nr9   r>   ignore)errors)r   r   r	   
isinstancer   )r[   klassr/   r2   rv   s        r   test_ExcelWriter_dispatchz4TestExcelWriterEngineTests.test_ExcelWriter_dispatch  s]     # 	1vg~$*<I# "&+666!&%000	1 	1 	1s   <AAc                 z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)Nz	No enginer   nothing)r   r   r   r   r[   s    r    test_ExcelWriter_dispatch_raisesz;TestExcelWriterEngineTests.test_ExcelWriter_dispatch_raises  s-    ]]:[9 	#	"	# 	# 	#s   1:c           	          G d dt               }t        |       t        dd      5  |dz  }|j                          t        |      5 }t	        ||      sJ 	 d d d        t        dgt        dgd	      t        d
gd	            }|j                  |       |j                          d d d        |dz  }|j                          j                  |d       |j                          y # 1 sw Y   xY w# 1 sw Y   NxY w)Nc                   R    e Zd ZdZdZdZdZdZd Zd Z	d Z
ed        Zed        Zy	)
CTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClassF)xlsxxlsrL  c                      y r&   r   r  s    r   bookzHTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.book  s    r   c                 $    dt        |       _        y NT)typecalled_saver  s    r   _savezITestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._save  s    )-T
&r   c                 $    dt        |       _        y r  )r  called_write_cells)r[   argskwargss      r   _write_cellszPTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._write_cells  s    04T
-r   c                 $    dt        |       _        y r  )r  called_sheetsr  s    r   r   zJTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.sheets  s    +/T
(r   c                 t    | j                   sJ | j                  sJ | j                  rJ d| _         d| _        y )NF)r  r  r  )clss    r   assert_called_and_resetz[TestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.assert_called_and_reset  s;    &----,,,,"').&r   N)r   r   r   r  r  r  _supported_extensions_enginer  r  r  propertyr   classmethodr  r   r   r   
DummyClassr    sT    K!&!M$3!G.5 0 0 / /r   r  zio.excel.xlsx.writerrL  zsomething.xlsxrk   rl   rh   )rR  r  ri   r   zsomething2.xlsxr,  )	r   r   r   r-   r  r
   r   rV   r  )r[   r0   r  filepathrv   r^   	filepath2s          r   test_register_writerz/TestExcelWriterEngineTests.test_register_writer  s    	/ 	/8 	
#2G< 	1"22HNNX& 6&!&*5556se%0SE.B
 KK!..0	1 00	
Ig.**,6 6	1 	1s$   !C5C)AC5)C2	.C55C>N)r   r   r   r   r   r   r'   r   td
skip_if_nor   r  r  r  r   r   r   r  r    so    [[FLLg]R]]<5PQFLL'z9RS	
11#/-r   r  c                       e Zd Zd Zd Zy)
TestFSPathc                     |dz  }|j                          t        dddgi      }|j                  |       t        |      5 }t	        j
                  |      }d d d        t        |      k(  sJ y # 1 sw Y   xY w)Nfoo.xlsxrq   rH   rK   )r-   r
   rV   r   r3  fspathr.   )r[   r0   r   r^   r  r_   s         r   test_excelfile_fspathz TestFSPath.test_excelfile_fspath  sp    *$

aV}%
Dt_ 	#YYr]F	#T"""	# 	#s   A00A9c                     |dz  }|j                          t        |      5 }t        j                  |      t	        |      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  )r-   r   r3  r  r.   )r[   r0   r   rv   s       r   test_excelwriter_fspathz"TestFSPath.test_excelwriter_fspath  sO    *$

 	2&99V$D	111	2 	2 	2s   $AAN)r   r   r   r  r  r   r   r   r  r    s    #2r   r  r  c                     t        t              D ch c]  }|j                  d      r| }}t        |       D ch c]  }|j                  d      r| }}|j                  |      rJ y c c}w c c}w )Nr   )dirr   
startswithsymmetric_difference)r  rR  
attrs_baseattrs_klasss       r   test_subclass_attrr    si     $'{#3P44??3;O$PJP$'JKDdooc6J4KKK..{;;;; QKs   A-A-A2A2)<r~  r   r   r   decimalr   	functoolsr   ior   r3  rU  r6  r+   numpyrc   r   pandas.compat._optionalr	   pandas.util._test_decoratorsutil_test_decoratorsr  pandasrW   r
   r   r   r   r   r   pandas._testing_testingrY   pandas.io.excelr   r   r   r   r   pandas.io.excel._utilr   r.   r   fixturer!   r)   r2   r8   r   r   r'   r  rA   usefixturesr   r  r  valuesr  r   r   r   <module>r     s!    
    	  	    > ) )     +s s    /0 1     	W]R]]:%>f@U$VWW]R]]:%>f@U$VWMBMM,7v9NO	
 	V=2==#78
U0 U0
U0p  2==,mbmmF.CD	

 	 2==,mbmmF.CD	

 	 2==.f0EF	

 	UF-"--*>?!* &u5 u5 '+,u5p'E- E-P vz2 2  2" /(//"34< 5<r   