o
    
i                     @   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/home/ubuntu/.local/lib/python3.10/site-packages/srsly/tests/ruamel_yaml/test_z_data.py__init__   s   
zYAMLData.__init__ 	---...)SPCTABr   r   c                 C   sj   t | dr| jS d| jvsJ d| jvsJ | j| _tj D ]\}}d| d }| j||| _q| jS )N_p 
	
<>)hasattrr   r	   r   specialitemsreplace)r
   kvr   r   r   value   s   
zYAMLData.valuec                 C   sH   d|vsJ d|vsJ t j D ]\}}d| d }|||}q|S )Nr   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| ||S | |jS )Nr   )MappingNode)srsly.ruamel_yaml.nodesr"   
isinstance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                   @      e Zd ZdZdS )Pythonz!PythonNr*   r+   r,   r-   r   r   r   r   r1   <       r1   c                   @   r0   )Outputz!OutputNr2   r   r   r   r   r4   @   r3   r4   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d | jd< | j| _| jS )Nr   Mapping_palines)srsly.ruamel_yaml.compatr7   r   r8   r$   r	   r!   )r
   r7   r   r   r   r    G   s   
zAssert.valueN)r*   r+   r,   r-   r.   r    r   r   r   r   r5   D   s    r5   c                 C   s`   g }t td}g }|D ]}|j}|drq|| ||g q| jdg||dd d S )Nz	**/*.yamlz.#yamlclass)idsscope)sorted	base_pathglobstem
startswithappendparametrize)metafunc	test_yamlpathsidlistpathrB   r   r   r   pytest_generate_testsS   s   

rK   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_yamlrN   preserve_quotesversion)r
   yaml_versionrN   yr   r   r   r;   a   s   zTestYAMLData.yamlc                 C   sN   ddl m} |ddd}|t |t |t |t t||S )Nr   rM   safeT)typpure)	rO   rN   register_classr   r1   r4   r5   listload_all)r
   rJ   rN   tyamlr   r   r   docsj   s   



zTestYAMLData.docsc                 C   s   | j |d}||}||fS )NrR   )r;   load)r
   r    rR   r;   r   r   r   r   	yaml_loadt   s   
zTestYAMLData.yaml_loadc           
      C   sv   ddl m} | j|j|d\}}| }||| |d u r |jn|j}| }	tr3|	d}	td|	 |	|ks9J d S )Nr   )StringIOr\   zutf-8r    )	r:   r_   r^   r    dumpgetvaluePY2decodeprint)
r
   inputoutputrR   r_   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|rFt|jd }|jd  }|D ]}|D ]}	d|	 }	t|	 t	|	 q4q0d S |j D ]}	d|	 }	t|	 t	|	 qKd S )	Nr   r6   r\      zconfirm.valueranger9   zassert )
r:   r7   r^   r    rd   typer$   rk   
splitlinesexec)
r
   re   confirmrR   r7   drr9   idxliner   r   r   load_assert   s$   

zTestYAMLData.load_assertc                 C   s*   ddl m} ||j||jddksJ d S )Nrj   )save_and_run)base_dirrf   r   )	roundtripru   r    )r
   pythonr   tmpdirru   r   r   r   
run_python   s   zTestYAMLData.run_pythonc                 C   s  ddl m} d}d }d }| |}t|d |r9|d }|d}|d}d|v r5t|d s5td |d7 }d  }	 }
 }}||d  D ]4}t|trQ|}
qGt|t	rY|}qGt|t
rg|}|d u rfd}qGt|tro|}	qGtd	t|t| t |d u r|	d ur|
d urd
}n|	d ur|d urd}n|	d usJ d
}td| |	d urtd|	jdd td|
d ur|
jn|
 |d
kr| j|	|
|d d S |dkr| ||
d ur|
n|	| d S |dkr| j|	||d d S td| t )Nr   r6   rl   rR   rx   zunsupported versionrj   
python_runzno handler for type:rtrt   ztype:zdata: )endzoutput:r\   z
run type unknown:)r:   r7   r[   r$   getcheck_python_versionpytestskipr4   r5   r1   r   rd   rl   reprAssertionErrorr    ri   rz   rt   )r
   r;   ry   r7   rr   rU   rR   r[   rp   r   rf   ro   rx   docr   r   r   test_yaml_data   s^   









zTestYAMLData.test_yaml_datar   )NN)
r*   r+   r,   r;   r[   r^   ri   rt   rz   r   r   r   r   r   rL   `   s    
	



rL   c                 C   s   |du rt tjdd }t| t s| g} | D ]=}d}t|tr$t|}|dr1d}|dd }dd |d	D }|dt| }|rM||krL dS q||krT dS q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+Tc                 S   s   g | ]}t |qS r   )int).0xr   r   r   
<listcomp>   s    z(check_python_version.<locals>.<listcomp>.)	rX   sysversion_infor$   floatstrendswithsplitlen)matchcurrentmminimalcurrent_lenr   r   r   r      s*   


r   r   )
__future__r   r   r   r   warningspathlibr   r@   r   rb   objectr   r1   r4   r5   rK   rL   r   r   r   r   r   <module>   s   -w