
U"3Sc                 @   s  d  d d d g Z  d d l Td d l Td d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 Z	 Gd d   d e
  Z Gd	 d    d   Z Gd
 d   d e  Z e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  Gd d   d e  Z e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j  e j d e j   e j d e j  e j d  e j!  e j d! e j  e j d" e j"  e j d# e j  e j# d$ e j$  e j# d% e j%  e j# d& e j&  e j# d' e j'  e j# d( e j(  d S))BaseConstructorSafeConstructorConstructorConstructorError   )*    Nc               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r   r   2/usr/lib/python3/dist-packages/yaml/constructor.pyr   
   s   c               @   s   e  Z d  Z i  Z i  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z	 d d d  Z
 d d   Z d d d  Z d d d  Z d d d  Z e d d    Z e d d    Z d S)r   c             C   s(   i  |  _  i  |  _ g  |  _ d |  _ d  S)NF)constructed_objectsrecursive_objectsstate_generatorsdeep_construct)selfr   r   r   __init__   s    			zBaseConstructor.__init__c             C   s
   |  j    S)N)
check_node)r   r   r   r   
check_data   s    zBaseConstructor.check_datac             C   s#   |  j    r |  j |  j    Sd  S)N)r   construct_documentZget_node)r   r   r   r   get_data   s    zBaseConstructor.get_datac             C   s)   |  j    } | d  k	 r% |  j |  Sd  S)N)Zget_single_noder   )r   noder   r   r   get_single_data!   s    zBaseConstructor.get_single_datac             C   sr   |  j  |  } xA |  j rR |  j } g  |  _ x | D] } x | D] } qA Wq4 Wq Wi  |  _ i  |  _ d |  _ | S)NF)construct_objectr   r   r   r   )r   r   datar   	generatordummyr   r   r   r   (   s    					z"BaseConstructor.construct_documentFc       
      C   s-  | |  j  k r |  j  | S| r2 |  j } d |  _ | |  j k rY t d  d  d | j   d  |  j | <d  } d  } | j |  j k r |  j | j } n x |  j D]? } | j j |  r | j t	 |  d   } |  j | } Pq Wd  |  j k r| j } |  j d  } nv d  |  j k r+|  j d  } nW t
 | t  rI|  j j } n9 t
 | t  rg|  j j } n t
 | t  r|  j j } | d  k r| |  |  } n | |  | |  } t
 | t j  r| } t |  } |  j rx! | D] }	 qWn |  j j |  | |  j  | <|  j | =| r)| |  _ | S)NTz$found unconstructable recursive node)r   r   r   r   
start_marktagyaml_constructorsyaml_multi_constructors
startswithlen
isinstance
ScalarNode	__class__construct_scalarSequenceNodeconstruct_sequenceMappingNodeconstruct_mappingtypesGeneratorTypenextr   append)
r   r   deepZold_deepconstructorZ
tag_suffix
tag_prefixr   r   r   r   r   r   r   5   sX    					
	z BaseConstructor.construct_objectc             C   s5   t  | t  s. t d  d  d | j | j   | j S)Nz$expected a scalar node, but found %s)r#   r$   r   idr   value)r   r   r   r   r   r&   g   s
    	
z BaseConstructor.construct_scalarc                sK   t  | t  s. t d  d  d | j | j      f d d   | j D S)Nz&expected a sequence node, but found %sc                s%   g  |  ] }  j  | d     q S)r/   )r   ).0Zchild)r/   r   r   r   
<listcomp>s   s   	z6BaseConstructor.construct_sequence.<locals>.<listcomp>)r#   r'   r   r2   r   r3   )r   r   r/   r   )r/   r   r   r(   n   s    	
z"BaseConstructor.construct_sequencec             C   s   t  | t  s. t d  d  d | j | j   i  } xx | j D]m \ } } |  j | d | } t  | t j  s t d | j d | j   |  j | d | } | | | <q> W| S)Nz%expected a mapping node, but found %sr/   zwhile constructing a mappingzfound unhashable key)	r#   r)   r   r2   r   r3   r   collectionsHashable)r   r   r/   mappingkey_node
value_nodekeyr3   r   r   r   r*   v   s    	
z!BaseConstructor.construct_mappingc             C   s   t  | t  s. t d  d  d | j | j   g  } xT | j D]I \ } } |  j | d | } |  j | d | } | j | | f  q> W| S)Nz%expected a mapping node, but found %sr/   )r#   r)   r   r2   r   r3   r   r.   )r   r   r/   pairsr9   r:   r;   r3   r   r   r   construct_pairs   s    	
zBaseConstructor.construct_pairsc             C   s2   d |  j  k r! |  j j   |  _ | |  j | <d  S)Nr   )__dict__r   copy)clsr   r0   r   r   r   add_constructor   s    zBaseConstructor.add_constructorc             C   s2   d |  j  k r! |  j j   |  _ | |  j | <d  S)Nr    )r>   r    r?   )r@   r1   Zmulti_constructorr   r   r   add_multi_constructor   s    z%BaseConstructor.add_multi_constructorN)r   r	   r
   r   r    r   r   r   r   r   r   r&   r(   r*   r=   classmethodrA   rB   r   r   r   r   r      s   2c                   s\  e  Z d  Z   f d d   Z d d   Z d   f d d  Z d d	   Z d
 d d d d d d d d d d d i Z d d   Z d d   Z	 d Z
 x e
 e
 e
 k r e
 e
 9Z
 q We
 e
 Z d d   Z d d   Z e j d e j  Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d' d(   Z d) d*   Z d+ d,   Z   S)-r   c                sU   t  | t  rE x3 | j D]( \ } } | j d k r |  j |  Sq Wt   j |  S)Nztag:yaml.org,2002:value)r#   r)   r3   r   r&   super)r   r   r9   r:   )r%   r   r   r&      s
    z SafeConstructor.construct_scalarc       	      C   s  g  } d } xj| t  | j  k  rx| j | \ } } | j d k rF| j | =t | t  r |  j |  | j | j  qut | t  r!g  } x_ | j D]T } t | t  s t d | j	 d | j
 | j	   |  j |  | j | j  q W| j   x@ | D] } | j |  qWqut d | j	 d | j
 | j	   q | j d k rkd | _ | d 7} q | d 7} q W| r| | j | _ d  S)	Nr   ztag:yaml.org,2002:mergezwhile constructing a mappingz,expected a mapping for merging, but found %sz@expected a mapping or list of mappings for merging, but found %sztag:yaml.org,2002:valueztag:yaml.org,2002:strr   )r"   r3   r   r#   r)   flatten_mappingextendr'   r   r   r2   r.   reverse)	r   r   mergeindexr9   r:   Zsubmergesubnoder3   r   r   r   rE      s>    

	zSafeConstructor.flatten_mappingFc                s2   t  | t  r |  j |  t   j | d | S)Nr/   )r#   r)   rE   rD   r*   )r   r   r/   )r%   r   r   r*      s    z!SafeConstructor.construct_mappingc             C   s   |  j  |  d  S)N)r&   )r   r   r   r   r   construct_yaml_null   s    z#SafeConstructor.construct_yaml_nullyesTnotruefalseZonZoffc             C   s    |  j  |  } |  j | j   S)N)r&   bool_valueslower)r   r   r3   r   r   r   construct_yaml_bool   s    z#SafeConstructor.construct_yaml_boolc             C   sc  |  j  |  } | j d d  } d } | d d k r= d } | d d k r] | d d   } | d k rm d S| j d  r | t | d	 d   d	  S| j d
  r | t | d	 d   d  S| d d k r | t | d  Sd | k rQd d   | j d  D } | j   d } d } x& | D] } | | | 7} | d 9} q'W| | S| t |  Sd  S)N_ r   r   -z+-0Z0b   Z0x      :c             S   s   g  |  ] } t  |   q Sr   )int)r4   partr   r   r   r5      s   	 z6SafeConstructor.construct_yaml_int.<locals>.<listcomp><   r   )r&   replacer!   r[   splitrG   )r   r   r3   signdigitsbasedigitr   r   r   construct_yaml_int   s2    
z"SafeConstructor.construct_yaml_intgu <7~c             C   s  |  j  |  } | j d d  j   } d } | d d k rC d } | d d k rc | d d   } | d k rz | |  j S| d k r |  j Sd	 | k r d
 d   | j d	  D } | j   d } d } x& | D] } | | | 7} | d 9} q W| | S| t |  Sd  S)NrS   rT   r   r   rU   z+-z.infz.nanrZ   c             S   s   g  |  ] } t  |   q Sr   )float)r4   r\   r   r   r   r5     s   	 z8SafeConstructor.construct_yaml_float.<locals>.<listcomp>g        r]   r   r^   )r&   r_   rQ   	inf_value	nan_valuer`   rG   rf   )r   r   r3   ra   rb   rc   rd   r   r   r   construct_yaml_float   s*    
z$SafeConstructor.construct_yaml_floatc             C   s   y |  j  |  j d  } WnA t k
 r_ } z! t d  d  d | | j   WYd  d  } ~ Xn Xy- t t d  r t j |  St j |  SWnD t	 j
 k
 r } z! t d  d  d | | j   WYd  d  } ~ Xn Xd  S)Nasciiz,failed to convert base64 data into ascii: %sdecodebytesz failed to decode base64 data: %s)r&   encodeUnicodeEncodeErrorr   r   hasattrbase64rk   decodestringbinasciiError)r   r   r3   excr   r   r   construct_yaml_binary  s    		z%SafeConstructor.construct_yaml_binarya  ^(?P<year>[0-9][0-9][0-9][0-9])
                -(?P<month>[0-9][0-9]?)
                -(?P<day>[0-9][0-9]?)
                (?:(?:[Tt]|[ \t]+)
                (?P<hour>[0-9][0-9]?)
                :(?P<minute>[0-9][0-9])
                :(?P<second>[0-9][0-9])
                (?:\.(?P<fraction>[0-9]*))?
                (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?)
                (?::(?P<tz_minute>[0-9][0-9]))?))?)?$c             C   s  |  j  |  } |  j j | j  } | j   } t | d  } t | d  } t | d  } | d s} t j | | |  St | d  } t | d  }	 t | d  }
 d } | d r | d d  d	  } x  t |  d	 k  r | d
 7} q Wt |  } d  } | d ret | d  } t | d p0d  } t j	 d | d |  } | d d k re| } t j | | | | |	 |
 |  } | r| | 8} | S)Nyearmonthdayhourminutesecondr   fraction   rV   Ztz_signtz_hour	tz_minuteZhoursZminutesrU   )
r&   timestamp_regexpmatchr3   	groupdictr[   datetimeZdater"   Z	timedelta)r   r   r3   r   valuesru   rv   rw   rx   ry   rz   r{   Zdeltar}   r~   r   r   r   r   construct_yaml_timestamp4  s8    


!
z(SafeConstructor.construct_yaml_timestampc             c   s  g  } | Vt  | t  s< t d | j d | j | j   x | j D] } t  | t  s} t d | j d | j | j   t | j  d k r t d | j d t | j  | j   | j d \ } } |  j |  } |  j |  } | j	 | | f  qF Wd  S)Nz!while constructing an ordered mapz!expected a sequence, but found %sz,expected a mapping of length 1, but found %sr   z2expected a single mapping item, but found %d itemsr   )
r#   r'   r   r   r2   r3   r)   r"   r   r.   )r   r   ZomaprJ   r9   r:   r;   r3   r   r   r   construct_yaml_omapR  s$    
z#SafeConstructor.construct_yaml_omapc             c   s  g  } | Vt  | t  s< t d | j d | j | j   x | j D] } t  | t  s} t d | j d | j | j   t | j  d k r t d | j d t | j  | j   | j d \ } } |  j |  } |  j |  } | j	 | | f  qF Wd  S)Nzwhile constructing pairsz!expected a sequence, but found %sz,expected a mapping of length 1, but found %sr   z2expected a single mapping item, but found %d itemsr   )
r#   r'   r   r   r2   r3   r)   r"   r   r.   )r   r   r<   rJ   r9   r:   r;   r3   r   r   r   construct_yaml_pairsh  s$    
z$SafeConstructor.construct_yaml_pairsc             c   s.   t    } | V|  j |  } | j |  d  S)N)setr*   update)r   r   r   r3   r   r   r   construct_yaml_set}  s    	z"SafeConstructor.construct_yaml_setc             C   s   |  j  |  S)N)r&   )r   r   r   r   r   construct_yaml_str  s    z"SafeConstructor.construct_yaml_strc             c   s%   g  } | V| j  |  j |   d  S)N)rF   r(   )r   r   r   r   r   r   construct_yaml_seq  s    z"SafeConstructor.construct_yaml_seqc             c   s+   i  } | V|  j  |  } | j |  d  S)N)r*   r   )r   r   r   r3   r   r   r   construct_yaml_map  s    z"SafeConstructor.construct_yaml_mapc             c   sk   | j  |  } | Vt | d  rH |  j | d d } | j |  n |  j |  } | j j |  d  S)N__setstate__r/   T)__new__rn   r*   r   r>   r   )r   r   r@   r   stater   r   r   construct_yaml_object  s    z%SafeConstructor.construct_yaml_objectc             C   s#   t  d  d  d | j | j   d  S)Nz0could not determine a constructor for the tag %r)r   r   r   )r   r   r   r   r   construct_undefined  s    	
z#SafeConstructor.construct_undefined)r   r	   r
   r&   rE   r*   rK   rP   rR   re   rg   rh   ri   rt   recompileXr   r   r   r   r   r   r   r   r   r   r   r   )r%   r   r      s:   #

ztag:yaml.org,2002:nullztag:yaml.org,2002:boolztag:yaml.org,2002:intztag:yaml.org,2002:floatztag:yaml.org,2002:binaryztag:yaml.org,2002:timestampztag:yaml.org,2002:omapztag:yaml.org,2002:pairsztag:yaml.org,2002:setztag:yaml.org,2002:strztag:yaml.org,2002:seqztag:yaml.org,2002:mapc               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d d d d  Z d d   Z d d   Z d d d  Z d d    Z d S)!r   c             C   s   |  j  |  S)N)r&   )r   r   r   r   r   construct_python_str  s    z Constructor.construct_python_strc             C   s   |  j  |  S)N)r&   )r   r   r   r   r   construct_python_unicode  s    z$Constructor.construct_python_unicodec             C   s   y |  j  |  j d  } WnA t k
 r_ } z! t d  d  d | | j   WYd  d  } ~ Xn Xy- t t d  r t j |  St j |  SWnD t	 j
 k
 r } z! t d  d  d | | j   WYd  d  } ~ Xn Xd  S)Nrj   z,failed to convert base64 data into ascii: %srk   z failed to decode base64 data: %s)r&   rl   rm   r   r   rn   ro   rk   rp   rq   rr   )r   r   r3   rs   r   r   r   construct_python_bytes  s    		z"Constructor.construct_python_bytesc             C   s   |  j  |  S)N)re   )r   r   r   r   r   construct_python_long  s    z!Constructor.construct_python_longc             C   s   t  |  j |   S)N)complexr&   )r   r   r   r   r   construct_python_complex  s    z$Constructor.construct_python_complexc             C   s   t  |  j |   S)N)tupler(   )r   r   r   r   r   construct_python_tuple  s    z"Constructor.construct_python_tuplec             C   s{   | s t  d | d |   y t |  WnD t k
 ro } z$ t  d | d | | f |   WYd  d  } ~ Xn Xt j | S)Nz"while constructing a Python modulez+expected non-empty name appended to the tagzcannot find module %r (%s))r   
__import__ImportErrorsysmodules)r   namemarkrs   r   r   r   find_python_module  s    		)zConstructor.find_python_modulec             C   s   | s t  d | d |   d | k rB | j d d  \ } } n d } | } y t |  WnD t k
 r } z$ t  d | d | | f |   WYd  d  } ~ Xn Xt j | } t | |  s t  d | d | | j f |   t | |  S)Nz"while constructing a Python objectz+expected non-empty name appended to the tag.r   builtinszcannot find module %r (%s)zcannot find %r in the module %r)	r   rsplitr   r   r   r   rn   r   getattr)r   r   r   Zmodule_nameZobject_namers   moduler   r   r   find_python_name  s$    		)	zConstructor.find_python_namec             C   sG   |  j  |  } | r4 t d | j d | | j   |  j | | j  S)Nz while constructing a Python namez&expected the empty value, but found %r)r&   r   r   r   )r   suffixr   r3   r   r   r   construct_python_name  s
    z!Constructor.construct_python_namec             C   sG   |  j  |  } | r4 t d | j d | | j   |  j | | j  S)Nz"while constructing a Python modulez&expected the empty value, but found %r)r&   r   r   r   )r   r   r   r3   r   r   r   construct_python_module  s
    z#Constructor.construct_python_moduleNFc             C   sf   | s g  } | s i  } |  j  | | j  } | rU t | t  rU | j | | |  S| | |   Sd  S)N)r   r   r#   typer   )r   r   r   argskwdsnewobjr@   r   r   r   make_python_instance"  s    z Constructor.make_python_instancec             C   s   t  | d  r | j |  n i  } t | t  rR t |  d k rR | \ } } t  | d  rt | j j |  n | r | j |  x* | j   D] \ } } t t	 | |  q Wd  S)Nr   rW   r>   )
rn   r   r#   r   r"   r>   r   itemssetattrobject)r   instancer   Z	slotstater;   r3   r   r   r   set_python_instance_state.  s    !z%Constructor.set_python_instance_statec             c   sU   |  j  | | d d } | Vt | d  } |  j | d | } |  j | |  d  S)Nr   Tr   r/   )r   rn   r*   r   )r   r   r   r   r/   r   r   r   r   construct_python_object<  s
    z#Constructor.construct_python_objectc             C   s  t  | t  r? |  j | d d } i  } i  } g  } i  } no |  j | d d }	 |	 j d g   } |	 j d i   } |	 j d i   } |	 j d g   } |	 j d i   } |  j | | | | |  }
 | r |  j |
 |  | r |
 j |  | rx | D] } | | |
 | <q W|
 S)Nr/   Tr   r   r   	listitems	dictitems)r#   r'   r(   r*   getr   r   rF   )r   r   r   r   r   r   r   r   r   r3   r   r;   r   r   r   construct_python_object_applyE  s*    	z)Constructor.construct_python_object_applyc             C   s   |  j  | | d d S)Nr   T)r   )r   r   r   r   r   r   construct_python_object_newh  s    z'Constructor.construct_python_object_new)r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   	#ztag:yaml.org,2002:python/noneztag:yaml.org,2002:python/boolztag:yaml.org,2002:python/strz tag:yaml.org,2002:python/unicodeztag:yaml.org,2002:python/bytesztag:yaml.org,2002:python/intztag:yaml.org,2002:python/longztag:yaml.org,2002:python/floatz tag:yaml.org,2002:python/complexztag:yaml.org,2002:python/listztag:yaml.org,2002:python/tupleztag:yaml.org,2002:python/dictztag:yaml.org,2002:python/name:z tag:yaml.org,2002:python/module:z tag:yaml.org,2002:python/object:z&tag:yaml.org,2002:python/object/apply:z$tag:yaml.org,2002:python/object/new:))__all__errorZnodesr6   r   ro   rq   r   r   r+   ZMarkedYAMLErrorr   r   r   rA   rK   rR   re   ri   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   r   r   r   r   r   r   r   r   r   <module>   s   		

T 











	
















