U
    TeG                     @  s  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dl	m	Z	 d dl	mZ d dl	mZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dl#m$Z$ d dl#m%Z% d dl&m'Z' erd dl(m)Z) edddZ*eegdf Z+g Z,d e-d!< ed"d#dZ.G d$d% d%e/e0Z1edqd'd(d'd)d*d+d,Z2edrd-d(d'd.d*d/d,Z2edsd0d(d'd1d*d2d,Z2edtd3d(d'd4d*d5d,Z2edud6d(d'd7d*d8d,Z2edvd9d(d'd:d*d;d,Z2edwd<d(d'd=d*d>d,Z2edxd?d(d'd@d*dAd,Z2edydBd(d'dCd*dDd,Z2edzdEdCd'dFd*dGd,Z2ed{dEd(d'dHd*dId,Z2ed|dd(d'dd*dJd,Z2d}dLd(d'dd*dMd,Z2G dNdO dOeZ3G dPdQ dQeZ4ej5G dRdS dSZ6G dTdU dUeZ7G dVdW dWej8Z9G dXdY dYe9Z:G dZd[ d[e9Z;G d\d dZ<G d]d^ d^e<Z=G d_d` d`e<Z>G dad. d.e<e Z?G dbd1 d1e<eZ@G dcd) d)e<ZAG ddd7 d7e<e	ZBG ded: d:e<e
ZCG dfd= d=e<eZDG dgdh dhZEG didC dCe<e!ZFG djd# d#e<eZGG dkdH dHeGZHG dldF dFeGZIG dmd4 d4eJe<ZKG dnd@ d@e<e!ZLG dodp dpe<ZMdS )~    )annotationsN)date)datetime)time)tzinfo)Enum)TYPE_CHECKING)Any)Callable)
Collection)Iterable)Iterator)Sequence)TypeVar)cast)overload)PY38)decode)_CustomDict)_CustomFloat)
_CustomInt)_CustomList)wrap_method)CONTROL_CHARS)escape_string)InvalidStringError)	containerItemTItem)boundzlist[Encoder]CUSTOM_ENCODERSATAbstractTablec                   @  s   e Zd ZdZdS )_ConvertErrorzAn internal error raised when item() fails to convert a value.
    It should be a TypeError, but due to historical reasons
    it needs to subclass ValueError as well.
    N)__name__
__module____qualname____doc__ r(   r(   `/mounts/lovelace/software/anaconda3/envs/rescript-2/lib/python3.8/site-packages/tomlkit/items.pyr#   1   s   r#   .boolItem | NoneBool)value_parent
_sort_keysreturnc                 C  s   d S Nr(   r-   r.   r/   r(   r(   r)   item8   s    r3   intIntegerc                 C  s   d S r1   r(   r2   r(   r(   r)   r3   =   s    floatFloatc                 C  s   d S r1   r(   r2   r(   r(   r)   r3   B   s    strStringc                 C  s   d S r1   r(   r2   r(   r(   r)   r3   G   s    r   DateTimec                 C  s   d S r1   r(   r2   r(   r(   r)   r3   L   s    r   Datec                 C  s   d S r1   r(   r2   r(   r(   r)   r3   S   s    r   Timec                 C  s   d S r1   r(   r2   r(   r(   r)   r3   X   s    zSequence[dict]AoTc                 C  s   d S r1   r(   r2   r(   r(   r)   r3   ]   s    r   Arrayc                 C  s   d S r1   r(   r2   r(   r(   r)   r3   d   s    dictInlineTablec                 C  s   d S r1   r(   r2   r(   r(   r)   r3   i   s    Tablec                 C  s   d S r1   r(   r2   r(   r(   r)   r3   n   s    c                 C  s   d S r1   r(   r2   r(   r(   r)   r3   s   s    Fr	   c                   s  ddl m} t| tr| S t| tr0t| t S t| trLt| t t	| S t| t
rht| t t	| S t| trt|ttfrtnt}|| t d}t|   fdddD ]\}}t|| d||< q|S t| ttfr| rtdd	 | D r|d
kst|trtg }t}ntg t }t}| D ]~}t|tr|| t d}	t|  fdddD ]4\}}
t|
|	 d}t|	trd|j_||	|< qj|	}|| q2|S t| t	rt| S t| trt| j| j| j | j!| j"| j#| j$| j%t | & 'dd
S t| t(r8t)| j| j| j t | & S t| t*rht+| j!| j"| j#| j$| j%t | & S t,D ]R}z|| }W n t-k
r   Y n*X t|tst.dt/| d|  S qlt.dt/|  d
S )zCreate a TOML item from a Python object.

    :Example:

    >>> item(42)
    42
    >>> item([1, 2, 3])
    [1, 2, 3]
    >>> item({'a': 1, 'b': 2})
    a = 1
    b = 2
    r   )	ContainerFc                   s    rt | d t| d fS dS N   r   
isinstancer?   ir/   r(   r)   <lambda>       zitem.<locals>.<lambda>key)r.   r/   c                 s  s   | ]}t |tV  qd S r1   rE   .0vr(   r(   r)   	<genexpr>   s     zitem.<locals>.<genexpr>NTc                   s   t | d t r| d ndfS rC   rE   rG   rI   r(   r)   rJ      rK    z+00:00ZzCustom encoder returned z, not a subclass of ItemzInvalid type )0tomlkit.containerrB   rF   r   r*   r,   Triviar4   r5   r8   r6   r7   r?   r>   r@   rA   sorteditemsr3   listtupleallr=   triviatrailappendr9   from_rawr   r:   yearmonthdayhourminutesecondmicrosecondr   	isoformatreplacer   r;   r   r<   r    	TypeErrorr#   type)r-   r.   r/   rB   Ztable_constructorvalkrP   atableZ_vrH   encoderrvr(   rI   r)   r3   x   s    








c                   @  s   e Zd ZdZdZdZdZedd dddZe	d	dd
dZ
e	d	dddZe	ddddZddddZddddZddddZddddZd dddZdS )
StringType""""''''Fr0   c                 C  s   | j | j| j| jd||f S )N))FF)FT)TF)TT)SLBMLBSLLMLL)clsliteral	multiliner(   r(   r)   select   s    zStringType.selectzCollection[str]c                 C  sB   t dhB }ddh}tj|dhB tj|dhB | tjdtjdi|  S )N\
rq   rr   r(   r   rp   rv   rw   rx   ry   )selfZescaped_in_basicallowed_in_multiliner(   r(   r)   escaped_sequences   s    
    zStringType.escaped_sequencesc              	   C  sB   t dh }ddh}tjdtjdtj|dhB tj|dhB | i|  S )N	r   r   r(   rs   rt   r   )r   Zforbidden_in_literalr   r(   r(   r)   invalid_sequences  s    
    zStringType.invalid_sequencesr8   c                 C  s
   | j d S Nr   r-   r   r(   r(   r)   unit  s    zStringType.unitr*   c                 C  s   | t jt jhkS r1   )rp   rv   rw   r   r(   r(   r)   is_basic  s    zStringType.is_basicc                 C  s   | t jt jhkS r1   )rp   rx   ry   r   r(   r(   r)   
is_literal  s    zStringType.is_literalc                 C  s   | t jt jhkS r1   )rp   rv   rx   r   r(   r(   r)   is_singleline  s    zStringType.is_singlelinec                 C  s   | t jt jhkS r1   )rp   rw   ry   r   r(   r(   r)   is_multiline  s    zStringType.is_multilinec                 C  s(   t jt jt jt jt jt jt jt ji|  S r1   )rp   rv   rw   rx   ry   r   r(   r(   r)   toggle"  s        zStringType.toggleN)FF)r$   r%   r&   rv   rw   rx   ry   classmethodr}   propertyr   r   r   r   r   r   r   r   r(   r(   r(   r)   rp      s"   rp   c                   @  s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
BoolTypetruefalsec                 C  s   t jdt jdi|  S )NTF)r   TRUEFALSEr   r(   r(   r)   __bool__/  s    zBoolType.__bool__c                 C  s
   t | jS r1   )iterr-   r   r(   r(   r)   __iter__2  s    zBoolType.__iter__c                 C  s
   t | jS r1   )lenr-   r   r(   r(   r)   __len__5  s    zBoolType.__len__N)r$   r%   r&   r   r   r   r   r   r(   r(   r(   r)   r   +  s
   r   c                   @  sP   e Zd ZU dZdZded< dZded< dZded< dZded< d d	d
dZ	dS )rU   z,
    Trivia information (aka metadata).
    rR   r8   indent
comment_wscommentr   r\   ru   c                 C  s
   t | S r1   )dataclassesrg   r   r(   r(   r)   copyH  s    zTrivia.copyN)
r$   r%   r&   r'   r   __annotations__r   r   r\   r   r(   r(   r(   r)   rU   9  s   
rU   c                   @  s   e Zd ZdZdZdZdZdS )KeyTypez
    The type of a Key.

    Keys can be bare (unquoted), or quoted using basic ("), or literal (')
    quotes following the same escaping rules as single-line StringType.
    rR   rq   rs   N)r$   r%   r&   r'   BareBasicLiteralr(   r(   r(   r)   r   L  s   r   c                   @  s   e Zd ZU dZded< ded< ded< ded< ded	< ejd
dddZejdddddZddddZ	ddddZ
d ddddZddddZddddZdddd Zddd!d"Zd#S )$KeyzBase class for a keyr8   sep	_originalzlist[SingleKey]_keysr*   _dottedrM   r4   ru   c                 C  s   d S r1   r(   r   r(   r(   r)   __hash__b  s    zKey.__hash__object)_Key__or0   c                 C  s   d S r1   r(   )r   r   r(   r(   r)   __eq__f  s    z
Key.__eq__c                 C  s   | j S )z$If the key is followed by other keys)r   r   r(   r(   r)   	is_dottedj  s    zKey.is_dottedzIterator[SingleKey]c                 C  s
   t | jS r1   )r   r   r   r(   r(   r)   r   n  s    zKey.__iter__	DottedKeyotherr0   c                 C  s   | j |j  }t|| jdS )z"Concatenate keys into a dotted key)r   )r   r   r   )r   r   keysr(   r(   r)   concatq  s    z
Key.concatc                 C  s   t | jdkS )z'Check if the key contains multiple keysrD   )r   r   r   r(   r(   r)   is_multiv  s    zKey.is_multic                 C  s   | j S )The TOML representationr   r   r(   r(   r)   	as_stringz  s    zKey.as_stringc                 C  s   |   S r1   r   r   r(   r(   r)   __str__~  s    zKey.__str__c                 C  s   d|    dS )Nz<Key >r   r   r(   r(   r)   __repr__  s    zKey.__repr__N)r$   r%   r&   r'   r   abcabstractmethodr   r   r   r   r   r   r   r   r   r(   r(   r(   r)   r   Y  s"   
r   c                   @  sf   e Zd ZdZddddddddd	Zedd
ddZdd
ddZdd
ddZdddddZ	dS )	SingleKeyzA single keyNr8   zKeyType | None
str | NoneNone)rk   tr   originalr0   c                 C  s   |d kr,|rt dd |D r&tj}ntj}|| _|d kr>d}|| _|| _|d kr||tjkrdt|n|}|j | |j }|| _	| g| _
d| _d S )Nc                 s  s&   | ]}|t jt j d  d kV  qdS )-_N)stringascii_lettersdigitsrO   cr(   r(   r)   rQ     s    z%SingleKey.__init__.<locals>.<genexpr> = F)anyr   r   r   r   r   rM   r   r-   r   r   r   )r   rk   r   r   r   Zkey_strr(   r(   r)   __init__  s"    zSingleKey.__init__ru   c                 C  s   | j jS )z-The delimiter: double quote/single quote/none)r   r-   r   r(   r(   r)   	delimiter  s    zSingleKey.delimiterr*   c                 C  s   | j tjkS )zCheck if the key is bare)r   r   r   r   r(   r(   r)   is_bare  s    zSingleKey.is_barer4   c                 C  s
   t | jS r1   )hashrM   r   r(   r(   r)   r     s    zSingleKey.__hash__r	   r   c                 C  s*   t |tr t |to| j|jkS | j|kS r1   )rF   r   r   rM   r   r   r(   r(   r)   r     s    
zSingleKey.__eq__)NNN)
r$   r%   r&   r'   r   r   r   r   r   r   r(   r(   r(   r)   r     s      r   c                   @  s@   e Zd ZddddddddZdd	d
dZdddddZdS )r   NzIterable[SingleKey]r   r   )r   r   r   r0   c                 C  sb   t || _|d kr(ddd | jD }|d kr4dn|| _|| _d| _ddd | jD | _d S )N.c                 s  s   | ]}|  V  qd S r1   r   rO   rk   r(   r(   r)   rQ     s     z%DottedKey.__init__.<locals>.<genexpr>r   Fc                 s  s   | ]}|j V  qd S r1   rL   r   r(   r(   r)   rQ     s     )rX   r   joinr   r   r   rM   )r   r   r   r   r(   r(   r)   r     s    
zDottedKey.__init__r4   ru   c                 C  s   t t| jS r1   )r   rY   r   r   r(   r(   r)   r     s    zDottedKey.__hash__r   r*   )_DottedKey__or0   c                 C  s   t |to| j|jkS r1   )rF   r   r   )r   r   r(   r(   r)   r     s    zDottedKey.__eq__)NN)r$   r%   r&   r   r   r   r(   r(   r(   r)   r     s
     r   c                   @  s   e Zd ZdZdddddZedddd	Zed
dddZddddZeddddZ	ddddZ
dd dddZd
d dddZddddZddddZddd d!Zddd"d#Zd,d%d&Zd'd( Zd)d* Zd+S )-r   z)
    An item within a TOML document.
    rU   r   )r[   r0   c                 C  s
   || _ d S r1   _trivia)r   r[   r(   r(   r)   r     s    zItem.__init__ru   c                 C  s   | j S )z,The trivia element associated with this itemr   r   r(   r(   r)   r[     s    zItem.triviar4   c                 C  s
   t  d S r1   NotImplementedErrorr   r(   r(   r)   discriminant  s    zItem.discriminantr8   c                 C  s
   t  dS )r   Nr   r   r(   r(   r)   r     s    zItem.as_stringr	   c                 C  s   | S r1   r(   r   r(   r(   r)   r-     s    z
Item.valuec                 C  s
   t  dS )z#Returns as pure python object (ppo)Nr   r   r(   r(   r)   unwrap  s    zItem.unwrap)r   r0   c                 C  s*   |  dsd| }d| j_|| j_| S )zAttach a comment to this item##  )strip
startswithr   r   r   )r   r   r(   r(   r)   r     s
    zItem.commentr   r0   c                 C  s0   | j jdr dd|  | j _nd| | j _| S )z,Indent this item with given number of spacesr   r   )r   r   r   )r   r   r(   r(   r)   r     s    zItem.indentr*   c                 C  s
   t | tS r1   )rF   r,   r   r(   r(   r)   
is_boolean  s    zItem.is_booleanc                 C  s
   t | tS r1   )rF   rA   r   r(   r(   r)   is_table  s    zItem.is_tablec                 C  s
   t | tS r1   )rF   r@   r   r(   r(   r)   is_inline_table  s    zItem.is_inline_tablec                 C  s
   t | tS r1   )rF   r=   r   r(   r(   r)   is_aot
  s    zItem.is_aot   c                 C  s   | j fS r1   r   r   protocolr(   r(   r)   	_getstate  s    zItem._getstatec                 C  s
   |  dS N   )__reduce_ex__r   r(   r(   r)   
__reduce__  s    zItem.__reduce__c                 C  s   | j | |fS r1   )	__class__r   r   r(   r(   r)   r     s    zItem.__reduce_ex__N)r   )r$   r%   r&   r'   r   r   r[   r   r   r-   r   r   r   r   r   r   r   r   r   r   r(   r(   r(   r)   r     s&   
	
c                   @  s   e Zd ZdZdddddddZedd	d
dZedd	ddZedd	ddZedd	ddZ	dd	ddZ
dd	ddZdd	ddZdddZdS ) 
Whitespacez
    A whitespace literal.
    Fr8   r*   r   )sfixedr0   c                 C  s   || _ || _d S r1   _s_fixed)r   r   r   r(   r(   r)   r     s    zWhitespace.__init__ru   c                 C  s   | j S r1   r   r   r(   r(   r)   r      s    zWhitespace.sc                 C  s   | j S )z$The wrapped string of the whitespacer   r   r(   r(   r)   r-   $  s    zWhitespace.valuerU   c                 C  s   t dd S )Nz&Called trivia on a Whitespace variant.)RuntimeErrorr   r(   r(   r)   r[   )  s    zWhitespace.triviar4   c                 C  s   dS r   r(   r   r(   r(   r)   r   -  s    zWhitespace.discriminantc                 C  s   | j S )zLIf the whitespace is fixed, it can't be merged or discarded from the output.)r   r   r(   r(   r)   is_fixed1  s    zWhitespace.is_fixedc                 C  s   | j S r1   r   r   r(   r(   r)   r   5  s    zWhitespace.as_stringc                 C  s   d| j j dt| j dS )N<r   r   )r   r$   reprr   r   r(   r(   r)   r   8  s    zWhitespace.__repr__r   c                 C  s   | j | jfS r1   r   r   r(   r(   r)   r   ;  s    zWhitespace._getstateN)F)r   )r$   r%   r&   r'   r   r   r   r-   r[   r   r   r   r   r   r(   r(   r(   r)   r     s   r   c                   @  s>   e Zd ZdZeddddZddddZddd	d
ZdS )Commentz
    A comment literal.
    r4   ru   c                 C  s   dS )NrD   r(   r   r(   r(   r)   r   D  s    zComment.discriminantr8   c                 C  s    | j j t| j j | j j S r1   )r   r   r   r   r\   r   r(   r(   r)   r   H  s    zComment.as_stringc                 C  s   | j j t| j j S r1   )r   r   r   r   r   r(   r(   r)   r   M  s    zComment.__str__N)r$   r%   r&   r'   r   r   r   r   r(   r(   r(   r)   r   ?  s
   r   c                      s  e Zd ZdZdddd dddZddddd fd	d
ZddddZeZddddZe	ddddZ
e	ddddZddddZdd ZdddZeejZeejZeejZeejZejZeejZeejZeejZejZeejZejZeejZeejZeejZeejZeej Z eej!Z!eej"Z"eej#Z#eej$Z$eej%Z%eej&Z&eej'Z'eej(Z(eej)Z)eej*Z*eej+Z+eej,Z,eej-Z-eej.Z.eej/Z/dd Z0dd Z1  Z2S ) r5   z
    An integer literal.
    r4   rU   r8   r-   r[   rawr0   c                 C  s   t | |S r1   )r4   __new__rz   r-   r[   r   r(   r(   r)   r   V  s    zInteger.__new__r   c                   s4   t  | || _|| _d| _td|r0d| _d S )NFz
^[+\-]\d+$Tsuperr   r   _raw_signrematchr   r-   r[   r   r   r(   r)   r   Y  s    zInteger.__init__ru   c                 C  s   | j S r1   r   r   r(   r(   r)   r   b  s    zInteger.unwrapc                 C  s   t |  S r1   r   r   r   r(   r(   r)   r   g  s    zInteger.__hash__c                 C  s   dS r   r(   r   r(   r(   r)   r   j  s    zInteger.discriminantc                 C  s   | S )zThe wrapped integer valuer(   r   r(   r(   r)   r-   n  s    zInteger.valuec                 C  s   | j S r1   r  r   r(   r(   r)   r   s  s    zInteger.as_stringc                 C  s4   t |}| jr&|dkrdnd}|| }t|| j|S Nr   +r   )r8   r  r5   r   r   resultr   signr(   r(   r)   _newv  s
    zInteger._newr   c                 C  s   t | | j| jfS r1   )r4   r   r  r   r(   r(   r)   r   ~  s    zInteger._getstatec                 C  s$   t | |}|tkr|S t| |S r1   )r4   __rtruediv__NotImplementedr7   r  r   r   r  r(   r(   r)   r    s    zInteger.__rtruediv__c                 C  s$   t | |}|tkr|S t| |S r1   )r4   __truediv__r  r7   r  r  r(   r(   r)   r    s    zInteger.__truediv__)r   )3r$   r%   r&   r'   r   r   r   __int__r   r   r   r-   r   r  r   r   r4   __abs____add____and____ceil__r   	__floor____floordiv__
__invert____le__
__lshift____lt____mod____mul____neg____or____pos____pow____radd____rand____rfloordiv____rlshift____rmod____rmul____ror__	__round____rpow____rrshift__
__rshift____rxor__	__trunc____xor__r  r  __classcell__r(   r(   r  r)   r5   Q  s\   	




























c                      s  e Zd ZdZdddd dddZddddd fd	d
ZddddZeZddddZe	ddddZ
e	ddddZddddZdd ZdddZeejZeejZejZeejZejZejZeejZeejZeejZeejZeejZeejZeejZeejZeejZeej Z eej!Z!eej"Z"eej#Z#ej$Z$e%j&dkrnej'Z'ej(Z(ne)j*Z'e)j+Z(  Z,S )r7   z
    A float literal.
    r6   rU   r8   r   c                 C  s   t | |S r1   )r6   r   r   r(   r(   r)   r     s    zFloat.__new__r   c                   s4   t  | || _|| _d| _td|r0d| _d S )NFz	^[+\-].+$Tr   r  r  r(   r)   r     s    zFloat.__init__ru   c                 C  s   | j S r1   r   r   r(   r(   r)   r     s    zFloat.unwrapr4   c                 C  s   t |  S r1   r  r   r(   r(   r)   r     s    zFloat.__hash__c                 C  s   dS )Nr   r(   r   r(   r(   r)   r     s    zFloat.discriminantc                 C  s   | S )zThe wrapped float valuer(   r   r(   r(   r)   r-     s    zFloat.valuec                 C  s   | j S r1   r  r   r(   r(   r)   r     s    zFloat.as_stringc                 C  s4   t |}| jr&|dkrdnd}|| }t|| j|S r	  )r8   r  r7   r   r  r(   r(   r)   r    s
    z
Float._newr   c                 C  s   t | | j| jfS r1   )r6   r   r  r   r(   r(   r)   r     s    zFloat._getstate)r   	   )r   )-r$   r%   r&   r'   r   r   r   	__float__r   r   r   r-   r   r  r   r   r6   r  r  r   r  r  r  r  r  r   r"  r#  r$  r&  r(  r)  r+  r,  r  r  r0  sysversion_infor  r  mathceilfloorr2  r(   r(   r  r)   r7     sL   		
















c                      s   e Zd ZdZdddd fddZdd	d
dZedd	ddZedd	ddZdd	ddZ	dddZ
dd ZeZdd Zdd Zdd Z  ZS )r,   z
    A boolean literal.
    r4   rU   r   )r   r[   r0   c                   s   t  | t|| _d S r1   )r   r   r*   _value)r   r   r[   r  r(   r)   r     s    zBool.__init__r*   ru   c                 C  s   t | S r1   )r*   r   r(   r(   r)   r     s    zBool.unwrapc                 C  s   dS )N   r(   r   r(   r(   r)   r     s    zBool.discriminantc                 C  s   | j S )zThe wrapped boolean valuer:  r   r(   r(   r)   r-     s    z
Bool.valuer8   c                 C  s   t | j S r1   )r8   r:  lowerr   r(   r(   r)   r     s    zBool.as_stringr   c                 C  s   | j | jfS r1   r:  r   r   r(   r(   r)   r     s    zBool._getstatec                 C  s   | j S r1   r<  r   r(   r(   r)   r     s    zBool.__bool__c                 C  s   t |tstS || jkS r1   )rF   r*   r  r:  r   r(   r(   r)   r     s    
zBool.__eq__c                 C  s
   t | jS r1   )r   r:  r   r(   r(   r)   r   %  s    zBool.__hash__c                 C  s
   t | jS r1   )r   r:  r   r(   r(   r)   r   (  s    zBool.__repr__)r   )r$   r%   r&   r'   r   r   r   r   r-   r   r   r   __nonzero__r   r   r   r2  r(   r(   r  r)   r,     s   
c                      s   e Zd ZdZddddddddddddddZd*ddddddddd
dddd fddZddddZeddddZeddddZ	ddddZ
 fddZ fddZdddd fdd Zd!dd" fd#d$Zd dd%d&Zd+d(d)Z  ZS ),r:   z
    A datetime literal.
    r4   tzinfo | Noner	   r   )r_   r`   ra   rb   rc   rd   re   r   r   kwargsr0   c	              	   O  s$   t j| |||||||fd|i|
S )Nr   )r   r   )rz   r_   r`   ra   rb   rc   rd   re   r   r   rA  r(   r(   r)   r   1  s    	
zDateTime.__new__NzTrivia | Noner   r   )r_   r`   ra   rb   rc   rd   re   r   r[   r   rA  r0   c                   s$   t  |	pt  |
p|  | _d S r1   )r   r   rU   rf   r  )r   r_   r`   ra   rb   rc   rd   re   r   r[   r   rA  r  r(   r)   r   K  s    zDateTime.__init__ru   c           
   
   C  s2   |   \
}}}}}}}}}	}	t||||||||S r1   )r   r   )
r   r_   r`   ra   rb   rc   rd   re   r   r   r(   r(   r)   r   ]  s    zDateTime.unwrapc                 C  s   dS )N   r(   r   r(   r(   r)   r   l  s    zDateTime.discriminantc                 C  s   | S r1   r(   r   r(   r(   r)   r-   p  s    zDateTime.valuer8   c                 C  s   | j S r1   r  r   r(   r(   r)   r   t  s    zDateTime.as_stringc              	     sH   t r2t| j| j| j| j| j| j| j| j	
|}nt 
|}| |S r1   )r   r   r_   r`   ra   rb   rc   rd   re   r   r  r   r  r  r  r(   r)   r  w  s    	zDateTime.__add__c              	     sV   t r2t| j| j| j| j| j| j| j| j	
|}nt 
|}t|trR| |}|S r1   )r   r   r_   r`   ra   rb   rc   rd   re   r   __sub__r   rF   r  r  r  r(   r)   rC    s"    	

zDateTime.__sub__argsrA  r0   c                   s   |  t j||S r1   r  r   rg   r   rE  rA  r  r(   r)   rg     s    zDateTime.replacer   )tzr0   c                   s   t  |}tr|S | |S r1   )r   
astimezoner   r  )r   rH  r  r  r(   r)   rI    s    zDateTime.astimezonec                 C  s4   |  }t|j|j|j|j|j|j|j|j	| j
|
S r1   )rf   r:   r_   r`   ra   rb   rc   rd   re   r   r   r   r  r   r(   r(   r)   r    s    zDateTime._newr   c              
   C  s,   | j | j| j| j| j| j| j| j| j| j	f
S r1   )
r_   r`   ra   rb   rc   rd   re   r   r   r  r   r(   r(   r)   r     s    zDateTime._getstate)NN)r   )r$   r%   r&   r'   r   r   r   r   r   r-   r   r  rC  rg   rI  r  r   r2  r(   r(   r  r)   r:   ,  s"   "$  *c                      s   e Zd ZdZddddddddZddddd	d
d fddZddddZeddddZeddddZ	d	dddZ
 fddZ fddZdddd fddZdd Zd#d!d"Z  ZS )$r;   z
    A date literal.
    r4   r	   r   )r_   r`   ra   r   r0   c                 G  s   t | |||S r1   )r   r   )rz   r_   r`   ra   r   r(   r(   r)   r     s    zDate.__new__rU   r8   r   )r_   r`   ra   r[   r   r0   c                   s   t  | || _d S r1   r   r   r  )r   r_   r`   ra   r[   r   r  r(   r)   r     s    zDate.__init__ru   c                 C  s   |   \}}}}}t|||S r1   )r   r   )r   r_   r`   ra   r   r(   r(   r)   r     s    zDate.unwrapc                 C  s   dS )N   r(   r   r(   r(   r)   r     s    zDate.discriminantc                 C  s   | S r1   r(   r   r(   r(   r)   r-     s    z
Date.valuec                 C  s   | j S r1   r  r   r(   r(   r)   r     s    zDate.as_stringc                   s4   t rt| j| j| j|}nt |}| |S r1   )r   r   r_   r`   ra   r  r   r  r  r  r(   r)   r    s    zDate.__add__c                   sB   t rt| j| j| j|}nt |}t|tr>| |}|S r1   )	r   r   r_   r`   ra   rC  r   rF   r  r  r  r(   r)   rC    s    

zDate.__sub__rD  c                   s   |  t j||S r1   rF  rG  r  r(   r)   rg     s    zDate.replacec                 C  s    |  }t|j|j|j| j|S r1   )rf   r;   r_   r`   ra   r   rJ  r(   r(   r)   r    s    z	Date._newr   c                 C  s   | j | j| j| j| jfS r1   )r_   r`   ra   r   r  r   r(   r(   r)   r     s    zDate._getstate)r   )r$   r%   r&   r'   r   r   r   r   r   r-   r   r  rC  rg   r  r   r2  r(   r(   r  r)   r;     s   c                	      s   e Zd ZdZddddddddddZdddddd	d
dd fddZddddZeddddZeddddZ	d
dddZ
dddd fddZdd Zd"dddd d!Z  ZS )#r<   z
    A time literal.
    r4   r@  r	   r   )rb   rc   rd   re   r   r   r0   c                 G  s   t | |||||S r1   )r   r   )rz   rb   rc   rd   re   r   r   r(   r(   r)   r     s    	zTime.__new__rU   r8   r   )rb   rc   rd   re   r   r[   r   r0   c                   s   t  | || _d S r1   rK  )r   rb   rc   rd   re   r   r[   r   r  r(   r)   r     s    
zTime.__init__ru   c                 C  s&   |   \}}}}}}}t|||||S r1   )r   r   )r   rb   rc   rd   re   r   r   r(   r(   r)   r     s    zTime.unwrapc                 C  s   dS )N   r(   r   r(   r(   r)   r   #  s    zTime.discriminantc                 C  s   | S r1   r(   r   r(   r(   r)   r-   '  s    z
Time.valuec                 C  s   | j S r1   r  r   r(   r(   r)   r   +  s    zTime.as_stringrD  c                   s   |  t j||S r1   rF  rG  r  r(   r)   rg   .  s    zTime.replacec                 C  s(   |  }t|j|j|j|j|j| j|S r1   )rf   r<   rb   rc   rd   re   r   r   rJ  r(   r(   r)   r  1  s    z	Time._newr   rY   r   r0   c                 C  s    | j | j| j| j| j| j| jfS r1   )rb   rc   rd   re   r   r   r  r   r(   r(   r)   r   >  s    zTime._getstate)r   )r$   r%   r&   r'   r   r   r   r   r   r-   r   rg   r  r   r2  r(   r(   r  r)   r<     s    c                   @  s`   e Zd ZdZddddddddd	Zd
dddZddddZddddZddddZdS )_ArrayItemGroupr-   r   commar   Nr+   zWhitespace | NonezComment | Noner   )r-   r   rQ  r   r0   c                 C  s   || _ || _|| _|| _d S r1   rP  )r   r-   r   rQ  r   r(   r(   r)   r   M  s    z_ArrayItemGroup.__init__Iterator[Item]ru   c                 C  s   t dd | j| j| j| jfS )Nc                 S  s   | d k	S r1   r(   )xr(   r(   r)   rJ   [  rK   z*_ArrayItemGroup.__iter__.<locals>.<lambda>)filterr   r-   rQ  r   r   r(   r(   r)   r   Y  s     z_ArrayItemGroup.__iter__r8   c                 C  s   t t| S r1   )r   rY   r   r(   r(   r)   r   ^  s    z_ArrayItemGroup.__repr__r*   c                 C  s   | j d ko| jd kS r1   )r-   r   r   r(   r(   r)   is_whitespacea  s    z_ArrayItemGroup.is_whitespacec                 C  s,   zt t|  W n tk
r&   Y dS X dS )NFT)nextr   StopIterationr   r(   r(   r)   r   d  s
    z_ArrayItemGroup.__bool__)NNNN)	r$   r%   r&   	__slots__r   r   r   rU  r   r(   r(   r(   r)   rO  J  s       rO  c                      s6  e Zd ZdZd@ddddd fdd	Zdd
dddZddddZeddddZeddddZ	ddddZ
dd dddZdddd Zddd!d"Zd#d$d%d%d&d'dd(dddd)d*d+Zddd,d-Zddd.d/Zd0d'd1d2d3Zd0d'd'd4d5d6Zdd'dd7d8d9Zd0d:d;d<ZdAd>d?Z  ZS )Br>   z
    An array literal
    Fz
list[Item]rU   r*   r   )r-   r[   r|   r0   c                   sF   t  | t| dd |D  i | _| || _|| _|   d S )Nc                 S  s    g | ]}t |tttfs|qS r(   )rF   r   r   NullrN   r(   r(   r)   
<listcomp>w  s      z"Array.__init__.<locals>.<listcomp>)r   r   rX   
_index_map_group_valuesr:  
_multiline_reindex)r   r-   r[   r|   r  r(   r)   r   q  s    zArray.__init__zlist[_ArrayItemGroup]r-   r0   c                 C  s   g }t  }|D ]}t|trVd|jkr<|| t |d}q|jdkrNt |_||_qt|trz|jdkrrt |_||_	q|jdkr||_q|| t |d}q|| dd |D S )z<Group the values into (indent, value, comma, comment) tuples,)r   Nr   c                 S  s   g | ]}|r|qS r(   r(   )rO   groupr(   r(   r)   rZ    s      z'Array._group_values.<locals>.<listcomp>)
rO  rF   r   r   r]   r-   rY  rQ  r   r   )r   r-   groupsZ
this_groupr3   r(   r(   r)   r\  ~  s(    








zArray._group_valuesz	list[Any]ru   c                 C  s6   g }| D ](}t |dr&||  q|| q|S Nr   )hasattrr]   r   )r   	unwrappedrP   r(   r(   r)   r     s    
zArray.unwrapr4   c                 C  s   dS )N   r(   r   r(   r(   r)   r     s    zArray.discriminantrX   c                 C  s   | S r1   r(   r   r(   r(   r)   r-     s    zArray.valuerR  c                 c  s   | j D ]}|E d H  qd S r1   r<  )r   rP   r(   r(   r)   _iter_items  s    
zArray._iter_items)r|   r0   c                 C  s
   || _ | S )a  Change the array to display in multiline or not.

        :Example:

        >>> a = item([1, 2, 3])
        >>> print(a.as_string())
        [1, 2, 3]
        >>> print(a.multiline(True).as_string())
        [
            1,
            2,
            3,
        ]
        )r]  )r   r|   r(   r(   r)   r|     s    zArray.multiliner8   c                   sb    j r js,dddd   D  dS d}|d fdd jD 7 }| jjd 7 }|S )N[rR   c                 s  s   | ]}|  V  qd S r1   r   rN   r(   r(   r)   rQ     s     z"Array.as_string.<locals>.<genexpr>]z[
c                 3  s^   | ]V}|j d k	r jjd |j   t|j ts4dnd |jd k	rL|j nd d V  qd S )N    r`  rR   r   )r-   r[   r   r   rF   rY  r   rN   r   r(   r)   rQ     s   
)r]  r:  r   rg  r[   r   )r   r   r(   r   r)   r     s     

zArray.as_stringc                 C  sP   | j   d}t| jD ]2\}}|jd kst|jtr8q|| j |< |d7 }qd S )Nr   rD   )r[  clear	enumerater:  r-   rF   rY  )r   indexrH   rP   r(   r(   r)   r^    s    

zArray._reindexrj  NT)r   r   	add_commanewliner	   r   )rW   r   r   rn  ro  r0   c                G  s  g }|rd| n|}|r(| t| d}g }	t|D ]\}
}t|| d}t|tsd|rxt|trxtdt| dt|ts|r| t| d}| | |	 |j |r| td |
t	|d kr| td q8d|j
kr||j
7 }q8| | q8|r| t| |rH|r&dnd}| tt|d	| dd
 t| |	 t	| jdkr| jd }tdd | jddd D d}|dk	rtd|_| r| || jdd< n| j| | n| j| | |   dS )a  Add multiple items in a line to control the format precisely.
        When add_comma is True, only accept actual values and
        ", " will be added between values automatically.

        :Example:

        >>> a = array()
        >>> a.add_line(1, 2, 3)
        >>> a.add_line(4, 5, 6)
        >>> a.add_line(indent="")
        >>> print(a.as_string())
        [
            1, 2, 3,
            4, 5, 6,
        ]
        r   rR   r.   z
item type z is not allowed in add_liner`  rD   r   r   )r   r   r\   r   c                 s  s(   | ] }|j d k	rt|j ts|V  qd S r1   )r-   rF   rY  rN   r(   r(   r)   rQ     s   
 z!Array.add_line.<locals>.<genexpr>N)r]   r   rl  r3   rF   r   
ValueErrorri   r-   r   r   rU   rX   extendr:  rV  rQ  rU  r\  r^  )r   r   r   rn  ro  rW   
new_valuesZfirst_indent
whitespaceZdata_valuesrH   elit	last_itemZlast_value_itemr(   r(   r)   add_line  s\    






zArray.add_linec                 C  s"   t |  | j  | j  dS )zClear the array.N)rX   rk  r[  r:  r   r(   r(   r)   rk  (  s    

zArray.clearc                 C  s
   t | S r1   )rX   r   r   r(   r(   r)   r   .  s    zArray.__len__zint | slicerM   r0   c                 C  s&   t tt| |}| r"t|S |S r1   )r   r   rX   __getitem__r   r*   )r   rM   ro   r(   r(   r)   r{  1  s    zArray.__getitem__rM   r-   r0   c                 C  sV   t || d}t| || t|tr,td|dk r@|t| 7 }|| j| j|  _	d S )Nrp  z!slice assignment is not supportedr   )
r3   rX   __setitem__rF   slicerr  r   r:  r[  r-   )r   rM   r-   rw  r(   r(   r)   r}  7  s    
zArray.__setitem__)posr-   r0   c              
   C  s  t || d}t| }t|ttfs0t| || |dk rL||7 }|dk rLd}d}d}||k rz| j| }W q tk
r } zt	d|W 5 d }~X Y qX nRt| j
}|dkr| j
|d   r|d8 }| j
| jd k	rd| j
| jjkrd}d }||k rtdnd }	|t| j
k r2| j
|  s2| j
| j}|dkr| j
|d  }
|d krZ|
j}t|
jtsxd|krx|
j}	|
jd krt|
jtstd|
_|d kr|dksd|krt|}t|||	d	}| j
|| |   d S )
Nrp  r   r   list index out of rangerD   r   z
    r`  )r-   r   rQ  )r3   r   rF   r   r   rX   insertr[  KeyError
IndexErrorr:  rU  r   r   r-   rY  rQ  rO  r^  )r   r  r-   rw  lengthidxZdefault_indenter   rQ  rx  new_itemr(   r(   r)   r  @  sP    
 


zArray.insertrL   c                 C  s"  t | }t| | t|trBtt|jp*d|jp2||jp:d}n|dk rR|| n|g}t	|ddD ]}z| j
| }W n6 tk
r } zt|tstd|W 5 d }~X Y qdX | j|= |dkrdt | jdkrdd| j| jjkrdd | j| _qdt | jdkr| jd }| sd |_|   d S )Nr   rD   T)reverser  r   rq  )r   rX   __delitem__rF   r~  rangestartstopsteprV   r[  r  r  r:  r   r   rU  rQ  r^  )r   rM   r  Zindices_to_removerH   r  r  rP   r(   r(   r)   r  r  s4    



zArray.__delitem__r   c                 C  s   t |  | j| jfS r1   )rX   rg  r   r]  r   r(   r(   r)   r     s    zArray._getstate)F)r   )r$   r%   r&   r'   r   r\  r   r   r   r-   rg  r|   r   r^  ry  rk  r   r{  r}  r  r  r   r2  r(   r(   r  r)   r>   l  s2    	L	2!c                      sR  e Zd ZdZdddddZddd	d
ZeddddZedddddddZ	edddddddZ	dd Z	eddddddZ
ed:dddddddZ
d;ddZ
ddddddZdddd  fd!d"Zd#d$ Zddd%d&d'Zd(dd)d*Zd+dd,d-Zd.dd/d0Zddd1d2d3Zdd4d1d5d6Zdddd7d8d9Z  ZS )<r"   z@Common behaviour of both :class:`Table` and :class:`InlineTable`container.ContainerrU   )r-   r[   c                 C  s@   t | | || _| jjD ] \}}|d k	rt| |j| qd S r1   )r   r   r:  bodyr?   r}  rM   )r   r-   r[   rk   rP   r(   r(   r)   r     s
    zAbstractTable.__init__zdict[str, Any]ru   c                 C  sD   i }|   D ]2\}}t|tr$|j}t|dr6| }|||< q|S rc  )rW   rF   r   rM   rd  r   )r   re  rk   rP   r(   r(   r)   r     s    


zAbstractTable.unwrapc                 C  s   | j S r1   r<  r   r(   r(   r)   r-     s    zAbstractTable.valuer!   r   zComment | Whitespace)r   rM   r-   r0   c                 C  s   d S r1   r(   r   rM   r-   r(   r(   r)   r]     s    zAbstractTable.append	Key | strr	   c                 C  s   d S r1   r(   r  r(   r(   r)   r]     s    c                 C  s   t d S r1   r   r  r(   r(   r)   r]     s    )r   rM   r0   c                 C  s   d S r1   r(   r   rM   r(   r(   r)   add  s    zAbstractTable.add.c                 C  s   d S r1   r(   r  r(   r(   r)   r    s    Nc                 C  s8   |d kr,t |ttfs"d}t|d | }}| ||S )Nz8Non comment/whitespace items must have an associated key)rF   r   r   rr  r]   )r   rM   r-   msgr(   r(   r)   r    s    
c                 C  s4   | j | t|tr|j}|d k	r0t| | | S r1   )r:  removerF   r   rM   r?   r  r  r(   r(   r)   r    s    
zAbstractTable.remove)rM   defaultr0   c                   s   t  || | | S r1   )r   
setdefault)r   rM   r  r  r(   r)   r    s    zAbstractTable.setdefaultc                 C  s
   t | jS r1   )r8   r-   r   r(   r(   r)   r     s    zAbstractTable.__str__)r   r0   c                 C  s
   t  | S r1   )r   r   r(   r(   r)   r     s    zAbstractTable.copyr8   c                 C  s
   t | jS r1   )r   r-   r   r(   r(   r)   r     s    zAbstractTable.__repr__zIterator[str]c                 C  s
   t | jS r1   )r   r:  r   r(   r(   r)   r     s    zAbstractTable.__iter__r4   c                 C  s
   t | jS r1   )r   r:  r   r(   r(   r)   r     s    zAbstractTable.__len__rz  c                 C  s   |  | d S r1   )r  r  r(   r(   r)   r    s    zAbstractTable.__delitem__r   c                 C  s   t t| j| S r1   )r   r   r:  r  r(   r(   r)   r{    s    zAbstractTable.__getitem__r|  c                 C  s   t |tst|| d}|| k}|| j|< |d k	r>t| || |rFd S td| jj	}|s^d S |
d}t |tstd|jj	}|s||j_	n|
d| |
d |j_	d S )Nrp  (?s)^[^ ]*([ ]+).*$rD   (?s)^([^ ]*)(.*)$r   )rF   r   r3   r:  r?   r}  r  r  r   r   ra  r   r[   )r   rM   r-   Z
is_replacemr   r(   r(   r)   r}    s"    




zAbstractTable.__setitem__).)N)r$   r%   r&   r'   r   r   r   r-   r   r]   r  r  r  r   r   r   r   r   r  r{  r}  r2  r(   r(   r  r)   r"     s2   	

c                	      s   e Zd ZdZd*dddddddd	 fd
dZeddddZd dddZddd dddZddd dddZ	ddddZ
ddddZddddZdd d  fd!d"Zd#d$ Zd+dd&d'd(d)Z  ZS ),rA   z
    A table literal.
    Nr  rU   r*   zbool | Noner   r   )r-   r[   is_aot_elementis_super_tablenamedisplay_namer0   c                   s*   t  || || _|| _|| _|| _d S r1   )r   r   r  r  _is_aot_element_is_super_table)r   r-   r[   r  r  r  r  r  r(   r)   r     s
    	zTable.__init__r4   ru   c                 C  s   dS )Nr3  r(   r   r(   r(   r)   r   "  s    zTable.discriminantc                 C  s*   t | | j | j | j| j| j| jS r1   )ri   r:  r   r   r  r  r  r  r   r(   r(   r)   __copy__&  s    zTable.__copy__Key | str | Noner	   rM   _itemr0   c                 C  s   t |tst|| d}| j|| t |trFtt|j}| j| }|dk	r\t	
| || td| jj}|st| S |d}t |tstd|jj}|s||j_n|d| |d |j_| S )5
        Appends a (key, item) to the table.
        rp  Nr  rD   r  r   )rF   r   r3   r:  r]   r   rV  r   rM   r?   r}  r  r  r   r   ra  r   r[   )r   rM   r  r  r   r(   r(   r)   r]   0  s$    





zTable.appendc                 C  s`   t |tst|}| jj||dd t |trFtt|j}| j| }|dk	r\t	
| || | S )z8Similar to :meth:`append` but does not copy indentation.F)validateN)rF   r   r3   r:  r]   r   rV  r   rM   r?   r}  r   rM   r  r(   r(   r)   
raw_appendO  s    


zTable.raw_appendc                 C  s   | j S )z8True if the table is the direct child of an AOT element.)r  r   r(   r(   r)   r  _  s    zTable.is_aot_elementc                 C  s>   | j dk	r| j S t| dkr dS tt|  }t|ttfS )zA super table is the intermediate parent of a nested table as in [a.b.c].
        If true, it won't appear in the TOML representation.NrD   F)r  r   rV  r   valuesrF   rA   r=   )r   Z
only_childr(   r(   r)   r  c  s    
zTable.is_super_tabler8   c                 C  s
   | j  S r1   )r:  r   r   r(   r(   r)   r   n  s    zTable.as_stringr   c                   s`   t  | td| jj}|s&d}n
|d}| jjD ]"\}}t|t	s8||j
j |j
_q8| S )z-Indent the table with given number of spaces.r  rR   rD   )r   r   r  r  r   ra  r:  r  rF   r   r[   )r   r   r  Z
indent_strr   r3   r  r(   r)   r   s  s    

zTable.indentc                 C  s*   d| _ |  D ]}t|dr|  qdS )8Call ``invalidate_display_name`` on the contained tablesNinvalidate_display_name)r  r  rd  r  r   childr(   r(   r)   r    s    
zTable.invalidate_display_namer   rY   rN  c                 C  s   | j | j| j| j| j| jfS r1   )r:  r   r  r  r  r  r   r(   r(   r)   r     s    zTable._getstate)NNN)r   )r$   r%   r&   r'   r   r   r   r  r]   r  r  r  r   r   r  r   r2  r(   r(   r  r)   rA     s    	    
c                      s   e Zd ZdZd!ddddd fdd	Zed
dddZddd dddZddddZdddd fddZ	d dddZ
d"d
dddd Z  ZS )#r@   z"
    An inline table literal.
    Fr  rU   r*   r   )r-   r[   newr0   c                   s   t  || || _d S r1   )r   r   r  )r   r-   r[   r  r  r(   r)   r     s    zInlineTable.__init__r4   ru   c                 C  s   dS )N
   r(   r   r(   r(   r)   r     s    zInlineTable.discriminantr  r	   r  c                 C  s   t |tst|| d}t |ttfsX|jjsHt| jdkrH| j	sHd|j_|jj
rXd|j_
| j|| t |trv|j}|dk	rt| || | S )r  rp  r   r   rR   N)rF   r   r3   r   r   r[   r   r   r:  r  r   r]   r   rM   r?   r}  r  r(   r(   r)   r]     s    

zInlineTable.appendr8   c                   s  d}t  fddtt jjd ddD d }t jjD ]\}\}}|d kr|t jjd kr jrv|d}n
|d}|| 7 }q<|j	j
dd	}||j	j | | rd
nd	  |j |  |j	j | 7 }|d k	r<||k r<|d7 } jr<|d7 }q<|d7 }|S )N{c                 3  s&   | ]} j j| d  dk	r|V  qdS )r   N)r:  r  )rO   rH   r   r(   r)   rQ     s   z(InlineTable.as_string.<locals>.<genexpr>rD   rq  z, r`  r   rR   r   r   })rV  r  r   r:  r  rl  r  rstripr   r[   r\   rg   r   r   r   r   )r   bufZlast_item_idxrH   rk   rP   Zv_trivia_trailr(   r   r)   r     s2    

<	
zInlineTable.as_stringr  r|  c                   s,   t |dr|jjrd|j_t || d S )Nr[   rR   )rd  r[   r   r   r}  r  r  r(   r)   r}    s    zInlineTable.__setitem__c                 C  s   t | | j | j | jS r1   )ri   r:  r   r   r  r   r(   r(   r)   r    s    zInlineTable.__copy__r   rY   rN  c                 C  s   | j | jfS r1   r>  r   r(   r(   r)   r     s    zInlineTable._getstate)F)r   )r$   r%   r&   r'   r   r   r   r]   r   r}  r  r   r2  r(   r(   r  r)   r@     s    )c                      s   e Zd ZdZ fddZdddddd fd	d
ZddddZeddddZeddddZ	ddddZ
dddd fddZddd dddZd#ddZeejdfdd d d!d"Z  ZS )$r9   z
    A string literal.
    c                   s   t  | |S r1   )r   r   )rz   r   r-   r   r[   r  r(   r)   r     s    zString.__new__rp   r8   rU   r   )r   r   r   r[   r0   c                   s   t  | || _|| _d S r1   )r   r   _tr   )r   r   r   r   r[   r  r(   r)   r     s    zString.__init__ru   c                 C  s   t | S r1   )r8   r   r(   r(   r)   r      s    zString.unwrapr4   c                 C  s   dS )N   r(   r   r(   r(   r)   r     s    zString.discriminantc                 C  s   | S r1   r(   r   r(   r(   r)   r-     s    zString.valuec                 C  s   | j j t| j | j j S r1   )r  r-   r   r   r   r(   r(   r)   r     s    zString.as_stringr   )r   r   r0   c                   s8   t |tstS t |}| jt|d| }| ||S )Nr   )rF   r8   r  r   r  r   getattrr  )r   r   r  r   r  r(   r)   r    s
    
zString.__add__)r  r   r0   c                 C  s   t | j||| jS r1   )r9   r  r   )r   r  r   r(   r(   r)   r    s    zString._newr   c                 C  s   | j t| | j| jfS r1   )r  r8   r   r   r   r(   r(   r)   r     s    zString._getstateTr_  c                   sb   t   |j}t fdd|D r2t ||j|j}|rJ|rJt |n }| |t  |t S )Nc                 3  s   | ]}| kV  qd S r1   r(   r   r   r(   r)   rQ   !  s     z"String.from_raw.<locals>.<genexpr>)r   r   r   r   r-   r   r   rU   )rz   r-   type_escapeinvalidescapedZstring_valuer(   r   r)   r^     s    zString.from_raw)r   )r$   r%   r&   r'   r   r   r   r   r   r-   r   r  r  r   r   rp   rv   r^   r2  r(   r(   r  r)   r9     s   
c                      s  e Zd ZdZd5ddddd fd	d
ZddddZeddddZeddddZeddddZ	ddddZ
edddddZedddddZdd Zd d!dd"d#d$Zd ddd%d&Zdd'dd(d)d*Zd+d, Zd-dd.d/Zd-dd0d1Zd6d3d4Z  ZS )7r=   z#
    An array of table literal
    NFzlist[Table]r   r*   r   )r  r  parsedr0   c                   s<   || _ g | _|| _t tdd |D ]}| | q(d S NrR   )r\   )r  _body_parsedr   r   rU   r]   )r   r  r  r  rm   r  r(   r)   r   /  s    zAoT.__init__zlist[dict[str, Any]]ru   c                 C  s8   g }| j D ](}t|dr(||  q
|| q
|S rc  )r  rd  r]   r   )r   re  r   r(   r(   r)   r   ;  s    

z
AoT.unwrapc                 C  s   | j S r1   r  r   r(   r(   r)   r  D  s    zAoT.bodyr4   c                 C  s   dS )N   r(   r   r(   r(   r)   r   H  s    zAoT.discriminantzlist[dict[Any, Any]]c                 C  s   dd | j D S )Nc                 S  s   g | ]
}|j qS r(   r   rN   r(   r(   r)   rZ  N  s     zAoT.value.<locals>.<listcomp>r  r   r(   r(   r)   r-   L  s    z	AoT.valuec                 C  s
   t | jS r1   )r   r  r   r(   r(   r)   r   P  s    zAoT.__len__r~  rz  c                 C  s   d S r1   r(   r  r(   r(   r)   r{  S  s    zAoT.__getitem__rA   c                 C  s   d S r1   r(   r  r(   r(   r)   r{  W  s    c                 C  s
   | j | S r1   r  r  r(   r(   r)   r{  [  s    zslice | intr	   r|  c                 C  s   t d S r1   r   r  r(   r(   r)   r}  ^  s    zAoT.__setitem__c                 C  s   | j |= t| | d S r1   )r  rX   r  r  r(   r(   r)   r  a  s    zAoT.__delitem__r?   )rm  r-   r0   c                 C  s^  t || d}t|ts(tdt| t| }|dk r@||7 }|dk rNd}n||krZ|}td| jj	}|r|
d}td|jj	}|s||j_	n|
d| |
d |j_	d|k r|r| j|d  nd }||d k r| j|d  nd }| js>|rd|jj	krd|jj	 |j_	|r>d|jj	kr>d|jj	 |j_	| j|| t| || d S )	Nrp  zUnsupported insert value type: r   r  rD   r  r   r   )r3   rF   rA   rr  ri   r   r  r  r   r   ra  r[   r  r  r  rX   )r   rm  r-   r  r  r   Z
prev_tableZ
next_tabler(   r(   r)   r  e  s4    


z
AoT.insertc                 C  s    | D ]}t |dr|  qdS )r  r  N)rd  r  r  r(   r(   r)   r    s    
zAoT.invalidate_display_namer8   c                 C  s    d}| j D ]}|| 7 }q
|S NrR   )r  r   )r   brm   r(   r(   r)   r     s    
zAoT.as_stringc                 C  s   d| j  dS )Nz<AoT r   r   r   r(   r(   r)   r     s    zAoT.__repr__r   c                 C  s   | j | j| jfS r1   )r  r  r  r   r(   r(   r)   r     s    zAoT._getstate)NF)r   )r$   r%   r&   r'   r   r   r   r  r   r-   r   r   r{  r}  r  r  r  r   r   r   r2  r(   r(   r  r)   r=   *  s0      	c                      sv   e Zd ZdZdd fddZddddZeddd	d
ZeddddZddddZ	dddddZ
  ZS )rY  z
    A null item.
    r   ru   c                   s   t  tdd d S r  )r   r   rU   r   r  r(   r)   r     s    zNull.__init__c                 C  s   d S r1   r(   r   r(   r(   r)   r     s    zNull.unwrapr4   c                 C  s   dS )Nrq  r(   r   r(   r(   r)   r     s    zNull.discriminantc                 C  s   d S r1   r(   r   r(   r(   r)   r-     s    z
Null.valuer8   c                 C  s   dS r  r(   r   r(   r(   r)   r     s    zNull.as_stringr   rY   c                 C  s   dS )Nr(   r(   r   r(   r(   r)   r     s    zNull._getstate)r   )r$   r%   r&   r'   r   r   r   r   r-   r   r   r2  r(   r(   r  r)   rY    s   rY  )..)..)..)..)..)..)..)..)..)..)..)..)NF)N
__future__r   r   r   r   r7  r  r   r5  r   r   r   r   enumr   typingr   r	   r
   r   r   r   r   r   r   r   tomlkit._compatr   r   tomlkit._typesr   r   r   r   r   tomlkit._utilsr   r   tomlkit.exceptionsr   tomlkitr   r   Encoderr    r   r!   rh   rr  r#   r3   rp   r   	dataclassrU   r   ABCr   r   r   r   r   r   r5   r7   r,   r:   r;   r<   rO  r>   r"   rA   r@   r8   r9   r=   rY  r(   r(   r(   r)   <module>   s          oD,3H(^O. =I"  -v 
\8m