B
     S]                 @   s2   G d d dZ edkr.ddlmZ eddd dS )	c               @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )	DelegatorNc             C   s   || _ t | _d S )N)delegateset_Delegator__cache)selfr    r   "lib/python3.7/idlelib/delegator.py__init__   s    zDelegator.__init__c             C   s(   t | j|}t| || | j| |S )N)getattrr   setattrr   add)r   nameattrr   r   r   __getattr__	   s    zDelegator.__getattr__c          	   C   sB   x2| j D ](}yt| | W q tk
r.   Y qX qW | j   dS )z;Removes added attributes while leaving original attributes.N)r   delattrAttributeErrorclear)r   keyr   r   r   
resetcache   s    
zDelegator.resetcachec             C   s   |    || _dS )z%Reset attributes and change delegate.N)r   r   )r   r   r   r   r   setdelegate   s    zDelegator.setdelegate)N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r      s   
r   __main__    )mainz idlelib.idle_test.test_delegator   )	verbosityN)r   r   Zunittestr   r   r   r   r   <module>   s   