
    Mh+                        S SK Jr  S SKJr  S SKrS SKrS SKJrJrJ	r	J
r
Jr  S SKJr  S SKJrJr  \(       a  S SKJrJrJrJr  S SKJr   " S	 S
\5      rg)    )annotations)defaultdictN)TYPE_CHECKINGAnyDefaultDictcastoverload)ExcelWriter)combine_kwargsvalidate_freeze_panes)ExcelWriterIfSheetExistsFilePathStorageOptionsWriteExcelBuffer)	ExcelCellc                    ^  \ rS rSrSrSr       S               SU 4S jjjr\S 5       r\SS j5       r	SS jr
    S           SS jjrSS	 jrSS
 jr\SS j5       r\SS j5       rSS jr      SS jrSrU =r$ )	ODSWriter   odf)z.odsc	                   > SSK Jn
  US:X  a  [        S5      e[        X5      nU
" S0 UD6U l        [
        TU ]  UUUUUS9  0 U l        g )Nr   )OpenDocumentSpreadsheetaz&Append mode is not supported with odf!)modestorage_optionsif_sheet_existsengine_kwargs )odf.opendocumentr   
ValueErrorr   _booksuper__init___style_dict)selfpathenginedate_formatdatetime_formatr   r   r   r   kwargsr   	__class__s              L/var/www/html/env/lib/python3.13/site-packages/pandas/io/excel/_odswriter.pyr"   ODSWriter.__init__#   s_     	=3;EFF&}=,=}=
++' 	 	
 ,.    c                    U R                   $ )z
Book instance of class odf.opendocument.OpenDocumentSpreadsheet.

This attribute can be used to access engine-specific features.
)r    )r$   s    r+   bookODSWriter.bookA   s     zzr-   c                    SSK Jn  U R                  R                  U5       Vs0 s H  nUR	                  S5      U_M     nnU$ s  snf )z(Mapping of sheet names to sheet objects.r   )Tablename)	odf.tabler2   r/   getElementsByTypegetAttribute)r$   r2   sheetresults       r+   sheetsODSWriter.sheetsJ   sT     	$ 44U;
; v&-; 	 
 	
s   Ac                    U R                   R                  5        H(  nU R                  R                  R	                  U5        M*     U R                  R                  U R                  R                  5        g)z
Save workbook to disk.
N)r9   valuesr/   spreadsheet
addElementsave_handleshandle)r$   r7   s     r+   _saveODSWriter._saveU   sM     [['')EII!!,,U3 *		t}}++,r-   c                   SSK JnJnJn  SSKJn	  U R                  U5      nUc   eX R                  ;   a  U R                  U   n
O+U" US9n
U R                  R                  R                  U
5        [        U5      (       a.  [        [        [        [        4   U5      nU R                  X%5        [!        U5       H  nU
R                  U" 5       5        M     [#        U5      n[#        [        5      n[%        US S9 GH  nXR&                     (       d4  [!        U5       H%  nXR&                     R                  U" 5       5        M'     [!        UR(                  XR&                     -
  5       H;  nXR&                     R                  U" 5       5        XR&                  ==   S-  ss'   M=     U R+                  U5      u  nnXR&                     R                  U5        XR&                  ==   S-  ss'   U	" US	9nUR                  U5        GM     [-        U5      S:  aA  [!        [/        UR1                  5       5      S-   5       H  nU
R                  UU   5        M     gg)
z!
Write the frame cells using odf
r   )r2   	TableCellTableRow)PNr3   c                2    U R                   U R                  4$ N)rowcol)cells    r+   <lambda>(ODSWriter._write_cells.<locals>.<lambda>   s    DHHdhh3Gr-   )key   )text)r4   r2   rE   rF   odf.textrG   _get_sheet_namer9   r/   r=   r>   r   r   tupleint_create_freeze_panesranger   sortedrK   rL   _make_table_celllenmaxkeys)r$   cells
sheet_namestartrowstartcolfreeze_panesr2   rE   rF   rG   wks_rows	col_countrM   pvaluetcprow_nrs                      r+   _write_cellsODSWriter._write_cells]   s   	
 	

 	))*5
%%%$++j)CZ(CII!!,,S1 ..c3h>L%%j?xANN8:& ! (1!,S!1	5&GHDXX&xAN--ik: ) 488i&99:XX)))+6((#q(# ; ..t4JFBN%%b)hh1$vAMM! I$ t9q=DIIK 01 45tF|, 6 r-   c                    0 nU R                  UR                  5      nUb  X2S'   UR                  b5  UR                  b(  [	        SUR                  5      US'   UR                  US'   U$ )zConvert cell attributes to OpenDocument attributes

Parameters
----------
cell : ExcelCell
    Spreadsheet cell data

Returns
-------
attributes : Dict[str, Union[int, str]]
    Dictionary with attributes and attribute values
	stylenamerQ   numberrowsspannednumbercolumnsspanned)_process_stylestyle
mergestartmergeendr\   )r$   rM   
attributes
style_names       r+   _make_table_cell_attributes%ODSWriter._make_table_cell_attributes   si     ,.
((4
!&0{#??&4==+D.1!T__.EJ*+15J-.r-   c                   SSK Jn  U R                  U5      nU R                  UR                  5      u  pEU=pg[        U[        5      (       a<  [        U5      R                  5       n[        U5      R                  5       nUU" SUUS94$ [        U[        R                  5      (       a*  UR                  5       nUR                  S5      nUU" SXsS94$ [        U[        R                  5      (       aD  UR                   SUR                  S	 SUR                   S	 3nUR                  S
5      nUU" SXsS94$ [        U[        5      (       a
  UU" SUUS94$ UU" SUUS94$ )zConvert cell data to an OpenDocument spreadsheet cell

Parameters
----------
cell : ExcelCell
    Spreadsheet cell data

Returns
-------
pvalue, cell : Tuple[str, TableCell]
    Display value, Cell value
r   )rE   boolean)	valuetypebooleanvalueru   z%cdate)r{   	datevalueru   -02dz%xstring)r{   stringvalueru   float)r{   valueru   )r4   rE   rw   _value_with_fmtval
isinstanceboolstrlowerupperdatetime	isoformatstrftimer}   yearmonthday)r$   rM   rE   ru   r   fmtrg   r   s           r+   rZ   ODSWriter._make_table_cell   sp    	(55d;
''1c4  HNN$EX^^%F'!&)  X..//MMOE\\$'FFeS  X]]++xxj#))C#''#?E\\$'FFeS  S!!& %)  %) r-   c                    g rJ   r   r$   rr   s     r+   rq   ODSWriter._process_style       r-   c                    g rJ   r   r   s     r+   rq   r      r   r-   c                   SSK JnJnJnJn  Uc  g[
        R                  " U5      nX`R                  ;   a  U R                  U   $ S[        U R                  5      S-    3nXpR                  U'   U" USS9nSU;   a1  US   n	U	R                  S	S
5      (       a  UR                  U" S	S95        SU;   a>  US   n
U
R                  5        H%  u  pSS0nUR                  U" SU 3X   0S95        M'     SU;   a_  US   nUR                  S5      nU(       a  UR                  U" US95        UR                  S5      nU(       a  UR                  U" US95        U R                  R                  R                  U5        U$ )zConvert a style dictionary to a OpenDocument style sheet

Parameters
----------
style : Dict
    Style dictionary

Returns
-------
style_key : str
    Unique style key for later reference in sheet
r   )ParagraphPropertiesStyleTableCellPropertiesTextPropertiesNpdrQ   z
table-cell)r3   familyfontboldF)
fontweightbordersthinz0.75pt solid #000000border)ru   	alignment
horizontal)	textalignvertical)verticalalign)	odf.styler   r   r   r   jsondumpsr#   r[   getr>   itemsr/   styles)r$   rr   r   r   r   r   	style_keyr3   	odf_styler   r   side	thicknessthickness_translationr   r   r   s                    r+   rq   r      s   	
 	
 =JJu%	(((##I..C(()!+,-&*#tL9	U?=Dxx&&$$^v%FGI&G#*==?)/1G(H%$$'&,TFO5J5U#V $3 %k*I"|4J$$%8:%NO }}Z0H$$%8x%PQ		##I.r-   c           
        SSK JnJnJnJnJn  U" SS9nU R                  R                  R                  U5        U" SS9n	UR                  U	5        U" 5       n
U	R                  U
5        U" SS9nU
R                  U5        U" US9n
UR                  U
5        U
R                  U" SSS	S
95        U
R                  U" SSS	S
95        U
R                  U" SS[        US   5      S
95        U
R                  U" SS[        US   5      S
95        U
R                  U" SS[        US   5      S
95        U
R                  U" SS[        US   5      S
95        g)z
Create freeze panes in the sheet.

Parameters
----------
sheet_name : str
    Name of the spreadsheet
freeze_panes : tuple of (int, int)
    Freeze pane location x and y
r   )
ConfigItemConfigItemMapEntryConfigItemMapIndexedConfigItemMapNamedConfigItemSetzooo:view-settingsrH   ViewsTablesHorizontalSplitModeshort2)r3   typerR   VerticalSplitModeHorizontalSplitPositionrV   VerticalSplitPositionrQ   PositionRightPositionBottomN)

odf.configr   r   r   r   r   r/   settingsr>   r   )r$   r_   rb   r   r   r   r   r   config_item_setconfig_item_map_indexedconfig_item_map_entryconfig_item_map_nameds               r+   rW   ODSWriter._create_freeze_panes,  sm   	
 	
 (-@A		%%o6"6G"D""#:; 2 4**+@A 2 A(()>? 2
 C(()>?((1cJ	
 	((/gCH	
 	((.U\RS_AU	

 	((,5s<PQ??S	

 	((O%c,q/>RS	
 	((,5s<PQ??ST	
r-   )r    r#   )NNNwNNN)r%   z)FilePath | WriteExcelBuffer | ExcelWriterr&   
str | Noner'   r   r   r   r   zStorageOptions | Noner   zExcelWriterIfSheetExists | Noner   dict[str, Any] | NonereturnNone)r   dict[str, Any])r   r   )Nr   r   N)r^   zlist[ExcelCell]r_   r   r`   rV   ra   rV   rb   ztuple[int, int] | Noner   r   )r   zdict[str, int | str])r   ztuple[object, Any])rr   r   r   r   )rr   r   r   r   )rr   r   r   r   )r_   r   rb   ztuple[int, int]r   r   )__name__
__module____qualname____firstlineno___engine_supported_extensionsr"   propertyr/   r9   rB   rk   rw   rZ   r	   rq   rW   __static_attributes____classcell__)r*   s   @r+   r   r      sT   G%
 ""&15;?/3.7. .  	. . /. 9. -. 
. .<    - "&/39-9- 9- 	9-
 9- -9- 
9-v,@D    2h9
9
-<9
	9
 9
r-   r   )
__future__r   collectionsr   r   r   typingr   r   r   r   r	   pandas.io.excel._baser
   pandas.io.excel._utilr   r   pandas._typingr   r   r   r   pandas.io.formats.excelr   r   r   r-   r+   <module>r      sG    " #    .
   2F
 F
r-   