U
    ‰dv  ã                   @   sn   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
Z
dd„ Zdd	„ Zd
d„ ZG dd„ de
jƒZdS )é    )Únet_printer)ÚJob)Úops)ÚTaskÚfinal_outputÚWorkspaceTypeNc            	      C   s@  t ƒ . t d¡} t d¡}t d¡}t d¡}t d¡ð}t | ¡ t d¡g¡}t | ¡ ¡¾}t || ¡ g¡}t t |t d¡g¡¡}t ||g|g¡ W 5 Q R X | 	t |t d¡g¡¡}t ||g|g¡ W 5 Q R X | 
¡  t ||g|g¡ W 5 Q R X t | |g| ¡ W 5 Q R X W 5 Q R X W 5 Q R X d S )Nr   é
   éP   é2   )r   r   ÚConstÚloopZMulÚiterÚAddZIfZGEZElifZElse)	ÚtotalZtotal_largeZtotal_smallZ
total_tinyr   ÚouterÚinnerÚvalÚc© r   úB/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/net_printer_test.pyÚexample_loop   s     





r   c               
   C   sJ  t ƒ Æ t ¡  t d¡} W 5 Q R X t | | g¡}t ¡  t d¡}W 5 Q R X t ||g¡}t ¡  t || g¡}W 5 Q R X t || g¡}t || g|g¡ t || g¡}t|ƒ}t|ƒ}t|ƒ}	W 5 Q R X t dd^ t ¡  t d¡} W 5 Q R X t ¡  t d¡}
W 5 Q R X t | |
g| g¡ t d¡ W 5 Q R X |||	fS )Né   é   é   )Znum_instancesZble)	r   r   Z	task_initr   r   Z	task_exitr   Ztask_instance_initZLogInfo)ZoneZtwoZthreeÚaccumZseven_1ÚsixZseven_2Zo6Zo7_1Zo7_2Úlocalr   r   r   Úexample_task    s.    




r   c               
   C   s4   t ƒ $} | j tƒ  W 5 Q R X tƒ  W 5 Q R X | S )N)r   Z
init_groupr   r   )Újobr   r   r   Úexample_job=   s
    r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestNetPrinterc                 C   s   |   tt tƒ ¡ƒdk¡ d S )Nr   )Ú
assertTrueÚlenr   Ú	to_stringr   )Úselfr   r   r   Ú
test_printF   s    zTestNetPrinter.test_printc              
   C   sJ   t ƒ }|& tƒ  t ddg¡ W 5 Q R X W 5 Q R X tt t ƒ ¡ƒ d S )NZdistributed_ctx_init_aZdistributed_ctx_init_b)r   r   r   r   Úprintr   r#   ©r$   r   r   r   r   Útest_valid_jobI   s
    "zTestNetPrinter.test_valid_jobc              
   C   sl   t ƒ }|& tƒ  t ddg¡ W 5 Q R X W 5 Q R X |  t¡}t |¡ W 5 Q R X |  dt	|j
ƒ¡ d S )NÚaÚbzBlob undefined: a)r   r   r   r   ÚassertRaisesÚAssertionErrorr   ÚanalyzeÚassertEqualÚstrÚ	exception)r$   r   Úer   r   r   Útest_undefined_blobR   s    "z"TestNetPrinter.test_undefined_blobc              
   C   s¢   t ƒ }|n ttjd" t t d¡t d¡gd¡ W 5 Q R X ttjd" t t d¡t d¡gd¡ W 5 Q R X W 5 Q R X |  t¡ t	 
|¡ W 5 Q R X d S )N)Zworkspace_typer   r   Zout1r   r   )r   r   r   ÚGLOBALr   r   r   r+   r,   r   r-   r'   r   r   r   Útest_multiple_definition[   s    &0z'TestNetPrinter.test_multiple_definitionN)Ú__name__Ú
__module__Ú__qualname__r%   r(   r2   r4   r   r   r   r   r    E   s   		r    )Zcaffe2.pythonr   Zcaffe2.python.checkpointr   Zcaffe2.python.net_builderr   Zcaffe2.python.taskr   r   r   Zunittestr   r   r   ZTestCaser    r   r   r   r   Ú<module>   s   