Ë
    ¤2Úi©  ã                   ód   — d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ d„ Z G d	„ d
e«      Zy)z Read worksheets on-demand
é   )Ú	Worksheeté    )ÚReadOnlyCellÚ
EMPTY_CELL)Úget_column_letter)ÚWorkSheetParser)ÚDefinedNameDictc                 ó:   — t        | g «      }|j                  «       S ©N)r   Úparse_dimensions)ÚsourceÚparsers     úT/var/www/html/acx/venv/lib/python3.12/site-packages/openpyxl/worksheet/_read_only.pyÚread_dimensionr      s   € Ü˜V RÓ(€FØ×"Ñ"Ó$Ð$ó    c                   ó(  — e Zd ZdZdZdxZZej                  Zej                  Z	ej                  Z
ej                  Zej                  Zej                  Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Zdd	„Zd
„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zy)ÚReadOnlyWorksheetr   Nc                 ó–   — || _         || _        d| _        d | _        || _        || _        | j                  «        t        «       | _        y )NÚvisible)	ÚparentÚtitleÚsheet_stateÚ_current_rowÚ_worksheet_pathÚ_shared_stringsÚ	_get_sizer	   Údefined_names)ÚselfÚparent_workbookr   Úworksheet_pathÚshared_stringss        r   Ú__init__zReadOnlyWorksheet.__init__#   sE   € Ø%ˆŒØˆŒ
Ø$ˆÔØ ˆÔØ-ˆÔØ-ˆÔØ�‰ÔÜ,Ó.ˆÕr   c                 ó¸   — | j                  «       }t        |g «      }|j                  «       }|j                  «        |�|\  | _        | _        | _        | _        y y r   )Ú_get_sourcer   r   ÚcloseÚ_min_columnÚ_min_rowÚ_max_columnÚ_max_row)r   Úsrcr   Ú
dimensionss       r   r   zReadOnlyWorksheet._get_size.   sV   € Ø×ÑÓ ˆÜ   bÓ)ˆØ×,Ñ,Ó.ˆ
Ø�	‰	ŒØÐ!ØOYÑLˆDÔ˜dœm¨TÔ-=¸t½}ð "r   c                 ó`   — | j                   j                  j                  | j                  «      S )z0Parse xml source on demand, must close after use)r   Ú_archiveÚopenr   ©r   s    r   r$   zReadOnlyWorksheet._get_source7   s#   € à�{‰{×#Ñ#×(Ñ(¨×)=Ñ)=Ó>Ð>r   c              #   ór  K  — t         }|rd}|xs | j                  }|xs | j                  }g }|�|f|dz   |z
  z  }|}d}	| j                  «       }
t	        |
| j
                  | j                  j                  | j                  j                  | j                  j                  ¬«      }|j                  «       D ]K  \  }	}|�|	|kD  r n?t        ||	«      D ]  }|dz  }|–— Œ ||	k  sŒ/| j                  ||||«      }|dz  }|–— ŒM |
j                  «        |�||	k  rt        ||dz   «      D ]  }|–— Œ yyy­w)zt
        The source worksheet file may have columns or rows missing.
        Missing cells will be created.
        Nr   )Ú	data_onlyÚepochÚdate_formats)r   Ú
max_columnÚmax_rowr$   r   r   r   r1   r2   Ú_date_formatsÚparseÚrangeÚ_get_rowr%   )r   Úmin_colÚmin_rowÚmax_colr5   Úvalues_onlyÚfillerÚ	empty_rowÚcounterÚidxr*   r   ÚrowÚ_s                 r   Ú_cells_by_rowzReadOnlyWorksheet._cells_by_row<   s]  è ø€ ô
 ˆÙØˆFàÒ,˜TŸ_™_ˆØÒ)˜TŸ\™\ˆØˆ	ØÐØ˜	 W¨q¡[°7Ñ%:Ñ;ˆIàˆØˆØ×ÑÓ ˆÜ   d×&:Ñ&:Ø+/¯;©;×+@Ñ+@ÈÏÉ×HYÑHYØ.2¯k©k×.GÑ.GôIˆð Ÿ™›ò 	‰HˆC�ØÐ" s¨W¢}Ùô ˜7 CÓ(ò  �Ø˜1‘�Ø“ð ð
 ˜#‹~Ø—m‘m C¨°'¸;ÓG�Ø˜1‘�Ø“	ð	ð 	�	‰	ŒàÐ 7¨S¢=Ü˜7 G¨A¡IÓ.ò  �Ø“ñ ð $1Ðùs   ‚C#D7Ã&AD7c                 óâ   — |s|sy|xs |d   d   }|dz   |z
  }t         g|z  }|rdg|z  }|D ]5  }|d   }||cxk  r|k  sŒn Œ||z
  }	|d   ||	<   |rŒ't        | fi |¤Ž||	<   Œ7 t        |«      S )zT
        Make sure a row contains always the same number of cells or values
        © éÿÿÿÿÚcolumnr   NÚvalue)r   r   Útuple)
r   rB   r:   r<   r=   Ú	row_widthÚnew_rowÚcellr@   rA   s
             r   r9   zReadOnlyWorksheet._get_rowg   s¦   € ñ ™7ØàÒ/˜c "™g hÑ/ˆØ˜a‘K 'Ñ)ˆ	ä�, Ñ*ˆÙØ�f˜yÑ(ˆGàò 	>ˆDØ˜8‘nˆGØ˜'Ô, WÖ,Ø Ñ'�Ø# G™}�˜‘Ú"Ü#/°Ñ#=¸Ñ#=�G˜C’Lð	>ô �W‹~Ðr   c                 óR   — | j                  ||||«      D ]  }|sŒ|d   c S  t        S )z4Cells are returned by a generator which can be emptyr   )rD   r   )r   rB   rH   s      r   Ú	_get_cellzReadOnlyWorksheet._get_cell€   s6   € à×%Ñ% f¨c°6¸3Ó?ò 	ˆCÚØ˜1‘v’ð	ô Ðr   c                 ó
  — t        | j                  | j                  g«      s|r| j                  «        nt	        d«      ‚t        | j                  «      › | j                  › dt        | j                  «      › | j                  › �S )Nz9Worksheet is unsized, use calculate_dimension(force=True)ú:)Úallr4   r5   Ú_calculate_dimensionÚ
ValueErrorr   Ú
min_columnr;   )r   Úforces     r   Úcalculate_dimensionz%ReadOnlyWorksheet.calculate_dimensionˆ   so   € Ü�D—O‘O T§\¡\Ð2Ô3ÙØ×)Ñ)Õ+ä Ð!\Ó]Ð]Ü# D§O¡OÓ4Ð5°d·l±l°^À1ÔEVÐW[×WfÑWfÓEgÐDhÐim×iuÑiuÐhvÐwÐwr   c                 ó–   — d}| j                   D ]   }|sŒ|d   }t        ||j                  «      }Œ" j                  | _        || _        y)z€
        Loop through all the cells to get the size of a worksheet.
        Do this only if it is explicitly requested.
        r   rG   N)ÚrowsÚmaxrH   rB   r)   r(   )r   r<   ÚrrM   s       r   rS   z&ReadOnlyWorksheet._calculate_dimension‘   sP   € ð ˆØ—‘ò 	0ˆAÙØØ�R‘5ˆDÜ˜' 4§;¡;Ó/‰Gð		0ð Ÿ™ˆŒØ"ˆÕr   c                 ó    — dx| _         | _        y)zÈ
        Remove worksheet dimensions if these are incorrect in the worksheet source.
        NB. This probably indicates a bug in the library or application that created
        the workbook.
        N)r)   r(   r/   s    r   Úreset_dimensionsz"ReadOnlyWorksheet.reset_dimensions¢   s   € ð ,0Ð/ˆŒ˜Õ(r   c                 ó   — | j                   S r   )r'   r/   s    r   r;   zReadOnlyWorksheet.min_row«   ó   € à�}‰}Ðr   c                 ó   — | j                   S r   )r)   r/   s    r   r5   zReadOnlyWorksheet.max_row°   r_   r   c                 ó   — | j                   S r   )r&   r/   s    r   rU   zReadOnlyWorksheet.min_columnµ   ó   € à×ÑÐr   c                 ó   — | j                   S r   )r(   r/   s    r   r4   zReadOnlyWorksheet.max_columnº   rb   r   )F)r   NF)Ú__name__Ú
__module__Ú__qualname__r&   r'   r(   r)   r   rM   Ú	iter_rowsÚvaluesrY   Ú__getitem__Ú__iter__r"   r   r$   rD   r9   rO   rW   rS   r]   Úpropertyr;   r5   rU   r4   rF   r   r   r   r      sÖ   „ à€KØ€HØ!Ð!€K�(ð �>‰>€DØ×#Ñ#€IØ×Ñ€FØ�>‰>€DØ×'Ñ'€KØ×!Ñ!€Hò/òZò?ó
( óVò2óxò#ò"0ð ñó ðð ñó ðð ñ ó ð ð ñ ó ñ r   r   N)Ú__doc__Ú	worksheetr   Úopenpyxl.cell.read_onlyr   r   Úopenpyxl.utilsr   Ú_readerr   Úopenpyxl.workbook.defined_namer	   r   Úobjectr   rF   r   r   ú<module>rs      s.   ðñõ !ß <Ý ,å $Ý :ò%ô
i ˜õ i r   