a
    ==icì  ã                   @   s(   d Z G dd„ deƒZG dd„ deƒZdS )ÚDEFAULTc                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚModifierContextzI
    provide context to allow param_info to have different modifiers
    c                 C   s   i | _ g | _d S ©N)Ú
_modifiersÚ_modifiers_list©Úself© r   úo/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/modifier_context.pyÚ__init__   s    zModifierContext.__init__c                 C   s"   i | _ | jD ]}| j  |¡ qd S r   )r   r   Úupdate)r   Úmr   r   r	   Ú_rebuild_modifiers   s    
z"ModifierContext._rebuild_modifiersc                 C   s
   || j v S r   )r   ©r   Únamer   r   r	   Ú_has_modifier   s    zModifierContext._has_modifierc                 C   s   | j  |¡S r   )r   Úgetr   r   r   r	   Ú_get_modifier   s    zModifierContext._get_modifierc                 C   s   | j  |¡ | j |¡ d S r   )r   Úappendr   r   )r   Ú	modifiersr   r   r	   Úpush_modifiers    s    zModifierContext.push_modifiersc                 C   s(   t | jƒdksJ ‚| j ¡  |  ¡  d S )Né    )Úlenr   Úpopr   r   r   r   r	   Úpop_modifiers%   s    
zModifierContext.pop_modifiersN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   r   r   r   r   r   r   r	   r      s   r   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚUseModifierBasea3  
    context class to allow setting the current context.
    Example usage with layer:
        modifiers = {'modifier1': modifier1, 'modifier2': modifier2}
        with Modifiers(modifiers):
            modifier = ModifierContext.current().get_modifier('modifier1')
            layer(modifier=modifier)
    c                 C   s    t |tƒr|| _n
t|i| _d S r   )Ú
isinstanceÚdictr   ÚDEFAULT_MODIFIER)r   Zmodifier_or_dictr   r   r	   r
   5   s    
zUseModifierBase.__init__c                 C   s   t ‚d S r   )ÚNotImplementedErrorr   r   r   r	   Ú_context_class;   s    zUseModifierBase._context_classc                 C   s   |   ¡  ¡  | j¡ | S r   )r#   Úcurrentr   r   r   r   r   r	   Ú	__enter__>   s    zUseModifierBase.__enter__c                 C   s   |   ¡  ¡  ¡  d S r   )r#   r$   r   )r   ÚtypeÚvalueÚ	tracebackr   r   r	   Ú__exit__B   s    zUseModifierBase.__exit__N)r   r   r   r   r
   r#   r%   r)   r   r   r   r	   r   +   s
   	r   N)r!   Úobjectr   r   r   r   r   r	   Ú<module>	   s   