
    ;                     $   d dl mZ d dlZ	 d dl
mZmZ d dl 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'e      Z G d( d)e      Z G d* d+e      ZeD ]  Zded    v s ej>                  ed,d     G d- d.e      Z y)/    )absolute_importN)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y)ResolverErrorN__name__
__module____qualname__     'lib/third_party/ruamel/yaml/resolver.pyr   r   f       r"   r   c                       e Zd ZdZdZdZi Zi ZddZe	d        Z
ed        Zed        Zedd	       Zd
 Zd Zd Zd Ze	d        Zy)r   ztag:yaml.org,2002:strztag:yaml.org,2002:seqztag:yaml.org,2002:mapNc                     || _         | j                   2t        | j                   dd       | j                   | j                   _        d | _        g | _        g | _        y )N	_resolver)	loadumpergetattrr'   _loader_versionresolver_exact_pathsresolver_prefix_paths)selfr(   s     r#   __init__zBaseResolver.__init__s   sM    ">>%'$..+t*T*\'+~~DNN$#$&!%'"r"   c                     | j                   Bt        | j                   d      r| j                   j                  S | j                   j                  S y Ntyp)r(   hasattrparser_parserr-   s    r#   r3   zBaseResolver.parser|   s?     >>%t~~u-~~,,,>>)))r"   c                      d j                   vr#t         fd j                  D               _        |d g}|D ]/  } j                  j                  |g       j	                  ||f       1 y )Nyaml_implicit_resolversc              3   F   K   | ]  }|j                   |   d d  f  y wNr7   .0kclss     r#   	<genexpr>z:BaseResolver.add_implicit_resolver_base.<locals>.<genexpr>   +      /@[1C//2156@[   !)__dict__dictr7   
setdefaultappendr>   tagregexpfirstchs   `    r#   add_implicit_resolver_basez'BaseResolver.add_implicit_resolver_base   sn     %CLL8*. /@C@[@[/ +C' =FEB''222r:AA3-P r"   c                     d j                   vr#t         fd j                  D               _        |d g}|D ]/  } j                  j                  |g       j	                  ||f       1 t
        j	                  ddg|||f       y )Nr7   c              3   F   K   | ]  }|j                   |   d d  f  y wr9   r:   r;   s     r#   r?   z5BaseResolver.add_implicit_resolver.<locals>.<genexpr>   r@   rA   r   r   )rB   rC   r7   rD   rE   implicit_resolversrF   s   `    r#   add_implicit_resolverz"BaseResolver.add_implicit_resolver   s     %CLL8*. /@C@[@[/ +C' =FEB''222r:AA3-P !!FF#3S&%"HIr"   c                    d| j                   vr| j                  j                         | _        g }|D ]  }t        |t        t
        f      r8t        |      dk(  r|\  }}n(t        |      dk(  r|d   }d}nt        d|      d }|}|t        u rt        }nQ|t        u rt        }nB|t        u rt        }n3|t        t        t        fvr t        |t              s|t        d|      t        |t        t        f      s|t        d|      |j                  ||f        |t        u rt        }nA|t        u rt        }n2|t        u rt        }n#|t        t        t        fvr|t        d	|      || j                  t        |      |f<   y )
Nyaml_path_resolversr   r   r   TzInvalid path element: zInvalid node checker: zInvalid index checker: zInvalid node kind: )rB   rQ   copy
isinstancelisttuplelenr   strr   r	   rC   r   r   intrE   )r>   rG   pathkindnew_pathelement
node_checkindex_checks           r#   add_path_resolverzBaseResolver.add_path_resolver   st    !4&)&=&=&B&B&DC#G'D%=1w<1$.5+J\Q&!(J"&K'g(OPP!
%S '
t#)
t#(
:|["II":|<*#*$NOOkL#+>?KD[#;$PQQOOZ565 6 3;DT\DT\D*lK@@TEU4 ABB9<h 56r"   c                    | j                   sy i }g }|ryt        | j                        }| j                  d   D ]Q  \  }}| j                  |||||      st        |      |kD  r|j	                  ||f       >| j                   ||f   ||<   S n>| j                   D ]/  \  }}|s| j                   ||f   ||<   |j	                  ||f       1 | j
                  j	                  |       | j                  j	                  |       y )N)rQ   rV   r,   check_resolver_prefixrE   r+   )r-   current_nodecurrent_indexexact_pathsprefix_pathsdepthrY   rZ   s           r#   descend_resolverzBaseResolver.descend_resolver   s    ''223E"88<
d--eT4}]4y5($++T4L9,0,D,DT4Z,PD) = #66
d(,(@(@t(LK% ''t5	 7
 	!!((5"")),7r"   c                     | j                   sy | j                  j                          | j                  j                          y r9   )rQ   r+   popr,   r5   s    r#   ascend_resolverzBaseResolver.ascend_resolver   s2    ''!!%%'""&&(r"   c                 F   ||dz
     \  }}t        |t              r|j                  |k7  ry|t        ||      sy|du r|y|du s||yt        |t              r!t        |t              r||j                  k(  syyt        |t
              rt        |t              s||k7  ryy)Nr   FT)rS   r   rG   r   valuerX   bool)r-   rg   rY   rZ   rc   rd   r]   r^   s           r#   rb   z"BaseResolver.check_resolver_prefix   s    "&uqy/
Kj,/:-#lJ7$=#<5 K$7]=Rk<0=*5+I\I\:\  S)*[$2Om+r"   c                 
   |t         u r|d   r|dk(  r| j                  j                  dg       }n| j                  j                  |d   g       }|| j                  j                  d g       z  }|D ]  \  }}|j                  |      s|c S  |d   }t	        | j
                        r!| j                  d   }||v r||   S d |v r|d    S |t         u r| j                  S |t        u r| j                  S |t        u r| j                  S y Nr   r   r   ra   )r   r7   getmatchrn   rQ   r+   DEFAULT_SCALAR_TAGr	   DEFAULT_SEQUENCE_TAGr   DEFAULT_MAPPING_TAGr-   rZ   rm   implicit	resolversrG   rH   re   s           r#   resolvezBaseResolver.resolve  s   :(1+{ 88<<RD	 88<<U1XrJ	5599$CCI(V<<&J  )  {H(()33B7K{""4(({""4((:***\!,,,[ +++ !r"   c                      y r9   r!   r5   s    r#   processing_versionzBaseResolver.processing_version(  s     r"   r9   )r   r   r    rs   rt   ru   r7   rQ   r.   propertyr3   classmethodrK   rO   r_   rh   rk   rb   ry   r{   r!   r"   r#   r   r   j   s    132 (   
Q 
Q J J  4= 4=l8.).,2  r"   r   c                       e Zd Zy)r   Nr   r!   r"   r#   r   r   .  r$   r"   r   r   c                   J    e Zd ZdZd	dZd Zd Zed        Zd Z	ed        Z
y)
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                 v    |||}t         j                  | |       | j                  |      | _        i | _        y r9   )r   r.   get_loader_versionr*   _version_implicit_resolver)r-   versionloaderr(   s       r#   r.   zVersionedResolver.__init__?  s<    >i3FdF+#66w?*,'r"   c                     |d g}| j                   j                  |i       }|D ]%  }|j                  |g       j                  ||f       ' y r9   )r   rD   rE   )r-   r   rG   rH   rI   impl_resolverrJ   s          r#   add_version_implicit_resolverz/VersionedResolver.add_version_implicit_resolverG  sO    =FE77BB7BOB$$R,33S&MB r"   c                     |t        |t              r|S t        |t              rt        |      S t        t        t        |j                  d                  S )N.)rS   rU   rT   maprX   splitr-   r   s     r#   r   z$VersionedResolver.get_loader_versionO  sD    ?j%8Ngt$>!SgmmD1233r"   c                     | j                   }|| j                  vr0t        D ]'  }||d   v s| j                  ||d   |d   |d          ) | j                  |   S )zI
        select the resolver based on the version we are parsing
        r   r   r      )r{   r   rN   r   )r-   r   xs      r#   versioned_resolverz$VersionedResolver.versioned_resolverX  se     ))$999'ad?66w!adAaDQ ( ..w77r"   c                 
   |t         u r|d   r|dk(  r| j                  j                  dg       }n| j                  j                  |d   g       }|| j                  j                  d g       z  }|D ]  \  }}|j                  |      s|c S  |d   }t	        | j
                        r!| j                  d   }||v r||   S d |v r|d    S |t         u r| j                  S |t        u r| j                  S |t        u r| j                  S y rp   )r   r   rq   rr   rn   rQ   r+   rs   r	   rt   r   ru   rv   s           r#   ry   zVersionedResolver.resolvee  s   :(1+{ 3377B?	 3377a"E	0044T2>>I(V<<&J  )  {H(()33B7K{""4(({""4((:***\!,,,[ +++ !r"   c                 >   	 | j                   j                  }|| j                  }|t        }|S # t        $ rc 	 t        | j                  d      r| j                  j
                  }n | j                  j                  j                  }n# t        $ r d }Y nw xY wY w xY wr0   )
r3   yaml_versionAttributeErrorr2   r(   r   _serializeruse_versionr*   r   r   s     r#   r{   z$VersionedResolver.processing_version~  s    		kk..G ?**G/  	4>>51"nn44G"nn88DDG! 	s3   0 	BABBBBBBB)NNN)r   r   r    __doc__r.   r   r   r|   r   ry   r{   r!   r"   r#   r   r   7  sD    -C4 
8 
8,2  r"   r   )!
__future__r   retypingAnyDictListUnionTextOptionalruamel.yaml.compatVersionTyper   r   ruamel.yaml.errorruamel.yaml.nodesr   r   r	   ruamel.yaml.utilr
   __all__XrT   rN   	YAMLErrorr   objectr   r   irrK   r   r!   r"   r#   <module>r      sd   ' 	 C  C C #
; X!<bddCW X! #$&DD	* 	] X" !
 #%$$	( 	  X" ! #%$$	( 		  X  # %'DD	* 	_ X  1 35$$		8
 	_ f"{	 f! 	 	 ! f& ? AC		F
 	] f"z	 f! VKI Z	I 	A6 AH	| 	 BA+++RV4 
X Xr"   