
    g&                         d dl Z d dlZd dlZd dlmZ d dlmZ ej                  dk\  reZ	ddZ
ddZd Zd Zd	 Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    N)Decimal)InlineTableDict   c                 p    |j                   st        d      t        | |      }|j                  |       |S )a  Writes out dict as toml to a file

    Args:
        o: Object to dump into toml
        f: File descriptor where the toml should be stored
        encoder: The ``TomlEncoder`` to use for constructing the output string

    Returns:
        String containing the toml corresponding to dictionary

    Raises:
        TypeError: When anything other than file descriptor is passed
    z0You can only dump an object to a file descriptor)encoder)write	TypeErrordumps)ofr   ds       A/var/www/openai/venv/lib/python3.12/site-packages/toml/encoder.pydumpr      s3     77JKKa!AGGAJH    c                    d}|t        | j                        }|j                  | d      \  }}||z  }t        |       g}|r|j	                         D cg c]  }t        |       }}|D ]  }||v st        d       ||z  }|j                         }	|D ]V  }|j                  ||   |      \  }}
|s|s#|
s!|r|dd dk7  r|dz  }|d|z   dz   z  }|r||z  }|
D ]  }|
|   |	|d	z   |z   <    X |	}|r|S c c}w )
a  Stringifies input dict as toml

    Args:
        o: Object to dump into toml
        encoder: The ``TomlEncoder`` to use for constructing the output string

    Returns:
        String containing the toml corresponding to dict

    Examples:
        ```python
        >>> import toml
        >>> output = {
        ... 'a': "I'm a string",
        ... 'b': ["I'm", "a", "list"],
        ... 'c': 2400
        ... }
        >>> toml.dumps(output)
        'a = "I'm a string"
b = [ "I'm", "a", "list",]
c = 2400
'
        ```
     NzCircular reference detectedz


[]
.)TomlEncoder	__class__dump_sectionsidvalues
ValueErrorget_empty_table)r   r   retvaladdtoretvalsections
outer_objssectionsection_ids	outer_objnewsectionsaddtosectionsss               r   r   r   "   sJ   . Fakk*#11!R8K
kFQ%J
2://2CD2Cwr'{2CD#IK' !>?? $ 	k!
--/G)0)>)>!7*,&K ;}fRSkV3dNF#-%//k)F"1>q1AGcMA-. #   ' ( M' Es   C5c                    t         j                  dk  r-t        | d      r!t        | t              r| j                  d      } d| z  } | d   dk(  r| dd  } | j                  d      }|s| j                  d	      r| dd
 } |r$| j                  dd      } | j                  d	d      } | j                  d      } t        |       dkD  rd
}| d   s| dd  } | d   j                  dd      | d<   | d   |   dk7  }| d   d | r'| d   |   dk(  r| }|dz  }| d   d | r| d   |   dk(  r|rd}nd}| d   |z   | d   z   g| dd  z   } t        |       dkD  rt        d	| d   z   d	z         S )Nr   decodezutf-8z%rr   u   '"z\'z\"z\xz\\\xu00   )sysversion_infohasattr
isinstancestrr+   
startswithreplacesplitlenunicode)vsinglequoteijoinxjoiners        r   	_dump_strrD   V   s   
$71h#7Jq#<NHHWqAts{abE,,s#Kall3'aGIIeS!IIc5!	A
a&1*t!"At||FD)!!Q4d2Ah1Q47d?IEFA d2Ah1Q47d? FFqTF]QqT!"QqrU* a&1* 31:#$$r   c                 d    dj                  |       j                  dd      j                  dd      S )N{}ze+0ze+ze-0ze-)formatr;   r?   s    r   _dump_floatrI   u   s*    ;;q>!!%.66udCCr   c                 l    | j                         }|| j                         S | j                         d d S )Ni)	utcoffset	isoformat)r?   rK   s     r   
_dump_timerM   y   s2    I{{};;="r   c                   6    e Zd ZedfdZd Zd Zd Zd Zd Z	y)	r   Fc                 &   || _         || _        t        t        t        t        t
        | j                  t        d t        d t        t        t        t        t        j                  d t        j                  t        t        j                  d i
| _        y )Nc                 4    t        |       j                         S N)r>   lowerrH   s    r   <lambda>z&TomlEncoder.__init__.<locals>.<lambda>   s    GAJ,,.r   c                     | S rQ    rH   s    r   rS   z&TomlEncoder.__init__.<locals>.<lambda>   s    1r   c                 B    | j                         j                  dd      S )Nz+00:00Z)rL   r;   rH   s    r   rS   z&TomlEncoder.__init__.<locals>.<lambda>   s    )>)>x)Mr   c                 "    | j                         S rQ   )rL   rH   s    r   rS   z&TomlEncoder.__init__.<locals>.<lambda>   s
    Q[[]r   )_dictpreserver9   rD   r>   list	dump_listboolintfloatrI   r   datetimetimerM   date
dump_funcs)selfrY   rZ   s      r   __init__zTomlEncoder.__init__   s`    
 Y$...;[MMM:MM2
r   c                 "    | j                         S rQ   )rY   )rd   s    r   r   zTomlEncoder.get_empty_table   s    zz|r   c                 h    d}|D ]%  }|dt        | j                  |            z   dz   z  }' |dz  }|S )Nr    ,])r>   
dump_value)rd   r?   r    r,   s       r   r\   zTomlEncoder.dump_list   sA    AcGDOOA$677#==F #r   c                    d}t        |t              r^g }|j                         D ]-  \  }}| j                  |      }|j	                  |dz   |z          / |ddj                  |      z   dz   z  }|S t        | j                  |            S )zPreserve inline table in its compact syntax instead of expanding
        into subsection.

        https://github.com/toml-lang/toml#user-content-inline-table
        r    = z{ z, z }
)r8   dictitemsdump_inline_tableappendjoinr>   rk   )rd   r$   r    val_listkr?   vals          r   rp   zTomlEncoder.dump_inline_table   s     gt$H1,,Q/E	C0 ( dTYYx00699FM4??7344r   c                     | j                   j                  t        |            }|t        |d      r| j                   t           }| ||      S  | j                   t
           |      S )N__iter__)rc   gettyper7   r[   r9   )rd   r?   dump_fns      r   rk   zTomlEncoder.dump_value   s[    //%%d1g.?wq*5ood+G$0wqzM6Jdooc6J16MMr   c           	         d}|dk7  r|d   dk7  r|dz  }| j                         }d}|D ]  }t        |      }|}t        j                  d|      st	        |      }t        ||   t              s#d}t        ||   t              r||   D ]  }	t        |	t              sd} |r||   D ]  }	d}
|d|z   |z   d	z   z  }| j                  |	||z         \  }}|r|d
   dk(  r|
|z  }
n||z  }|rm| j                         }|D ]S  }| j                  ||   ||z   dz   |z         \  }}|r|
d|z   |z   dz   |z   dz   z  }
|
|z  }
|D ]  }||   ||dz   |z   <    U |}|rm||
z  } 7||   >||dz   t        | j                  ||               z   dz   z  }i| j                  r2t        ||   t              r||dz   | j                  ||         z   z  }||   ||<    ||z  }||fS )Nr   r0   r   z^[A-Za-z0-9_-]+$FTr   z[[z]]
r   r   r   rm   )rY   r>   rematchrD   r8   rn   r[   r   rk   rZ   r   rp   )rd   r   supretstrretdictarraystrr$   qsectionarrayoftablesaarraytabstrr)   r   newddsecs1d1s                    r   r   zTomlEncoder.dump_sections   s|   "9RC3JC**,Gg&GH88/9$W-aj$/ %aj$/wZ%a.,0M ( !wZ&* D3J$9F$BB#11!S8^D1 ts{ +q 0 (A#'::<D())-););AdGS<DFEGJFK<@FA *BB $&$/C#I4H4758:>5?AF5G %HK$/2$5K*,B<>rFDb$9 +- )* !%A   !K/- (0 z-8e#3#*4??1W:+F#G$HJN$O P:aj/#J8e+11!G*=> ? %&gJ!W X 	(  r   N)
__name__
__module____qualname__rn   re   r   r\   rp   rk   r   rU   r   r   r   r      s&    !E 
 5"N3!r   r   c                   "     e Zd Zef fd	Z xZS )TomlPreserveInlineDictEncoderc                 .    t         t        |   |d       y )NT)superr   re   )rd   rY   r   s     r   re   z&TomlPreserveInlineDictEncoder.__init__   s    +T;E4Hr   r   r   r   rn   re   __classcell__r   s   @r   r   r      s    ! I Ir   r   c                   ,     e Zd Zeddf fd	Zd Z xZS )TomlArraySeparatorEncoderFri   c                     t         t        |   ||       |j                         dk(  rd|z   }|| _        y |j                  d      rt	        d      || _        y )Nr   ri   z 	
,zInvalid separator for arrays)r   r   re   stripr   	separator)rd   rY   rZ   r   r   s       r   re   z"TomlArraySeparatorEncoder.__init__   sW    '7xH??"iI # __Z(;<<"r   c                     g }d}|D ]"  }|j                  | j                  |             $ |g k7  rXg }|D ]I  }t        |t              r|D ]  }|j                  |        ,|dt	        |      z   | j
                  z   z  }K |}|g k7  rX|dz  }|S )Nr   rh   rj   )rq   rk   r8   r[   r>   r   )rd   r?   tr    r,   r)   rs          r   r\   z#TomlArraySeparatorEncoder.dump_list   s    AHHT__Q'( 2gAa&  cGAJ.??F  A 2g 	#r   )r   r   r   rn   re   r\   r   r   s   @r   r   r      s    !ES #r   r   c                   *     e Zd Zedf fd	Zd Z xZS )TomlNumpyEncoderFc                    dd l }t        t        |   ||       t        | j
                  |j                  <   t        | j
                  |j                  <   t        | j
                  |j                  <   | j                  | j
                  |j                  <   | j                  | j
                  |j                  <   | j                  | j
                  |j                  <   y )Nr   )numpyr   r   re   rI   rc   float16float32float64	_dump_intint16int32int64)rd   rY   rZ   npr   s       r   re   zTomlNumpyEncoder.__init__  s    .uh?&1

#&1

#&1

#$(NN!$(NN!$(NN!r   c                 6    dj                  t        |            S )NrF   )rG   r^   rd   r?   s     r   r   zTomlNumpyEncoder._dump_int  s    {{3q6""r   )r   r   r   rn   re   r   r   r   s   @r   r   r     s    !E 3#r   r   c                   $     e Zd Zedf fd	Z xZS )TomlPreserveCommentEncoderFc                 `     ddl m} t        t           ||        fd j
                  |<   y )Nr   )CommentValuec                 :    | j                  j                        S rQ   )r   rk   )r?   rd   s    r   rS   z5TomlPreserveCommentEncoder.__init__.<locals>.<lambda>#  s    !&&2Ir   )toml.decoderr   r   r   re   rc   )rd   rY   rZ   r   r   s   `   r   re   z#TomlPreserveCommentEncoder.__init__   s&    -($8I(I%r   r   r   s   @r   r   r     s    !E J Jr   r   c                   $     e Zd Zd Z fdZ xZS )TomlPathlibEncoderc                 *    t        t        |            S rQ   )rD   r9   r   s     r   _dump_pathlib_pathz%TomlPathlibEncoder._dump_pathlib_path(  s    Q  r   c                     dt         j                  k  r%dd l}t        ||j                        rt        |      }t        t        | #  |      S )N)r      r   )	r5   r6   pathlibr8   PurePathr9   r   r   rk   )rd   r?   r   r   s      r   rk   zTomlPathlibEncoder.dump_value+  s@    S%%%!W--.F'9!<<r   )r   r   r   r   rk   r   r   s   @r   r   r   &  s    != =r   r   rQ   )r`   r|   r5   decimalr   r   r   r6   r9   r>   r   r   rD   rI   rM   objectr   r   r   r   r   r   rU   r   r   <module>r      s     	 
  (tG,1h%>Dh!& h!VIK I 8#{ # J J
= 
=r   