o
    w¨Êh   ã                   @   s\   d Z ddlmZ ddlmZ ddlmZ G dd„ deƒZG dd„ deƒZ	G d	d
„ d
eƒZ
dS )zÈ
    pyexcel_io.sheet
    ~~~~~~~~~~~~~~~~~~~

    The io interface to file extensions

    :copyright: (c) 2014-2017 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
é    )Úirange)Ú_index_filterNc                   @   s   e Zd ZdZdd„ ZdS )ÚNamedContentz<
    Helper class for content that does not have a name
    c                 C   s   || _ || _d S ©N)ÚnameÚpayload)Úselfr   r   © r	   úB/var/www/html/env/lib/python3.10/site-packages/pyexcel_io/sheet.pyÚ__init__   s   
zNamedContent.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r	   r	   r	   r
   r      s    r   c                   @   sb   e Zd ZdZ								ddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚSheetReaderz
    Generic sheet reader
    r   éÿÿÿÿNFc
                 K   sd   || _ i | _| j |
¡ || _|| _|| _|| _t| _t| _	|| _
|	| _|r)|| _|r0|| _	d S d S r   )Ú_native_sheetÚ	_keywordsÚupdateÚ
_start_rowÚ
_row_limitÚ_start_columnÚ_column_limitr   Ú	_skip_rowÚ_skip_columnÚ_skip_empty_rowsÚ_row_renderer)r   ÚsheetÚ	start_rowÚ	row_limitÚstart_columnÚcolumn_limitÚskip_row_funcÚskip_column_funcÚskip_empty_rowsÚrow_rendererÚkeywordsr	   r	   r
   r      s    
ÿzSheetReader.__init__c           	      c   sæ   � t |  ¡ ƒD ]i\}}|  || j| j¡}|tjkrq|tjkr" dS g }g }t |  |¡ƒD ]-\}}|  	|| j
| j¡}|tjkr@q-|tjkrG n| |¡ |durZ|dkrZ||7 }g }q-| jret|ƒdk req| jrm|  |¡}|V  qdS )z42 dimentional representation of the content
        NÚ é   )Ú	enumerateÚrow_iteratorr   r   r   Ú	constantsÚ	SKIP_DATAÚSTOP_ITERATIONÚcolumn_iteratorr   r   r   Úappendr   Úlenr   )	r   Ú	row_indexÚrowÚrow_positionÚ
return_rowÚtmp_rowÚcolumn_indexÚ
cell_valueÚcolumn_positionr	   r	   r
   Úto_array<   s@   €
ÿ

ÿ
ÿ


€
ÜzSheetReader.to_arrayc                 C   s   t |  ¡ ƒS )z•
        iterate each row

        override this function in the sitation where
        number_of_rows() is difficult or costly to implement
        )r   Únumber_of_rows©r   r	   r	   r
   r*   e   s   zSheetReader.row_iteratorc                 c   s&   � t |  ¡ ƒD ]	}|  ||¡V  qdS )zª
        iterate each column of a given row

        override this function in the sitation where
        number_of_columns() is difficult or costly to implement
        N)r   Únumber_of_columnsr7   ©r   r2   Úcolumnr	   r	   r
   r.   n   s   €ÿzSheetReader.column_iteratorc                 C   ó   t dƒ‚)ú:
        implement this method for easy extension
        z!Please implement number_of_rows()©Ú	Exceptionr;   r	   r	   r
   r:   x   ó   zSheetReader.number_of_rowsc                 C   r?   )r@   z$Please implement number_of_columns()rA   r;   r	   r	   r
   r<   ~   rC   zSheetReader.number_of_columnsc                 C   r?   )r@   zPlease implement cell_value()rA   r=   r	   r	   r
   r7   „   rC   zSheetReader.cell_valuec                 C   s   d S r   r	   r;   r	   r	   r
   ÚcloseŠ   s   zSheetReader.close)r   r   r   r   NNFN)r   r   r   r   r   r9   r*   r.   r:   r<   r7   rD   r	   r	   r	   r
   r      s$    
ö)	
r   c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚSheetWriterz
    Generic sheet writer
    c                 K   s0   |r|}nt j}|| _|| _|| _|  |¡ d S r   )r+   ÚDEFAULT_SHEET_NAMEÚ_native_bookr   r   Úset_sheet_name)r   Únative_bookÚnative_sheetr   r&   Ú
sheet_namer	   r	   r
   r   “   s   zSheetWriter.__init__c                 C   ó   dS )z 
        Set sheet name
        Nr	   )r   r   r	   r	   r
   rH   �   ó   zSheetWriter.set_sheet_namec                 C   r?   )z+
        write a row into the file
        zPlease implement write_row())ÚNotImplementedError)r   Úarrayr	   r	   r
   Ú	write_row£   rC   zSheetWriter.write_rowc                 C   s   |D ]}|   |¡ qdS )z6
        For standalone usage, write an array
        N)rP   )r   Útabler2   r	   r	   r
   Úwrite_array©   s   ÿzSheetWriter.write_arrayc                 C   rL   )z2
        This call actually save the file
        Nr	   r;   r	   r	   r
   rD   °   rM   zSheetWriter.closeN)	r   r   r   r   r   rH   rP   rR   rD   r	   r	   r	   r
   rE   Ž   s    
rE   )r   Úpyexcel_io._compactr   Úpyexcel_io.utilsr   Úpyexcel_io.constantsr+   Úobjectr   r   rE   r	   r	   r	   r
   Ú<module>   s    	
u