o
    !                     @   sz  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 n$   zd dlmZ W n eyB   d dlmZ Y nw G d	d
 d
eZY ejd  dkZejd  dkZeridd Zdd Zdd Zn	 dd Zdd Zdd Zere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l0m1Z1m2Z2m3Z3m4Z4 n.e5Z e!e6fZ"e#ej7fZ$eZ%eZ'e+Z+d dl-m-Z8 e8Z-d dl9Z9e9j-Z.e6Z/d dlm1Z1m2Z2m3Z3m4Z4 	 erdZ=ndZ=ej>dkrdndZ?dd Z@dZAdZBdZCdaDdejEv rejEFdZGeGdu rd aDne!eGaDeHtDrG d d! d!eIZJeJ ZKd/d"d#ZLG d$d% d%eIZMeM ZNeMd&ZOd'd( ZPd)d* ZQd/d+d,ZRG d-d. d.e2ZSdS )0    )print_functionN)abstractmethodF)
AnyDictOptionalListUnionBinaryIOIOTextTupler   )      )ordereddict)OrderedDictc                   @   s"   e Zd Zeedsdd ZdS dS )r   insertc                 C   sj   |t | kr|| |< d S t }||  |D ]}| |= qt|D ]\}}||kr,|| |< || | |< q d S N)lenr   update	enumerate)selfposkeyvalueodkindexold_key r   ;/tmp/google-cloud-sdk/lib/third_party/ruamel/yaml/compat.pyr   !   s   
zordereddict.insertN)__name__
__module____qualname__hasattrr   r   r   r   r   r   r      s    
r   r      c                 C      | S r   r   sr   r   r   utf86      r(   c                 C   r%   r   r   r&   r   r   r   to_str:   r)   r*   c                 C   r%   r   r   r&   r   r   r   
to_unicode>   r)   r+   c                 C   s
   |  dS )Nzutf-8)encoder&   r   r   r   r(   G      
c                 C      t | S r   )strr&   r   r   r   r*   K      c                 C   r.   r   )unicoder&   r   r   r   r+   O   r0   )HashableMutableSequenceMutableMappingMapping)StringIObuiltins__builtin__i     c                 G   s   | d|i S )z%Create a base class with a metaclass.NewBaser   )metabasesr   r   r   with_metaclass   s   r=   r   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__   r-   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formatrD   r   r   r   dump   s   zObjectCounter.dumpN)r    r!   r"   rB   rE   rK   r   r   r   r   r?      s    r?   c                 C   s>   t d u rtjd}|d u rda nt|a | d u rt S t | @ S )N	YAMLDEBUGr   )_debugosenvironrC   int)val_debugxr   r   r   dbg   s   rS   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   rB      s   
zNprint.__init__c                 O   s   t tsd S | jd u rtjnt| jd}t}| }||d< ||i | |  | j	d urT| j
d u r7| j	| _
|  j
d8  _
| j
dkrT|d t  |  td | jr]|  d S d S )Nafiler   r   zforced exit
)boolrM   rW   rG   rH   openprintcopyflushrU   rV   	tracebackprint_stackexitclose)r   argskwoutdbgprintkw1r   r   r   rE      s(   



zNprint.__call__c                 C   s   || _ d | _d S r   )rU   rV   )r   ir   r   r   set_max_print   s   
zNprint.set_max_printr   )r    r!   r"   rB   rE   rj   r   r   r   r   rT      s    
rT   z/var/tmp/ruamel.yaml.logc                 C   st   d|   krdkrdS  d|   krdkrdS  d|   kr"dkr*n n| dkr*dS d	|   kr5d
kr8dS  dS dS )N!~T    u   ퟿u   u   �u   ﻿u   𐀀u   􏿿Fr   chr   r   r   check_namespace_char   s    rp   c                 C   s   | dv rdS t | S )Nz,[]{}F)rp   rn   r   r   r   check_anchorname_char   s   rq   c                 C   s0   ddl m} || k rdS |d ur||k rd S dS )Nr   )version_infoTF)ruamel.yamlrr   )t1t2rr   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   ).0ri   rA   r   r   
<listcomp>  s    z8MutableSliceableSequence.__getitem__.<locals>.<listcomp>)
isinstanceslice__getsingleitem__typerangeindicesr   r   r   r   rA   r   __getitem__
  s   

(z$MutableSliceableSequence.__getitem__c                 C   s   t |ts| ||S t|sJ |jd u r4| |j|j= t|D ]}| |jd u r,dn|j| q!d S |	t
| }|d |d  d |d  d }|t
|k r[td|t
||t
|krktd|t
|tt| D ]
\}}|| | |< qqd S )Nr   r   r   z"too many elements in value {} < {}z$not enough elements in value {} > {})rz   r{   __setsingleitem__iterstepstartstopreversedr   r   r   	TypeErrorrJ   r   r~   )r   r   r   elemrange_parmsnr_assigned_itemsidxri   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__r   r~   r   r   )r   r   ri   r   r   r   __delitem__+  s
   

z$MutableSliceableSequence.__delitem__c                 C      t r   
IndexErrorr   r   r   r   r|   3     z*MutableSliceableSequence.__getsingleitem__c                 C   r   r   r   )r   r   r   r   r   r   r   8  r   z*MutableSliceableSequence.__setsingleitem__c                 C   r   r   r   r   r   r   r   r   =  r   z*MutableSliceableSequence.__delsingleitem__N)r    r!   r"   	__slots__r   r   r   r   r|   r   r   r   r   r   r   rw     s    

rw   r   )T
__future__r   rG   rN   typesr`   abcr   typingr   r   r   r   r   r	   r
   r   r   _DEFAULT_YAML_VERSIONruamel.ordereddictr   collectionsr   ImportErrorrr   PY2PY3r(   r*   r+   r/   r1   string_typesrP   integer_typesr}   class_types	text_typebytesbinary_typemaxsizeMAXSIZEchrunichrior6   BytesIOno_limit_intcollections.abcr2   r3   r4   r5   
basestringlong	ClassType	_StringIO	cStringIO
StreamTypeStreamTextTypeVersionTypebuiltins_module
maxunicodeUNICODE_SIZEr=   	DBG_TOKEN	DBG_EVENTDBG_NODErM   rO   rC   rR   r[   objectr?   object_counterrS   rT   nprintnprintfrp   rq   rv   rw   r   r   r   r   <module>   s   



#
