§
    ëŸjM  ã                   ój   — 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
¦  «        ZdS )z Read worksheets on-demand
é   )Ú	Worksheeté    )ÚReadOnlyCellÚ
EMPTY_CELL)Úget_column_letter)ÚWorkSheetParser)ÚDefinedNameDictc                 óJ   — t          | g ¦  «        }|                     ¦   «         S ©N)r   Úparse_dimensions)ÚsourceÚparsers     új/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/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dS )ÚReadOnlyWorksheetr   Nc                 ó¨   — || _         || _        d| _        d | _        || _        || _        |                      ¦   «          t          ¦   «         | _        d S )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__#   sT   € Ø%ˆŒØˆŒ
Ø$ˆÔØ ˆÔØ-ˆÔØ-ˆÔØ�ŠÑÔÐÝ,Ñ.Ô.ˆÔÐÐr   c                 óÜ   — |                       ¦   «         }t          |g ¦  «        }|                     ¦   «         }|                     ¦   «          |�|\  | _        | _        | _        | _        d S d S r   )Ú_get_sourcer   r   ÚcloseÚ_min_columnÚ_min_rowÚ_max_columnÚ_max_row)r   Úsrcr   Ú
dimensionss       r   r   zReadOnlyWorksheet._get_size.   sj   € Ø×ÒÑ Ô ˆÝ   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   Fc           	   #   ób  K  — t           }|rd}|p| j        }|p| j        }g }|�|f|dz   |z
  z  }|}d}	|                      ¦   «         5 }
t	          |
| j        | j        j        | j        j        | j        j	        | j        j
        ¬¦  «        }|                     ¦   «         D ]R\  }	}|�|	|k    r nDt          ||	¦  «        D ]}|dz  }|V — Œ||	k    r!|                      ||||¦  «        }|dz  }|V — ŒSddd¦  «         n# 1 swxY w Y   |� ||	k     rt          ||dz   ¦  «        D ]
}|V — ŒdS dS dS )zt
        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   r1   r2   Ú_date_formatsÚ_timedelta_formatsÚparseÚrangeÚ_get_row)r   Úmin_colÚmin_rowÚmax_colr6   Ú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àˆØˆØ×ÒÑÔð 	 3Ý$ SØ%)Ô%9Ø/3¬{Ô/DØ+/¬;Ô+<Ø26´+Ô2KØ7;´{Ô7UðWñ Wô WˆFð #ŸLšL™NœNð ð ‘��SØÐ&¨3°ª=¨=Ø�Eõ ˜w¨Ñ,Ô,ð $ð $�AØ˜q‘L�GØ#�O�O�O�Oð ˜c’>�>ØŸ-š-¨¨W°g¸{ÑKÔK�CØ˜q‘L�GØ�I�I�Iøð+	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð. Ð 7¨S¢= =Ý˜7 G¨A¡IÑ.Ô.ð  ð  �Ø����ð Ð = =ð ð  s   ÁB*C>Ã>DÄDc                 ó   — |s|sdS |p|d         d         }|dz   |z
  }t           g|z  }|rdg|z  }|D ]<}|d         }||cxk    r|k    r%n Œ||z
  }	|d         ||	<   |st          | fi |¤Ž||	<   Œ=t          |¦  «        S )zT
        Make sure a row contains always the same number of cells or values
        © éÿÿÿÿÚcolumnr   NÚvalue)r   r   Útuple)
r   rD   r<   r>   r?   Ú	row_widthÚnew_rowÚcellrB   rC   s
             r   r;   zReadOnlyWorksheet._get_rowi   sØ   € ð ð 	˜7ð 	Ø�2àÐ/˜c "œg hÔ/ˆØ˜a‘K 'Ñ)ˆ	å�, Ñ*ˆØð 	)Ø�f˜yÑ(ˆGàð 	>ð 	>ˆDØ˜8”nˆGØ˜'Ð,Ð,Ò,Ð, WÒ,Ð,Ð,Ð,Ð,Ø Ñ'�Ø# Gœ}�˜‘Ø"ð >Ý#/°Ð#=Ð#=¸Ð#=Ð#=�G˜C‘Løå�W‰~Œ~Ðr   c                 ó^   — |                       ||||¦  «        D ]}|r
|d         c S Œt          S )z4Cells are returned by a generator which can be emptyr   )rF   r   )r   rD   rJ   s      r   Ú	_get_cellzReadOnlyWorksheet._get_cell‚   sE   € à×%Ò% f¨c°6¸3Ñ?Ô?ð 	ð 	ˆCØð Ø˜1”v���ðåÐr   c                 óö   — t          | j        | j        g¦  «        s&|r|                      ¦   «          nt	          d¦  «        ‚t          | j        ¦  «        › | j        › dt          | j        ¦  «        › | j        › �S )Nz9Worksheet is unsized, use calculate_dimension(force=True)ú:)Úallr5   r6   Ú_calculate_dimensionÚ
ValueErrorr   Ú
min_columnr=   )r   Úforces     r   Úcalculate_dimensionz%ReadOnlyWorksheet.calculate_dimensionŠ   s„   € Ý�D”O T¤\Ð2Ñ3Ô3ð 	^Øð ^Ø×)Ò)Ñ+Ô+Ð+Ð+å Ð!\Ñ]Ô]Ð]Ý# D¤OÑ4Ô4Ðw°d´lÐwÐwÕEVÐW[ÔWfÑEgÔEgÐwÐimÔiuÐwÐwÐwr   c                 ó„   — d}| j         D ]"}|sŒ|d         }t          ||j        ¦  «        }Œ#|j        | _        || _        dS )z€
        Loop through all the cells to get the size of a worksheet.
        Do this only if it is explicitly requested.
        r   rI   N)ÚrowsÚmaxrJ   rD   r)   r(   )r   r>   ÚrrO   s       r   rU   z&ReadOnlyWorksheet._calculate_dimension“   sX   € ð ˆØ”ð 	0ð 	0ˆAØð ØØ�R”5ˆDÝ˜' 4¤;Ñ/Ô/ˆGˆGàœˆŒØ"ˆÔÐÐr   c                 ó"   — dx| _         | _        dS )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   r6   zReadOnlyWorksheet.max_row²   ra   r   c                 ó   — | j         S r   )r&   r/   s    r   rW   zReadOnlyWorksheet.min_column·   ó   € àÔÐr   c                 ó   — | j         S r   )r(   r/   s    r   r5   zReadOnlyWorksheet.max_column¼   rd   r   )F)r   NF)Ú__name__Ú
__module__Ú__qualname__r&   r'   r(   r)   r   rO   Ú	iter_rowsÚvaluesr[   Ú__getitem__Ú__iter__r"   r   r$   rF   r;   rQ   rY   rU   r_   Úpropertyr=   r6   rW   r5   rH   r   r   r   r      sb  € € € € € à€KØ€HØ!Ð!€K�(ð Œ>€DØÔ#€IØÔ€FØŒ>€DØÔ'€KØÔ!€Hð/ð /ð /ðZð Zð Zð?ð ?ð ?ð
* ð * ð * ð * ðZð ð ð ð2ð ð ðxð xð xð xð#ð #ð #ð"0ð 0ð 0ð ðð ñ „Xðð ðð ñ „Xðð ð ð  ñ „Xð ð ð ð  ñ „Xð ð  ð  r   r   N)Ú__doc__Ú	worksheetr   Úopenpyxl.cell.read_onlyr   r   Úopenpyxl.utilsr   Ú_readerr   Úopenpyxl.workbook.defined_namer	   r   r   rH   r   r   ú<module>rt      s¼   ððð ð !Ð  Ð  Ð  Ð  Ð  Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à $Ð $Ð $Ð $Ð $Ð $Ø :Ð :Ð :Ð :Ð :Ð :ð%ð %ð %ð
k ð k ð k ð k ð k ñ k ô k ð k ð k ð k r   