
    aVg*                        d dl mZ d dlmZ d dlZd dlmZmZmZm	Z	m
Z
 d dlmc mZ d dlmZmZmZ d dlmZ d dlmZmZ erd dlmZ d d	lmZ  G d
 de      Zy)    )annotations)defaultdictN)TYPE_CHECKINGAnyDefaultDictTuplecast)FilePathStorageOptionsWriteExcelBuffer)ExcelWriter)combine_kwargsvalidate_freeze_panesOpenDocumentSpreadsheet)	ExcelCellc                       e Zd ZdZdZ	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZed        Zej                  dd       Zedd       Z	ddZ
	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZdd	Zdd
ZddZ	 	 	 	 	 	 ddZ xZS )	ODSWriterodf)z.odsc	                    ddl m}
 |dk(  rt        d      t        |   |||||       t        ||	      } |
di || _        i | _        y )Nr   r   az&Append mode is not supported with odf!)modestorage_optionsif_sheet_existsengine_kwargs )odf.opendocumentr   
ValueErrorsuper__init__r   _book_style_dict)selfpathenginedate_formatdatetime_formatr   r   r   r   kwargsr   	__class__s              [/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/io/excel/_odswriter.pyr    zODSWriter.__init__$   sa     	=3;EFF++' 	 	
 '}f=,=}=
+-    c                    | j                   S )z
        Book instance of class odf.opendocument.OpenDocumentSpreadsheet.

        This attribute can be used to access engine-specific features.
        )r!   )r#   s    r*   bookzODSWriter.bookB   s     zzr+   c                2    | j                          || _        y)zO
        Set book instance. Class type will depend on the engine used.
        N)_deprecate_set_bookr!   )r#   others     r*   r-   zODSWriter.bookK   s    
 	  "
r+   c                    ddl m} | j                  j                  |      D ci c]  }|j	                  d      | }}|S c c}w )z(Mapping of sheet names to sheet objects.r   )Tablename)	odf.tabler2   r-   getElementsByTypegetAttribute)r#   r2   sheetresults       r*   sheetszODSWriter.sheetsS   sQ     	$ 44U;
 v&-
 
 	
s   Ac                    | j                   j                         D ]'  }| j                  j                  j	                  |       ) | j                  j                  | j                  j                         y)z(
        Save workbook to disk.
        N)r9   valuesr-   spreadsheet
addElementsave_handleshandle)r#   r7   s     r*   _savezODSWriter._save^   sR     [['') 	4EII!!,,U3	4		t}}++,r+   c                   ddl m}m}m} ddlm}	 | j                  |      }|J || j                  v r| j                  |   }
n. ||      }
| j                  j                  j                  |
       t        |      r/t        t        t        t        f   |      }| j                  ||       t!        |      D ]  }|
j                   |               t#        |      }t#        t              }t%        |d       D ]  }||j&                     s3t!        |      D ]%  }||j&                     j                   |              ' t!        |j(                  ||j&                     z
        D ]<  }||j&                     j                   |              ||j&                  xx   dz  cc<   > | j+                  |      \  }}||j&                     j                  |       ||j&                  xx   dz  cc<    |	|	      }|j                  |        t-        |      dkD  r?t!        t/        |j1                               dz         D ]  }|
j                  ||           yy)
z1
        Write the frame cells using odf
        r   )r2   	TableCellTableRow)PNr3   c                2    | j                   | j                  fS )N)rowcol)cells    r*   <lambda>z(ODSWriter._write_cells.<locals>.<lambda>   s    DHHdhh3G r+   )key   )text)r4   r2   rC   rD   odf.textrE   _get_sheet_namer9   r-   r<   r=   r   r	   r   int_create_freeze_panesranger   sortedrH   rI   _make_table_celllenmaxkeys)r#   cells
sheet_namestartrowstartcolfreeze_panesr2   rC   rD   rE   wks_rows	col_countrJ   pvaluetcprow_nrs                      r*   _write_cellszODSWriter._write_cellsf   s	   	
 	

 	))*5
%%%$++j)CZ(CII!!,,S1 .c3h>L%%j,?x 	'ANN8:&	' (1!,S!1	5&GH 	DTXX&x ;AN--ik:; 488i&99: )TXX)))+6$((#q(#) ..t4JFBN%%b)dhh1$vAMM!	$ t9q=DIIK 01 45 -tF|,- r+   c                    i }| j                  |j                        }|||d<   |j                  4|j                  (t	        d|j                        |d<   |j                  |d<   |S )a*  Convert cell attributes to OpenDocument attributes

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

        Returns
        -------
        attributes : Dict[str, Union[int, str]]
            Dictionary with attributes and attribute values
        	stylenamerM   numberrowsspannednumbercolumnsspanned)_process_stylestyle
mergestartmergeendrW   )r#   rJ   
attributes
style_names       r*   _make_table_cell_attributesz%ODSWriter._make_table_cell_attributes   sk     ,.
((4
!&0J{#??&4==+D.1!T__.EJ*+15J-.r+   c                   ddl m} | j                  |      }| j                  |j                        \  }}|x}}t        |t              r2t        |      j                         }t        |      j                         }t        |t        j                        r.|j                         }|j                  d      }| |d||      fS t        |t        j                        rH|j                   d|j                  dd|j                   d}|j                  d      }| |d||      fS t        d	t"        d
t$        d
t        di}| ||t'        |         ||      fS )a  Convert cell data to an OpenDocument spreadsheet cell

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

        Returns
        -------
        pvalue, cell : Tuple[str, TableCell]
            Display value, Cell value
        r   )rC   z%cdate)	valuetype	datevaluero   -02dz%xstringfloatboolean)rt   valuero   )r4   rC   rq   _value_with_fmtval
isinstanceboolstrlowerupperdatetime	isoformatstrftimers   yearmonthdayrQ   ry   type)	r#   rJ   rC   ro   r}   fmtrb   r{   class_to_cell_types	            r*   rU   zODSWriter._make_table_cell   sI    	(55d;
''1Sc4 HNN$EX^^%Fc8,,-MMOE\\$'FFe
S  X]]+xxj#))C#''#?E\\$'FFe
S  XWwi	" 0c;) r+   c                   ddl m}m}m}m} |yt        j                  |      }|| j                  v r| j                  |   S dt        | j                        dz    }|| j                  |<    ||d      }d|v r/|d   }	|	j                  d	d
      r|j                   |d	             d|v rA|d   }
|
j                         D ])  \  }}ddi}|j                   |d| ||   i             + d|v r[|d   }|j                  d      }|r|j                   ||             |j                  d      }|r|j                   ||             | j                  j                  j                  |       |S )a  Convert 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pdrM   z
table-cell)r3   familyfontboldF)
fontweightbordersthinz0.75pt solid #000000border)ro   	alignment
horizontal)	textalignvertical)verticalalign)	odf.styler   r   r   r   jsondumpsr"   rV   getr=   itemsr-   styles)r#   rl   r   r   r   r   	style_keyr3   	odf_styler   r   side	thicknessthickness_translationr   r   r   s                    r*   rk   zODSWriter._process_style   s   	
 	
 =JJu%	(((##I..C(()!+,-&*#tL9	U?=Dxx&$$^v%FGI&G#*==? i)/1G(H%$$'&,TFO5J95U#V %k*I"|4J$$%8:%NO }}Z0H$$%8x%PQ		##I.r+   c           
        ddl m}m}m}m}m}  |d      }| j                  j                  j                  |        |d      }	|j                  |	        |       }
|	j                  |
        |d      }|
j                  |        ||      }
|j                  |
       |
j                   |ddd	
             |
j                   |ddd	
             |
j                   |ddt        |d         
             |
j                   |ddt        |d         
             |
j                   |ddt        |d         
             |
j                   |ddt        |d         
             y)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-settingsrF   ViewsTablesHorizontalSplitModeshort2)r3   r   rN   VerticalSplitModeHorizontalSplitPositionrQ   VerticalSplitPositionrM   PositionRightPositionBottomN)

odf.configr   r   r   r   r   r-   settingsr=   r   )r#   rZ   r]   r   r   r   r   r   config_item_setconfig_item_map_indexedconfig_item_map_entryconfig_item_map_nameds               r*   rR   z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+   )NNNwNNN)r$   z)FilePath | WriteExcelBuffer | ExcelWriterr%   
str | Noner&   r   r   r   r   r   r   r   r   zdict[str, Any] | NonereturnNone)r0   r   r   r   )r   dict[str, Any])r   r   )Nr   r   N)rY   zlist[ExcelCell]rZ   r   r[   rQ   r\   rQ   r]   ztuple[int, int] | Noner   r   )r   zdict[str, int | str])r   ztuple[object, Any])rl   r   r   r   )rZ   r   r]   ztuple[int, int]r   r   )__name__
__module____qualname___engine_supported_extensionsr    propertyr-   setterr9   rA   rf   rq   rU   rk   rR   __classcell__)r)   s   @r*   r   r       s9   G%
 ""&*.&*/3.7. .  	. . (. $. -. 
.<   
[[   - "&/39-9- 9- 	9-
 9- -9- 
9-v,5n2h9
9
-<9
	9
r+   r   )
__future__r   collectionsr   r   typingr   r   r   r   r	   pandas._libs.json_libsr   pandas._typingr
   r   r   pandas.io.excel._baser   pandas.io.excel._utilr   r   r   r   pandas.io.formats.excelr   r   r   r+   r*   <module>r      sM    " #   !    .
 81{
 {
r+   