U
    e$!                     @   s  d dl mZ d dlZd dlZd dlZd dlZd dlmZ dZzd dlmZ W nN   zd dlmZ W n  ek
r   d dlmZ Y nX G dd deZY nX ejd  d	kZejd  d
kZerdd Zdd Zdd Zndd Zdd Zdd ZerDeZeZ e!Z"eZ#e$Z%ej&Z'e(Z)d dl*Z*e*j+Z+e*j,Z,eZ-d dl.m/Z/m0Z0m1Z1m2Z2 n\e3Zee4fZ e!ej5fZ"e6Z#eZ%e)Z)d dl+m+Z7 e7Z+d dl8Z8e8j+Z,e4Z-d dlm/Z/m0Z0m1Z1m2Z2 erdZ<ndZ<ej=dkrdnd	Z>dd Z?dZ@d	ZAdZBdaCdejDkrejDEdZFeFdkrd aCneeFaCeGtCr,G dd deHZIeI ZJd-d d!ZKG d"d# d#eHZLeL ZMeLd$ZNd%d& ZOd'd( ZPd.d)d*ZQG d+d, d,e0ZRdS )/    )print_functionN)abstractmethod)      )ordereddict)OrderedDictc                   @   s   e Zd Zeedsdd ZdS )r   insertc                 C   sj   |t | kr|| |< d S t }||  |D ]
}| |= q,t|D ]$\}}||krX|| |< || | |< q@d S N)lenr   update	enumerate)selfposkeyvalueZodkindexZold_key r   1lib/python3.8/site-packages/ruamel_yaml/compat.pyr   !   s    
zordereddict.insertN)__name__
__module____qualname__hasattrr   r   r   r   r   r   r      s   
r   r      c                 C   s   | S r	   r   sr   r   r   utf86   s    r   c                 C   s   | S r	   r   r   r   r   r   to_str:   s    r   c                 C   s   | S r	   r   r   r   r   r   
to_unicode>   s    r   c                 C   s
   |  dS )Nzutf-8)encoder   r   r   r   r   E   s    c                 C   s   t | S r	   )strr   r   r   r   r   I   s    c                 C   s   t | S r	   )unicoder   r   r   r   r   M   s    )HashableMutableSequenceMutableMappingMapping)StringIObuiltinsZ__builtin__i     c                 G   s   | d|i S )z%Create a base class with a metaclass.ZNewBaser   )metabasesr   r   r   with_metaclass   s    r+   r   ZRUAMELDEBUGc                   @   s$   e Zd Zdd Zdd Zdd ZdS )ObjectCounterc                 C   s
   i | _ d S r	   )mapr   r   r   r   __init__   s    zObjectCounter.__init__c                 C   s   | j |dd | j |< d S )Nr   r   )r-   getr   r   r   r   r   __call__   s    zObjectCounter.__call__c                 C   s.   t | jD ]}tjd|| j|  q
d S )Nz{} -> {})sortedr-   sysstdoutwriteformatr1   r   r   r   dump   s    zObjectCounter.dumpN)r   r   r   r/   r2   r8   r   r   r   r   r,      s   r,   c                 C   s>   t d kr*tjd}|d kr"da nt|a | d kr6t S t | @ S )NZ	YAMLDEBUGr   )_debugosenvironr0   int)val_debugxr   r   r   dbg   s    r?   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	NprintNc                 C   s   d | _ d | _|| _d S r	   )
_max_print_count
_file_name)r   	file_namer   r   r   r/      s    zNprint.__init__c                 O   s   t tsd S | jd krtjn
t| jd}t}| }||d< ||| |  | j	d k	r| j
d krj| j	| _
|  j
d8  _
| j
dkr|d t  |  td | jr|  d S )Nafiler   r   zforced exit
)boolr9   rC   r4   r5   openprintcopyflushrA   rB   	tracebackprint_stackexitclose)r   argskwoutZdbgprintZkw1r   r   r   r2      s&    




zNprint.__call__c                 C   s   || _ d | _d S r	   )rA   rB   )r   ir   r   r   set_max_print   s    zNprint.set_max_print)N)r   r   r   r/   r2   rT   r   r   r   r   r@      s   
r@   z/var/tmp/ruamel_yaml.logc                 C   s|   d|   krdkrn ndS d|   kr0dkr8n ndS d|   krLdkr\n n| dkr\dS d	|   krpd
krxn ndS dS )N!~T    u   ×FFu   à00u   ÿFDu   þFFz000zFFFFFr   Zchr   r   r   check_namespace_char   s     rY   c                 C   s   | dkrdS t | S )Nz,[]{}F)rY   rX   r   r   r   check_anchorname_char   s    rZ   c                 C   s0   ddl m} || k rdS |d k	r,||k r,d S dS )Nr   )version_infoTF)Zruamel_yamlr[   )t1t2r[   r   r   r   version_tnf   s    r^   c                   @   sL   e Zd ZdZdd Zdd Zdd Zedd	 Zed
d Z	edd Z
dS )MutableSliceableSequencer   c                    s<   t |ts |S t  fddt|t  D S )Nc                    s   g | ]} | qS r   r   ).0rS   r.   r   r   
<listcomp>  s     z8MutableSliceableSequence.__getitem__.<locals>.<listcomp>)
isinstanceslice__getsingleitem__typerangeindicesr
   r   r   r   r.   r   __getitem__  s    

z$MutableSliceableSequence.__getitem__c                 C   s   t |ts| ||S t|s"t|jd krf| |j|j= t|D ] }| 	|jd krXdn|j| qBn|
t| }|d |d  d |d  d }|t|k rtd|t|n |t|krtd|t|tt| D ]\}}|| | |< qd S )Nr   r   r   z"too many elements in value {} < {}z$not enough elements in value {} > {})rb   rc   __setsingleitem__iterAssertionErrorstepstartstopreversedr   rg   r
   	TypeErrorr7   r   rf   )r   r   r   elemZrange_parmsZnr_assigned_itemsidxrS   r   r   r   __setitem__  s,    

   z$MutableSliceableSequence.__setitem__c                 C   s:   t |ts| |S tt|t|  D ]
}| |= q*d S r	   )rb   rc   __delsingleitem__rp   rf   rg   r
   )r   r   rS   r   r   r   __delitem__(  s    

z$MutableSliceableSequence.__delitem__c                 C   s   t d S r	   
IndexErrorrh   r   r   r   rd   0  s    z*MutableSliceableSequence.__getsingleitem__c                 C   s   t d S r	   rw   )r   r   r   r   r   r   rj   5  s    z*MutableSliceableSequence.__setsingleitem__c                 C   s   t d S r	   rw   rh   r   r   r   ru   :  s    z*MutableSliceableSequence.__delsingleitem__N)r   r   r   	__slots__ri   rt   rv   r   rd   rj   ru   r   r   r   r   r_     s   

r_   )N)N)SZ
__future__r   r4   r:   typesrL   abcr   ZAnyZDictZOptionalZListZUnionZBinaryIOZIOZTextZTupleZ_DEFAULT_YAML_VERSIONZruamel.ordereddictr   collectionsr   ImportErrorr[   ZPY2ZPY3r   r   r   r    Zstring_typesr<   Zinteger_typesre   Zclass_typesZ	text_typebytesZbinary_typemaxsizeZMAXSIZEchrZunichrior&   BytesIOZno_limit_intZcollections.abcr"   r#   r$   r%   Z
basestringZlongZ	ClassTyper!   Z	_StringIOZ	cStringIOZ
StreamTypeZStreamTextTypeZVersionTypeZbuiltins_module
maxunicodeZUNICODE_SIZEr+   Z	DBG_TOKENZ	DBG_EVENTZDBG_NODEr9   r;   r0   r>   rG   objectr,   Zobject_counterr?   r@   ZnprintZnprintfrY   rZ   r^   r_   r   r   r   r   <module>   s   

	


#
