ó
    Ñ]j(   ã                  óÒ   • S SK Jr  S SKJrJr  S SK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rS SKJr  S SKJr  \(       a  S S	KJr  S S
KJr  \" \S   S9 " S S\S   5      5       rg)é    )Úannotations)ÚTYPE_CHECKINGÚcastN)ÚFilePathÚ
ReadBufferÚScalarÚStorageOptions)Úimport_optional_dependency)Údoc)Ú_shared_docs)ÚBaseExcelReader©ÚOpenDocument)ÚNaTTypeÚstorage_options)r   c                  óâ   ^ • \ rS rSr  S       SU 4S jjjr\SS j5       r    SS jr\SS j5       r\SS j5       r	SS jr
SS jr S   SS	 jjrSS
 jrSS jrSS jrSS jrSrU =r$ )Ú	ODFReaderé   c                ó:   >• [        S5        [        TU ]	  UUUS9  g)zþ
Read tables out of OpenDocument formatted files.

Parameters
----------
filepath_or_buffer : str, path to be parsed or
    an open readable stream.
{storage_options}
engine_kwargs : dict, optional
    Arbitrary keyword arguments passed to excel engine.
Úodf)r   Úengine_kwargsN)r
   ÚsuperÚ__init__)ÚselfÚfilepath_or_bufferr   r   Ú	__class__s       €ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/io/excel/_odfreader.pyr   ÚODFReader.__init__    s(   ø€ ô" 	# 5Ô)Ü‰ÑØØ+Ø'ð 	ò 	
ó    c                ó   • SSK Jn  U$ )Nr   r   )Úodf.opendocumentr   )r   r   s     r   Ú_workbook_classÚODFReader._workbook_class8   s   € å1àÐr   c                ó    • SSK Jn  U" U40 UD6$ )Nr   )Úload)r!   r%   )r   r   r   r%   s       r   Úload_workbookÚODFReader.load_workbook>   s   € õ 	*áÐ&Ñ8¨-Ñ8Ð8r   c                ó   • g)z'Property for compat with other readers.Ú © )r   s    r   Úempty_valueÚODFReader.empty_valueE   s   € ð r   c                ó�   • SSK Jn  U R                  R                  U5      nU Vs/ s H  o3R	                  S5      PM     sn$ s  snf )z4Return a list of sheet names present in the documentr   ©ÚTableÚname)Ú	odf.tabler/   ÚbookÚgetElementsByTypeÚgetAttribute)r   r/   ÚtablesÚts       r   Úsheet_namesÚODFReader.sheet_namesJ   s:   € õ 	$à—‘×,Ñ,¨UÓ3ˆÙ06Ó7²¨1—‘˜vÖ&±Ñ7Ð7ùÒ7s   ¦Ac                ón   • SSK Jn  U R                  U5        U R                  R	                  U5      nX1   $ )Nr   r.   )r1   r/   Úraise_if_bad_sheet_by_indexr2   r3   )r   Úindexr/   r5   s       r   Úget_sheet_by_indexÚODFReader.get_sheet_by_indexR   s/   € Ý#à×(Ñ(¨Ô/Ø—‘×,Ñ,¨UÓ3ˆØ‰}Ðr   c                óè   • SSK Jn  U R                  U5        U R                  R	                  U5      nU H  nUR                  S5      U:X  d  M  Us  $    U R                  5         [        SU S35      e)Nr   r.   r0   zsheet z
 not found)r1   r/   Úraise_if_bad_sheet_by_namer2   r3   r4   ÚcloseÚ
ValueError)r   r0   r/   r5   Útables        r   Úget_sheet_by_nameÚODFReader.get_sheet_by_nameY   sh   € Ý#à×'Ñ'¨Ô-Ø—‘×,Ñ,¨UÓ3ˆãˆEØ×!Ñ! &Ó)¨TÕ1Ø’ñ ð 	�
‰
ŒÜ˜6 $  zÐ2Ó3Ð3r   c                óþ  ^• SSK JnJnJn  U" 5       R                  nU" 5       R                  nXg1nUR                  U5      n	Sn
Sn/ nU	 GHi  nSn/ mUR                   H´  n[        US5      (       d  M  UR                  U;   d  M(  UR                  U:X  a  U R                  U5      nOU R                  nU R                  U5      nUU R                  :X  a  UU-  nM~  TR                  U R                  /U-  5        SnTR                  U/U-  5        M¶     U[        T5      :  a  [        T5      nU R                  U5      n[        T5      S:X  a  U
U-  n
OFUR                  U R                  //U
-  5        Sn
UR                  U4S j[        U5       5       5        Uc  GMX  [        U5      U:¼  d  GMj    O   U H?  n[        U5      U:  d  M  UR                  U R                  /U[        U5      -
  -  5        MA     U$ )z)
Parse an ODF Table into a list of lists
r   )ÚCoveredTableCellÚ	TableCellÚTableRowÚqnamec              3  ó(   >#   • U  H  nTv •  M	     g 7f©Nr*   )Ú.0Ú_Ú	table_rows     €r   Ú	<genexpr>Ú+ODFReader.get_sheet_data.<locals>.<genexpr>›   s   øé € ÐBÒ0A¨1�YÒ0Aùs   ƒ)r1   rF   rG   rH   rI   r3   Ú
childNodesÚhasattrÚ_get_cell_valuer+   Ú_get_column_repeatÚextendÚlenÚ_get_row_repeatÚrange)r   ÚsheetÚfile_rows_neededrF   rG   rH   Úcovered_cell_nameÚtable_cell_nameÚ
cell_namesÚ
sheet_rowsÚ
empty_rowsÚmax_row_lenrB   Ú	sheet_rowÚempty_cellsÚ
sheet_cellÚvalueÚcolumn_repeatÚ
row_repeatÚrowrN   s                       @r   Úget_sheet_dataÚODFReader.get_sheet_dataf   sê  ø€ ÷	
ñ 	
ñ -Ó.×4Ñ4ÐÙ#›+×+Ñ+ˆØ'Ð9ˆ
à×,Ñ,¨XÓ6ˆ
Øˆ
Øˆà.0ˆä#ˆIØˆKØ02ˆIà'×2Ô2�
Ü˜: w×/Ó/°J×4DÑ4DÈ
Õ4RØ!×'Ñ'¨?Ó:Ø $× 4Ñ 4°ZÓ @™à $× 0Ñ 0˜à$(×$;Ñ$;¸JÓ$G�Mð  × 0Ñ 0Ó0Ø# }Ñ4šà!×(Ñ(¨$×*:Ñ*:Ð);¸kÑ)IÔJØ&'˜Ø!×(Ñ(¨%¨°=Ñ)@ÖAñ 3ð" œS ›^Ó+Ü! )›n�à×-Ñ-¨iÓ8ˆJÜ�9‹~ Ó"Ø˜jÑ(‘
ð —‘˜t×/Ñ/Ð0Ð1°JÑ>Ô?Ø�
Ø—‘ÔB´°jÔ0AÓBÔBØÔ+´°E³
Ð>NÖ0NÙñC $óH ˆCÜ�3‹x˜+Õ%Ø—
‘
˜D×,Ñ,Ð-°¼sÀ3»xÑ1GÑHÖIñ ð ˆr   c                ó\   • SSK Jn  [        UR                  R	                  US4S5      5      $ )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é   ©Úodf.namespacesrl   ÚintÚ
attributesÚget)r   rg   rl   s      r   rW   ÚODFReader._get_row_repeat¦   s)   € õ 	+ä�3—>‘>×%Ñ% wÐ0FÐ&GÈÓKÓLÐLr   c                ó\   • SSK Jn  [        UR                  R	                  US4S5      5      $ )Nr   rk   znumber-columns-repeatedrm   rn   )r   Úcellrl   s      r   rT   ÚODFReader._get_column_repeat°   s'   € Ý*ä�4—?‘?×&Ñ&¨Ð1JÐ'KÈQÓOÓPÐPr   c                ól  • SSK Jn  [        U5      S:X  a  [        R                  $ UR
                  R                  US45      nUS:X  a  [        U5      S:X  a  ggUc  U R                  $ US	:X  a:  [        UR
                  R                  US
45      5      n[        U5      nXT:X  a  U$ U$ US:X  a(  UR
                  R                  US
45      n[        U5      $ US:X  a  U R                  U5      $ US:X  a(  UR
                  R                  US
45      n[        U5      $ US:X  a3  UR
                  R                  US45      n[        R                  " U5      $ US:X  a=  [        R                  " [        U5      5      n[        [        UR                  5       5      $ U R!                  5         [#        SU 35      e)Nr   )ÚOFFICENSz#N/Az
value-typeÚbooleanÚTRUETFÚfloatrd   Ú
percentageÚstringÚcurrencyÚdatez
date-valueÚtimezUnrecognized type )ro   rx   ÚstrÚnpÚnanrq   rr   r+   r{   rp   Ú_get_cell_string_valueÚpdÚ	Timestampr   r   r€   r@   rA   )r   ru   rx   Ú	cell_typeÚ
cell_valueÚvalÚstamps          r   rS   Ú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ØÓ Ø�
ØÐØ˜,Ó&ØŸ™×,Ñ,¨h¸Ð-@ÓAˆJÜ˜Ó$Ð$Ø˜(Ó"Ø×.Ñ.¨tÓ4Ð4Ø˜*Ó$ØŸ™×,Ñ,¨h¸Ð-@ÓAˆJÜ˜Ó$Ð$Ø˜&Ó ØŸ™×,Ñ,¨h¸Ð-EÓFˆJÜ—<’< 
Ó+Ð+Ø˜&Ó Ü—L’L¤ T£Ó+ˆEäœ §
¡
£Ó-Ð-à�J‰JŒLÜÐ1°)°Ð=Ó>Ð>r   c                ó6  • SSK Jn  SSKJn  SSKJn  SSKJn  U" 5       R                  nU" 5       R                  n/ nUR                   H½  n	[        X’5      (       a�  U	R                  U:X  a=  [        U	R                  R                  US4S5      5      n
UR                  SU
-  5        M`  U	R                  U:X  a  Mr  UR                  U R                  U	5      5        M”  UR                  [!        U	5      R#                  S	5      5        M¿     S
R%                  U5      $ )zl
Find and decode OpenDocument text:s tags that represent
a run length encoded sequence of space characters.
r   )ÚElement)ÚTEXTNS)Ú
Annotation)ÚSÚcrm   Ú Ú
r)   )Úodf.elementr�   ro   rŽ   Ú
odf.officer�   Úodf.textr�   rI   rQ   Ú
isinstancerp   rq   rr   Úappendr„   r�   ÚstripÚjoin)r   ru   r�   rŽ   r�   r�   Úoffice_annotationÚtext_srd   ÚfragmentÚspacess              r   r„   Ú ODFReader._get_cell_string_valueÜ   sØ   € õ
 	(Ý)Ý)Ýá&›L×.Ñ.ÐÙ“—‘ˆàˆàŸœˆHÜ˜(×,Ñ,Ø—>‘> VÓ+Ü  ×!4Ñ!4×!8Ñ!8¸&À#¸ÈÓ!JÓK�FØ—L‘L  v¡Ö.Ø—^‘^Ð'8Ó8Ùð
 —L‘L ×!<Ñ!<¸XÓ!FÖGà—‘œS ›]×0Ñ0°Ó6Ö7ñ (ð �w‰w�u‹~Ðr   r*   )NN)r   úFilePath | ReadBuffer[bytes]r   zStorageOptions | Noner   zdict | NoneÚreturnÚNone)r¡   ztype[OpenDocument])r   r    r¡   r   )r¡   r�   )r¡   z	list[str])r;   rp   )r0   r�   rK   )rZ   z
int | Noner¡   zlist[list[Scalar | NaTType]])r¡   rp   )r¡   zScalar | NaTType)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Úpropertyr"   r&   r+   r7   r<   rC   rh   rW   rT   rS   r„   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      sÍ   ø† ð
 26Ø%)ð	
à8ð
ð /ð
ð #ð	
ð
 
÷
ð 
ð0 óó ðð
9Ø">ð9à	ô9ð óó ðð ó8ó ð8ôô4ð 59ð>Ø'1ð>à	%õ>ô@MôQô
%?÷Nò r   r   r   )Ú
__future__r   Útypingr   r   Únumpyr‚   Úpandas._typingr   r   r   r	   Úpandas.compat._optionalr
   Úpandas.util._decoratorsr   Úpandasr…   Úpandas.core.shared_docsr   Úpandas.io.excel._baser   r!   r   Úpandas._libs.tslibs.nattyper   r   r*   r   r   Ú<module>r´      sd   ðÝ "÷ó
 ÷ó õ ?Ý 'ã Ý 0å 1æÝ-å3ñ �\Ð"3Ñ4Ñ5ôZ� Ñ/ó Zó 6ñZr   