o
    ‹¨Êh³  ã                   @   sT   d Z ddlmZ G dd„ deƒZG dd„ deƒZG dd„ deƒZG d	d
„ d
eƒZdS )z»
    pyexcel.renderer
    ~~~~~~~~~~~~~~~~~~~

    Renders pyexcel.Book and pyexcel.Sheet to any format

    :copyright: (c) 2015-2017 by Onni Software Ltd.
    :license: New BSD License
é    Nc                   @   sD   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚAbstractRendererú4
    Close some functions that will not be used
    Úwc                 C   s   || _ d | _d| _d S )NT)Ú
_file_typeÚ_streamÚ_write_title©ÚselfÚ	file_type© r   úB/var/www/html/env/lib/python3.10/site-packages/pyexcel/renderer.pyÚ__init__   s   
zAbstractRenderer.__init__c                 C   ó   t dƒ‚)zl
        If your renderer's output is binary, please override it and
        return BytesIO instead
        úNo io for this renderer©ÚNotImplementedError©r	   r   r   r   Úget_io   s   zAbstractRenderer.get_ioc                 K   r   )a  Render a sheet to a physical file

        :param file_name: the output file name
        :param sheet: pyexcel sheet instance to be rendered
        :param write_title: to write sheet name
        :param keywords: any other keywords to the renderer
        úWe are not writing to filer   ©r	   Ú	file_nameÚsheetÚkeywordsr   r   r   Úrender_sheet_to_file    ó   z%AbstractRenderer.render_sheet_to_filec                 K   r   )a  Render a sheet to a file stream

        :param file_stream: the output file stream
        :param sheet: pyexcel sheet instance to be rendered
        :param write_title: to write sheet name
        :param keywords: any other keywords to the renderer
        r   r   )r	   Úfile_streamr   r   r   r   r   Úrender_sheet_to_stream*   r   z'AbstractRenderer.render_sheet_to_streamc                 K   r   )a   Render a book to a physical file

        :param file_name: the output file name
        :param book: pyexcel book instance to be rendered
        :param write_title: to write sheet names
        :param keywords: any other keywords to the renderer
        r   r   ©r	   r   Úbookr   r   r   r   Úrender_book_to_file4   r   z$AbstractRenderer.render_book_to_filec                 K   r   )a  Render a book to a file stream

        :param file_stream: the output file stream
        :param book: pyexcel book instance to be rendered
        :param write_title: to write sheet names
        :param keywords: any other keywords to the renderer
        r   r   )r	   r   r   r   r   r   r   Úrender_book_to_stream>   r   z&AbstractRenderer.render_book_to_streamN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
WRITE_FLAGr   r   r   r   r   r    r   r   r   r   r      s    


r   c                   @   sh   e Zd ZdZdd„ Z	ddd„Z	ddd„Z	dd	d
„Z	ddd„Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚRendererzG
    Render pyexcel sheet or book into excel format as any formats
    c                 C   s   t  ¡ S ©N)ÚcompactÚStringIOr   r   r   r   r   N   ó   zRenderer.get_ioTc                 K   óX   |   |¡ t|| jƒ�}|  |¡ | j|fi |¤Ž W d   ƒ d S 1 s%w   Y  d S r'   )Úset_write_titleÚopenr%   Úset_output_streamÚrender_sheet)r	   r   r   Úwrite_titler   Úoutfiler   r   r   r   Q   ó
   

"þzRenderer.render_sheet_to_filec                 K   ó*   |   |¡ |  |¡ | j|fi |¤Ž d S r'   )r,   r.   r/   )r	   r   r   r0   r   r   r   r   r   Y   ó   

zRenderer.render_sheet_to_streamc                 K   r+   r'   )r,   r-   r%   r.   Úrender_book)r	   r   r   r0   r   r1   r   r   r   r   `   r2   zRenderer.render_book_to_filec                 K   r3   r'   )r,   r.   r5   )r	   r   r   r0   r   r   r   r   r    h   r4   zRenderer.render_book_to_streamc                 K   r   )zå
        If your renderer is kind of text format, you just
        need to implement this function.

        :param sheet: pyexcel sheet instance to be rendered
        :param keywords: any other keywords to the renderer
        zPlease render sheetr   )r	   r   r   r   r   r   r/   o   r   zRenderer.render_sheetc                 K   s@   |  ¡ d }t|ƒD ]\}}|  |¡ ||k r| j d¡ q
dS )z©
        Implementation of book rendering

        :param book: pyexcel book instance to be rendered
        :param keywords: any other keywords to the renderer
        é   Ú
N)Únumber_of_sheetsÚ	enumerater/   r   Úwrite)r	   r   r   r8   Úindexr   r   r   r   r5   y   s   
€ýzRenderer.render_bookc                 C   ó
   || _ dS )zupdate internal streamN)r   )r	   Ústreamr   r   r   r.   †   ó   
zRenderer.set_output_streamc                 C   r<   )zupdate write title flagN)r   )r	   Úflagr   r   r   r,   Š   r>   zRenderer.set_write_titleN)T)r!   r"   r#   r$   r   r   r   r   r    r/   r5   r.   r,   r   r   r   r   r&   I   s    
ÿ	
ÿ
ÿ	
ÿ
r&   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚBinaryRendererz4
    Renderer pyexcel data into a binary object
    c                 C   s    t  | |¡ tjrd| _d S d S )NÚwb)r&   r   r(   ÚPY3_AND_ABOVEr%   r   r   r   r   r   ”   s   
ÿzBinaryRenderer.__init__c                 C   s   t  ¡ }|S r'   )r(   ÚBytesIO)r	   Úior   r   r   r   ™   s   zBinaryRenderer.get_ioN)r!   r"   r#   r$   r   r   r   r   r   r   r@   �   s    r@   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú
DbRendererr   c                 C   r   )Nr   ©Ú	Exceptionr   r   r   r   r   ¤   r*   zDbRenderer.get_ioc                 K   r   ©Nr   rF   r   r   r   r   r   §   r*   zDbRenderer.render_sheet_to_filec                 K   r   rH   rF   r   r   r   r   r   ª   r*   zDbRenderer.render_book_to_fileN)r!   r"   r#   r$   r   r   r   r   r   r   r   rE   Ÿ   s
    rE   )	r$   Úpyexcel._compactÚ_compactr(   Úobjectr   r&   r@   rE   r   r   r   r   Ú<module>   s    	<F