U
    ƽb<                     @   s  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 dddg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dddd g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ZG d-d deZeD ]&Zd	ed  krejed.d   qG d/d deZdS )0    N)_DEFAULT_YAML_VERSION_F)*)MappingNode
ScalarNodeSequenceNode)RegExpBaseResolverResolverVersionedResolver      ztag:yaml.org,2002:boolz&^(?:true|True|TRUE|false|False|FALSE)$Z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)$Z
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                   @   s   e Zd ZdS )ResolverErrorN__name__
__module____qualname__ r   r   8/tmp/pip-unpacked-wheel-ctuyz3qg/ruamel/yaml/resolver.pyr   d   s   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 k	r,t| j dd d k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__q   s    
zBaseResolver.__init__c                 C   s*   | j d k	r&t| j dr| j jS | j jS d S Ntyp)r   hasattrparser_parserr$   r   r   r   r)   z   s
    
zBaseResolver.parserc                    sX   d j kr$t fdd jD  _|d kr2d g}|D ]} j|g ||f q6d S )Nyaml_implicit_resolversc                 3   s$   | ]}| j | d d  fV  qd S Nr,   .0kclsr   r   	<genexpr>   s    z:BaseResolver.add_implicit_resolver_base.<locals>.<genexpr>)__dict__dictr,   
setdefaultappendr3   tagregexpfirstchr   r2   r   add_implicit_resolver_base   s    

z'BaseResolver.add_implicit_resolver_basec                    sn   d j kr$t fdd jD  _|d kr2d g}|D ]} j|g ||f q6tddg|||f d S )Nr,   c                 3   s$   | ]}| j | d d  fV  qd S r-   r.   r/   r2   r   r   r4      s    z5BaseResolver.add_implicit_resolver.<locals>.<genexpr>r   r   )r5   r6   r,   r7   r8   implicit_resolversr9   r   r2   r   add_implicit_resolver   s    

z"BaseResolver.add_implicit_resolverc                 C   sz  d| j kr| j | _g }|D ]}t|ttfrrt|dkrF|\}}qzt|dkr`|d }d}qzttd|dnd }|}|t	krt
}nL|tkrt}n>|tkrt}n0|t
ttfkrt|t	s|d k	rttd|d	t|t	tfs|d k	rttd
|d|||f q|t	krt
}nJ|tkr*t}n:|tkr:t}n*|t
ttfkrd|d k	rdttd|d|| jt||f< d S )Nyaml_path_resolversr   r   r   Tz!Invalid path element: {element!s})elementz$Invalid node checker: {node_check!s})
node_checkz&Invalid index checker: {index_check!s})index_checkzInvalid node kind: {kind!s})kind)r5   rA   copy
isinstancelisttuplelenr   r   strr   r   r6   r   intr8   )r3   r:   pathrE   new_pathrB   rC   rD   r   r   r   add_path_resolver   sX    







zBaseResolver.add_path_resolverc                 C   s   | j s
d S i }g }|rvt| j}| jd D ]H\}}| |||||r*t||kr`|||f q*| j ||f ||< q*n6| j D ].\}}|s| j ||f ||< q||||f q|| j| | j| d S )N)rA   rJ   r#   check_resolver_prefixr8   r"   )r$   current_nodecurrent_indexexact_pathsZprefix_pathsdepthrM   rE   r   r   r   descend_resolver   s"    
zBaseResolver.descend_resolverc                 C   s"   | j s
d S | j  | j  d S r-   )rA   r"   popr#   r+   r   r   r   ascend_resolver   s    
zBaseResolver.ascend_resolverc                 C   s   ||d  \}}t |tr*|j|kr@dS n|d k	r@t ||s@dS |dkrT|d k	rTdS |dksd|d krp|d krpdS t |trt |tr||jksdS n t |trt |ts||krdS dS )Nr   FT)rG   rK   r:   r   valuerL   bool)r$   rU   rM   rE   rR   rS   rC   rD   r   r   r   rQ      s*    



z"BaseResolver.check_resolver_prefixc                 C   s   |t krt|d rt|dkr(| jdg }n| j|d g }|| jd g 7 }|D ]\}}||rP|  S qP|d }t| jr| jd }||kr|| S d |kr|d  S |t kr| jS |tkr| j	S |t
kr| jS d S Nr   r   r   rP   )r   r,   getmatchrZ   rA   r"   DEFAULT_SCALAR_TAGr   DEFAULT_SEQUENCE_TAGr   DEFAULT_MAPPING_TAGr$   rE   rY   ZimplicitZ	resolversr:   r;   rT   r   r   r   resolve  s*    



zBaseResolver.resolvec                 C   s   d S r-   r   r+   r   r   r   processing_version,  s    zBaseResolver.processing_version)N)N)r   r   r   r^   r_   r`   r,   rA   r%   propertyr)   classmethodr>   r@   rO   rV   rX   rQ   rb   rc   r   r   r   r   r	   h   s(   
	


<c                   @   s   e Zd ZdS )r
   Nr   r   r   r   r   r
   2  s   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 kr|d k	r|}t | | | || _i | _d S r-   )r	   r%   get_loader_versionr!   _version_implicit_resolver)r$   versionloaderr   r   r   r   r%   C  s
    zVersionedResolver.__init__c                 C   s@   |d krd g}| j |i }|D ]}||g ||f q d S r-   )rg   r7   r8   )r$   rh   r:   r;   r<   Zimpl_resolverr=   r   r   r   add_version_implicit_resolverK  s
    z/VersionedResolver.add_version_implicit_resolverc                 C   s<   |d kst |tr|S t |tr(t|S ttt|dS )N.)rG   rI   rH   maprL   splitr$   rh   r   r   r   rf   S  s
    
z$VersionedResolver.get_loader_versionc                 C   sj   | j }t|tr$ttt|d}|| jkr`tD ],}||d kr2| 	||d |d |d  q2| j| S )zI
        select the resolver based on the version we are parsing
        rk   r   r   r      )
rc   rG   rK   rI   rl   rL   rm   rg   r?   rj   )r$   rh   xr   r   r   versioned_resolver\  s    

z$VersionedResolver.versioned_resolverc                 C   s   |t krt|d rt|dkr(| jdg }n| j|d g }|| jd g 7 }|D ]\}}||rP|  S qP|d }t| jr| jd }||kr|| S d |kr|d  S |t kr| jS |tkr| j	S |t
kr| jS d S r[   )r   rq   r\   r]   rZ   rA   r"   r^   r   r_   r   r`   ra   r   r   r   rb   k  s*    



zVersionedResolver.resolvec                 C   s   z| j jj}W nR tk
r`   z$t| j dr6| j j}n
| j jj}W n tk
rZ   d }Y nX Y nX |d kr|| j}|d kr|t	}|S r&   )
r   Z_scannerZyaml_versionAttributeErrorr(   rh   Z_serializerZuse_versionr!   r   rn   r   r   r   rc     s    
z$VersionedResolver.processing_version)NNN)r   r   r   __doc__r%   rj   rf   rd   rq   rb   rc   r   r   r   r   r   ;  s   
	
)reAnyDictListUnionTextOptionalZVersionTypeZruamel.yaml.compatr   r   Zruamel.yaml.errorZruamel.yaml.nodesr   r   r   Zruamel.yaml.utilr   __all__XrH   r?   Z	YAMLErrorr   r	   r
   Zirr>   r   r   r   r   r   <module>   s   


	

M K