Ë
    u™ãj&  ã                  óœ   — d dl mZ d dlmZmZmZ d dlZd dlm	Z	 d dl
Zd dlmZ erd dlmZ d dlmZ d dlmZmZmZmZ  G d	„ d
ed   «      Zy)é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚcastN)Úimport_optional_dependency)ÚBaseExcelReader©ÚOpenDocument)ÚNaTType)ÚFilePathÚ
ReadBufferÚScalarÚStorageOptionsc                  ó¼   ‡ — e Zd Z	 	 d	 	 	 	 	 	 	 dˆ fd„Zedd„«       Z	 	 	 	 dd„Zedd„«       Zedd„«       Z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 )Ú	ODFReaderc                ó@   •— t        d«       t        ‰| �	  |||¬«       y)a¸  
        Read tables out of OpenDocument formatted files.

        Parameters
        ----------
        filepath_or_buffer : str, path to be parsed or
            an open readable stream.
        storage_options : dict, optional
            Extra options that make sense for a particular storage connection,
            e.g. host, port, username, password, etc. For HTTP(S) URLs the
            key-value pairs are forwarded to ``urllib.request.Request`` as
            header options. For other URLs (e.g. starting with "s3://", and
            "gcs://") the key-value pairs are forwarded to ``fsspec.open``.
            Please see ``fsspec`` and ``urllib`` for more details, and for
            more examples on storage options refer `here
            <https://pandas.pydata.org/docs/user_guide/io.html?#reading-writing-remote-files>`__.
        engine_kwargs : dict, optional
            Arbitrary keyword arguments passed to excel engine.
        Úodf)Ústorage_optionsÚengine_kwargsN)r   ÚsuperÚ__init__)ÚselfÚfilepath_or_bufferr   r   Ú	__class__s       €úe/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/io/excel/_odfreader.pyr   zODFReader.__init__   s(   ø€ ô2 	# 5Ô)Ü‰ÑØØ+Ø'ð 	õ 	
ó    c                ó   — ddl m} |S )Nr   r	   )Úodf.opendocumentr
   )r   r
   s     r   Ú_workbook_classzODFReader._workbook_class>   s   € å1àÐr   c                ó    — ddl m}  ||fi |¤ŽS )Nr   )Úload)r   r!   )r   r   r   r!   s       r   Úload_workbookzODFReader.load_workbookD   s   € õ 	*áÐ&Ñ8¨-Ñ8Ð8r   c                 ó   — y)z'Property for compat with other readers.Ú © )r   s    r   Úempty_valuezODFReader.empty_valueK   s   € ð r   c                óŒ   — ddl m} | j                  j                  |«      }|D �cg c]  }|j	                  d«      ‘Œ c}S c c}w )z4Return a list of sheet names present in the documentr   ©ÚTableÚname)Ú	odf.tabler)   ÚbookÚgetElementsByTypeÚgetAttribute)r   r)   ÚtablesÚts       r   Úsheet_nameszODFReader.sheet_namesP   s8   € õ 	$à—‘×,Ñ,¨UÓ3ˆØ06Ö7¨1�—‘˜vÕ&Ò7Ð7ùÒ7s   ¦Ac                óp   — ddl m} | j                  |«       | j                  j	                  |«      }||   S )Nr   r(   )r+   r)   Úraise_if_bad_sheet_by_indexr,   r-   )r   Úindexr)   r/   s       r   Úget_sheet_by_indexzODFReader.get_sheet_by_indexX   s1   € Ý#à×(Ñ(¨Ô/Ø—‘×,Ñ,¨UÓ3ˆØ�e‰}Ðr   c                óâ   — ddl m} | j                  |«       | j                  j	                  |«      }|D ]  }|j                  d«      |k(  sŒ|c S  | j                  «        t        d|› d�«      ‚)Nr   r(   r*   zsheet z
 not found)r+   r)   Úraise_if_bad_sheet_by_namer,   r-   r.   ÚcloseÚ
ValueError)r   r*   r)   r/   Útables        r   Úget_sheet_by_namezODFReader.get_sheet_by_name_   sm   € Ý#à×'Ñ'¨Ô-Ø—‘×,Ñ,¨UÓ3ˆàò 	ˆEØ×!Ñ! &Ó)¨TÓ1Ø’ð	ð 	�
‰
ŒÜ˜6 $  zÐ2Ó3Ð3r   c                óø  ‡— ddl m} ddlm}m}m}  |«       j                  } |«       j                  }||h}	|j                  |«      }
d}d}g }|
D �]d  }d}g Š|j                  D ]·  }t        |d«      sŒ|j                  |	v sŒ|j                  |k(  r|df|j                  vr| j                  }n| j                  |«      }| j                  |«      }|| j                  k(  r||z  }Œ‚‰j                  | j                  g|z  «       d}‰j                  |g|z  «       Œ¹ |t        ‰«      k  rt        ‰«      }| j!                  |«      }t        ‰«      dk(  r||z  }nE|j                  | j                  gg|z  «       d}|j                  ˆfd„t#        |«      D «       «       |€�ŒUt        |«      |k\  s�Œe n |D ]<  }t        |«      |k  sŒ|j                  | j                  g|t        |«      z
  z  «       Œ> |S )z9
        Parse an ODF Table into a list of lists
        r   ©ÚOFFICENS)ÚCoveredTableCellÚ	TableCellÚTableRowÚqnameÚvaluec              3  ó"   •K  — | ]  }‰–— Œ y ­w©Nr%   )Ú.0Ú_Ú	table_rows     €r   ú	<genexpr>z+ODFReader.get_sheet_data.<locals>.<genexpr>¦   s   øè ø€ ÒB¨1œYÑBùs   ƒ)Úodf.namespacesr>   r+   r?   r@   rA   rB   r-   Ú
childNodesÚhasattrÚ
attributesr&   Ú_get_cell_valueÚ_get_column_repeatÚextendÚlenÚ_get_row_repeatÚrange)r   ÚsheetÚfile_rows_neededr>   r?   r@   rA   Úcovered_cell_nameÚtable_cell_nameÚ
cell_namesÚ
sheet_rowsÚ
empty_rowsÚmax_row_lenr:   Ú	sheet_rowÚempty_cellsÚ
sheet_cellrC   Úcolumn_repeatÚ
row_repeatÚrowrH   s                        @r   Úget_sheet_datazODFReader.get_sheet_datal   s  ø€ õ 	,÷	
ñ 	
ñ -Ó.×4Ñ4ÐÙ#›+×+Ñ+ˆØ'¨Ð9ˆ
à×,Ñ,¨XÓ6ˆ
Øˆ
Øˆà.0ˆà#ó %	ˆIØˆKØ02ˆIà'×2Ñ2ò B�
Ü˜: wÕ/°J×4DÑ4DÈ
Ò4Rð #×(Ñ(Ð,=Ò=Ø% wÐ/°z×7LÑ7LÑLà $× 0Ñ 0™à $× 4Ñ 4°ZÓ @˜à$(×$;Ñ$;¸JÓ$G�Mð  × 0Ñ 0Ò0Ø# }Ñ4™à!×(Ñ(¨$×*:Ñ*:Ð);¸kÑ)IÔJØ&'˜Ø!×(Ñ(¨%¨°=Ñ)@ÕAð'Bð* œS ›^Ò+Ü! )›n�à×-Ñ-¨iÓ8ˆJÜ�9‹~ Ò"Ø˜jÑ(‘
ð —‘˜t×/Ñ/Ð0Ð1°JÑ>Ô?Ø�
Ø—‘ÓB´°jÓ0AÔBÔBØÒ+´°E³
Ð>NÔ0NÙðK%	ðP ò 	JˆCÜ�3‹x˜+Ó%Ø—
‘
˜D×,Ñ,Ð-°¼sÀ3»xÑ1GÑHÕIð	Jð ˆr   c                ó\   — ddl m} t        |j                  j	                  |dfd«      «      S )z«
        Return number of times this row was repeated
        Repeating an empty row appeared to be a common way
        of representing sparse rows in the table.
        r   ©ÚTABLENSznumber-rows-repeatedé   ©rJ   re   ÚintrM   Úget)r   ra   re   s      r   rR   zODFReader._get_row_repeat±   s)   € õ 	+ä�3—>‘>×%Ñ% wÐ0FÐ&GÈÓKÓLÐLr   c                ó\   — ddl m} t        |j                  j	                  |dfd«      «      S )Nr   rd   znumber-columns-repeatedrf   rg   )r   Úcellre   s      r   rO   zODFReader._get_column_repeat»   s'   € Ý*ä�4—?‘?×&Ñ&¨Ð1JÐ'KÈQÓOÓPÐPr   c                óL  — ddl m} t        |«      dk(  rt        j                  S |j
                  j                  |df«      }|dk(  rt        |«      dk(  ryy|€| j                  S |d	k(  r:t        |j
                  j                  |d
f«      «      }t        |«      }||k(  r|S |S |dk(  r(|j
                  j                  |d
f«      }t        |«      S |dk(  r| j                  |«      S |dk(  r(|j
                  j                  |d
f«      }t        |«      S |dk(  r2|j
                  j                  |df«      }t        j                  |«      S |dk(  r8t        j                  t        |«      «      }t        d|j                  «       «      S | j                  «        t!        d|› �«      ‚)Nr   r=   z#N/Az
value-typeÚbooleanÚTRUETFÚfloatrC   Ú
percentageÚstringÚcurrencyÚdatez
date-valueÚtimer   zUnrecognized type )rJ   r>   ÚstrÚnpÚnanrM   ri   r&   ro   rh   Ú_get_cell_string_valueÚpdÚ	Timestampr   rt   r8   r9   )r   rk   r>   Ú	cell_typeÚ
cell_valueÚvalÚstamps          r   rN   zODFReader._get_cell_valueÀ   s‹  € Ý+äˆt‹9˜ÒÜ—6‘6ˆMà—O‘O×'Ñ'¨°<Ð(@ÓAˆ	Ø˜	Ò!Ü�4‹y˜FÒ"ØØØÐØ×#Ñ#Ð#Ø˜'Ò!ä˜tŸ™×2Ñ2°H¸gÐ3FÓGÓHˆJÜ�j“/ˆCØ�jÒ Ø�
ØÐØ˜,Ò&ØŸ™×,Ñ,¨h¸Ð-@ÓAˆJÜ˜Ó$Ð$Ø˜(Ò"Ø×.Ñ.¨tÓ4Ð4Ø˜*Ò$ØŸ™×,Ñ,¨h¸Ð-@ÓAˆJÜ˜Ó$Ð$Ø˜&Ò ØŸ™×,Ñ,¨h¸Ð-EÓFˆJÜ—<‘< 
Ó+Ð+Ø˜&Ò Ü—L‘L¤ T£Ó+ˆEä˜ %§*¡*£,Ó/Ð/à�J‰JŒLÜÐ1°)°Ð=Ó>Ð>r   c                óv  — ddl m} ddlm}m} |df}|df}|df}|df}g }	d}
|j
                  D ]ø  }t        ||«      rÁ|j                  |k(  r<t        |j                  j                  |d	fd
«      «      }|	j                  d|z  «       ŒZ|j                  |k(  r|	j                  d«       Œ{|j                  |k(  rŒ‹|j                  |k(  r|
r|	j                  d«       d}
|	j                  | j                  |«      «       ŒÐ|	j                  t        |«      j                  d«      «       Œú dj                  |	«      S )z„
        Find and decode OpenDocument text:s tags that represent
        a run length encoded sequence of space characters.
        r   )ÚElement)r>   ÚTEXTNSÚ
annotationÚsÚpz
line-breakFÚcrf   ú ú
Tr$   )Úodf.elementr€   rJ   r>   r�   rK   Ú
isinstancerB   rh   rM   ri   Úappendrx   ru   ÚstripÚjoin)r   rk   r€   r>   r�   Úoffice_annotationÚtext_sÚtext_pÚtext_line_breakrC   Úseen_paragraphÚfragmentÚspacess                r   rx   z ODFReader._get_cell_string_valueç   s'  € õ
 	(÷	
ð & |Ð4ÐØ˜#�ˆØ˜#�ˆØ! <Ð0ˆàˆØˆàŸ™ò 	8ˆHÜ˜( GÔ,Ø—>‘> VÒ+Ü  ×!4Ñ!4×!8Ñ!8¸&À#¸ÈÓ!JÓK�FØ—L‘L  v¡Õ.Ø—^‘^ Ò6à—L‘L Õ&Ø—^‘^Ð'8Ò8Øà—~‘~¨Ò/ñ *Ø!ŸL™L¨Ô.Ø)-˜ð —L‘L ×!<Ñ!<¸XÓ!FÕGà—‘œS ›]×0Ñ0°Ó6Õ7ð/	8ð0 �w‰w�u‹~Ðr   )NN)r   úFilePath | ReadBuffer[bytes]r   zStorageOptions | Noner   zdict[str, Any] | NoneÚreturnÚNone)r•   ztype[OpenDocument])r   r”   r•   r
   )r•   ru   )r•   z	list[str])r4   rh   )r*   ru   rE   )rU   z
int | Noner•   zlist[list[Scalar | NaTType]])r•   rh   )r•   zScalar | NaTType)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r"   r&   r1   r5   r;   rb   rR   rO   rN   rx   Ú__classcell__)r   s   @r   r   r      sÇ   ø„ ð 26Ø/3ð	
à8ð
ð /ð
ð -ð	
ð
 
õ
ð@ òó ðð
9Ø">ð9à	ó9ð òó ðð ò8ó ð8óó4ð 59ðCØ'1ðCà	%óCóJMóQó
%?÷N-r   r   r
   )Ú
__future__r   Útypingr   r   r   Únumpyrv   Úpandas.compat._optionalr   Úpandasry   Úpandas.io.excel._baser   r   r
   Úpandas._libs.tslibs.nattyper   Úpandas._typingr   r   r   r   r   r%   r   r   ú<module>r¤      sF   ðÝ "÷ñ ó å >ã å 1áÝ-å3÷ó ôw� Ñ/õ wr   