
    o[wea                        d dl mZm Z 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mZ d dlmc mZ d dlZd dl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" ej#        d	             Z$ej#        d
             Z%ej&        '                    d ej(        d ej)        d           ej)        d          g           ej(        d ej)        d           ej)        d          g           ej(        d ej)        d           ej)        d          g           ej(        d ej)        d                    g           G d d                      Z*ej&        '                    d ej(        dd ej)        d           ej)        d          g           ej(        dd ej)        d           ej)        d          g           ej(        dd ej)        d           ej)        d          g           ej(        dd ej)        d                    g          ej&        +                    d           G d d                                  Z, G d d          Z- ej)        d           ej)        d           G d d                                  Z.ej&        '                    d e"j/                              d             Z0dS )     )datedatetime	timedelta)partial)BytesION)PY310)	DataFrameIndex
MultiIndexoption_context)	ExcelFileExcelWriter_OpenpyxlWriter_XlsxWriterregister_writer)_writersc              #   l   K   t          j        |           5 }|V  ddd           dS # 1 swxY w Y   dS )z9
    Fixture to open file for use in each test case.
    N)tmensure_clean)ext	file_paths     Blib/python3.11/site-packages/pandas/tests/io/excel/test_writers.pypathr   $   s      
 
		                  s   )--c              #      K   d|                     d           d}t          ||           5  dV  ddd           dS # 1 swxY w Y   dS )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_enginer   -   s       6ciinn555K	V	,	,                   s   >AAr   .xlsxopenpyxlxlrdmarksz.xlsm
xlsxwriterz.odsodfc            
          e Zd Zej                            dd eej        gdz            fd edej        gdz  i          fg          d             Z	ej                            dd edgej        gdz  z             fd eej        gdz            fg          d             Z
d	 Zd
 Zd Zej                            dddg          ej                            dddg          ej                            dddg          ej                            dddg          d                                                 Zd Zd ZdS )TestRoundTripzheader,expectedN   r   z
Unnamed: 0   c                 &   d}t          g dg dg dg dg          }t          j        |          5 }|                    ||dd           t	          j        ||dg|	          }d d d            n# 1 swxY w Y   t          j        ||           d S )
N	no_header    d   r.         r.   r*   i,  r.   r)   i  Findexheaderr   
sheet_nameusecolsr8   r	   r   r   to_excelpd
read_excelassert_frame_equalselfr   r8   expectedfilenamedfr   results           r   !test_read_one_empty_col_no_headerz/TestRoundTrip.test_read_one_empty_col_no_headerH   s     lllLLL,,,OPP_S!! 	TKKheEKBBB]A3v  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	fh/////   3A11A58A5c                 &   d}t          g dg dg dg dg          }t          j        |          5 }|                    |ddd           t	          j        ||d	g|
          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nwith_headerr-   r1   r4   r5   FTr6   r   r9   r<   rA   s           r   #test_read_one_empty_col_with_headerz1TestRoundTrip.test_read_one_empty_col_with_headerY   s    
 !lllLLL,,,OPP_S!! 	TKKm5KFFF]A3v  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	fh/////rH   c           	      d   t          ddgddgddggddg	          }t          j        |          5 }t          |          5 }|                    |d
dd           |                    |dd           d d d            n# 1 swxY w Y   ddg|_        t          |          5 }t          j        |d
d ddg          }t          j        |dd ddg          }d d d            n# 1 swxY w Y   t          j	        ||           t          j	        ||           d d d            d S # 1 swxY w Y   d S )Nr/   foor2   barr*   bazabcolumnsData_no_headF)r8   r7   Data_with_headr7   AB)r:   r8   names)r:   	index_colrY   )
r	   r   r   r   r=   rS   r   r>   r?   r@   )rB   r   refdfpthwriterreaderxlsdf_no_headxlsdf_with_heads           r   "test_set_column_names_in_parameterz0TestRoundTrip.test_set_column_names_in_parameteri   s     Au:5zAu:>c
SSS_S!! 	:SS!! FVv~e5QQQv'7uEEEF F F F F F F F F F F F F F F !#JEM3 	6 "~d3PS*! ! ! #%-/"*	# # #		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !-777!/5999'	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:sY   D%2A?3D%?B	D%B	D%"5C#D%#C'	'D%*C'	+-D%%D),D)c                   
 d 
g d}
fd|D             }t          t          ||                    }t          j        |          5 }t	          |          5 }|                                D ]\  }}|                    ||           	 d d d            n# 1 swxY w Y   t          j        ||d          }|D ]#}	t          j	        ||	         ||	                    $	 d d d            d S # 1 swxY w Y   d S )Nc                 8    g dg d}}t          ||| g          S )N)      !   r/   r2   r*   rR   )r	   )col_sheet_namedis      r   tdfzDTestRoundTrip.test_creating_and_reading_multiple_sheets.<locals>.tdf   s+    <<qAQN+;<<<<    )AAABBBCCCc                 &    g | ]} |          S  rq   ).0srk   s     r   
<listcomp>zKTestRoundTrip.test_creating_and_reading_multiple_sheets.<locals>.<listcomp>   s!    &&&!ss1vv&&&rl   r   r:   rZ   )
dictzipr   r   r   itemsr=   r>   r?   r@   )rB   r   sheetsdfsr\   ew	sheetnamerE   dfs_returnedrs   rk   s             @r   )test_creating_and_reading_multiple_sheetsz7TestRoundTrip.test_creating_and_reading_multiple_sheets   s   
	= 	= 	= '&&&&&&v&&&3vs##$$_S!! 	?SS!! /R%(YY[[ / /MIrKKI....// / / / / / / / / / / / / / / =1MMML ? ?%c!fl1o>>>>?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s7   C,1B
C,B	C,B	A C,,C03C0c                 L   t          j        |          5 }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          }|                    |           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	          }|                    |           t	          j        |ddgd          }t          j        ||           d d d            d S # 1 swxY w Y   d S )
Nr   r/   r*      )OnexTwoXr   Y)Zeror.   )r   r   r   )r   zUnnamed: 4_level_1r8   rZ   ))Begr.   Middler   Tailr   r   r   ))r   zUnnamed: 1_level_1r   r   r   r   r   r	   r=   r>   r?   r@   )rB   r   r   rE   rC   actuals         r   &test_read_excel_multiindex_empty_levelz4TestRoundTrip.test_read_excel_multiindex_empty_level   s   _S!! +	4T#$a&#$a&#$a&#$a&	  B !#$a&#$a&#$a&56F	  H KK]4A!DDDF!&(333"#Q&'V$%q6$%q6	  B !45q6&'V$%q6$%q6	  H KK]4A!DDDF!&(333W+	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4 +	4s   C7DD Dc_idx_namesTFr_idx_namesc_idx_levelsr/   r_idx_levelsc           
      `   t          j        |          5 }|dk    rD|rB|dk    r|r:t          j                            d          }|j                            |           |p|dk    }	t          j        dd||||          }
|
                    |           t          j
        |t          t          |                    t          t          |                              }t          j        |
||	           t          j        |
j        dd d f<   |
                    |           t          j
        |t          t          |                    t          t          |                              }t          j        |
||	           t          j        |
j        d	d d f<   |
                    |           t          j
        |t          t          |                    t          t          |                              }t          j        |
||	           d d d            d S # 1 swxY w Y   d S )
Nr/   r*   z?Column index name cannot be serialized unless it's a MultiIndex)reason   )rZ   r8   )check_namesr   )r   r   pytestmarkxfailnode
add_markermakeCustomDataframer=   r>   r?   listranger@   npnaniloc)rB   r   r   r   r   r   requestr\   r   r   rE   acts               r   test_excel_multindex_roundtripz,TestRoundTrip.test_excel_multindex_roundtrip   s    _S!! +	DS!!k!!!+!{((( )   ''--- &:):K'1k;l B KK-u\2233E,//00  C
 !"c{CCCCFBGAqqqDMKK-u\2233E,//00  C
 !"c{CCCCVBGBENKK-u\2233E,//00  C
 !"c{CCCCW+	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	D +	Ds   HH##H'*H'c                    t          g dt          j        dd          d          }|                                }|d         j                            d          |d<   t          j        |          5 }|                    |           t          j	        |d	          }t          j
        ||           t          j	        |dgd
          }t          j
        ||           d }t          j        t          dd          5  t          j	        |dg|d          }d d d            n# 1 swxY w Y   t          j
        ||           t          j	        |dgdd          }t          j
        ||           d d d            d S # 1 swxY w Y   d S )Nrg   z
2012-01-01r*   )periods)coldate_stringsr   %m/%d/%Yr   rZ   )parse_datesrZ   c                 ,    t          j        | d          S )Nr   )r   strptimer   s    r   <lambda>z;TestRoundTrip.test_read_excel_parse_dates.<locals>.<lambda>  s    H$5a$D$D rl   zuse 'date_format' insteadF)matchraise_on_extra_warnings)r   date_parserrZ   )r   date_formatrZ   )r	   r>   
date_rangecopydtstrftimer   r   r=   r?   r@   assert_produces_warningFutureWarning)rB   r   rE   df2r\   resr   s          r   test_read_excel_parse_datesz)TestRoundTrip.test_read_excel_parse_dates   s'   IIr}\ST/U/U/UVV
 
 ggii!.14==jIIN_S!! 	+SLL-q111C!#s+++-.1AQOOOC!"c***DDK+1(-   
 

 m!/ 0 +	  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 !"c***-.!1zUV  C !"c***3	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s8   4BFD'F'D+	+F.D+	/AFF	Fc                 2   t          j        t          d          t          j        t          j        d          dd          g          }t          t          d          |          }t          j        |          5 }|	                    |           t          j
        |ddg          }d d d            n# 1 swxY w Y   t          t          d          t          j        t          d          g d	g                    }t          j        ||           d S )
Nr)   z
2020-01-016M)startr   freqrV   r   r/   r   )z(2020-01-31, 2020-07-31]z(2020-07-31, 2021-01-31]z(2021-01-31, 2021-07-31]z(2021-07-31, 2022-01-31])r   from_arraysr   r>   interval_range	Timestampr	   r   r   r=   r?   r@   )rB   r   midxrE   r\   rF   rC   s          r   "test_multiindex_interval_datetimesz0TestRoundTrip.test_multiindex_interval_datetimes"  sP   %a!,|44ad  
 
 uQxxt,,,_S!! 	:SKK]31a&999F	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: !HH"!HH  
 

 
 	fh/////s   =.B77B;>B;)__name__
__module____qualname__r   r   parametrizer	   r   r   rG   rK   ra   r~   r   r   r   r   rq   rl   r   r(   r(   <   s        [
		26(Q,''	(1iixRS|8T.U.U*VW 0 0	 0 [
		1#1,--	.IIrvhl4K4K0LM 
0 
0	 
0: : :4? ? ?0-4 -4 -4^ []T5M::[]T5M::[^aV44[^aV44/D /D 54 54 ;: ;:/Db!+ !+ !+F0 0 0 0 0rl   r(   z
engine,extr   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            dej        ej        ej        ej        g          d	             Ze
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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                            d d!d"g          e
j                            d#g d$          e
j                            d%g d$          d&                                     Z,d' Z-d( Z.d) Z/e
j                            d*d+d,g          d-             Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>e
j                            d<d=e?g          d>             Z@d? ZAd@ ZBdA ZCdB ZDd=S )CTestExcelWriterc                    d}d}t          j        |df          }t          j        d|f          }t          |          }t          |          }d}t          j        t
          |          5  |                    |           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Ni  i@  r/   )shapezsheet is too larger   )r   zerosr	   r   raises
ValueErrorr=   )	rB   r   breaking_row_countbreaking_col_countrow_arrcol_arrrow_dfcol_dfmsgs	            r   test_excel_sheet_sizez%TestExcelWriter.test_excel_sheet_sizeX  sf   &&("4a!8999(!%7!89997##7##"]:S111 	" 	"OOD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" ]:S111 	" 	"OOD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s$   .BBB6CC Cc                    t          t          j                            d                              d                    }|                    |           t          |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   t          j
        ||           d}t          j        t          |          5  t          j        |d           d d d            d S # 1 swxY w Y   d S )Nr2   
   r2   r   ru   zWorksheet named '0' not foundr   0)r	   r   randomdefault_rngstandard_normalr=   r   r>   r?   r   r@   r   r   r   )rB   r   gtxlrE   r   s         r   test_excel_sheet_by_name_raisez.TestExcelWriter.test_excel_sheet_by_name_raisei  sX   ry,,Q//??HHII
Dt__ 	>ra1===B	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	b"%%%-]:S111 	# 	#M"c"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s$   $BBBC((C,/C,c                    t          |          5 }|                    |d           |                                }|j        d d d         |_        |                    |d           d d d            n# 1 swxY w Y   t	          |          5 }t          j        |dd          }t          j        |dd          }t          j        ||           t          j        ||           d d d            d S # 1 swxY w Y   d S )NData1r   Data2r   ru   )	r   r=   r   rS   r   r>   r?   r   r@   )rB   framer   r]   frame2r^   found_df	found_df2s           r   !test_excel_writer_context_managerz1TestExcelWriter.test_excel_writer_context_managerv  sl    	-&NN67+++ZZ\\F"]44R40FNOOFG,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- t__ 	5}V1MMMHfANNNI!(E222!)V444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s%   AA22A69A6AC22C69C6c                    |                                 }t          j        |j        d d|j                            d          f<   |                    |d           |                    |dddg           |                    |dd           |                    |dd           |                    |d           t          j        |dd	
          }t          j
        ||           |                    |dd           t          j        |dd 
          }|j        |_        t          j
        ||           |                    |dd           t          j        |dd	dg          }t          j
        ||           |                    |dd           t          j        |dd	dg          }t          j
        ||           |                    |dd           t          j        |dd	ddg          }t          j
        ||           |                    |d           t          j        |d	          }t          j
        ||           |                    |d           t          j        |d	          }t          j
        ||           |d         }|                    |           t          j        |d	          }t          j
        |                                |           d S )Nr   rW   test1rX   rR   Fr8   rV   r   ru   NA)na_rep)r:   rZ   	na_values88X   g      V@Sheet1r   r   )r   r   r   r   rS   get_locr=   r>   r?   r   r@   r7   to_frame)rB   r   r   reconsrs   s        r   test_roundtripzTestExcelWriter.test_roundtrip  s   

57V
2A2u},,S1112tW%%%tWsCj999tWU333tWE222 	tW%%%t1EEE
eV,,,tWE222t4HHH{
eV,,,tWT222t1QUPVWWW
eV,,, 	tWT222t1QUPVWWW
eV,,,tWT222Wb$Z
 
 
 	eV,,, 	tX&&&tq111
eV,,,tS!!!tq111
eV,,, #J	

4tq111
ajjllF33333rl   c                 
   |                                 }d|d<   |                    |d           t          |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   t          j        ||           d S )NrN   rM   r   r   ru   )r   r=   r   r>   r?   r   r@   )rB   r   r   mixed_framer^   r   s         r   
test_mixedzTestExcelWriter.test_mixed  s    jjll"ET7+++t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
k622222s   A##A'*A'c                 D   |}t          j        t          j        |j                  d           }||_        |                    |d           t          |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   t          j	        ||           d S )Nr   r   r   ru   )
r>   DatetimeIndexr   asarrayr7   r=   r   r?   r   r@   )rB   tsframer   rE   r7   r^   r   s          r   test_ts_framezTestExcelWriter.test_ts_frame  s      BH!5!5DAAA
D'"""t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
b&)))))s   B  BBc                 N   |                                 }t          j        |j        d d|j                            d          f<   |                    |d           |                    |dddg           |                    |dd           |                    |dd           d S )	Nr   rW   r   rX   rR   Fr   rV   )r   r   r   r   rS   r   r=   )rB   r   r   s      r   test_basics_with_nanz$TestExcelWriter.test_basics_with_nan  s    

57V
2A2u},,S1112tW%%%tWsCj999tWU333tWE22222rl   np_typec                    t          t          j                            d                              ddd          |          }|                    |d           t          |          5 }t          j        |dd	          }d d d            n# 1 swxY w Y   |	                    t          j
                  }t          j        ||           t          j        |dd	          }t          j        ||           d S )
Nr2   r   r   sizedtyper   r   ru   )r	   r   r   r   integersr=   r   r>   r?   astypeint64r   r@   )rB   r
  r   rE   r^   r   	int_framerecons2s           r   test_int_typeszTestExcelWriter.test_int_types  s3    I!!!$$--c2G-DDG
 
 
 	D'"""t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L IIbh''	
i000-AFFF
i11111s   *BBBc                    t          t          j                            d                              d          |          }|                    |d           t          |          5 }t          j        |dd                              |          }d d d            n# 1 swxY w Y   t          j
        ||           d S )Nr2   r   r  r   r   ru   )r	   r   r   r   r=   r   r>   r?   r  r   r@   )rB   r
  r   rE   r^   r   s         r   test_float_typesz TestExcelWriter.test_float_types  s     ry,,Q//66r::'JJJ
D'"""t__ 	]6gKKKRR F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	b&)))))s   '+BB"%B"c                 L   t          g dt          j                  }|                    |d           t	          |          5 }t          j        |dd                              t          j                  }d d d            n# 1 swxY w Y   t          j	        ||           d S )N)r/   r   TFr  r   r   ru   )
r	   r   bool_r=   r   r>   r?   r  r   r@   rB   r   rE   r^   r   s        r   test_bool_typeszTestExcelWriter.test_bool_types  s    ***"(;;;
D'"""t__ 	]6gKKKRR F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	b&)))))s   5BBBc                 .   t          dt          j        fddt          j         fg          }|                    |d           t	          |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr/   )r2   r*   r   r   r   ru   )	r	   r   infr=   r   r>   r?   r   r@   r  s        r   test_inf_roundtripz"TestExcelWriter.test_inf_roundtrip  s    BFVa"&\:;;
D'"""t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	b&)))))s   A55A9<A9c                    t          j        t          j        |j                  d           }||_        |                                }t          j        |j        d d|j        	                    d          f<   |
                    |d           |
                    |dddg           |
                    |dd           |
                    |dd	           t          |          5 }|
                    |d           |
                    |d
           d d d            n# 1 swxY w Y   t          |          5 }t          j        |dd          }t          j        ||           t          j        |d
d          }t          j        ||           d d d            n# 1 swxY w Y   dt!          |j                  k    sJ d|j        d         k    sJ d
|j        d         k    sJ d S )Nr  r   rW   r   rX   rR   Fr   rV   test2r   ru   r2   r/   )r>   r  r   r  r7   r   r   r   rS   r   r=   r   r   r?   r   r@   lensheet_names)rB   r   r  r   r7   r]   r^   r   s           r   test_sheetszTestExcelWriter.test_sheets  sR    GM!:!:FFF

57V
2A2u},,S1112tW%%%tWsCj999tWU333tWE222  	.&NN67+++VW---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. t__ 	3]6gKKKF!%000]6gKKKF!'6222		3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
 C*++++++&,Q/////&,Q///////s%   (-D!!D%(D%;AF  F$'F$c                 |   |                                 }t          j        |j        d d|j                            d          f<   |                    |d           |                    |dddg           |                    |dd           |                    |dd           t          g d	          }|                    |d|           t          |          5 }t          j
        |dd
          }d d d            n# 1 swxY w Y   |                                 }||_        t          j        ||           d S )Nr   rW   r   rX   rR   Fr   rV   )AAr   r   Zr   ru   )r   r   r   r   rS   r   r=   r
   r   r>   r?   r   r@   )rB   r   r   col_aliasesr^   rsxps          r   test_colaliaseszTestExcelWriter.test_colaliases   su   

57V
2A2u},,S1112tW%%%tWsCj999tWU333tWE222 11122tW[999t__ 	Hv'QGGGB	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HZZ\\ 

b"%%%%%s   DDDc                    |                                 }t          j        |j        d d|j                            d          f<   |                    |d           |                    |dddg           |                    |dd           |                    |dd           t          t          j        	                    d	          
                    d
                    dk    }|                    |ddg|           t          |          5 }t          j        |dd                              t          j                  }d d d            n# 1 swxY w Y   dg|j        _        |j        j        |j        j        k    sJ t          t          j        	                    d	          
                    d
                    dk    }|                    |dg d|           t          |          5 }t          j        |dd                              t          j                  }d d d            n# 1 swxY w Y   dg|j        _        |j        j        |j        j        k    sJ t          t          j        	                    d	          
                    d
                    dk    }|                    |dd|           t          |          5 }t          j        |dd                              t          j                  }d d d            n# 1 swxY w Y   dg|j        _        t%          j        ||                    t(                               |                    |dg dd|           |                                 }|                    ddg          }t          |          5 }t          j        |dddg          }d d d            n# 1 swxY w Y   t%          j        ||           d S )Nr   rW   r   rX   rR   Fr   rV   r2   r   r   test)index_labelmerge_cellsru   )r-  dummydummy2)rW   rX   CD)rS   r7   r/  r/   )r   r   r   r   rS   r   r=   r	   r   r   r   r   r>   r?   r  r  r7   rY   r   r@   bool	set_index)rB   r/  r   r   rE   r^   r   s          r   test_roundtrip_indexlabelsz*TestExcelWriter.test_roundtrip_indexlabels2  s   

57V
2A2u},,S1112tW%%%tWsCj999tWU333tWE222 ry,,Q//??HHIIQN
D'x[QQQt__ 	]6gKKKRR F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !x~!33333ry,,Q//??HHIIQN
333#	 	 	
 	
 	
 t__ 	]6gKKKRR F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !x~!33333ry,,Q//??HHIIQN
D'v;OOOt__ 	]6gKKKRR F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !
b&--"5"5666(((# 	 	
 	
 	
 ZZ\\\\3*%%t__ 	Q]6g!QPPPF	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q
b&)))))sH   5EEE35H44H8;H85LLL/OOOc                    t          t          j                            d                              d                    }d|j        _        |                    ||           t          |          5 }t          j
        ||j        d         d          }d d d            n# 1 swxY w Y   t          j        ||           |j        j        dk    sJ d S )Nr2   )r   r)   rM   r/  r   ru   )r	   r   r   r   r   r7   namer=   r   r>   r?   r#  r   r@   )rB   r/  r   rE   xfrF   s         r   test_excel_roundtrip_indexnamez.TestExcelWriter.test_excel_roundtrip_indexnamek  s   ry,,Q//??HHII
Dk222t__ 	R]2".2CqQQQF	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	fb)))| E))))))s   2#B!!B%(B%c                    t          j        t          j        |j                  d           }||_        |                                }d |j        D             |_        |                    |d|           t          |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   t          j
        ||           d S )Nr  c                 6    g | ]}|                                 S rq   )r   )rr   r   s     r   rt   zATestExcelWriter.test_excel_roundtrip_datetime.<locals>.<listcomp>  s     555!QVVXX555rl   r   r8  r   ru   )r>   r  r   r  r7   r   r=   r   r?   r   r@   )rB   r/  r  r   r7   tsfr^   r   s           r   test_excel_roundtrip_datetimez-TestExcelWriter.test_excel_roundtrip_datetimew  s     GM!:!:FFFllnn55w}555	T7<<<t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	gv.....s   B**B.1B.c                    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          }t          j        |          5 }t          |          5 }|                    |d           d d d            n# 1 swxY w Y   t          |dd          5 }|                    |d           d d d            n# 1 swxY w Y   t          |          5 }t          j	        |dd          }	d d d            n# 1 swxY w Y   t          |          5 }
t          j	        |
dd          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j
        |	|           t          j
        ||           d S )Ni  r/      i  	      i  r         rf   r)   r2         DATEDATETIMEr   r   r7   rS   r   z
DD.MM.YYYYzDD.MM.YYYY HH-MM-SS)r   datetime_formatr   ru   )r	   r   r   r   r   r   r=   r   r>   r?   r@   )rB   r   r   rE   df_expected	filename2writer1writer2reader1rs1reader2rs2s               r   test_excel_date_datetime_formatz/TestExcelWriter.test_excel_date_datetime_format  s    dAr""Dq"$5$56$2r2q118D!RQPR3S3ST :&#J
 
 
  $2&&q"(=(=>$2r2q118D!RQPR3S3ST :&#J
 
 
 _S!! 	NYT"" .gGW---. . . . . . . . . . . . . . . ( 5   . GW---. . . . . . . . . . . . . . . 4 NGmG1MMMN N N N N N N N N N N N N N N 9%% NmG1MMMN N N N N N N N N N N N N N N	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N" 	c3''' 	c;/////s   G!D8GD	GD	G!E8GE	GE	GF6GF	G	F	
GG 4G G	GG	GGGc                 D   t          t          j                            d                              ddd          t          j                  }|                                }t          j        |d         d          |d<   t          j        |d         d          	                    t                    |d<   |                    |d	           t          |          5 }t          j        |d	d
          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr2   r  r      r/   r  r  r   newr   ru   )r	   r   r   r   r  r  r   r>   cutr  strr=   r   r?   r   r@   rB   r   rE   rC   r^   r   s         r    test_to_excel_interval_no_labelsz0TestExcelWriter.test_to_excel_interval_no_labels  sD    I!!!$$--c2G-DDBH
 
 
 7799F2a5"%%5	&!b1188==
D'"""t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
h/////s   D  DDc                 ,   t          t          j                            d                              ddd          t          j                  }|                                }t          j        |d         dg d	          }||d
<   t          j	        t          |                    |d
<   |                    |d           t          |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr2   r  r   rV  r  r  r   )
rW   rX   r2  r3  EFGHIJ)labelsrX  r   ru   )r	   r   r   r   r  r  r   r>   rY  Seriesr   r=   r   r?   r   r@   )rB   r   rE   rC   	intervalsr^   r   s          r   test_to_excel_interval_labelsz-TestExcelWriter.test_to_excel_interval_labels  sP    I!!!$$--c2G-DDBH
 
 
 7799FqE2PPP
 
 
	 5	)DOO44
D'"""t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
h/////s   C44C8;C8c                    t          t          j                            d                              ddd          dgt          j                  }|                                }|d                             d           |d	<   |d                             d
           |d	<   |                    |d           t          |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr2   r  r   rV  r  rW   )rS   r  c                 "    t          |           S )Nseconds)r   r   s    r   r   z9TestExcelWriter.test_to_excel_timedelta.<locals>.<lambda>  s    Ia,@,@,@ rl   rX  c                 L    t          |                                           dz  S )Nrj  iQ )r   total_secondsr   s    r   r   z9TestExcelWriter.test_to_excel_timedelta.<locals>.<lambda>  s"    i***88::UB rl   r   r   ru   )r	   r   r   r   r  r  r   applyr=   r   r>   r?   r   r@   r[  s         r   test_to_excel_timedeltaz'TestExcelWriter.test_to_excel_timedelta  sL    I!!!$$--c2G-DDE(
 
 

 7799sGMM"@"@AA5	"3---BB
 
 	D'"""t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
h/////s   C,,C03C0c                 P   |                     dd                                          }|                    |d           t          |          5 }t	          j        |dd          }d d d            n# 1 swxY w Y   t          j        ||                    d                     d S )NMperiod)kindsht1r   ru   )	resamplemeanr=   r   r>   r?   r   r@   	to_period)rB   r  r   r*  r^   r)  s         r   test_to_excel_periodindexz)TestExcelWriter.test_to_excel_periodindex  s    c116688
D&!!!t__ 	Gv&AFFFB	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G
b",,s"3"344444s   A33A7:A7c                    t          j        t          |j                  dz  t           j                                      dd          }t          j        |ddg          }||_        |                    |dd	           |                    |dd
dg           |                    |d|           t          |          5 }t          j        |dddg          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr2   r  r   firstsecondrY   r   Fr   rW   rX   rR   r8  r   r/   ru   )r   aranger"  r7   r  reshaper   r   r=   r   r>   r?   r   r@   )rB   r/  r   r   arrays	new_indexr^   rE   s           r   test_to_excel_multiindexz(TestExcelWriter.test_to_excel_multiindex  sG   3u{++a/rx@@@HHBOO*6'89LMMM	tWU333tWsCj999 	tW+>>>t__ 	Mv'aVLLLB	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
eR(((((s   C((C,/C,c                 J   t          g dg dt          j                            d                              d          d          }|                    ddg          }|                    ||           t          j        |d	d
g          }t          j	        ||           d S )N)Nr2   r*   )r   rW     r2   r*   rW   rX   r2  rW   rX   r8  r   r/   r   )
r	   r   r   r   r5  r=   r>   r?   r   r@   )rB   r/  r   rE   df1s        r   "test_to_excel_multiindex_nan_labelz2TestExcelWriter.test_to_excel_multiindex_nan_label  s    !\\!\\Y**1--44Q77 
 
 \\3*%%
Dk222mDQF333
b#&&&&&rl   c                 j   t          j        t          |j                  dz  t           j                                      dd          }t          j        |ddg          }||_        t          j        g d          }||_	        dd	g}|sd}|
                    |d
|           t          |          5 }t          j        |d
|dd	g          }	d d d            n# 1 swxY w Y   |s5|j	                            ddd          }
d t          |
 D             |_	        t!          j        ||	           d S )Nr2   r  r   rz  r{  r|  ))(   r/   )r  r2   )2   r/   )r  r2   r   r/   r   r8  r:   r8   rZ   F)sparsifyadjoinrY   c                 ^    g | ]*}d                      t          t          |                    +S )r   )joinmaprZ  )rr   qs     r   rt   zATestExcelWriter.test_to_excel_multiindex_cols.<locals>.<listcomp>)  s,    EEEqSXXc#qkk22EEErl   )r   r}  r"  r7   r  r~  r   r   from_tuplesrS   r=   r   r>   r?   formatrw   r   r@   )rB   r/  r   r   r  r  new_cols_indexr8   r^   rE   fms              r   test_to_excel_multiindex_colsz-TestExcelWriter.test_to_excel_multiindex_cols  s   3u{++a/rx@@@HHBOO*6'89LMMM	#/0T0T0TUU&Q 	F 	tW+>>>t__ 	76aV  B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	F%%uU%%PPBEECHEEEEM
eR(((((s   5CC #C c                    |j         t          j        t          |j                   t          j                  g}t          j        |          |_         ddg|j         _        |                    |d|           t          |          5 }t          j        |dddg          }d d d            n# 1 swxY w Y   t          j        ||           |j         j        d	k    sJ d S )
Nr  timerM   r   r8  r   r/   ru   )r  rM   )r7   r   r}  r"  r  r   r   rY   r=   r   r>   r?   r   r@   )rB   r/  r  r   r  r^   r   s          r   test_to_excel_multiindex_datesz.TestExcelWriter.test_to_excel_multiindex_dates,  s   ]BIc'-.@.@$Q$Q$QR	".y99%uowK@@@t__ 	Q]6g!QPPPF	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	gv...|!_444444s   B..B25B2c                 n   t          ddgddgddgd          }|                                }t          j        dd	g          }||_        |                    |d
d           t          |          5 }t          j        |d
          }d d d            n# 1 swxY w Y   t          j
        ||           d S )Nr   rW  r  r  r  <   )rP   rQ   c)F   P   )Z   r0   r   FrV   r:   )r	   r   r   r  r7   r=   r   r>   r?   r   r@   )rB   r   frame1r   multi_indexr^   frame3s          r   'test_to_excel_multiindex_no_write_indexz7TestExcelWriter.test_to_excel_multiindex_no_write_index9  s     "bRBxHHII  ,h	-BCC" 	gU333 t__ 	?]6g>>>F	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	ff-----s   2BBBc                 T   t          g g d          }t          g t          j        g ddg          dg          }|                    |d           t	          |          5 }t          j        |d	          }d d d            n# 1 swxY w Y   t          j        ||d
d
           d S )N)r   r/   r2   rR   r   r/   r|  r2   rJ  r   r  F)check_index_typecheck_dtype)	r	   r   r  r=   r   r>   r?   r   r@   )rB   r   rC   rE   r^   rF   s         r   test_to_excel_empty_multiindexz.TestExcelWriter.test_to_excel_empty_multiindexN  s    R333r!71a&!I!I!ITUSVWWW
D'"""t__ 	?]6g>>>F	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?
Hu%	
 	
 	
 	
 	
 	
s   "BB	B	c                 L   t          g dg dgddgg d          }|                    |dd	           t          |          5 }t          j        |dd
          }d d d            n# 1 swxY w Y   t          g dg dgddgg d          }t          j        ||           d S )Ng~Ϛ?g9DܜJ?g>D)?g.4i(@33333@̤ArW   rX   r   r   r'  rJ  r   %.2ffloat_formatr   ru   gQ?gq=
ףp?g=
ףp=?gp=
ף(@r  r  )r	   r=   r   r>   r?   r   r@   )rB   r   rE   r^   rF   rC   s         r   test_to_excel_float_formatz*TestExcelWriter.test_to_excel_float_format[  s+   +++-K-K-KL*#OO
 
 

 	D'777t__ 	L]6gKKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L !>!>!>?*#OO
 
 

 	fh/////s   A((A,/A,c                 $   t          g dg dgddgg d          }t          j        d|z             5 }|                    |d	           t	          j        |dd
          }t          j        ||           d d d            d S # 1 swxY w Y   d S )N)u   ƒu   Ɠu   Ɣ)u   ƕu   Ɩu   Ɨu   AƒrX   )u   XƓr   r'  rJ  z__tmp_to_excel_float_format__.	TestSheetr  r   ru   r<   )rB   r   rE   rD   rF   s        r   test_to_excel_output_encodingz-TestExcelWriter.test_to_excel_output_encodingm  s    +++-K-K-KLc")))
 
 
 _=CDD 	.KK[K999]8qQQQF!&"---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   ABB	B	c                 H   t          j        d|z             5 }	 t          |d          5  	 d d d            n# 1 swxY w Y   n$# t          $ r t	          j        d           Y nw xY wt          g dg dgddgg d	          }|                    |d
d           t          |          5 }t          j
        |d
d          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          g dg dgddgg d	          }t          j        ||           d S )Nu   ƒu.wbz$No unicode file names on this systemr  r  rW   rX   r  rJ  r   r  r  r   ru   r  r  )r   r   openUnicodeEncodeErrorr   skipr	   r=   r   r>   r?   r@   )rB   r   rD   rE   r^   rF   rC   s          r   test_to_excel_unicode_filenamez.TestExcelWriter.test_to_excel_unicode_filenamez  sK   _Z#-.. 	P(D(D))                % D D DBCCCCCD ///1O1O1OPCj'  B
 KK'K???8$$ Pv'QOOOP P P P P P P P P P P P P P P	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P" !>!>!>?*#OO
 
 

 	fh/////su   C&A8A<	A<	 AC&A%"C&$A%%AC&+CC&C	C&C	C&&C*-C*use_headersTFr_idx_nlevelsrg   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}
t          j        |	|
||          }|d	k    rFd
}t          j        t          |          5   |||d           d d d            d S # 1 swxY w Y   d S  |||          }|r|j        |	|
|z   fk    sJ n|j        |	d	z
  |
|z   fk    sJ t          t          |j                            D ]C}t          t          |j                            D ]}|j        ||f         t          j        usJ  Dd S )NTr   c                     |                      ||           t                    5 }t          j        ||j        d         |          cd d d            S # 1 swxY w Y   d S )N)r8   r/  r7   r   r:   r8   )r=   r   r>   r?   r#  )datar8   
parser_hdrr7   r:  r/  r   s        r   	roundtripz;TestExcelWriter.test_excel_010_hemstring.<locals>.roundtrip  s    MM$v;eMTTT4 B}2>!#4Z                   s   "AA A)r/   r2   )r   r   r   r*   )r  r  r/   z_Writing to Excel with MultiIndex columns and no index \('index'=False\) is not yet implemented.r   FrV   )Tr   T)r	   r   r   r   r   r   r   r   r   NotImplementedErrorr   r"  r7   rS   )rB   r/  r  r  r  r   r  parser_headerr   nrowsncolsrE   r   rr  s    `   `         r   test_excel_010_hemstringz(TestExcelWriter.test_excel_010_hemstring  s&   	 	 	 	 	 	 	 )2di	1#]CCyF""""x~RV++++ 
 #5]
 
 
 1>  2#>>> 8 8	"k77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 )B,,C GyUEM,A$BBBBBB yUQY0E$FFFFF 3sy>>** 8 8s3;//00 8 8A8AqD>7777788 8s   B..B25B2c                    t          g dg dg dgg d          }|                    |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
          }|                    |d           t          j        |dd          }t          g dg d	gg d          }t	          j        ||           |                    |ddd           t          j        |dd           }t          g dg d	g          }t	          j        ||           d S )Nrg   )rW   rX   rX   rR   r   )rW   rX   B.1r   ru   )r/   r2   r*   r)   )r      r      )rW   rX   rW   rX   )rW   rX   A.1r  Fr6   r  r	   r=   r>   r?   r   r@   rB   r   rE   rC   rF   s        r   test_duplicated_columnsz'TestExcelWriter.test_duplicated_columns  s   			999iii8///RRR
D'"""YY			999-7H7H7H
 
 

 t1EEE
fh/// lll3=Q=Q=QRRR
D'"""t1EEE\\<<<(2J2J2J
 
 
 	fh/// 	D'u===tEEElllLLL9::
fh/////rl   c                    t          g dg dd          }|                    |dddg           t          j        |dd	          }t	          j        |d         |d                    t	          j        |d         |d                    d S )
Nr/   r/   r/   r2   r2   r2   rW   rX   r   rX   rW   rR   r   r  )r	   r=   r>   r?   r   assert_series_equal)rB   r   write_frame
read_frames       r   test_swapped_columnsz$TestExcelWriter.test_swapped_columns  s    iiiiii @ @AAT7S#J???]4GAFFF

{3/CAAA
{3/CAAAAArl   c                 h   t          g dg dd          }t          j        t          d          5  |                    |dddg	           d d d            n# 1 swxY w Y   t          j        t          d
          5  |                    |dddg	           d d d            d S # 1 swxY w Y   d S )Nr  r  r  zNot all names specifiedr   r   rX   r2  rR   z.'passes columns are not ALL present dataframe'r3  )r	   r   r   KeyErrorr=   )rB   r   r  s      r   test_invalid_columnsz$TestExcelWriter.test_invalid_columns  sr   iiiiii @ @AA]8+DEEE 	D 	D  wc
 CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D ]L
 
 
 	D 	D   wc
 CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds#   AA A?B''B+.B+z#to_excel_index,read_excel_index_col)Tr   )FNc                     t          g dg dg dd          }|                    |dddg|           |ddg         }t          j        |d|	          }t	          j        ||           d S )
Nr  r  )r*   r*   r*   r  col_subset_bugrW   rX   rS   r7   ru   r  )rB   r   to_excel_indexread_excel_index_colr  rC   r  s          r   test_write_subset_columnsz)TestExcelWriter.test_write_subset_columns  s      iiiiiiiii P PQQ"S#Jn 	 	
 	
 	
 Sz*]-9M
 
 

 	h
33333rl   c                 "   t          g dg dd          }|                    |d           t          j        |dd          }d |j        d<   d |j        d<   d |j        d	<   t          j        |dd
d          }t          j        ||           d S )Nonez#oner  twor  z#twor  test_cr   ru   )r/   r   r/   r/   )r2   r/   #r:   commentrZ   )r	   r=   r>   r?   r   r   r@   rB   r   rE   result1result2s        r   test_comment_argz TestExcelWriter.test_comment_arg  s     333:P:P:PQQRR
D(### -QGGG!T!T!T-3RSTTT
gw/////rl   c                     t          g dg dd          }|                    |d           t          j        |d          }t          j        |dd           }t	          j        ||           d S )Nr  r  r  r  r  )r:   r  r  r  s        r   test_comment_defaultz$TestExcelWriter.test_comment_default%  s    
 333:P:P:PQQRR
D(### -:::-4HHH
gw/////rl   c                     t          g dg dd          }|                    |d           t          g dg dd          }t          j        |ddd	          }t	          j        ||           d S )
Nr  r  r  r  )r  Nr  )r  NNr  r   r  r  r  s        r   test_comment_usedz!TestExcelWriter.test_comment_used2  s     333:P:P:PQQRR
D(### #7#7#7>Q>Q>QRRSSt#QRSSS
fh/////rl   c                     t          ddgddgd          }|                    |d           t          dgd	gd          }t          j        |d
          }t	          j        ||           d S )N1z#223)rP   rQ   FrV   r/   r2   r  )r  r  r  s        r   test_comment_empty_linez'TestExcelWriter.test_comment_empty_line@  s     c4[Sz::;;
D&&& A3aS1122tS111
fh/////rl   c                 j   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          }|                    |d           t          j        |dd           }t          j        |d         |d                    d S )!Ni  r/   rG  r2   r*   -   8   r)      1   r  *   r   9   #   rB  )   rF  rd            5      %   r      rW  4   rW   r   r  )r   r	   r=   r>   r?   r   r  )rB   r   	datetimesr  r  s        r   test_datetimeszTestExcelWriter.test_datetimesL  sT    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1T8,,,]4HQGGG

{3/CAAAAArl   c                    t                      5 }t          t          j                            d                              d                    }t          ||          5 }|                    |           d d d            n# 1 swxY w Y   |                    d           t          j
        |d          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr2   r   r   r   r   )r   r	   r   r   r   r   r   r=   seekr>   r?   r   r@   )rB   r   biorE   r]   	reread_dfs         r   test_bytes_iozTestExcelWriter.test_bytes_iob  sI   YY 		1#290033CCGLLMMB S000 $FF###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ HHQKKKcQ777I!"i000		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1 		1s7   AC B6CB	C	B	
ACC!Cc                    t          ddddddg          }dddd}t          r
d	|d
<   d	|d<   |d
k    r$t          j                            |          sd|d
<   t          j        t          t          j	        ||                             5  |
                    ||ddi           d d d            d S # 1 swxY w Y   d S )Nr/   r2   r  r*   r)   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   rM   rN   )r   engine_kwargs)r	   r   osr   existsr   r   	TypeErrorreescaper=   )rB   r   r   rE   msgss        r   test_engine_kwargsz"TestExcelWriter.test_engine_kwargso  sP   aa((*:*:;<<NP	
 
  	O O 
 O 
 Zt(<(< L  ]9BId6l,C,CDDD 	 	KK$en    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B44B8;B8c                 x   t          dddgdddgg dg dd	          }|                    |d
           t          j        |d
dd          }|                                }|j                            t                    |_        |j        	                    d          |_        t          j        ||           d S )NrP   rQ   r  er2   )ri   f)r/   r2   g      @)applebananacherry)mixednumericrZ  r   r   r  r  )r	   r=   r>   r?   r   r$  rn  rZ  r%  r  r   r@   rB   r   rE   readrC   s        r   test_write_lists_dictz%TestExcelWriter.test_write_lists_dict  s    Sz1+=+=>&;;444 
 
 	D(###}ThqANNN7799!--c22#+227;;
dH-----rl   c                     t          ddgddgd          }|                    |d           t          j        |dd          }|}t	          j        ||           d S )	Nr/   r2   r*   r)   )renderr  r   r   r   r  r&  s        r   test_render_as_column_namez*TestExcelWriter.test_render_as_column_name  sg    1a&1a&99::
D(###}T8q999
dH-----rl   c                     t          ddggddg          }|                    ddd          }|                    |           t          j        |dgdgd	
          }t          j        ||           d S )NrM   rN   col1col2rR   TF)rM   rN   r   )true_valuesfalse_valuesrZ   )r	   replacer=   r>   r?   r   r@   )rB   r   rE   rC   r  s        r   !test_true_and_false_value_optionsz1TestExcelWriter.test_true_and_false_value_options  s    '&&1ABBB::d599::
D]ugUGq
 
 

 	j(33333rl   c                     t          ddgddggddg          }|                    |dd	
           t          j        |d          }t	          j        ||           d S )Nr/   r2   r*   r)   r-  r.  rR   r   r  )freeze_panesr   r   r  )rB   r   rC   rF   s       r   test_freeze_panesz!TestExcelWriter.test_freeze_panes  sn    q!fq!f-7GHHH$v>>>tq111
fh/////rl   c                     t          j                    }t          |j        |          }t          t          j        d          }t          j        ||d|           }t          j        ||           d S Nr  r   r   rM   )r   )r   makeDataFramer   r=   r>   r?   round_trip_pathlibr@   rB   r   r   rE   r]   r^   rF   s          r   test_path_path_libz"TestExcelWriter.test_path_path_lib  sn    V444!444&vvK#KKHHH
fb)))))rl   c                     t          j                    }t          |j        |          }t          t          j        d          }t          j        ||d|           }t          j        ||           d S r7  )r   r8  r   r=   r>   r?   round_trip_localpathr@   r:  s          r   test_path_local_pathz$TestExcelWriter.test_path_local_path  sn    V444!444(kCkkJJJ
fb)))))rl   c                 8   t          j        t          j        d          t          j        d          ft          j        d          t          j        d          fg          }t	          t          j        dd          |          }|                    |           t          j        |dd	gd
          }|j	        
                    d |j        d         D             d |j        d	         D             gdd	g          |_	        t          j        ||           d S )N20182018Q12018Q2)r2   r2   r  r  rR   r   r/   r   c                 ,    g | ]}t          |          S rq   rZ  rr   rj   s     r   rt   zCTestExcelWriter.test_merged_cell_custom_objects.<locals>.<listcomp>  s    +++c!ff+++rl   c                 ,    g | ]}t          |          S rq   rD  rE  s     r   rt   zCTestExcelWriter.test_merged_cell_custom_objects.<locals>.<listcomp>  s    -K-K-Kc!ff-K-K-Krl   )level)r   r  r>   Periodr	   r   onesr=   r?   rS   
set_levelslevelsr   r@   )rB   r   mirC   rF   s        r   test_merged_cell_custom_objectsz/TestExcelWriter.test_merged_cell_custom_objects  s   #6""BIh$7$786""BIh$7$78
 
 RWV7;;;RHHH$tQFa@@@#+66++bil+++-K-Kbil-K-K-KLa& 7 
 
 	fh/////rl   r  Nc                    |}t          j        d|          }t          |g|          }t          j        t
          d          5  |                    |           d d d            n# 1 swxY w Y   |                                }t          |g|          }t          j        t
          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )N2019)tzr  zExcel does not supportr   )r>   r   r	   r   r   r   r=   to_pydatetime)rB   r  tz_aware_fixturer   rP  r  rE   s          r    test_raise_when_saving_timezonesz0TestExcelWriter.test_raise_when_saving_timezones  sa    |Fr***vU+++]:-EFFF 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!##vU+++]:-EFFF 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   A((A,/A,4CCCc                     t          ddgddgd          }|                    |g dd           t          j        |          }t          g d	g d
gg d          }t	          j        ||           d S )Nr   r/   r   rd   r  )rW   rX   rW   Fr  )r   r   r   )r/   rd   r/   )rW   rX   r  rR   r  )rB   r   rE   rF   rC   s        r   'test_excel_duplicate_columns_with_namesz7TestExcelWriter.test_excel_duplicate_columns_with_names  s    aV2r(3344
D///???t$$jjj***5?P?P?PQQQ
fh/////rl   c                    d}t          j        |          5 }t          j        t          t          j        |                    5  t          |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz7if_sheet_exists is only valid in append mode (mode='a')r   r1  )if_sheet_exists)r   r   r   r   r   r  r  r   )rB   r   r   r   s       r   test_if_sheet_exists_raisesz+TestExcelWriter.test_if_sheet_exists_raises  s    G_S!! 	:Qz3@@@ : :Ay9999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s5   .A;A#A;#A'	'A;*A'	+A;;A?A?c                 b   t          j        |          5 }t          ||          5 }t                                          |           d d d            n# 1 swxY w Y   t          j        |          }t                      }t          j        ||           d d d            d S # 1 swxY w Y   d S Nr  )r   r   r   r	   r=   r>   r?   r@   )rB   r   r   r   r]   rF   rC   s          r   test_excel_writer_empty_framez-TestExcelWriter.test_excel_writer_empty_frame  s   _S!! 	4TT&111 -V$$V,,,- - - - - - - - - - - - - - -]4((F {{H!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s4   B$"A	B$A	B$A	:B$$B(+B(c                    t          j        |          5 }t                                          ||           t	          j        |          }t                      }t          j        ||           d d d            d S # 1 swxY w Y   d S rZ  r   )rB   r   r   r   rF   rC   s         r   test_to_excel_empty_framez)TestExcelWriter.test_to_excel_empty_frame  s    _S!! 	4TKK  f 555]4((F {{H!&(333		4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   AA==BB)Er   r   r   r   r   r   r   r  r  r	  r   r   r   r   int8int16int32r  r  float16float32float64r  r  r  r$  r+  r6  r;  r?  rT  r\  rg  ro  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r+  r2  r5  r;  r>  rM  objectrS  rU  rX  r[  r]  rq   rl   r   r   r   A  sa       ." " ""# # #5 5 5/4 /4 /4b3 3 3
* 
* 
*3 3 3 [Y"(BHbh(OPP2 2 QP2" [YRZ(LMM
* 
* NM
*
* 
* 
** * *0 0 04& & &$7* 7* 7*r
* 
* 
*/ / /"*0 *0 *0X0 0 0"0 0 0&0 0 0*5 5 5) ) )' ' '") ) ),5 5 5. . .*
 
 
0 0 0$. . .0 0 02 []T5M::[_iii88[_iii8828 28 98 98 ;:28h0 0 0:B B B
D 
D 
D [-	
 4 4 40 0 0&0 0 00 0 0
0 
0 
0B B B,1 1 1  @. . .$. . .	4 	4 	40 0 0* * ** * *0 0 0$ [WtVn55  650 0 0: : :4 4 44 4 4 4 4rl   r   c                       e Zd Zej                            d ej        ed ej	        d                     ej        e
d ej	        d                    g          d             Zd Zd Zd	S )
TestExcelWriterEngineTestsz	klass,extr    r%   r#   r!   c                 6   t          j        |          5 }t          |          5 }|dk    r,t          j        d          rt          |t                    sJ nt          ||          sJ d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr    r%   )r   r   r   tdsafe_import
isinstancer   )rB   klassr   r   r]   s        r   test_ExcelWriter_dispatchz4TestExcelWriterEngineTests.test_ExcelWriter_dispatch  s    _S!! 	5TT"" 5f'>>bn\&B&B>%fk::::::%fe444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s5   BAA6*B6A:	:B=A:	>BBBc                     t          j        t          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nz	No enginer   nothing)r   r   r   r   rB   s    r    test_ExcelWriter_dispatch_raisesz;TestExcelWriterEngineTests.test_ExcelWriter_dispatch_raises   s    ]:[999 	# 	#	"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   9= =c                     G d dt                     }t          |           t          dd          5  d}t          j        |          5 }t          |          5 }t          ||          sJ 	 d d d            n# 1 swxY w Y   t          j        dd          }|                    |           d d d            n# 1 swxY w Y   |                                 d d d            n# 1 swxY w Y   t          j        d          5 }|                    |d           d d d            n# 1 swxY w Y   |                                 d S )	Nc                   `    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d	S )
CTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClassF)xlsxxlsr0  c                     d S )Nrq   ro  s    r   bookzHTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.book,  s    rl   c                 .    dt          |           _        d S NT)typecalled_savero  s    r   _savezITestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._save/  s    )-T

&&&rl   c                 .    dt          |           _        d S ry  )rz  called_write_cells)rB   argskwargss      r   _write_cellszPTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._write_cells2  s    04T

---rl   c                 .    dt          |           _        d S ry  )rz  called_sheetsro  s    r   ry   zJTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.sheets5  s    +/T

(((rl   c                 X    | j         sJ | j        sJ | j        rJ d| _         d| _        d S )NF)r{  r~  r  )clss    r   assert_called_and_resetz[TestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.assert_called_and_reset9  sC    &&&----,,,,"').&&&rl   N)r   r   r   r{  r~  r  _supported_extensions_enginerw  r|  r  propertyry   classmethodr  rq   rl   r   
DummyClassrs  %  s        K!&!M$3!G  . . .5 5 5 0 0 X0 / / [/ / /rl   r  zio.excel.xlsx.writerr0  zsomething.xlsxr/   zsomething.xlsr  )	r   r   r   r   r   rj  r   r=   r  )rB   r  r   filepathr]   rE   s         r   test_register_writerz/TestExcelWriterEngineTests.test_register_writer$  sL   	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/8 	
###2G<< 	1 	1#D&& &( ** :f%fj999999: : : : : : : : : : : : : : :+Aq11H%%%	& & & & & & & & & & & & & & &
 ..000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 __-- 	2KKK111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2**,,,,,sk   C&
B;A:.B;:A>>B;A>-B;/C&;B?	?C&B?	C&&C*-C*D))D-0D-N)r   r   r   r   r   r   paramr   rh  
skip_if_nor   rl  rp  r  rq   rl   r   rf  rf    s        [FLg]R]<5P5PQQQFL'z9R9RSSS	
 5 5 5# # #*- *- *- *- *-rl   rf  c                       e Zd Zd Zd ZdS )
TestFSPathc                 8   t          j        d          5 }t          dddgi          }|                    |           t	          |          5 }t          j        |          }d d d            n# 1 swxY w Y   ||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nfoo.xlsxrW   r/   r2   )r   r   r	   r=   r   r  fspath)rB   r   rE   r   rF   s        r   test_excelfile_fspathz TestFSPath.test_excelfile_fspathT  s   _Z(( 	"DC!Q=))BKK4 'B2' ' ' ' ' ' ' ' ' ' ' ' ' ' 'T>>>>>	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s5   8BA."B.A2	2B5A2	6BBBc                     t          j        d          5 }t          |          5 }t          j        |          t          |          k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  )r   r   r   r  r  rZ  )rB   r   r]   s      r   test_excelwriter_fspathz"TestFSPath.test_excelwriter_fspath\  s    _Z(( 	6DT"" 6fy((CII555556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s4   A2(AA2A	A2!A	"A22A69A6N)r   r   r   r  r  rq   rl   r   r  r  Q  s2        " " "6 6 6 6 6rl   r  rk  c                     d t          t                    D             }d t          |           D             }|                    |          rJ d S )Nc                 <    h | ]}|                     d           |S _
startswithrr   r9  s     r   	<setcomp>z%test_subclass_attr.<locals>.<setcomp>e  s)    PPP44??3;O;OP$PPPrl   c                 <    h | ]}|                     d           |S r  r  r  s     r   r  z%test_subclass_attr.<locals>.<setcomp>f  s)    KKKDdooc6J6JK4KKKrl   )dirr   symmetric_difference)rk  
attrs_baseattrs_klasss      r   test_subclass_attrr  b  sY     QP3{#3#3PPPJKKCJJKKKK..{;;;;;;;rl   )1r   r   r   	functoolsr   ior   r  r  numpyr   r   pandas.compat._constantsr   pandas.util._test_decoratorsutil_test_decoratorsrh  pandasr>   r	   r
   r   r   pandas._testing_testingr   pandas.io.excelr   r   r   r   r   pandas.io.excel._utilr   fixturer   r   r   r   r  r  r(   usefixturesr   rf  r  valuesr  rq   rl   r   <module>r     s           
             				 				      * * * * * * ) ) ) ) ) ) ) ) )                                   + * * * * *       	W]R]:%>%>f@U@U$VWWWW]R]:%>%>f@U@U$VWWWMBM,77v9N9NO	
 	
 	
 	V=2=#7#7888
 
w0 w0 w0 w0 w0 w0 w0
 
w0t  2=,,mbmF.C.CD	
 	
 	

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

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

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