3
QfX4                 @   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G dd deZ	G d	d  d Z
G d
d de
Zejedej ejeej ejeej ejeej ejeej ejeej ejeej ejeej ejeej ejeej ejej ej! ejejej" ejdej# G dd deZ$e$je%e$j& e$jee$j' e$jee$j( e$jej)e$j( e$jej*e$j( e$jej+e$j, e$j-e.e$j/ dS )BaseRepresenterSafeRepresenterRepresenterRepresenterError   )*    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/representer.pyr   
   s   c               @   sl   e Zd Zi Zi ZdddZdd Zdd Zedd	 Z	ed
d Z
dddZdddZdddZdd ZdS )r   Nc             C   s"   || _ || _i | _g | _d | _d S )N)default_styledefault_flow_stylerepresented_objectsobject_keeper	alias_key)selfr   r   r   r   r   __init__   s
    zBaseRepresenter.__init__c             C   s*   | j |}| j| i | _g | _d | _d S )N)represent_data	serializer   r   r   )r   datanoder   r   r   	represent   s
    

zBaseRepresenter.representc             C   s   | j |rd | _n
t|| _| jd k	rN| j| jkrB| j| j }|S | jj| t|j}|d | jkr|| j|d  | |}npxn|D ] }|| j	kr| j	| | |}P qW d | j	kr| j	d  | |}n*d | jkr| jd  | |}nt
d t|}|S )Nr   )ignore_aliasesr   idr   r   appendtype__mro__yaml_representersyaml_multi_representers
ScalarNodestr)r   r   r   Z
data_types	data_typer   r   r   r       s*    







zBaseRepresenter.represent_datac             C   s$   d| j kr| jj | _|| j|< d S )Nr   )__dict__r   copy)clsr"   representerr   r   r   add_representer@   s    
zBaseRepresenter.add_representerc             C   s$   d| j kr| jj | _|| j|< d S )Nr   )r#   r   r$   )r%   r"   r&   r   r   r   add_multi_representerF   s    
z%BaseRepresenter.add_multi_representerc             C   s6   |d kr| j }t|||d}| jd k	r2|| j| j< |S )N)style)r   r    r   r   )r   tagvaluer)   r   r   r   r   represent_scalarL   s    
z BaseRepresenter.represent_scalarc       	      C   s   g }t |||d}| jd k	r(|| j| j< d}x6|D ].}| j|}t|toP|j sVd}|j| q2W |d kr| jd k	r| j|_	n||_	|S )N)
flow_styleTF)
SequenceNoder   r   r   
isinstancer    r)   r   r   r-   )	r   r*   sequencer-   r+   r   
best_styleitemZ	node_itemr   r   r   represent_sequenceT   s    




z"BaseRepresenter.represent_sequencec             C   s   g }t |||d}| jd k	r(|| j| j< d}t|drdt|j }yt|}W n tk
rb   Y nX x^|D ]V\}}| j|}	| j|}
t	|	t
o|	j sd}t	|
t
o|
j sd}|j|	|
f qjW |d kr| jd k	r| j|_n||_|S )N)r-   TitemsF)MappingNoder   r   hasattrlistr4   sorted	TypeErrorr   r/   r    r)   r   r   r-   )r   r*   mappingr-   r+   r   r1   item_key
item_valueZnode_keyZ
node_valuer   r   r   represent_mappingf   s0    





z!BaseRepresenter.represent_mappingc             C   s   dS )NFr   )r   r   r   r   r   r      s    zBaseRepresenter.ignore_aliases)NN)N)N)N)r   r	   r
   r   r   r   r   r   classmethodr'   r(   r,   r3   r=   r   r   r   r   r   r      s   
 


c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdZ	x e
e	e
e	e	 kr\e	e	9 Z	q>W 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S ) r   c             C   s,   |d f gkrdS t |tttttfr(dS d S )NT)r/   r!   bytesboolintfloat)r   r   r   r   r   r      s    zSafeRepresenter.ignore_aliasesc             C   s   | j ddS )Nztag:yaml.org,2002:nullZnull)r,   )r   r   r   r   r   represent_none   s    zSafeRepresenter.represent_nonec             C   s   | j d|S )Nztag:yaml.org,2002:str)r,   )r   r   r   r   r   represent_str   s    zSafeRepresenter.represent_strc             C   s<   t tdrtj|jd}ntj|jd}| jd|ddS )Nencodebytesasciiztag:yaml.org,2002:binary|)r)   )r6   base64rE   decodeencodestringr,   )r   r   r   r   r   represent_binary   s    
z SafeRepresenter.represent_binaryc             C   s   |r
d}nd}| j d|S )Ntruefalseztag:yaml.org,2002:bool)r,   )r   r   r+   r   r   r   represent_bool   s    zSafeRepresenter.represent_boolc             C   s   | j dt|S )Nztag:yaml.org,2002:int)r,   r!   )r   r   r   r   r   represent_int   s    zSafeRepresenter.represent_intgu <7~c             C   sv   ||ks|dkr|dkrd}nL|| j kr.d}n<|| j  kr@d}n*t|j }d|krjd|krj|jddd	}| jd
|S )Ng        g      ?z.nanz.infz-.inf.ez.0er   ztag:yaml.org,2002:float)	inf_valuereprlowerreplacer,   )r   r   r+   r   r   r   represent_float   s    
zSafeRepresenter.represent_floatc             C   s   | j d|S )Nztag:yaml.org,2002:seq)r3   )r   r   r   r   r   represent_list   s    zSafeRepresenter.represent_listc             C   s   | j d|S )Nztag:yaml.org,2002:map)r=   )r   r   r   r   r   represent_dict   s    zSafeRepresenter.represent_dictc             C   s&   i }x|D ]}d ||< q
W | j d|S )Nztag:yaml.org,2002:set)r=   )r   r   r+   keyr   r   r   represent_set   s    
zSafeRepresenter.represent_setc             C   s   |j  }| jd|S )Nztag:yaml.org,2002:timestamp)	isoformatr,   )r   r   r+   r   r   r   represent_date   s    zSafeRepresenter.represent_datec             C   s   |j d}| jd|S )N ztag:yaml.org,2002:timestamp)r[   r,   )r   r   r+   r   r   r   represent_datetime   s    
z"SafeRepresenter.represent_datetimeNc             C   s.   t |dr|j }n
|jj }| j|||dS )N__getstate__)r-   )r6   r_   r#   r$   r=   )r   r*   r   r%   r-   stater   r   r   represent_yaml_object   s    


z%SafeRepresenter.represent_yaml_objectc             C   s   t d| d S )Nzcannot represent an object: %s)r   )r   r   r   r   r   represent_undefined   s    z#SafeRepresenter.represent_undefined)N)r   r	   r
   r   rC   rD   rK   rN   rO   rR   rS   rV   rW   rX   rZ   r\   r^   ra   rb   r   r   r   r   r      s"   
c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )r   c             C   sd   |j dkrd|j }nB|jdkr,d|j  }n,|j dkrHd|j|j f }nd|j|j f }| jd|S )Ng        z%rz%rjr   z%r+%rjz%r%rjz tag:yaml.org,2002:python/complex)imagrealr,   )r   r   r   r   r   represent_complex  s    


zRepresenter.represent_complexc             C   s   | j d|S )Nztag:yaml.org,2002:python/tuple)r3   )r   r   r   r   r   represent_tuple  s    zRepresenter.represent_tuplec             C   s    d|j |jf }| jd| dS )Nz%s.%sztag:yaml.org,2002:python/name: )r	   r   r,   )r   r   namer   r   r   represent_name  s    zRepresenter.represent_namec             C   s   | j d|j dS )Nz tag:yaml.org,2002:python/module:rg   )r,   r   )r   r   r   r   r   represent_module   s    zRepresenter.represent_modulec             C   s  t |}|tjkr"tj| |}n6t|dr8|jd}n t|drL|j }ntd| t|d gd  d d }|\}}}}}t|}|d kri }|d k	rt|}|d k	rt|}|j	dkr|d }|dd  }d	}	d
}
nd}	d}
d|j
|j	f }| r.| r.| r.t|tr.|
r.| jd| |S | rb| rbt|trb| rb| j|	| |S i }|rt||d< |st|t r||d< |r||d< |r||d< | j|	| |S )N__reduce_ex__   
__reduce__zcannot represent object: %r   
__newobj__r   r   z$tag:yaml.org,2002:python/object/new:Tz&tag:yaml.org,2002:python/object/apply:Fz%s.%sz tag:yaml.org,2002:python/object:argsr`   	listitems	dictitems)r   copyregdispatch_tabler6   rk   rm   r   r7   dictr   r	   r/   r=   r3   )r   r   r%   reducefunctionrp   r`   rq   rr   r*   newobjZfunction_namer+   r   r   r   represent_object$  sT    




zRepresenter.represent_objectN)r   r	   r
   re   rf   ri   rj   ry   r   r   r   r   r     s
   )0__all__errornodesdatetimesysrs   typesrH   	YAMLErrorr   r   r   r'   r   rC   r!   rD   r?   rK   r@   rN   rA   rO   rB   rV   r7   rW   tupleru   rX   setrZ   dater\   r^   rb   r   complexre   rf   ri   FunctionTypeBuiltinFunctionType
ModuleTyperj   r(   objectry   r   r   r   r   <module>   s`   (wa
V