o
    ;                     @   s  d dl mZ d dlZ	 d dl
mZmZ d dlT d dlmZmZmZ d d	lmZ g d
Zdgdedejedfdgdedejedfdgdedejedfdgdedejedfdgdedejedfdgdedejedfddgdeddgfddgdedejg dfddgd ed!ejed"fddgd#ed$d%gfddgd&ed'ed(fgZG d)d* d*eZG d+d, d,eZG d-d. d.eZeD ]Zded  v rejed/d   qG d0d1 d1eZ dS )2    )absolute_importNF)AnyDictListUnionTextOptional)VersionType)string_types_DEFAULT_YAML_VERSION)*)MappingNode
ScalarNodeSequenceNode)RegExp)BaseResolverResolverVersionedResolver      ztag:yaml.org,2002:boolz&^(?:true|True|TRUE|false|False|FALSE)$tTfFr   r   zj^(?:y|Y|yes|Yes|YES|n|N|no|No|NO
        |true|True|TRUE|false|False|FALSE
        |on|On|ON|off|Off|OFF)$
yYnNtTfFoOztag:yaml.org,2002:floatz^(?:
         [-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+]?[0-9]+)?
        |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
        |[-+]?\.[0-9_]+(?:[eE][-+][0-9]+)?
        |[-+]?\.(?:inf|Inf|INF)
        |\.(?:nan|NaN|NAN))$z-+0123456789.a  ^(?:
         [-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+]?[0-9]+)?
        |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
        |\.[0-9_]+(?:[eE][-+][0-9]+)?
        |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*  # sexagesimal float
        |[-+]?\.(?:inf|Inf|INF)
        |\.(?:nan|NaN|NAN))$ztag:yaml.org,2002:intza^(?:[-+]?0b[0-1_]+
        |[-+]?0o?[0-7_]+
        |[-+]?[0-9_]+
        |[-+]?0x[0-9a-fA-F_]+)$z-+0123456789z^(?:[-+]?0b[0-1_]+
        |[-+]?0?[0-7_]+
        |[-+]?(?:0|[1-9][0-9_]*)
        |[-+]?0x[0-9a-fA-F_]+
        |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$ztag:yaml.org,2002:mergez^(?:<<)$<ztag:yaml.org,2002:nullz+^(?: ~
        |null|Null|NULL
        | )$)~nN ztag:yaml.org,2002:timestampz^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
        |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]?
        (?:[Tt]|[ \t]+)[0-9][0-9]?
        :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)?
        (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$
0123456789ztag:yaml.org,2002:valuez^(?:=)$=ztag:yaml.org,2002:yamlz^(?:!|&|\*)$z!&*c                   @      e Zd ZdS )ResolverErrorN__name__
__module____qualname__ r'   r'   =/tmp/google-cloud-sdk/lib/third_party/ruamel/yaml/resolver.pyr"   f       r"   c                   @   s   e Zd ZdZdZdZi Zi ZdddZe	dd Z
ed	d
 Zedd ZedddZdd Zdd Zdd Zdd Ze	dd ZdS )r   ztag:yaml.org,2002:strztag:yaml.org,2002:seqztag:yaml.org,2002:mapNc                 C   sB   || _ | j d urt| j dd d u r| j | j _d | _g | _g | _d S )N	_resolver)	loadumpergetattrr*   _loader_versionresolver_exact_pathsresolver_prefix_paths)selfr+   r'   r'   r(   __init__s   s   

zBaseResolver.__init__c                 C   s*   | j d urt| j dr| j jS | j jS d S Ntyp)r+   hasattrparser_parserr0   r'   r'   r(   r5   |   s
   
zBaseResolver.parserc                    sX   d j vrt fdd jD  _|d u rd g}|D ]} j|g ||f qd S )Nyaml_implicit_resolversc                 3   &    | ]}| j | d d  fV  qd S Nr8   .0kclsr'   r(   	<genexpr>       
z:BaseResolver.add_implicit_resolver_base.<locals>.<genexpr>)__dict__dictr8   
setdefaultappendr@   tagregexpfirstchr'   r?   r(   add_implicit_resolver_base   s   

z'BaseResolver.add_implicit_resolver_basec                    sn   d j vrt fdd jD  _|d u rd g}|D ]} j|g ||f qtddg|||f d S )Nr8   c                 3   r9   r:   r;   r<   r?   r'   r(   rA      rB   z5BaseResolver.add_implicit_resolver.<locals>.<genexpr>r   r   )rC   rD   r8   rE   rF   implicit_resolversrG   r'   r?   r(   add_implicit_resolver   s   

z"BaseResolver.add_implicit_resolverc                 C   sf  d| j vr| j | _g }|D ]q}t|ttfr7t|dkr#|\}}nt|dkr0|d }d}ntd|f d }|}|tu rBt	}n%|tu rIt
}n|tu rPt}n|t	t
tfvrgt|tsg|d urgtd|f t|ttfsy|d urytd|f |||f q|tu rt	}n |tu rt
}n|tu rt}n|t	t
tfvr|d urtd	|f || jt||f< d S )
Nyaml_path_resolversr   r   r   TzInvalid path element: %szInvalid node checker: %szInvalid index checker: %szInvalid node kind: %s)rC   rO   copy
isinstancelisttuplelenr"   strr   r   rD   r   r
   intrF   )r@   rH   pathkindnew_pathelement
node_checkindex_checkr'   r'   r(   add_path_resolver   sH   

zBaseResolver.add_path_resolverc                 C   s   | j sd S i }g }|r;t| j}| jd D ]$\}}| |||||r9t||kr0|||f q| j ||f ||< qn| j D ]\}}|sN| j ||f ||< q>|||f q>| j| | j| d S )N)rO   rT   r/   check_resolver_prefixrF   r.   )r0   current_nodecurrent_indexexact_pathsprefix_pathsdepthrW   rX   r'   r'   r(   descend_resolver   s&   
zBaseResolver.descend_resolverc                 C   s"   | j sd S | j  | j  d S r:   )rO   r.   popr/   r7   r'   r'   r(   ascend_resolver   s   
zBaseResolver.ascend_resolverc                 C   s   ||d  \}}t |tr|j|krdS n|d ur t ||s dS |du r*|d ur*dS |du s2|d u r8|d u r8dS t |trKt |trG||jksIdS dS t |tr[t |ts[||kr[dS dS )Nr   FT)rQ   r
   rH   r   valuerV   bool)r0   rd   rW   rX   r`   ra   r[   r\   r'   r'   r(   r_      s,   




z"BaseResolver.check_resolver_prefixc                 C      |t u r:|d r:|dkr| jdg }n	| j|d g }|| jd g 7 }|D ]\}}||r5|  S q(|d }t| jrT| jd }||v rL|| S d |v rT|d  S |t u r[| jS |tu rb| j	S |t
u ri| jS d S Nr   r   r   r^   )r   r8   getmatchri   rO   r.   DEFAULT_SCALAR_TAGr   DEFAULT_SEQUENCE_TAGr   DEFAULT_MAPPING_TAGr0   rX   rh   implicit	resolversrH   rI   rb   r'   r'   r(   resolve  .   


zBaseResolver.resolvec                 C   s   d S r:   r'   r7   r'   r'   r(   processing_version(  s   zBaseResolver.processing_versionr:   )r$   r%   r&   rn   ro   rp   r8   rO   r1   propertyr5   classmethodrL   rN   r]   re   rg   r_   rt   rv   r'   r'   r'   r(   r   j   s*    
	


6r   c                   @   r!   )r   Nr#   r'   r'   r'   r(   r   .  r)   r   r   c                   @   sJ   e Zd ZdZdddZdd Zdd Zed	d
 Zdd Z	edd Z
dS )r   a  
    contrary to the "normal" resolver, the smart resolver delays loading
    the pattern matching rules. That way it can decide to load 1.1 rules
    or the (default) 1.2 rules, that no longer support octal without 0o, sexagesimals
    and Yes/No/On/Off booleans.
    Nc                 C   s6   |d u r
|d ur
|}t | | | || _i | _d S r:   )r   r1   get_loader_versionr-   _version_implicit_resolver)r0   versionloaderr+   r'   r'   r(   r1   ?  s
   
zVersionedResolver.__init__c                 C   s@   |d u rd g}| j |i }|D ]}||g ||f qd S r:   )rz   rE   rF   )r0   r{   rH   rI   rJ   impl_resolverrK   r'   r'   r(   add_version_implicit_resolverG  s   z/VersionedResolver.add_version_implicit_resolverc                 C   s<   |d u s	t |tr|S t |trt|S ttt|dS )N.)rQ   rS   rR   maprV   splitr0   r{   r'   r'   r(   ry   O  s
   
z$VersionedResolver.get_loader_versionc                 C   sL   | j }|| jvr!tD ]}||d v r | ||d |d |d  q
| j| S )zI
        select the resolver based on the version we are parsing
        r   r   r      )rv   rz   rM   r~   )r0   r{   xr'   r'   r(   versioned_resolverX  s   

z$VersionedResolver.versioned_resolverc                 C   rj   rk   )r   r   rl   rm   ri   rO   r.   rn   r   ro   r   rp   rq   r'   r'   r(   rt   e  ru   zVersionedResolver.resolvec                 C   sz   z| j j}W n' ty-   zt| jdr| jj}n| jjj}W n ty*   d }Y nw Y nw |d u r;| j}|d u r;t	}|S r2   )
r5   yaml_versionAttributeErrorr4   r+   r{   _serializeruse_versionr-   r   r   r'   r'   r(   rv   ~  s$   

z$VersionedResolver.processing_version)NNN)r$   r%   r&   __doc__r1   r~   ry   rw   r   rt   rv   r'   r'   r'   r(   r   7  s    
	
r   )!
__future__r   retypingr   r   r   r   r   r   ruamel.yaml.compatr	   r
   r   ruamel.yaml.errorruamel.yaml.nodesr   r   r   ruamel.yaml.utilr   __all__XrR   rM   	YAMLErrorr"   objectr   r   irrL   r   r'   r'   r'   r(   <module>   s   

	
M E