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�r†ejed.d… Ž  �q†G 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rˆt
}nL|tkr–t}n>|tkr¤t}n0|t
ttfkrÔt|t	ƒsÔ|d k	rÔttd|d	�ƒ‚t|t	tfƒsú|d k	rút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ƒr”t |tƒrŽ||jks´dS n t |tƒr´t |tƒs´||kr´d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