3
jac                 @   s:  d dddgZ ddlT ddlT d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
G dd deZG d	d  d ZG d
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 G d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   Y/home/psgendb/BIRCHDEV/pkg/SPAdes-3.15.4/linux-x86_64/share/spades/pyyaml3/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 S d S )N)r   construct_documentget_node)r   r   r   r   get_data   s    zBaseConstructor.get_datac             C   s   | j  }|d k	r| j|S d S )N)get_single_noder   )r   noder   r   r   get_single_data!   s    
zBaseConstructor.get_single_datac             C   sT   | j |}x2| jr<| j}g | _x|D ]}x|D ]}q.W q$W qW i | _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 |r$| j}d| _|| jkr>td d d|jd | j|< d }d }|j| jkrj| j|j }nx| jD ].}|jj|rr|jt	|d  }| j| }P qrW d | jkr|j}| jd  }nRd | jkr| jd  }n<t
|tr| jj}n(t
|tr| jj}nt
|tr| jj}|d kr(|| |}n|| ||}t
|tjrt|}t|}| jrhx|D ]}	q\W n| 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   s&   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                s6   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 ))r1   )r   ).0Zchild)r1   r   r   r   
<listcomp>s   s   z6BaseConstructor.construct_sequence.<locals>.<listcomp>)r%   r)   r   r4   r   r5   )r   r   r1   r   )r1   r   r   r*   n   s    
z"BaseConstructor.construct_sequencec             C   s   t |ts td d d|j |ji }xV|jD ]L\}}| j||d}t |tjj	sbtd|jd|j| j||d}|||< q,W |S )Nz%expected a mapping node, but found %s)r1   zwhile constructing a mappingzfound unhashable key)
r%   r+   r   r4   r   r5   r   collectionsabcHashable)r   r   r1   mappingkey_node
value_nodekeyr5   r   r   r   r,   v   s    

z!BaseConstructor.construct_mappingc             C   sf   t |ts td d d|j |jg }x<|jD ]2\}}| j||d}| j||d}|j||f q,W |S )Nz%expected a mapping node, but found %s)r1   )r%   r+   r   r4   r   r5   r   r0   )r   r   r1   pairsr<   r=   r>   r5   r   r   r   construct_pairs   s    
zBaseConstructor.construct_pairsc             C   s$   d| j kr| jj | _|| j|< d S )Nr!   )__dict__r!   copy)clsr    r2   r   r   r   add_constructor   s    
zBaseConstructor.add_constructorc             C   s$   d| j kr| jj | _|| j|< d S )Nr"   )rA   r"   rB   )rC   r3   multi_constructorr   r   r   add_multi_constructor   s    
z%BaseConstructor.add_multi_constructorN)F)F)F)F)r   r	   r
   r!   r"   r   r   r   r   r   r   r(   r*   r,   r@   classmethodrD   rF   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Zdd Zdd Z	dZ
xe
e
e
 krpe
e
9 Z
qZW e
 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  ZS ))r   c                s>   t |tr2x&|jD ]\}}|jdkr| j|S qW t j|S )Nztag:yaml.org,2002:value)r%   r+   r5   r    r(   super)r   r   r<   r=   )r'   r   r   r(      s
    

z SafeConstructor.construct_scalarc       	      C   s.  g }d}x|t |jk r|j| \}}|jdkr|j|= t|tr^| j| |j|j nt|trg }xF|jD ]<}t|tstd|j	d|j
 |j	| j| |j|j qtW |j  x0|D ]}|j| qW ntd|j	d|j
 |j	q|jdkr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$   r5   r    r%   r+   flatten_mappingextendr)   r   r   r4   r0   reverse)	r   r   mergeindexr<   r=   Zsubmergesubnoder5   r   r   r   rI      s>    







zSafeConstructor.flatten_mappingFc                s$   t |tr| j| t j||dS )N)r1   )r%   r+   rI   rH   r,   )r   r   r1   )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_nullT)yesnotrueZfalseonoffc             C   s   | j |}| j|j  S )N)r(   bool_valueslower)r   r   r5   r   r   r   construct_yaml_bool   s    
z#SafeConstructor.construct_yaml_boolc             C   s  | j |}|jdd}d}|d dkr*d}|d dkrB|dd  }|dkrNdS |jdrn|t|d	d  d	 S |jd
r|t|d	d  d S |d dkr|t|d S d|kr dd |jdD }|j  d}d}x |D ]}||| 7 }|d9 }qW || S |t| S d S )N_ r   r   -z+-0Z0b   Z0x      :c             S   s   g | ]}t |qS r   )int)r6   partr   r   r   r7      s    z6SafeConstructor.construct_yaml_int.<locals>.<listcomp><   r   )r(   replacer#   r`   splitrK   )r   r   r5   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r.d}|d dkrF|dd  }|dkrX|| j S |dkrf| jS d	|krd
d |jd	D }|j  d}d}x |D ]}||| 7 }|d9 }qW || S |t| S d S )NrX   rY   r   r   rZ   z+-z.infz.nanr_   c             S   s   g | ]}t |qS r   )float)r6   ra   r   r   r   r7     s    z8SafeConstructor.construct_yaml_float.<locals>.<listcomp>g        rb   r   rc   )r(   rd   rV   	inf_value	nan_valuere   rK   rk   )r   r   r5   rf   rg   rh   ri   r   r   r   construct_yaml_float   s*    


z$SafeConstructor.construct_yaml_floatc             C   s   y| j |jd}W n6 tk
rJ } ztd d d| |jW Y d d }~X nX y"ttdrbtj|S tj|S W n8 t	j
k
r } ztd d d| |jW Y d d }~X nX d S )Nasciiz,failed to convert base64 data into ascii: %sdecodebytesz failed to decode base64 data: %s)r(   encodeUnicodeEncodeErrorr   r   hasattrbase64rp   decodestringbinasciiError)r   r   r5   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   s0  | j |}| jj|j}|j }t|d }t|d }t|d }|d sZtj|||S t|d }t|d }	t|d }
d}|d r|d d d	 }xt|d	k r|d
7 }qW t|}d }|d rt|d }t|d pd}tj	||d}|d dkr| }tj|||||	|
|}|r,||8 }|S )Nyearmonthdayhourminutesecondr   fraction   r[   Ztz_signtz_hour	tz_minute)ZhoursZminutesrZ   )
r(   timestamp_regexpmatchr5   	groupdictr`   datetimeZdater$   Z	timedelta)r   r   r5   r   valuesrz   r{   r|   r}   r~   r   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sZtd|jd|j |jt|jdkrtd|jdt|j |j|jd \}}| j|}| j|}|j	||f q4W d 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   r4   r5   r+   r$   r   r0   )r   r   ZomaprN   r<   r=   r>   r5   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sZtd|jd|j |jt|jdkrtd|jdt|j |j|jd \}}| j|}| j|}|j	||f q4W d 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   r4   r5   r+   r$   r   r0   )r   r   r?   rN   r<   r=   r>   r5   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   r5   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)rJ   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   r5   r   r   r   construct_yaml_map  s    
z"SafeConstructor.construct_yaml_mapc             c   sN   |j |}|V  t|dr4| j|dd}|j| n| j|}|jj| d S )N__setstate__T)r1   )__new__rs   r,   r   rA   r   )r   r   rC   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)F)r   r	   r
   r(   rI   r,   rO   rU   rW   rj   rl   rm   rn   ry   recompileXr   r   r   r   r   r   r   r   r   r   __classcell__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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}W n6 tk
rJ } ztd d d| |jW Y d d }~X nX y"ttdrbtj|S tj|S W n8 t	j
k
r } ztd d d| |jW Y d d }~X nX d S )Nro   z,failed to convert base64 data into ascii: %srp   z failed to decode base64 data: %s)r(   rq   rr   r   r   rs   rt   rp   ru   rv   rw   )r   r   r5   rx   r   r   r   construct_python_bytes  s    

z"Constructor.construct_python_bytesc             C   s
   | j |S )N)rj   )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   sb   |st d|d|yt| W n8 tk
rV } zt d|d||f |W Y d d }~X nX t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markrx   r   r   r   find_python_module  s    "zConstructor.find_python_modulec             C   s   |st d|d|d|kr,|jdd\}}nd}|}yt| W n8 tk
rx } zt d|d||f |W Y d d }~X nX tj| }t||st 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   rs   r   getattr)r   r   r   Zmodule_nameZobject_namerx   moduler   r   r   find_python_name  s$    "

zConstructor.find_python_namec             C   s2   | j |}|r$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   r5   r   r   r   construct_python_name  s
    
z!Constructor.construct_python_namec             C   s2   | j |}|r$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   r5   r   r   r   construct_python_module  s
    
z#Constructor.construct_python_moduleNFc             C   sL   |sg }|si }| j ||j}|r>t|tr>|j|f||S |||S d S )N)r   r   r%   typer   )r   r   r   argskwdsnewobjrC   r   r   r   make_python_instance"  s    z Constructor.make_python_instancec             C   s   t |dr|j| nji }t|tr8t|dkr8|\}}t |drP|jj| n|r^|j| x |j D ]\}}tt	|| qhW d S )Nr   r\   rA   )
rs   r   r%   r   r$   rA   r   itemssetattrobject)r   instancer   Z	slotstater>   r5   r   r   r   set_python_instance_state.  s    


z%Constructor.set_python_instance_statec             c   s>   | j ||dd}|V  t|d}| j||d}| j|| d S )NT)r   r   )r1   )r   rs   r,   r   )r   r   r   r   r1   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 }nJ| j|dd}	|	jdg }|	jdi }|	jdi }|	jdg }|	jdi }| j|||||}
|r| j|
| |r|
j| |rx|D ]}|| |
|< qW |
S )NT)r1   r   r   r   	listitems	dictitems)r%   r)   r*   r,   getr   r   rJ   )r   r   r   r   r   r   r   r   r   r5   r   r>   r   r   r   construct_python_object_applyE  s*    


z)Constructor.construct_python_object_applyc             C   s   | j ||ddS )NT)r   )r   )r   r   r   r   r   r   construct_python_object_newh  s    z'Constructor.construct_python_object_new)NNF)F)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__errornodescollections.abcr8   r   rt   rv   r   r   r-   MarkedYAMLErrorr   r   r   rD   rO   rW   rj   rn   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   r   r   r   r   r   r   r   r   r   <module>   s   8    