U
    d£  ć                   @   s^   d dl Z d dlZe ”  e d”Ze ej” g Zdd Zdd Z	dd Z
d	d
 Zdd ZdS )é    NZModuleRegisterc                 C   s$   t  | ” t d t | ””” d S )Nz6ModuleRegister get modules from  ModuleMap content: {})ŚMODULE_MAPSŚappendŚlogŚinfoŚformatŚinspectŚ	getsource)Z
module_map© r	   śL/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/contrib/playground/ModuleRegister.pyŚregisterModuleMap   s    
’r   c           	      C   s  t  d | j”” t  d t| ”” t  d t| ”” t|d d }t  d t|”” |j| _|j| _|j	| _	|j
| _
t|d d }t  d	 |d d |j”” |j| _|j| _|j| _t|d d
 }|j| _t|d d }|d k	rų|jnd | _t|d d }|d k	r|jnd | _t|d d }|d k	rD|jnd | _t|d d }t  d |j”” |j| _|j| _| S )Nz)ModuleRegister, myTrainerClass name is {}z)ModuleRegister, myTrainerClass type is {}z(ModuleRegister, myTrainerClass dir is {}ŚmodelZmodel_name_pyz1ModuleRegister, myInitializeModelModule dir is {}ŚinputZinput_name_pyz*ModuleRegister, myInputModule {} dir is {}Zforward_pass_pyZparameter_update_pyZoptimizer_pyZrendezvous_pyŚoutputZgen_output_pyz$ModuleRegister, myOutputModule is {})r   r   r   Ś__name__ŚtypeŚdirŚ	getModuleZ
init_modelZrun_training_netZfun_per_iter_b4RunNetZfun_per_epoch_b4RunNetZget_input_datasetZget_model_input_funZgen_input_builder_funZgen_forward_pass_builder_funZgen_param_update_builder_funZgen_optimizer_funZgen_rendezvous_ctxZfun_conclude_operatorZassembleAllOutputs)	ŚmyTrainerClassŚoptsZmyInitializeModelModuleZmyInputModuleZmyForwardPassModuleZmyParamUpdateModuleZmyOptimizerModuleZmyRendezvousModuleZmyOutputModuler	   r	   r
   ŚconstructTrainerClass   sh    ’’’’’’
 ’’’ž’
ž’
ž’r   c                 C   sl   t  d t | ””” t|d d }|d k	rRt |tj”D ]\}}t| || q<t  d t | ””” | S )Nz/B4 additional override myTrainerClass source {}r   Zadditional_override_pyz2Aft additional override myTrainerClass's source {})	r   r   r   r   r   r   Ś
getmembersŚ
isfunctionŚsetattr)r   r   ZmyAdditionalOverrideŚfuncNameZ	funcValuer	   r	   r
   ŚoverrideAdditionalMethodsQ   s    ’’’r   c              
   C   s   t  d | tt”” d }tD ]p}t  d t|”” t |”D ]L\}}t  d t|”” || kr@t  d | t |””” |}|    S q@qd S )Nz)get module {} from MODULE_MAPS content {}z&iterate through MODULE_MAPS content {}z%iterate through MODULE_MAPS a name {}z#AnyExp get module {} with source:{})r   r   r   Śstrr   r   r   r   )Ś
moduleNameZmyModuleŚ	ModuleMapŚnameŚobjr	   r	   r
   r   _   s     ’ ’r   c                 C   s^   d }t D ]P}t |”D ]@\}}|| krt d | |t |””” t||}|    S qqd S )Nz7ModuleRegistry from module {} get class {} of source:{})r   r   r   r   r   r   r   Śgetattr)r   Z	classNameZmyClassr   r   r   r	   r	   r
   ŚgetClassFromModuleo   s      ’
r!   )r   ŚloggingŚbasicConfigŚ	getLoggerr   ŚsetLevelŚDEBUGr   r   r   r   r   r!   r	   r	   r	   r
   Ś<module>   s   
<