U
    [e:                     @   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-2022 by Onni Software Ltd.
    :license: New BSD License
    )_compactc                   @   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 )AbstractRenderer4
    Close some functions that will not be used
    wc                 C   s   || _ d | _d| _d S )NT)Z
_file_type_stream_write_title)self	file_type r
   R/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pyexcel/renderer.py__init__   s    zAbstractRenderer.__init__c                 C   s   t ddS )zl
        If your renderer's output is binary, please override it and
        return BytesIO instead
        No io for this rendererNNotImplementedErrorr   r
   r
   r   get_io   s    zAbstractRenderer.get_ioc                 K   s   t ddS )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 fileNr   r   	file_namesheetkeywordsr
   r
   r   render_sheet_to_file    s    z%AbstractRenderer.render_sheet_to_filec                 K   s   t ddS )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   Nr   )r   file_streamr   r   r
   r
   r   render_sheet_to_stream*   s    z'AbstractRenderer.render_sheet_to_streamc                 K   s   t ddS )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   Nr   r   r   bookr   r
   r
   r   render_book_to_file4   s    z$AbstractRenderer.render_book_to_filec                 K   s   t ddS )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   Nr   )r   r   r   r   r
   r
   r   render_book_to_stream>   s    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                   @   s`   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   s    zRenderer.get_ioTc              	   K   s>   |  | t|| j}| | | j|f| W 5 Q R X d S r$   )set_write_titleopenr"   set_output_streamrender_sheet)r   r   r   write_titler   outfiler
   r
   r   r   Q   s    

zRenderer.render_sheet_to_filec                 K   s&   |  | | | | j|f| d S r$   )r'   r)   r*   )r   r   r   r+   r   r
   r
   r   r   Y   s    

zRenderer.render_sheet_to_streamc              	   K   s>   |  | t|| j}| | | j|f| W 5 Q R X d S r$   )r'   r(   r"   r)   render_book)r   r   r   r+   r   r,   r
   r
   r   r   `   s    

zRenderer.render_book_to_filec                 K   s&   |  | | | | j|f| d S r$   )r'   r)   r-   )r   r   r   r+   r   r
   r
   r   r   h   s    

zRenderer.render_book_to_streamc                 K   s   t ddS )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 sheetNr   )r   r   r   r
   r
   r   r*   o   s    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   r0   indexr   r
   r
   r   r-   y   s
    
zRenderer.render_bookc                 C   s
   || _ dS )zupdate internal streamN)r   )r   streamr
   r
   r   r)      s    zRenderer.set_output_streamc                 C   s
   || _ dS )zupdate write title flagN)r   )r   flagr
   r
   r   r'      s    zRenderer.set_write_titleN)T)T)T)T)r   r   r    r!   r   r   r   r   r   r*   r-   r)   r'   r
   r
   r
   r   r#   I   s    
	 
 
	 

r#   c                   @   s   e Zd ZdZdZdd ZdS )BinaryRendererz4
    Renderer pyexcel data into a binary object
    wbc                 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   r6      s   r6   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	
DbRendererr   c                 C   s   t dd S )Nr   	Exceptionr   r
   r
   r   r      s    zDbRenderer.get_ioc                 K   s   t dd S Nr   r;   r   r
   r
   r   r      s    zDbRenderer.render_sheet_to_filec                 K   s   t dd S r=   r;   r   r
   r
   r   r      s    zDbRenderer.render_book_to_fileN)r   r   r    r!   r   r   r   r
   r
   r
   r   r:      s   r:   N)	r!   Zpyexcelr   r%   objectr   r#   r6   r:   r
   r
   r
   r   <module>   s
   	<F