3
d                 @   s   d dl mZmZ d dlZd dlZd dlZd dlmZ edZej	d  dkZ
G dd deZG dd	 d	eZG d
d deZG dd deZdd ZG dd deZdddZdS )    )print_functionunicode_literalsN)Pathdata   c               @   sF   e Zd ZdZdd ZdddddZed	d
 Zdd Ze	dd Z
dS )YAMLDataz!YAMLc             C   s
   || _ d S )N)_s)selfs r   W/var/www/html/virt/lib64/python3.6/site-packages/srsly/tests/ruamel_yaml/test_z_data.py__init__   s    zYAMLData.__init__ 	z---z...)ZSPCZTABz---z...c             C   sn   t | dr| jS d| jkstd| jks,t| j| _x2tjj D ]$\}}d| d }| jj||| _q@W | jS )N_pz 
z	
<>)hasattrr   r   AssertionErrorr   specialitemsreplace)r	   kvr   r   r   value   s    
zYAMLData.valuec             C   sL   d|kst d|kst x.tjj D ] \}}d| d }|j||}q$W |S )Nz 
z	
r   r   )r   r   r   r   r   )r	   r
   r   r   r   r   r   test_rewrite+   s    zYAMLData.test_rewritec             C   s.   ddl m} t||r$| |j|S | |jS )Nr   )MappingNode)Zsrsly.ruamel_yaml.nodesr   
isinstanceZconstruct_mappingr   )clsconstructornoder   r   r   r   	from_yaml3   s    
zYAMLData.from_yamlN)__name__
__module____qualname__yaml_tagr   r   propertyr   r   classmethodr!   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdS )Pythonz!PythonN)r"   r#   r$   r%   r   r   r   r   r(   <   s   r(   c               @   s   e Zd ZdZdS )Outputz!OutputN)r"   r#   r$   r%   r   r   r   r   r)   @   s   r)   c               @   s   e Zd ZdZedd ZdS )Assertz!Assertc             C   sL   ddl m} t| dr| jS t| j|r>| j| jd | jd< | j| _| jS )Nr   )Mapping_palines)srsly.ruamel_yaml.compatr+   r   r,   r   r   r   )r	   r+   r   r   r   r   G   s    
zAssert.valueN)r"   r#   r$   r%   r&   r   r   r   r   r   r*   D   s   r*   c             C   sd   g }t tjd}g }x4|D ],}|j}|jdr2q|j| |j|g qW | jdg||dd d S )Nz	**/*.yamlz.#yamlclass)idsZscope)sorted	base_pathglobstem
startswithappendZparametrize)ZmetafuncZ	test_yamlpathsZidlistpathr5   r   r   r   pytest_generate_testsS   s    


r:   c               @   sL   e Zd ZdddZdd ZdddZddd	Zdd
dZdd Zdd Z	dS )TestYAMLDataNc             C   s&   ddl m} | }d|_|r"||_|S )Nr   )YAMLT)srsly.ruamel_yamlr<   Zpreserve_quotesversion)r	   yaml_versionr<   yr   r   r   r/   a   s    zTestYAMLData.yamlc             C   sN   ddl m} |ddd}|jt |jt |jt |jt t|j|S )Nr   )r<   safeT)typZpure)	r=   r<   Zregister_classr   r(   r)   r*   listZload_all)r	   r9   r<   Ztyamlr   r   r   docsj   s    



zTestYAMLData.docsc             C   s   | j |d}|j|}||fS )N)r?   )r/   load)r	   r   r?   r/   r   r   r   r   	yaml_loadt   s    
zTestYAMLData.yaml_loadc       
      C   sv   ddl m} | j|j|d\}}| }|j|| |d kr@|jn|j}|j }	trf|	jd}	td|	 |	|ksrt	d S )Nr   )StringIO)r?   zutf-8r   )
r.   rG   rF   r   dumpgetvaluePY2decodeprintr   )
r	   inputoutputr?   rG   r/   r   bufexpectedr   r   r   r   
round_tripy   s    

zTestYAMLData.round_tripc       
      C   s   ddl m} | j|j|dd }td|jt|j t|j|rt|jd }|jd j }x`|D ]*}x$|D ]}	d|	 }	t|	 t	|	 qlW qbW n,x*|jj D ]}	d|	 }	t|	 t	|	 qW d S )	Nr   )r+   )r?      zconfirm.valueranger-   zassert )
r.   r+   rF   r   rL   typer   rS   
splitlinesexec)
r	   rM   confirmr?   r+   drr-   idxliner   r   r   load_assert   s    

zTestYAMLData.load_assertc             C   s*   ddl m} ||j||jddks&td S )NrR   )save_and_run)base_dirrN   r   )Z	roundtripr]   r   r   )r	   pythonr   tmpdirr]   r   r   r   
run_python   s    zTestYAMLData.run_pythonc             C   s   ddl m} d}d }d }| j|}t|d |rr|d }|jd}|jd}d|krjt|d sjtjd |d7 }d  }	 }
 }}xz||d  D ]j}t|tr|}
qt|t	r|}qt|t
r|}|d krd}qt|tr|}	qtd	t|t| t qW |d krN|	d k	r"|
d k	r"d
}n,|	d k	r<|d k	r<d}n|	d k	sJtd
}td| |	d k	rrtd|	jdd td|
d k	r|
jn|
 |d
kr| j|	|
|d nT|dkr| j||
d k	r|
n|	| n,|dkr| j|	||d ntd| t d S )Nr   )r+   rT   r?   r_   zunsupported versionrR   Z
python_runzno handler for type:rtr\   ztype:zdata: )endzoutput:)r?   z
run type unknown:)r.   r+   rD   r   getcheck_python_versionpytestskipr)   r*   r(   r   rL   rT   reprr   r   rQ   ra   r\   )r	   r/   r`   r+   rZ   rB   r?   rD   rX   r   rN   rW   r_   docr   r   r   test_yaml_data   s\    















zTestYAMLData.test_yaml_data)N)N)NN)N)
r"   r#   r$   r/   rD   rF   rQ   r\   ra   rk   r   r   r   r   r;   `   s   
	



r;   c             C   s   |dkrt tjdd }t| t s*| g} x~| D ]v}d}t|trJt|}|jdrdd}|dd
 }dd |jd	D }|dt| }|r||krdS q0||kr0dS q0W dS )z
    version indication, return True if version matches.
    match should be something like 3.6+, or [2.7, 3.3] etc. Floats
    are converted to strings. Single values are made into lists.
    N   F+TrR   c             S   s   g | ]}t |qS r   )int).0xr   r   r   
<listcomp>   s    z(check_python_version.<locals>.<listcomp>.)	rC   sysversion_infor   floatstrendswithsplitlen)matchcurrentmZminimalZcurrent_lenr   r   r   rf      s&    



rf   )N)
__future__r   r   rt   rg   warningspathlibr   r3   ru   rJ   objectr   r(   r)   r*   r:   r;   rf   r   r   r   r   <module>   s   -w