o
    5ti                     @   s`   d dl Z d dlmZ d dlmZ d dlZddlmZ ddlmZ ddl	m
Z
 G d	d
 d
e
ZdS )    N)Decimal)Any   )import_error_msg_template   serialize_dp)TextTableWriterc                       sd   e Zd ZdZdZedefddZedefddZ	de
dd	f fd
dZde
dd	fddZ  ZS )TomlTableWriterz
    A table writer class for
    `TOML <https://github.com/toml-lang/toml>`__ data format.

        :Example:
            :ref:`example-toml-table-writer`
    tomlreturnc                 C   s   | j S )N)FORMAT_NAMEself r   S/home/ubuntu/.local/lib/python3.10/site-packages/pytablewriter/writer/text/_toml.pyformat_name   s   zTomlTableWriter.format_namec                 C   s   dS )NTr   r   r   r   r   support_split_write   s   z#TomlTableWriter.support_split_writekwargsNc                    s(   t  jdi | d| _d| _d| _d S )NFTr   )super__init__is_formatting_float_is_require_table_name_is_require_header)r   r   	__class__r   r   r      s   
zTomlTableWriter.__init__c                    s   zddl  G  fddd jj}W n ty"   ttd  w | jI | 	  | 
  g }| jD ]#}i }t| jdd |D D ]\}}t|rMqC|||< qC|| q4| j j| j|i| d W d   dS 1 srw   Y  dS )	z
        |write_table| with
        `TOML <https://github.com/toml-lang/toml>`__ format.

        :raises pytablewriter.EmptyTableNameError:
            If the |headers| is empty.
        :Example:
            :ref:`example-toml-table-writer`
        r   Nc                       s$   e Zd Zedf fdd	Z  ZS )z5TomlTableWriter.write_table.<locals>.TomlTableEncoderFc                    s,   t  j||d t| jt< jj| jt< d S )N)_dictpreserve)r   r   str
dump_funcsencoder_dump_floatr   )r   r   r   )r   r   r   r   r   6   s   
z>TomlTableWriter.write_table.<locals>.TomlTableEncoder.__init__)__name__
__module____qualname__dictr   __classcell__r   r   r   r   TomlTableEncoder5   s    r(   r   c                 S   s   g | ]}t |qS r   r   ).0value_dpr   r   r   
<listcomp>J   s    z/TomlTableWriter.write_table.<locals>.<listcomp>)r    )r   r    TomlEncoderImportErrorwarningswarnr   format_logger_verify_property_preprocess_table_value_dp_matrixzipheaderstypepyis_null_stringappendstreamwritedumps
table_name)r   r   r(   bodyvalue_dp_listrowheadervaluer   r'   r   write_table'   s.   


 "zTomlTableWriter.write_table)r"   r#   r$   __doc__r   propertyr   r   boolr   r   r   rC   r&   r   r   r   r   r
      s    r
   )r.   decimalr   typingr   r7   _commonr   r   _text_writerr	   r
   r   r   r   r   <module>   s    