
    	h                     j    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SKJr   " S	 S
\5      rg)z;Write worksheets to xml representations in an optimized way    )isgenerator)CellWriteOnlyCell)_WorkbookChild   )	WorksheetWorkbookAlreadySaved)WorksheetWriterc                     ^  \ rS rSrSrSrSrSr\R                  r	\R                  r
\R                  r\R                  r\R                  r\R                  r\R                  r\R                   r\R"                  r\R$                  r\R&                  r\R(                  r\R*                  r\R,                  r\R.                  r\R0                  rU 4S jr\S 5       rS rS rS	 rS
 rS r S r!S r"Sr#U =r$$ )WriteOnlyWorksheet   z
Streaming worksheet. Optimised to reduce memory by writing rows just in
time.
Cells can be styled and have comments Styles for rows and columns
must be applied before writing cells
FNc                 `   > [         TU ]  X5        SU l        SU l        U R	                  5         g )Nr   )super__init___max_col_max_row_setup)selfparenttitle	__class__s      P/var/www/html/env/lib/python3.13/site-packages/openpyxl/worksheet/_write_only.pyr   WriteOnlyWorksheet.__init__.   s'    '    c                     U R                   $ N)_WriteOnlyWorksheet__savedr   s    r   closedWriteOnlyWorksheet.closed4   s    ||r   c              #     #     U R                   R                  R                  S5      nWR                  S5         Sn  Sv nU R                  X25      nU R                   R                  XU5        US-  nM8  ! [         a    U R	                  5          Njf = f! [         a     Of = fSSS5        O! , (       d  f       O= fU R                   R                  R                  S5        g7f)z"
Send rows to the writer's stream
T	sheetDatar   N)	_writerxfsendStopIteration_already_savedelement_values_to_row	write_rowGeneratorExit)r   r%   row_idxrows       r   _write_rowsWriteOnlyWorksheet._write_rows9   s     	"%%d+B ZZ$G C--c;CLL**2G<qLG	   	"!	" !  %$$ 	T"s[   C'%A7 C'B09B7BC'BC'
B$!B0#B$$B0'	C'0
B>:-C'c                 t    U R                   c+  [        U 5      U l         U R                   R                  5         g g r   )r$   r   	write_topr   s    r   _get_writerWriteOnlyWorksheet._get_writerP   s-    <<*40DLLL""$  r   c                 `   U R                   (       a  U R                  5         U R                  5         U R                  c  U R                  R                  5         OU R                  R                  5         U R                  R                  5         U R                  R                  5         SU l         g )NT)r   r(   r3   _rowsr$   
write_rowsclose
write_tailr   s    r   r8   WriteOnlyWorksheet.closeV   sr    <<!::LL##%JJ!r   c                 J   [        U5      (       d1  [        U[        [        [        45      (       d  U R                  U5        U R                  5         U R                  c*  U R                  5       U l        [        U R                  5        U R                  R                  U5        g)zF
:param row: iterable containing values to append
:type row: iterable
N)r   
isinstancelisttuplerange_invalid_rowr3   r6   r/   nextr&   )r   r.   s     r   appendWriteOnlyWorksheet.appendg   ss     C  3ue 455c"::))+DJ

r   c              #     #    [        U 5      n[        US5       Hx  u  pEUc  M
   XSl        XCl        X#l        UR                  b  UR                  UR                  l
        Uv   UR                  (       d  UR                  (       d  Mm  [        U 5      nMz     g! [         a     [	        U[
        5      (       a  Un N[        ef = f7f)zG
Convert whatever has been appended into a form suitable for work_rows
r   N)r   	enumeratevalue
ValueErrorr<   r   columnr.   	hyperlink
coordinateref	has_style)r   valuesr-   cellcol_idxrF   s         r   r*   !WriteOnlyWorksheet._values_to_row{   s      T"'2NG}%"
 "KH~~)%)__"J ~~$T*+ 3
  %eT** D$$	%s.   "CBACC!C8C:CCc                     [        S5      e)NzHWorkbook has already been saved and cannot be modified or saved anymore.r	   r   s    r   r(   !WriteOnlyWorksheet._already_saved   s    "#mnnr   c                 H    [        SR                  [        U5      5      5      e)NzGValue must be a list, tuple, range or a generator Supplied value is {0})	TypeErrorformattype)r   iterables     r   r@   WriteOnlyWorksheet._invalid_row   s$    ahhN  	r   )__savedr   r   r6   r$   )%__name__
__module____qualname____firstlineno____doc__r   r$   r6   r   	_rel_type_path	mime_type_add_row_add_column	add_chart	add_image	add_tabletablesprint_titlesprint_title_colsprint_title_rowsfreeze_panes
print_area
sheet_viewr   r   propertyr    r/   r3   r8   rB   r*   r(   r@   __static_attributes____classcell__)r   s   @r   r   r      s    GGE##IOOE##I !!H''K##I##I##IF))L 11 11))L%%J%%JF  #.%"(+<o r   r   N)r^   inspectr   openpyxl.cellr   r   openpyxl.workbook.childr   	worksheetr   openpyxl.utils.exceptionsr
   r$   r   r    r   r   <module>rw      s+    B  - 2   : $P Pr   