
    xZi                        S SK r S SKrS SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
JrJrJrJrJrJrJrJr  S SKJr  S SKJrJrJrJr  S SKJr  S	S
KJr  S	SKJr  S	SK J!r!  S	SK"J#r#  S	SK$J%r%  S	SK&J'r'  S	SK(J)r)  S	SK*J+r+  S	SK,J-r-  S	SK.J/r/  S	SK0J1r1  S	SK2J3r3J4r4J5r5J6r6  S	SK7J8r8  S	SK9J:r:  S	SK;J<r<  S	SK=J>r>  S	SK?J@r@   " S S\R                  5      rB " S S5      rC " S S 5      rDg)!    N)datetimetimezone)Decimal)Fraction)IOAnyAnyStrDictListLiteralOptionalUnion)warn)ZIP_DEFLATEDLargeZipFileZipFileZipInfo)Image   )	xmlwriter)	ChartArea)ChartBar)ChartColumn)ChartDoughnut)	ChartLine)ChartPie)
ChartRadar)ChartScatter)
ChartStock)
Chartsheet)DuplicateWorksheetNameFileCreateErrorFileSizeErrorInvalidWorksheetName)FormatPackager)SharedStringTable)xl_cell_to_rowcol)	Worksheetc                     ^  \ rS rSrSr\r\r  SQS\	\
\\\   \R                  4      S\	\\\4      SS4U 4S jjjrS rSRS	 jr SQS
\	\   S\4S jjr SQS
\	\   S\4S jjrSSS\4S jjrS\\\4   S\	\
\\\\\\\\ \!4	      4S jr"STS\S\#S\$4S jjr%  SUS\S\S\#S\#S\&S   4
S jjr'SRS jr(S\$S\$SS4S jr)SSS\	\
\$\*4      SS4S jjr+SRS jr, SSS
\S\
\#\-\$\*\.\/\4   S\	\&S       S\&S   4S! jjr0 SSS"\&S#   SS4S$ jjr1S
\S%\S\&S   4S& jr2S\3\   4S' jr4S
\S\	\   4S( jr5S\4S) jr6SRS* jr7SSS
\	\   SS4S+ jjr8SRS, jr9SRS- jr:SRS. jr;SSS/ jr<STS0 jr=SRS1 jr>SRS2 jr?SRS3 jr@SRS4 jrASRS5 jrBSRS6 jrCSRS7 jrDS8 rESRS9 jrFS: rGSRS; jrHS< rIS= rJSRS> jrKSRS? jrLSRS@ jrMSRSA jrNSB rOSRSC jrPSD rQSRSE jrRSRSF jrSSRSG jrTSRSH jrUSRSI jrVSRSJ jrWSRSK jrXSRSL jrYSRSM jrZSRSN jr[SRSO jr\SPr]U =r^$ )VWorkbook1   z5
A class for writing the Excel XLSX Workbook file.


Nfilenameoptionsreturnc                   > Uc  0 n[         TU ]  5         Xl        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  S	S5      U l	        UR                  S
S5      U l
        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  S0 5      U l        UR                  SS5      U l        U R"                  S:  a  SU l        UR                  S5      (       a  SU l        OSU l        ['        5       U l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        / U l        / U l        / U l        0 U l         / U l!        / U l"        0 U l#        / U l$        0 U l%        / U l&        SU l'        / U l(        / U l)        / U l*        / U l+        0 U l,        / U l-        [\        R^                  " [`        Rb                  5      U l2        SU l3        SU l4        SU l5        SU l6        SU l7        SU l8        SU l9        [u        5       U l;        SU l<        SU l=        SU l>        SU l?        SU l@        0 U lA        / U lB        SU lC        SU lD        SU lE        SU lF        SU lG        SU lH        SU lI        SU lJ        SU lK        SU lL        SU lM        SU lN        [        5       U lP        [        5       U lR        U R                  (       a  SU l        U R                  (       a  U R                  SSS.5        OU R                  S S05        U R                  S!S05      U lT        U R                  b#  U R                  S"U R                  05      U l
        gg)#z
Constructor.

Ntmpdir	date_1904Fstrings_to_numbersstrings_to_formulasTstrings_to_urlsnan_inf_to_errorsdefault_date_formatconstant_memory	in_memoryexcel2003_styleremove_timezoneuse_future_functionsdefault_format_propertiesmax_url_lengthi     	use_zip64r   SheetChart      >  %  X  autoig )xf_indexfont_familyrJ   	hyperlink
num_format)Usuper__init__r.   getr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   allow_zip64WorksheetMetaworksheet_metaselected
fileclosed
filehandleinternal_fh
sheet_name
chart_namesheetname_countchartname_countworksheets_objschartsdrawings
sheetnamesformats
xf_formatsxf_format_indicesdxf_formatsdxf_format_indicespalette
font_countnum_formatsdefined_namesnamed_rangescustom_colorsdoc_propertiescustom_propertiesr   nowr   utc
createtimenum_vml_filesnum_comment_filesx_windowy_windowwindow_widthwindow_height	tab_ratior(   	str_tablevba_projectvba_project_is_streamvba_project_signaturevba_project_signature_is_streamvba_codenameimage_typesimagesborder_count
fill_countdrawing_count	calc_modecalc_on_loadcalc_idhas_comments	read_onlyhas_metadatahas_embedded_imageshas_dynamic_functionshas_embedded_descriptionsEmbeddedImagesembedded_imagessetfeature_property_bags
add_formatdefault_url_format)selfr.   r/   	__class__s      m/var/www/eduai.edurigo.com/question_generate/ques_gen_env/lib/python3.13/site-packages/xlsxwriter/workbook.pyrO   Workbook.__init__@   s    ?G kk(D1 [%8")++.BE"J#*;;/Dd#K &{{+<dC!(-@%!H#*;;/Dd#K &{{+<eD [%8&{{+<eD&{{+<eD$+KK0F$N!)05PRT)U&%kk*:DA$"&D;;{###D$D+o!!  !!#"$ !#",,x||4!"!!*,%*"%)"/4,  !!#( %*").&-/%(U" >>#(D  OO1=>OOZO, #'//;2E"F ##/'+t778(D$ 0    c                     U $ )z0Return self object to use with "with" statement. r   s    r   	__enter__Workbook.__enter__   s    r   c                 $    U R                  5         g)z-Close workbook when exiting "with" statement.N)close)r   typevalue	tracebacks       r   __exit__Workbook.__exit__   s     	

r   namec                 >    Uc  U R                   nU R                  XS9$ )z
Add a new worksheet to the Excel workbook.

Args:
    name: The worksheet name. Defaults to 'Sheet1', etc.

Returns:
    Reference to a worksheet object.

worksheet_class)r   
_add_sheet)r   r   r   s      r   add_worksheetWorkbook.add_worksheet   s&     ""22OtEEr   c                 >    Uc  U R                   nU R                  XS9$ )z
Add a new chartsheet to the Excel workbook.

Args:
    name: The chartsheet name. Defaults to 'Sheet1', etc.

Returns:
    Reference to a chartsheet object.

r   )chartsheet_classr   )r   r   r   s      r   add_chartsheetWorkbook.add_chartsheet   s'     ##44tFFr   c                    U R                   R                  5       nU R                  (       a  SSSS.nU(       a  UR                  U5        [	        X R
                  U R                  5      nU R                  R                  U5        U$ )z
Add a new Format to the Excel Workbook.

Args:
    properties: The format properties.

Returns:
    Reference to a Format object.

Arial
   )	font_name	font_sizetheme)	r>   copyr;   updater%   rb   rd   r`   append)r   
propertiesformat_properties	xf_formats       r   r   Workbook.add_format   sv     !::??A.5BQW X$$Z055t7N7N
	
 	I&r   c                 L   UR                  S5      nUc  [        S5        gUS:X  a  [        U5      nOUS:X  a  [        U5      nOUS:X  a  [	        U5      nOyUS:X  a  [        5       nOhUS:X  a  [        U5      nOVUS	:X  a  [        5       nOEUS
:X  a  [        U5      nO3US:X  a  [        U5      nO!US:X  a  [        5       nO[        SU S35        gSU;   a
  US   Ul        SUl        U R                  Ul        U R                  Ul        U R                  R!                  U5        U$ )z|
Create a chart object.

Args:
    options: The chart type and subtype options.

Returns:
    Reference to a Chart object.

r   Nz)Chart type must be defined in add_chart()areabarcolumndoughnutlinepieradarscatterstockzUnknown chart type 'z' in add_chart()r   T)rP   r   r   r   r   r   r   r   r   r   r   rY   embeddedr3   r<   r]   r   )r   r/   
chart_typecharts       r   	add_chartWorkbook.add_chart   s    2 [[(
<=g&E5 W%E8#(E:%!OE6!g&E5 JE7"w'E9$ )E7"LE'
|3CDE W&vE.. $ 4 45!r   rx   	is_streamc                     U(       d4  [         R                  R                  U5      (       d  [        SU S35        gU R                  c  SU l        Xl        X l        g)z
Add a vbaProject binary to the Excel workbook.

Args:
    vba_project: The vbaProject binary file name.
    is_stream:   vba_project is an in memory byte stream.

Returns:
    0 on success.

zVBA project binary file '' not found.r   ThisWorkbookr   )ospathexistsr   r|   rx   ry   )r   rx   r   s      r   add_vba_projectWorkbook.add_vba_project<  sQ     !<!<,[MFG$ .D&%."r   	signatureproject_is_streamsignature_is_stream)r   r   c                     U R                  X5      S:X  a  gU(       d4  [        R                  R                  U5      (       d  [	        SU S35        gX l        X@l        g)a|  
Add a vbaProject binary and a vbaProjectSignature binary to the
Excel workbook.

Args:
    vba_project:           The vbaProject binary file name.
    signature:             The vbaProjectSignature binary file name.
    project_is_stream:     vba_project is an in memory byte stream.
    signature_is_stream:   signature is an in memory byte stream.

Returns:
    0 on success.

r   z#VBA project signature binary file 'r   r   )r   r   r   r   r   rz   r{   )r   rx   r   r   r   s        r   add_signed_vba_projectWorkbook.add_signed_vba_projectT  sS    * ?2E"277>>)+D+D6ykNO%."/B,r   c                 B   U R                   (       dR   U R                  5         SU l         U R                  (       a(  U R                  5        H  nUR                  5         M     gg[        S5        g! [         a  n[        U5      eSnAf[         a    [        S5      ef = f)zQ
Call finalization code and close file.

Args:
    None.

Returns:
    Nothing.

NzBFilesize would require ZIP64 extensions. Use workbook.use_zip64().Tz'Calling close() on already closed file.)
rU   _store_workbookIOErrorr"   r   r#   r9   
worksheets
_opt_closer   )r   e	worksheets      r   r   Workbook.closeu  s     $$& #DO ##!%!2I((* "3 $
 :;!  )%a(( #0 s   A0 0
B:BBwidthheightc                     U(       a  [        US-  S-  5      U l        OSU l        U(       a  [        US-  S-  5      U l        gSU l        g)z
Set the size of a workbook window.

Args:
    width:  Width  of the window in pixels.
    height: Height of the window in pixels.

Returns:
    Nothing.

i  `   rF   rG   N)intrt   ru   )r   r   r   s      r   set_sizeWorkbook.set_size  sF      #EDL2$5 6D %D!$Vd]R%7!8D!%Dr   rv   c                 j    Uc  gUS:  d  US:  a  [        SU S35        g[        US-  5      U l        g)z
Set the ratio between worksheet tabs and the horizontal slider.

Args:
    tab_ratio: The tab ratio, 0 <= tab_ratio <= 100

Returns:
    Nothing.

Nr   d   zTab ratio 'z ' outside: 0 <= tab_ratio <= 100r   )r   r   rv   )r   rv   s     r   set_tab_ratioWorkbook.set_tab_ratio  s<     q=IO;yk)IJK R0DNr   c                     Xl         g)z
Set the document properties such as Title, Author etc.

Args:
    properties: Dictionary of document properties.

Returns:
    Nothing.

N)rk   )r   r   s     r   set_propertiesWorkbook.set_properties  s
     )r   r   property_type)booldatenumber
number_inttextc                 ^   Ub  Uc  [        S5        gUcr  [        U[        5      (       a  SnOZ[        U[        5      (       a  SnOB[        U[        5      (       a  SnO*[        U[
        [        [        [        45      (       a  SnOSnUS:X  a  [        U5      R                  5       nUS:X  a  UR                  S5      nUS	;   a  [        U5      nUS:X  a  [        U5      S
:  a  [        SU S35        [        U5      S
:  a  [        SU S35        U R                  R                  XU45        g)z
Set a custom document property.

Args:
    name:          The name of the custom property.
    value:         The value of the custom property.
    property_type: The type of the custom property. Optional.

Returns:
    0 on success.

zGThe name and value parameters must be non-None in set_custom_property()r   r   r   r   r   r   z%Y-%m-%dT%H:%M:%SZ)r   r   r@   z_Length of 'value' parameter exceeds Excel's limit of 255 characters in set_custom_property(): ''z^Length of 'name' parameter exceeds Excel's limit of 255 characters in set_custom_property(): 'r   )r   
isinstancer   r   r   floatr   r   strlowerstrftimelenrl   r   )r   r   r   r   s       r   set_custom_propertyWorkbook.set_custom_property  s2   ( <5=(  %&& &E8,, &E3'' ,EE3#BCC ( & F"J$$&EF"NN#78E44JEF"s5zC'799>qB
 t9s?99=aA
 	%%tM&BCr   mode)manualauto_except_tablesrI   c                 b    Xl         US:X  a  SU l        OUS:X  a  SU l         U(       a  X l        gg)z
Set the Excel calculation mode for the workbook.

Args:
    mode: String containing one of:
        * manual
        * auto_except_tables
        * auto

Returns:
    Nothing.

r   Fr  autoNoTableN)r   r   r   )r   r   r   s      r   set_calc_modeWorkbook.set_calc_mode  s8      8 %D))*DN "L r   formulac                    SnSnUR                  S5      (       a  UR                  S5      n[        R                  " S5      nUR	                  U5      nU(       aG  UR                  S5      nUR                  S5      nU R                  U5      nUc  [        SU S35        g	OS	n[        R                  " S
U[        R                  5      (       a  [        R                  " SU5      (       a  [        SU S35        g	[        R                  " SU5      (       a  [        SU S35        g	[        R                  " SU5      (       d  [        R                  " SU5      (       a  [        SU S35        g	U R                  R                  XUS/5        g)z
Create a defined name in the workbook.

Args:
    name:    The defined name.
    formula: The cell or range that the defined name refers to.

Returns:
    0 on success.

N =z^([^!]+)!([^!]+)$r      zUnknown sheet name 'z' in defined_name()r   z^[\w\\][\w\\.]*$z^\dz-Invalid Excel characters in defined_name(): 'r   z^[a-zA-Z][a-zA-Z]?[a-dA-D]?\d+$z0Name looks like a cell name in defined_name(): 'z^[rcRC]$z^[rcRC]\d+[rcRC]\d+$zInvalid name 'z&' like a RC cell ref in defined_name()Fr   )
startswithlstriprecompilematchgroup_get_sheet_indexr   UNICODErh   r   )r   r   r  sheet_index	sheetnamesheet_partsr  s          r   define_nameWorkbook.define_name*  so    	 c""nnS)G jj!56!!$'AI;;q>D//	:K "+I;6IJK #
 K xx+T2::>>"((DC
 C
 @aHI 886==CD6KL 88K&&"((3JD*Q*Q>$'MNO!!4gu"EFr   c                     U R                   $ )zv
Return a list of the worksheet objects in the workbook.

Args:
    None.

Returns:
    A list of worksheet objects.

)r\   r   s    r   r   Workbook.worksheetse  s     ###r   c                 8    U R                   R                  U5      $ )z
Return a worksheet object in the workbook using the sheetname.

Args:
    name: The name of the worksheet.

Returns:
    A worksheet object or None.

)r_   rP   r   r   s     r   get_worksheet_by_nameWorkbook.get_worksheet_by_namer  s     ""4((r   c                     U R                   $ )z
Get the default url format used when a user defined format isn't
specified with write_url(). The format is the hyperlink style defined
by Excel for the default theme.

Args:
    None.

Returns:
    A format object.

)r   r   s    r   get_default_url_formatWorkbook.get_default_url_format  s     &&&r   c                     SU l         g)zg
Allow ZIP64 extensions when writing xlsx file zip container.

Args:
    None.

Returns:
    Nothing.

TN)rQ   r   s    r   rA   Workbook.use_zip64  s      r   c                 &    Ub  Xl         gSU l         g)z
Set the VBA name for the workbook. By default the workbook is referred
to as ThisWorkbook in VBA.

Args:
    name: The VBA name for the workbook.

Returns:
    Nothing.

Nr   )r|   r  s     r   set_vba_nameWorkbook.set_vba_name  s      $ .Dr   c                     SU l         g)zk
Set the Excel "Read-only recommended" option when saving a file.

Args:
    None.

Returns:
    Nothing.

r
  N)r   r   s    r   read_only_recommendedWorkbook.read_only_recommended  s     r   c                    U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  S5        U R                  5         g )Nworkbook)_prepare_format_properties_xml_declaration_write_workbook_write_file_version_write_file_sharing_write_workbook_pr_write_book_views_write_sheets_write_defined_names_write_calc_pr_xml_end_tag
_xml_closer   s    r   _assemble_xml_fileWorkbook._assemble_xml_file  s     	'') 	 	 	  " 	  " 	! 	  	 	!!# 	 	*% 	r   c                     [        U R                  S[        U R                  S9nU R                  5       nU R                  5       (       d  U R                  5         U R                  R                  S:X  a(  SU R                  S   l        SU R                  S   l        U R                  5        H0  nUR                  U R                  R                  :X  d  M)  SUl        M2     U R                  (       a6  U R                  5        H"  nUR                   b  M  UR#                  5         M$     U R%                  5         U R'                  5         U R)                  5         U R+                  5         U R-                  5         U R/                  5         U R1                  5         UR3                  U 5        UR5                  U R6                  5        UR9                  U R:                  5        UR=                  5       nS n[?        U5       H  u  pgUu  pn
U R:                  (       au  [A        U	S5      nURB                  Ul"        U
(       a!  URG                  XRI                  5       5        M`  URG                  XRI                  5       RK                  S5      5        M  [L        RN                  " S5      n[P        RR                  " XU45         URU                  X5        [P        RV                  " U5        M     UR_                  5         g ! [         a  nUeS nAff = f! [X         aA  n[[        U[]        U5      S-
  5       H  n[P        RV                  " X]   S   5        M      UeS nAff = f)Nw)compression
allowZip64r   r   )  r   r   r   r   r   zutf-8)	r=  r      r   r   r   r   r   r   )0r   r.   r   rQ   r   _get_packagerr   r   rS   activesheetr\   rT   hiddenindexactiverx   r|   r$  _prepare_sst_string_data_prepare_vml_prepare_defined_names_prepare_drawings_add_chart_data_prepare_tables_prepare_metadata_add_workbook_set_tmpdirr2   _set_in_memoryr:   _create_package	enumerater   r;  compress_typewritestrgetvalueencodetimemktimer   utimewriteremover   ranger   r   )r   	xlsx_filer   packagersheet	xml_filesfile_id	file_dataos_filenamexml_filename	is_binaryzipinfo	timestampis                 r   r   Workbook._store_workbook  s   	(++	I %%'     **a//0D  #,-.D  #* __&E{{d11===  '
 *%%-&&( +
 	%%' 	 	##% 	  	 	 	  	t$T[[)/,,.	  #,I"6G3<0Ky~~!,0EF )2(=(=%&&w0D0D0FG&&w0D0D0F0M0Mg0VW !KK(HI	)&<=OOK>IIk*1 #7> 	q  	G	d $ "7C	NQ,>?		),q/2 @G	s/   $K7 ;'L7
LLL
M<MMc                    U(       a  U" 5       nOU R                  5       n[        U R                  5      nU R                  U[	        U[
        5      5      n0 SU_SU_SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _U R*                  U R,                  S.EnUR/                  U5        U R                  R1                  U5        X0R2                  U'   U$ )Nr   rB  rw   rS   r9   r2   r3   r4   r5   r6   r7   r8   r   workbook_add_formatr;   r<   r?   )r=   r   )r   r   r\   _check_sheetnamer   r    rw   rS   r9   r2   r3   r4   r5   r6   r7   r8   r   r   r;   r<   r?   r=   r   _initializer   r_   )r   r   r   r   r  	init_datas         r   r   Workbook._add_sheetJ  s    ')I,,.I$../$$T:i+LM
D
[
 
 d11	

 t33
 dkk
 
 !$"9"9
 "4#;#;
 t33
  !7!7
 "4#;#;
 !$"9"9
 "4??
 t33
  t33!
" d11#
$ %)$=$=#33'
	, 	i(##I. )r   c                    [         R                  " S5      nU(       a  U =R                  S-  sl        OU =R                  S-  sl        Ub  US:X  aL  U(       a#  U R                  [        U R                  5      -   nO"U R                  [        U R                  5      -   n[        U5      S:  a  [        SU S35      eUR                  U5      (       a  [        SU S35      eUR                  S	5      (       d  UR                  S	5      (       a  [        S
U S35      eU R                  5        H>  nUR                  5       UR                  R                  5       :X  d  M1  [        SU S35      e   U$ )Nz[\[\]:*?/\\]r   r  r>  zExcel worksheet name 'z' must be <= 31 chars.z0Invalid Excel character '[]:*?/\' in sheetname 'z'.r   z3Sheet name cannot start or end with an apostrophe "z".zSheetname 'z(', with case ignored, is already in use.)r  r  r[   rZ   rY   r   rX   r   r$   searchr  endswithr   r   r   r!   )r   r  is_chartsheetinvalid_charr   s        r   ri  Workbook._check_sheetnames  s^    zz/2   A%   A%  	R OOc$2F2F.GG	 OOc$2F2F.GG	 y>B&(3IJ 
 y))&CI;bQ 
 $$	(:(:3(?(?&Ei[PRS  *I INN$8$8$::,!),TU  + r   c                     U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         g N)_prepare_formats_prepare_fonts_prepare_num_formats_prepare_borders_prepare_fillsr   s    r   r+  #Workbook._prepare_format_properties  sH     	 	 	!!# 	 	r   c                    / n/ nU R                    HA  nUR                  b  UR                  U5        UR                  c  M0  UR                  U5        MC     S /[	        U5      -  U l        S /[	        U5      -  U l        U H  nUR                  nX0R
                  U'   M     U H  nUR                  nXPR                  U'   M     g rt  )r`   rJ   r   	dxf_indexr   ra   rc   )r   ra   rc   r   rB  
dxf_formats         r   ru  Workbook._prepare_formats  s     
 I!!-!!),"".""9- &  &3z?2 6C$44 $I&&E%.OOE" $ &J((E&0U# &r   c                     [        U R                  5      nUS	 U R                  b  US	 U H  nUR                  5         M     g )Nr   )listr`   r8   _get_xf_index)r   r`   r   s      r   _set_default_xf_indices Workbook._set_default_xf_indices  sH     t||$ AJ ##/
 !I##% !r   c                    0 nSnU R                    H@  nUR                  5       nXA;   a  X   Ul        SUl        M*  X!U'   X#l        SUl        US-  nMB     X l        U R
                   Ha  nUR                  (       dF  UR                  (       d5  UR                  (       d$  UR                  (       d  UR                  (       d  MZ  SUl        Mc     g )Nr   FTr   )ra   _get_font_key
font_indexhas_fontrf   rc   
font_colorbolditalic	underlinefont_strikeouthas_dxf_font)r   fontsrB  r   keys        r   rv  Workbook._prepare_fonts  s     I))+C|',z	$%*	" #c
',$%)	"
 )   ))I $$>>##&&+++)-	& *r   c                    0 n/ nSnU R                   U R                  -    H  nUR                  n[        U[        5      (       d  [        U5      nUS:X  a  SnXTl        M?  US:X  a	  SUl        MN  US:X  a	  SUl        M]  XQ;   a  X   Ul        Mm  X1U'   X4l        US-  nUR                  (       d  M  UR                  U5        M     X l	        g )N   r   r   0General)
ra   rc   rM   r   r   r   num_format_indexrJ   r   rg   )r   unique_num_formatsrg   rB  r   rM   s         r   rw  Workbook._prepare_num_formats  s    4+;+;;I"--J j#.. _
 ?!"J-7*S -.	*Y&-.	*/-?-K	* 27:.-2*
 %%%&&z2G <J 'r   c                 h   0 nSnU R                    H@  nUR                  5       nXA;   a  X   Ul        SUl        M*  X!U'   X#l        SUl        US-  nMB     X l        [
        R                  " S5      nU R                   H2  nUR                  5       nUR                  U5      (       d  M+  SUl	        M4     g )Nr   FTr   z	[^0None:])
ra   _get_border_keyborder_index
has_borderr   r  r  rc   rn  has_dxf_border)r   bordersrB  r   r  r  s         r   rx  Workbook._prepare_borders.  s     I++-C~)0	&',	$  %).&'+	$
 ) " ZZ-
))I++-C  %%+/	(	 *r   c                 r   0 nSnSUS'   SUS'   U R                    Ha  nUR                  (       d$  UR                  (       d  UR                  (       d  M8  SUl        UR                  Ul        UR                  Ul        Mc     U R                   GH!  nUR                  S:X  aE  UR                  (       a4  UR                  (       a#  UR                  nUR                  Ul        XCl        UR                  S::  aA  UR                  (       a0  UR                  (       d  UR                  Ul        S Ul        SUl        UR                  S::  a)  UR                  (       d  UR                  (       a  SUl        UR                  5       nXQ;   a  X   Ul	        SUl
        GM  X!U'   X#l	        SUl
        US-  nGM$     X l        g )Nr
  r   z0:None:Noner   z17:None:NoneTF)rc   patternbg_colorfg_colorhas_dxf_filldxf_bg_colordxf_fg_colorra   _get_fill_key
fill_indexhas_fillr   )r   fillsrB  r   tmpr  s         r   ry  Workbook._prepare_fillsM  su   
   !m !n ))I  I$6$6):L:L:L)-	&)2););	&)2););	&	 * I   A%)*<*<ASAS((%.%7%7	"%("  A%)*<*<YEWEW%.%7%7	"%)	"$%	!  A%i.@.@YEWEW$%	!))+C|',z	$%*	" #c
',$%)	"
A )D  r   c                 4   U R                   (       d|  U R                   Hl  nUR                  (       a  U R                   R                  S5        UR                  c  M>  UR                  (       d  MQ  U R                   R                  S5        Mn     U R                   $ )NXFComplementsDXFComplements)r   r`   checkboxaddr|  )r   r   s     r   _has_feature_property_bags#Workbook._has_feature_property_bags  sr     ))!\\	%%..22?C&&2y7I7I7I..223CD * )))r   c                    U R                   nU R                  5        GH  nUR                  (       a,  SnUR                  nUR                  SUR                  XC/5        UR
                  (       a,  SnUR
                  nUR                  SUR                  XC/5        UR                  (       d  UR                  (       d  M  SnSnUR                  (       a.  UR                  (       a  UR                  S-   UR                  -   nOUR                  UR                  -   nUR                  SUR                  XC/5        GM     U R                  U5      nXl         U R                  U5      U l
        g )Nr   _xlnm._FilterDatabaser   z_xlnm.Print_Arear  ,z_xlnm.Print_Titles)rh   r   autofilter_arear   rB  print_area_rangerepeat_col_rangerepeat_row_range_sort_defined_names_extract_named_rangesri   )r   rh   r\  rA  sheet_ranges        r   rF  Workbook._prepare_defined_names  s6    **__&E$$#33$$,ekk;O
 %%#44$$'kJ
 %%)?)?)? ))e.D.D"'"8"83">AWAW"WK"'"8"85;Q;Q"QK$$)5;;L9 '@ 00?* 66}Er   c                 F   U H^  nUu  p4pTUR                  SS5      R                  5       nUR                  S5      R                  5       nUR                  US-   U-   5        M`     UR	                  [
        R                  " S5      S9  U H  nUR                  5         M     U$ )N_xlnm.r  r   z::   r  )replacer   r  r   sortoperator
itemgetterpop)r   names	name_listdefined_name_rX   s         r   r  Workbook._sort_defined_names  s    
 I/8,\j (//"=CCEL $**3/557J\D0:=>  	

x**1-
. IMMO  r   c                    SnSnSn0 n0 n0 nU R                   R                   H4  nUR                  nSU R                  U'   UR                  c  M-  SU l        M6     [        U R                   R                  5      n	U R                  5        GHO  n
[        U
R                  5      n[        U
R                  5      n[        U
R                  5      n[        U
R                  5      n[        U
R                  5      nU
R                  nSnU(       d%  U(       d  U(       d  U(       d  U(       d	  U(       d  M  U(       d  U(       d  U(       a  US-  nSnU
R                  (       av  U
R                  nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R                  X(5        [!        U5       H~  nU
R                  U   nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R#                  UUU5        M     [!        U5       H  nUS-  nU
R%                  UX5        M     [!        U5       H  nU
R'                  UU5        M     U
R                   Hm  nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R)                  X'5        Mo     U
R                   Hm  nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R)                  X'5        Mo     U(       d  GM(  U
R*                  nU R,                  R                  U5        GMR     U R                  S S   H0  nUR.                  S:X  d  M  U R                  R1                  U5        M2     [3        U R                  S S9U l        X0l        g )Nr   TFr   r   c                     U R                   $ rt  )id)r   s    r   <lambda>,Workbook._prepare_drawings.<locals>.<lambda>`  s    EHHr   r  )r   r~   _image_extensionr}   descriptionr   r   r   r]   shapesheader_imagesfooter_imagesbackground_image_digestr   _prepare_backgroundrY  _prepare_image_prepare_chart_prepare_shape_prepare_header_imagedrawingr^   r  rX  sortedr   )r   chart_ref_idref_id
drawing_id	image_idsheader_image_idsbackground_idsimageimage_extensionimage_ref_idr\  chart_countimage_countshape_countheader_image_countfooter_image_counthas_backgroundhas_drawingimage_digestrB  r  r   s                         r   rG  Workbook._prepare_drawings  s   
	 ))00E#44O04D_-  ,15. 1 4//667__&Eell+Kell+Kell+K!$U%8%8!9!$U%8%8!9"33NK %%! k[a
" %%.."'"8"8$}}48  1>1+L9F A%L)F3?<0KK&&u-))&B {+U+"'"8"8$}}48  19,&|4F A%L)F.:l+KK&&u-$$ ,, {+!$$ULE ,
 {+$$UJ7 , ,,"'"8"8$}}48  1#33-l;F A%L)F5A\2KK&&u-++F: -" ,,"'"8"8$}}48  1#33-l;F A%L)F5A\2KK&&u-++F: -  {--$$W-] 'b [[^Exx2~""5) $ T[[.DE'r   c                 "   / nU H  nUS   nUS   nUS   nUS:X  a  M  SU;   d  M"  UR                  SS5      u  pxUR                  S5      (       a  UR                  SS5      n	US-   U	-   nOUS:w  a  US-   U-   nUR                  U5        M     U$ )	Nr   r   r
  r  !r  r  r   )splitr  r  r   )
r   rh   ri   r  r   rB  r  rX   r  	xlnm_types
             r   r  Workbook._extract_named_rangesd  s     )L?D OE&q/K .. k! + 1 1#q 9
 ??8,, $Xr :I%+i7Db[%+d2D##D)) *, r   c                 v    UR                  S5      nXR                  ;   a  U R                  U   R                  $ g )Nr   )stripr_   rB  )r   r  s     r   r  Workbook._get_sheet_index  s2    OOC(	'??9-333r   c                     SnSnSnSnSnSnSnU R                  5        H  nUR                  (       d  UR                  (       d  M'  US-  nUR                  (       ag  UR                  (       a  US-  nUS-  nSU l        US-  nUR	                  X5X!5      n	US[        SU	-   S-  5      -  -  nUS[        SU	-   S-  5      -  -  nUR                  (       a  US-  nUS-  nUR                  XB5        X`l        Xpl        M     g )Nr   r   i   T)	r   has_vmlhas_header_vmlr   _prepare_vml_objectsr   _prepare_header_vml_objectsrp   rq   )
r   
comment_idvml_drawing_idvml_data_idvml_header_idvml_shape_id	vml_filescomment_filesr\  counts
             r   rE  Workbook._prepare_vml  s   
	__&E==)=)=NI}}%%!Q&M!OJ(,D%!#22~
 q3u'<#===sD5LD+@'A AA##"!#11-P!*%2"9 'r   c                     Sn0 nU R                  5        H:  n[        UR                  5      nU(       d  M!  UR                  US-   U5        X-  nM<     g )Nr   r   )r   r   tablesrI  )r   table_idseenr\  table_counts        r   rI  Workbook._prepare_tables  sM    __&Eell+K!!(Q,5#H 'r   c                     U R                   R                  5       U l        U R                  U l        U R	                  5        H$  nUR
                  (       d  M  SU l        SU l        M&     g )NT)r   
has_imagesr   r   r   has_dynamic_arraysr   )r   r\  s     r   rJ  Workbook._prepare_metadata  sT    #'#7#7#B#B#D  44__&E'''$(!-1* 'r   c           	      *   0 n0 n/ nU R                  5        H  nXAUR                  '   M     U R                   HB  nUR                  U5        UR                  (       d  M'  UR                  UR                  5        MD     U GH  nUR
                  R                  5        H  nUR
                  U   nUR                  U   b  Xb;  d  X&   c  UR                  U   nXU'   MA  Xb;   a  X&   UR                  U'   MY  U R                  U5      u  pU	c  Mq  U	R                  S5      (       a  / UR                  U'   / X&'   M  X;  a'  [        SU	 SU S35        / UR                  U'   / X&'   M  X   nUR                  " U
6 nXR                  U'   XU'   M     GM     g )N(zUnknown worksheet reference 'z' in range 'z' passed to add_series())r   r   r]   r   combinedformula_idskeysformula_data_get_chart_ranger  r   _get_range_data)r   r   seen_rangesr]   r   r   c_ranger_iddatar  cellss              r   rH  Workbook._add_chart_data  s    
 *I)2y~~& + [[EMM% ~~~enn- !
 E ,,113((1 %%d+71[5I5Q$11$7/3G, )/:/CE&&t, &*%:%:7%C" $
 '',,/1E&&t,+-K( .7	{ C#9$<> 02E&&t,+-K( '1	 !00%8 ,0""4( (,G$g 4 r   c                 b   UR                  S5      nUS:  a  US U nXS-   S  nOgUR                  S5      S:  a  UR                  SS5      u  pVOXDpeUR                  S5      nUR	                  SS5      n [        U5      u  px[        U5      u  pXy:w  a  X:w  a  gX7XU
/4$ ! [         a     gf = f)Nr  r   r   NN:r   z'')rfindfindr  r  r  r)   AttributeError)r   r  posr  r  cell_1cell_2	row_start	col_startrow_endcol_ends              r   r  Workbook._get_chart_range  s    
 mmC 7I!GI&E ::c?Q${{32VV %V OOC(	%%dC0		 &7v%>"Y!26!:W
 I$8i'BBB  		s   6B! !
B.-B.c                 8    U R                   R                  5         g rt  )rw   _sort_string_datar   s    r   rD  !Workbook._prepare_sst_string_data5  s    ((*r   c                     [        5       $ rt  r&   r   s    r   r?  Workbook._get_packager9  s     zr   c                 P    SnUS-   nUS-   nSU4SU4/nU R                  SU5        g )Nz!http://schemas.openxmlformats.orgz/spreadsheetml/2006/mainz"/officeDocument/2006/relationshipsxmlnszxmlns:rr*  )_xml_start_tag)r   schemar3  xmlns_r
attributess        r   r-  Workbook._write_workbookD  sJ     533?? e 


 	J
3r   c                     SnSnSnSnSU4SU4SU4SU4/nU R                   (       a  UR                  S5        U R                  S	U5        g )
Nxlr  i  appName
lastEditedlowestEditedrupBuild)codeNamez&{37E998C4-C9E5-D4B9-71C8-EB1FF731991C}fileVersion)rx   r   _xml_empty_tag)r   app_namelast_editedlowest_edited	rup_buildr7  s         r   r.  Workbook._write_file_versionR  sk     	 !;']+#	

 TUM:6r   c                 P    U R                   S:X  a  g S/nU R                  SU5        g )Nr   )readOnlyRecommendedr   fileSharing)r   rA  r   r7  s     r   r/  Workbook._write_file_sharingf  s)    >>Q01
M:6r   c                     Sn/ nU R                   (       a  UR                  SU R                   45        U R                  (       a  UR                  S5        UR                  SU45        U R                  SU5        g )NiB r?  )date1904r   defaultThemeVersion
workbookPr)r|   r   r3   rA  )r   default_theme_versionr7  s      r   r0  Workbook._write_workbook_pro  si     &
z4+<+<=>>>o.02GHIL*5r   c                 h    U R                  S5        U R                  5         U R                  S5        g )N	bookViews)r4  _write_workbook_viewr5  r   s    r   r1  Workbook._write_book_views}  s*    K(!!#+&r   c                    SU R                   4SU R                  4SU R                  4SU R                  4/nU R                  S:w  a  UR                  SU R                  45        U R                  R                  S:  a,  U R                  R                  S-   nUR                  S	U45        U R                  R                  S:  a'  UR                  S
U R                  R                  45        U R                  SU5        g )NxWindowyWindowwindowWidthwindowHeightrH   tabRatior   r   
firstSheet	activeTabworkbookView)
rr   rs   rt   ru   rv   r   rS   
firstsheetr@  rA  )r   r7  r_  s      r   rT  Workbook._write_workbook_view  s     &&D--.T//0	

 >>S z4>>:; ))A-,,77!;J|Z89 **Q.{D,?,?,K,KLMNJ7r   c                     U R                  S5        SnU R                  5        H.  nU R                  UR                  XR                  5        US-  nM0     U R                  S5        g )Nsheetsr   )r4  r   _write_sheetr   rA  r5  )r   id_numr   s      r   r2  Workbook._write_sheets  sY    H%*Iinnf6F6FGaKF + 	(#r   c                     SU4SU4/nUS:X  a  UR                  S5        OUS:X  a  UR                  S5        UR                  SS[        U5      -   45        U R                  S	U5        g )
Nr   sheetIdr   )staterA  r
  )rh  
veryHiddenzr:idrIdr\  )r   r   rA  )r   r   sheet_idrA  r7  s        r   rc  Workbook._write_sheet  st     TN!


 Q;12q[56653x=#89:GZ0r   c                 b   SU R                   4/nU R                  S:X  a/  UR                  SU R                  45        UR                  S5        O-U R                  S:X  a  UR                  SU R                  45        U R                  (       a  UR                  S5        U R	                  SU5        g )NcalcIdr   calcMode)
calcOnSaver  r  )fullCalcOnLoad1calcPr)r   r   r   r   rA  rJ  s     r   r4  Workbook._write_calc_pr  s    ./
>>X%z4>>:;12^^},z4>>:;56Hj1r   c                     U R                   (       d  g U R                  S5        U R                    H  nU R                  U5        M     U R                  S5        g )NdefinedNames)rh   r4  _write_defined_namer5  )r   r  s     r   r3  Workbook._write_defined_names  sJ    !!N+ ..L$$\2 / 	.)r   c                     US   nUS   nUS   nUS   nSU4/nUS:w  a  UR                  SU45        U(       a  UR                  S5        U R                  S	XF5        g )
Nr   r   r
     r   r   localSheetId)rA  r   definedName)r   _xml_data_element)r   r  r   rk  r  rA  r7  s          r   rw  Workbook._write_defined_name  sm    A?"1oatn%
r>~x89m,}kFr   )IrQ   r   r   r   r   rY   r[   r]   r9   ro   rj   rl   r3   r8   r>   r   rh   rk   r   r^   rd   rc   r   r;   r   rU   rV   r.   r   rf   r`   r   r   r   r   r   r}   r~   r:   rW   r?   ri   r7   rq   rg   rp   re   r   r<   rT   rX   rZ   r_   rw   r5   r4   r6   rv   r2   r=   r|   rx   ry   rz   r{   ru   rt   rS   r\   rr   rb   ra   rs   r   r0   Nrt  )F)FF)___name__
__module____qualname____firstlineno____doc__r    r   r*   r   r   r   r   r   r	   r   PathLiker
   r   rO   r   r   r   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r  r  rA   r$  r'  r7  r   r   ri  r+  ru  r  rv  rw  rx  ry  r  rF  r  rG  r  r  rE  rI  rJ  rH  r  rD  r?  r-  r.  r/  r0  r1  rT  r2  rc  r4  r3  rw  __static_attributes____classcell__)r   s   @r   r,   r,   1   sn    "O CG,0q5bj"++!=>?q $sCx.)q 
	q qf ;?FSMF	F& <@GSMG	G$V 8>c3h >H
	
5 >@3 4 C 8 #($)   	
 " 
B<B&c &3 &4 &.1xc5j0A'B 1d 1&)& @@ T8S%(CGH@  BC
	@ 
@F NR#BC#	#69 9c 9gen 9v$DO $)# )(92E )' ' /# /$ /"&%NbH'R,\$18&  .D+'Z0>5 n*(FT6L(\:&3P$2E,N"CH+47(76'80	$1 2
*G Gr   r,   c                   "    \ rS rSrSrSS jrSrg)rR   i  zQ
A class to track worksheets data such as the active sheet and the
first sheet.

Nc                      SU l         SU l        g )Nr   r@  r_  r   s    r   rO   WorksheetMeta.__init__  s    r   r  r  )r  r  r  r  r  rO   r  r   r   r   rR   rR     s    r   rR   c                   6    \ rS rSrSrS	S jrS\4S jrS rSr	g)
r   i  zA
A class to track duplicate embedded images between worksheets.

Nc                      / U l         0 U l        g rt  )r~   image_indexesr   s    r   rO   EmbeddedImages.__init__  s    r   r  c                     U R                   R                  UR                  5      nUcH  U R                  R	                  U5        [        U R                  5      nX R                   UR                  '   U$ )zl
Get the index of an embedded image.

Args:
    image: The image to lookup.

Returns:
    The image index.

)r  rP   r  r~   r   r   )r   r  image_indexs      r   get_image_indexEmbeddedImages.get_image_index  s\     ((,,U]];KKu%dkk*K0;u}}-r   c                 2    [        U R                  5      S:  $ )zV
Check if the worksheet has embedded images.

Args:
    None.

Returns:
    Boolean.

r   )r   r~   r   s    r   r  EmbeddedImages.has_images  s     4;;!##r   )r  r~   r  )
r  r  r  r  r  rO   r   r  r  r  r   r   r   r   r     s    
 U ($r   r   )Er  r   r  rT  r   r   decimalr   	fractionsr   typingr   r   r	   r
   r   r   r   r   warningsr   zipfiler   r   r   r   xlsxwriter.imager   r  r   
chart_arear   	chart_barr   chart_columnr   chart_doughnutr   
chart_liner   	chart_pier   chart_radarr   chart_scatterr   chart_stockr   
chartsheetr    
exceptionsr!   r"   r#   r$   formatr%   r[  r'   sharedstringsr(   utilityr)   r   r*   	XMLwriterr,   rR   r   r   r   r   <module>r     s     	 	  '   H H H  @ @ "  !  % ) !  # ' # "    , &  nGy"" nGd5	 	)$ )$r   