U
    ‰dõ  ã                   @   sD   d dl mZ d dlmZmZ G dd„ deejƒZG dd„ deƒZdS )é    )Úcontext)ÚModifierContextÚUseModifierBasec                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚRegularizerContextzL
    provide context to allow param_info to have different regularizers
    c                 C   s
   |   |¡S ©N)Z_has_modifier©ÚselfÚname© r
   úE/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/regularizer_context.pyÚhas_regularizer   s    z"RegularizerContext.has_regularizerc                 C   s"   |   |¡std |¡ƒ‚|  |¡S )Nz{} regularizer is not provided!)r   ÚAssertionErrorÚformatZ_get_modifierr   r
   r
   r   Úget_regularizer   s    ÿz"RegularizerContext.get_regularizerN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r
   r
   r
   r   r      s   r   c                   @   s   e Zd ZdZdd„ ZdS )ÚUseRegularizera  
    context class to allow setting the current context.
    Example usage with layer:
        regularizers = {'reg1': reg1, 'reg2': reg2}
        with UseRegularizer(regularizers):
            reg = RegularizerContext.current().get_regularizer('reg1')
            layer(reg=reg)
    c                 C   s   t S r   )r   )r   r
   r
   r   Ú_context_class$   s    zUseRegularizer._context_classN)r   r   r   r   r   r
   r
   r
   r   r      s   r   N)Zcaffe2.pythonr   Zcaffe2.python.modifier_contextr   r   ZDefaultManagedr   r   r
   r
   r
   r   Ú<module>   s   