o
    5tio
                     @   s8   d Z ddlZddlmZmZmZ G dd dejdZdS )zA
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
    N)IOAnyUnionc                   @   s   e Zd ZdZeejdefddZeejde	fddZ
ejdeddfd	d
Zdeeef de	deddfddZdefddZdeddfddZejdeddfddZejdddZejdddZdS )TableWriterInterfacez.
    Interface class for writing a table.
    returnc                 C      dS )zHFormat name for the writer.

        Returns:
            |str|
        N selfr   r   S/home/ubuntu/.local/lib/python3.10/site-packages/pytablewriter/writer/_interface.pyformat_name       z TableWriterInterface.format_namec                 C   r   )zIndicates whether the writer class supports iterative table writing (``write_table_iter``) method.

        Returns:
            bool: |True| if the writer supported iterative table writing.
        Nr   r	   r   r   r   support_split_write   r   z(TableWriterInterface.support_split_writekwargsNc                 K   r   )z 
        |write_table|.
        Nr   r
   r   r   r   r   write_table    r   z TableWriterInterface.write_tableoutputclose_after_writec                 K      t | j d)Nz# writer did not support dump methodNotImplementedErrorr   )r
   r   r   r   r   r   r   dump&   s   zTableWriterInterface.dumpc                 C   r   )Nz$ writer did not support dumps methodr   r	   r   r   r   dumps+   s   zTableWriterInterface.dumpsc                 K   s   | j di | dS )a  
        Write a table with iteration.
        "Iteration" means that divide the table writing into multiple writes.
        This method is helpful, especially for extensive data.
        The following are the premises to execute this method:

        - set iterator to the |value_matrix|
        - set the number of iterations to the |iteration_length| attribute

        Call back function (Optional):
        A callback function is called when each iteration of writing a table is completed.
        You can set a callback function via the |write_callback| attribute.

        Raises:
            pytablewriter.NotSupportedError: If the writer class does not support this method.

        .. note::
            The following classes do not support this method:

                - |HtmlTableWriter|
                - |RstGridTableWriter|
                - |RstSimpleTableWriter|

            ``support_split_write`` attribute return |True| if the class
            is supporting this method.
        Nr   )_write_table_iterr   r   r   r   write_table_iter.   s   z%TableWriterInterface.write_table_iterc                 K      d S Nr   r   r   r   r   r   L      z&TableWriterInterface._write_table_iterc                 C   r   r   r   r	   r   r   r   closeP   r   zTableWriterInterface.closec                 C   r   r   r   r	   r   r   r   _write_value_row_separatorT   r   z/TableWriterInterface._write_value_row_separator)r   N)__name__
__module____qualname____doc__propertyabcabstractmethodstrr   boolr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	   s6    

r   )	metaclass)r#   r%   typingr   r   r   ABCMetar   r   r   r   r   <module>   s    