U
    ƽbz                     @   sh  d dl Z d dlZd dlZd dlZd dlmZ d dlZdZzd dlmZ W n  ek
rh   d dlmZ Y nX G dd deZe jd  dkZe jd  dkZd	d
 ZejZejZdZ dd Z!dZ"dZ#dZ$da%dej&krej&'dZ(e(dkrd a%nee(a%e)t%rG dd dZ*e* Z+d ddZ,G dd dZ-e- Z.e-dZ/dd Z0dd Z1d!ddZ2G dd dejj3Z4dS )"    N)abstractmethod)      )OrderedDictc                   @   s   e Zd Zeedsdd ZdS )ordereddict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   6/tmp/pip-unpacked-wheel-ctuyz3qg/ruamel/yaml/compat.pyr       s    
zordereddict.insertN)__name__
__module____qualname__hasattrr   r   r   r   r   r   r      s   
r   r      c                 O   s   |rt | jf |S r   )	TypeErrorformat)sZsuperfluouskwr   r   r   _F7   s    r   builtinsc                 G   s   | d|i S )z%Create a base class with a metaclass.ZNewBaser   )metabasesr   r   r   with_metaclassL   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__c   s    zObjectCounter.__init__c                 C   s   | j |dd | j |< d S )Nr   r   )r$   getr   r   r   r   r   __call__g   s    zObjectCounter.__call__c                 C   s.   t | jD ]}tjd|| j|  q
d S )Nz{} -> {})sortedr$   sysstdoutwriter   r(   r   r   r   dumpk   s    zObjectCounter.dumpN)r   r   r   r&   r)   r.   r   r   r   r   r#   b   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environr'   int)val_debugxr   r   r   dbgt   s    r5   c                   @   s0   e Zd ZdddZdd Zdd Zd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
)boolr/   r9   r+   r,   openprintcopyflushr7   r8   	tracebackprint_stackexitclose)r   argsr   outZdbgprintZkw1r   r   r   r)      s&    




zNprint.__call__c                 C   s   || _ d | _d S r   )r7   r8   )r   ir   r   r   set_max_print   s    zNprint.set_max_printr;   c                 C   s    | j d krtjn
t| j |}|S r   )r9   r+   r,   r>   )r   moderG   r   r   r   fp   s    z	Nprint.fp)N)r;   )r   r   r   r&   r)   rI   rK   r   r   r   r   r6      s   
r6   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   ퟿u   u   �u   ﻿u   𐀀u   􏿿Fr   chr   r   r   check_namespace_char   s     rQ   c                 C   s   | dkrdS t | S )Nz,[]{}F)rQ   rO   r   r   r   check_anchorname_char   s    rR   c                 C   s0   ddl m} || k rdS |dk	r,||k r,dS dS )ze
    return True if ruamel.yaml version_info < t1, None if t2 is specified and bigger else False
    r   )version_infoTNF)Zruamel.yamlrS   )t1t2rS   r   r   r   version_tnf   s    rV   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   ).0rH   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 {} > {})rZ   r[   __setsingleitem__iterAssertionErrorstepstartstopreversedr   r_   r	   r   r   r   r^   )r   r   r   elemZrange_parmsZnr_assigned_itemsidxrH   r   r   r   __setitem__   s,    

   z$MutableSliceableSequence.__setitem__c                 C   s:   t |ts| |S tt|t|  D ]
}| |= q*d S r   )rZ   r[   __delsingleitem__rh   r^   r_   r	   )r   r   rH   r   r   r   __delitem__   s    

z$MutableSliceableSequence.__delitem__c                 C   s   t d S r   
IndexErrorr`   r   r   r   r\      s    z*MutableSliceableSequence.__getsingleitem__c                 C   s   t d S r   rn   )r   r   r   r   r   r   rb     s    z*MutableSliceableSequence.__setsingleitem__c                 C   s   t d S r   rn   r`   r   r   r   rl   	  s    z*MutableSliceableSequence.__delsingleitem__N)r   r   r   	__slots__ra   rk   rm   r   r\   rb   rl   r   r   r   r   rW      s   

rW   )N)N)5r+   r0   iorB   abcr   collections.abccollectionsAnyDictOptionalListUnionBinaryIOIOTextTupleZ_DEFAULT_YAML_VERSIONr   ImportErrorr   rS   PY2PY3r   StringIOBytesIOZ
StreamTypeZStreamTextTyper2   strZVersionTypeZbuiltins_moduler!   Z	DBG_TOKENZ	DBG_EVENTZDBG_NODEr/   r1   r'   r4   r=   r#   Zobject_counterr5   r6   ZnprintZnprintfrQ   rR   rV   MutableSequencerW   r   r   r   r   <module>   sL   	



(
