
    	hM                     b    S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  S r " S	 S
5      rg)zRead worksheets on-demand
   )	Worksheet    )ReadOnlyCell
EMPTY_CELL)get_column_letter)WorkSheetParser)DefinedNameDictc                 :    [        U / 5      nUR                  5       $ N)r   parse_dimensions)sourceparsers     O/var/www/html/env/lib/python3.13/site-packages/openpyxl/worksheet/_read_only.pyread_dimensionr      s    VR(F""$$    c                   6   \ rS rSrSrSrS=rr\R                  r	\R                  r
\R                  r\R                  r\R                  r\R                  rS rS rS rSS jrSS jrS	 rSS
 jrS rS r\S 5       r\S 5       r\S 5       r\S 5       rSrg)ReadOnlyWorksheet   r   Nc                     Xl         X l        SU l        S U l        X0l        X@l        U R                  5         [        5       U l        g )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__ReadOnlyWorksheet.__init__#   s=    %
$ --,.r   c                     U R                  5       n[        U/ 5      nUR                  5       nUR                  5         Ub  Uu  U l        U l        U l        U l        g g r   )_get_sourcer   r   close_min_column_min_row_max_column_max_row)r   srcr   
dimensionss       r   r   ReadOnlyWorksheet._get_size.   sV      b),,.
		!OYLDdmT-=t} "r   c                 `    U R                   R                  R                  U R                  5      $ )z0Parse xml source on demand, must close after use)r   _archiveopenr   r   s    r   r&   ReadOnlyWorksheet._get_source7   s#    {{##(()=)=>>r   c           
   #     #    [         nU(       a  SnU=(       d    U R                  nU=(       d    U R                  n/ nUb  U4US-   U-
  -  nUnSn	U R                  5        n
[	        U
U R
                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  S9nUR                  5        HL  u  pUb  X:  a    OA[        X5       H  nUS-  nUv   M     X::  d  M1  U R                  XX55      nUS-  nUv   MN     SSS5        Ub   XI:  a  [        XS-   5       H  nUv   M	     ggg! , (       d  f       N2= f7f)z\
The source worksheet file may have columns or rows missing.
Missing cells will be created.
Nr   )	data_onlyepochdate_formatstimedelta_formats)r   
max_columnmax_rowr&   r   r   r   r5   r6   _date_formats_timedelta_formatsparserange_get_row)r   min_colmin_rowmax_colr:   values_onlyfiller	empty_rowcounteridxr,   r   row_s                 r   _cells_by_rowReadOnlyWorksheet._cells_by_row<   sP    
 F,T__)T\\		Wq[7%:;I3$S%)%9%9/3{{/D/D+/;;+<+<26++2K2K7;{{7U7UWF #LLN&3= w,AqLG#O -
 >--gKCqLGI +  . 7=7AI. / $1/  s%   AE'!B&EE*,E'
E$ E'c                    U(       d  U(       d  gU=(       d    US   S   nUS-   U-
  n[         /U-  nU(       a  S/U-  nU H<  nUS   nX(s=::  a  U::  d  M  O  M  X-
  n	US   Xi'   U(       a  M.  [        U 40 UD6Xi'   M>     [        U5      $ )zD
Make sure a row contains always the same number of cells or values
 columnr   Nvalue)r   r   tuple)
r   rH   r@   rB   rC   	row_widthnew_rowcellrF   rG   s
             r   r?   ReadOnlyWorksheet._get_rowi   s     7/c"gh/aK')	,*fy(GD8nG,W,,'#G}"{#/#=#=GL  W~r   c                 \    U R                  X!X!5       H  nU(       d  M  US   s  $    [        $ )z4Cells are returned by a generator which can be emptyr   )rJ   r   )r   rH   rO   s      r   	_get_cellReadOnlyWorksheet._get_cell   s0    %%f6?Cs1v @ r   c                    [        U R                  U R                  /5      (       d#  U(       a  U R                  5         O[	        S5      e[        U R                  5       U R                   S[        U R                  5       U R                   3$ )Nz9Worksheet is unsized, use calculate_dimension(force=True):)allr9   r:   _calculate_dimension
ValueErrorr   
min_columnrA   )r   forces     r   calculate_dimension%ReadOnlyWorksheet.calculate_dimension   sr    DOOT\\233))+ !\]]#DOO45dll^1EVW[WfWfEgDhimiuiuhvwwr   c                     SnU R                    H&  nU(       d  M  US   n[        XR                  5      nM(     WR                  U l        Xl        g)zh
Loop through all the cells to get the size of a worksheet.
Do this only if it is explicitly requested.
r   rN   N)rowsmaxrO   rH   r+   r*   )r   rB   rrT   s       r   r\   &ReadOnlyWorksheet._calculate_dimension   sG     AR5D';;/G	  "r   c                      S=U l         U l        g)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*   r2   s    r   reset_dimensions"ReadOnlyWorksheet.reset_dimensions   s     ,0/(r   c                     U R                   $ r   )r)   r2   s    r   rA   ReadOnlyWorksheet.min_row       }}r   c                     U R                   $ r   )r+   r2   s    r   r:   ReadOnlyWorksheet.max_row   rl   r   c                     U R                   $ r   )r(   r2   s    r   r^   ReadOnlyWorksheet.min_column       r   c                     U R                   $ r   )r*   r2   s    r   r9   ReadOnlyWorksheet.max_column   rq   r   )r   r*   r+   r(   r)   r   r   r   r   r   r   )F)r   NF)__name__
__module____qualname____firstlineno__r(   r)   r*   r+   r   rT   	iter_rowsvaluesrc   __getitem____iter__r#   r   r&   rJ   r?   rW   r`   r\   rh   propertyrA   r:   r^   r9   __static_attributes__rM   r   r   r   r      s    KH!!K( >>D##IF>>D''K!!H/Z?
* Z2x#"0            r   r   N)__doc__	worksheetr   openpyxl.cell.read_onlyr   r   openpyxl.utilsr   _readerr   openpyxl.workbook.defined_namer	   r   r   rM   r   r   <module>r      s,    ! < , $ :%
k  k r   