a
    If                     @   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.9/idlelib/delegator.py__init__   s    zDelegator.__init__c                 C   s(   t | j|}t| || | j| |S r   )getattrr   setattrr   add)r   nameattrr   r   r	   __getattr__	   s    zDelegator.__getattr__c              	   C   s<   | j D ]&}zt| | W q ty*   Y q0 q| 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	   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   