U
    {h                     @   st   d dl mZ d dlmZmZmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ G dd deZd	S )
   )ScopeTrackingTransform)StatListNodeSingleAssignmentNodeCFuncDefNodeDefNode)DictNodeDictItemNodeNameNodeUnicodeNode)py_object_type)EncodedString)Symtabc                   @   s>   e Zd ZdddddddgZdd	 Zd
d Zdd Zdd ZdS )AutoTestDictTransformZ	__cinit__Z__dealloc__Z__richcmp____nonzero____bool____len____contains__c                 C   s   |j r
|S d| _|| _| jd s$|S | jd | _| jp>| jd | _t|jtsRt	d|j
jkrb|S |j}g | _|j| _|j
jtdt|dd}t|t|td|dt|| jd	d
}| | |jj| |S )NmoduleZautotestdictzautotestdict.allzautotestdict.cdefZ__test__public)Z
visibility)nameentry)Zkey_value_pairs)lhsrhs)Zis_pxd
scope_type
scope_nodeZcurrent_directivesall_docstringscdef_docstrings
isinstancebodyr   AssertionErrorscopeentriesposteststestsposZdeclare_varr   r   r   r	   r   Zvisitchildrenstatsappend)selfnoder"   Ztest_dict_entryZcreate_test_dict_assignment r)   J/tmp/pip-unpacked-wheel-fhl22ezh/Cython/Compiler/AnalysedTreeTransforms.pyvisit_ModuleNode   s8    


z&AutoTestDictTransform.visit_ModuleNodec                 C   sR   | j }t| d|d dd}t||d}t||d}| jt|||d d S )Nz (line r   d))value)keyr.   )r$   r   r
   r#   r&   r   )r'   Ztestpospathdoctestr"   Zkeystrr/   r.   r)   r)   r*   add_test2   s
    zAutoTestDictTransform.add_testc                 C   s   |S )Nr)   )r'   r(   r)   r)   r*   visit_ExprNode9   s    z$AutoTestDictTransform.visit_ExprNodec                 C   s8  |j rt|tr|jr|S | js4t|tr4|js4|S | jsHd|j krH|S | j}| j	dkrb|j
j}n| j	dkrt|tr|jd k	r|jj}q|j
j}n|j}| j	dkr|| jkr|S | j	dkr| jj}n| jj}t|j
jtjr|j
jj}d||j
jj|j
jf }nd||j
jf }n
ds"t| |j||j  |S )	Nz>>>r   )pyclasscclassr5   r4   z%s.%s.%sz%s.%sF)docr   r   Zfused_py_funcr   r   Zpy_funcr   r$   r   r   r   excludelistr   
class_namer    r   ZPropertyScoper   r2   r"   )r'   r(   r"   r0   r   r8   Zproperty_method_namer)   r)   r*   visit_FuncDefNode>   s<    









z'AutoTestDictTransform.visit_FuncDefNodeN)__name__
__module____qualname__r7   r+   r2   r3   r9   r)   r)   r)   r*   r      s     #r   N)ZVisitorr   ZNodesr   r   r   r   Z	ExprNodesr   r   r	   r
   Z
PyrexTypesr   ZStringEncodingr    r   r   r)   r)   r)   r*   <module>   s   