B
    \                 @   s   d dl mZ 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 )    )absolute_import   )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__Z__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__Zpublic)Z
visibility)nameentry)Zkey_value_pairs)ZlhsZrhs)Zis_pxd
scope_type
scope_nodeZcurrent_directivesall_docstringscdef_docstrings
isinstanceZbodyr   AssertionErrorscopeentriesposteststestsposZdeclare_varr   r   r   r   r	   ZvisitchildrenZstatsappend)selfnoder   Ztest_dict_entryZcreate_test_dict_assignment r%   Elib/python3.7/site-packages/Cython/Compiler/AnalysedTreeTransforms.pyvisit_ModuleNode   s2    


z&AutoTestDictTransform.visit_ModuleNodec             C   sL   | j }d||d f }t|t|d}t||d}| jt|||d d S )Nz%s (line %d)r   )value)keyr(   )r!   r   r   r    r"   r
   )r#   ZtestpospathZdoctestr   Zkeystrr)   r(   r%   r%   r&   add_test4   s
    zAutoTestDictTransform.add_testc             C   s   |S )Nr%   )r#   r$   r%   r%   r&   visit_ExprNode;   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cclassr.   r-   z%s.%s.%sz%s.%sF)docr   r   Zfused_py_funcr   r   Zpy_funcr   r!   r   r   r   	blacklistr   
class_namer   r   ZPropertyScoper   r+   r   )r#   r$   r   r*   r   r1   Zproperty_method_namer%   r%   r&   visit_FuncDefNode@   s:    









z'AutoTestDictTransform.visit_FuncDefNodeN)__name__
__module____qualname__r0   r'   r+   r,   r2   r%   r%   r%   r&   r   
   s   #r   N)Z
__future__r   ZVisitorr   ZNodesr   r   r   r   Z	ExprNodesr	   r
   r   r   Z
PyrexTypesr   ZStringEncodingr    r   r   r%   r%   r%   r&   <module>   s   