
    d.              	       R    d dl mZmZ  G d de      Z G d d edefi             Zy)    )LockcurrentThreadc                   4     e Zd ZdZi Z e       Z fdZ xZS )_SingletonPerThreadMetaClasszG A metaclass that creates a SingletonPerThread base class when called. c                    | j                   5  | j                  dt               j                         }|| j                  vr t        t        |   |i || j                  |<   | j                  |   cd d d        S # 1 sw Y   y xY w)N__)_lock__name__r   getName
_instancessuperr   __call__)clsargskwargsobj_name	__class__s       K/usr/lib/python3/dist-packages/azurelinuxagent/common/singletonperthread.pyr   z%_SingletonPerThreadMetaClass.__call__	   sr    YY 	,#&<<1H1H1JKHs~~-+01Ms+\^b+mfl+mx(>>(+		, 	, 	,s   A$A<<B)	r
   
__module____qualname____doc__r   r   r	   r   __classcell__)r   s   @r   r   r      s    QJFE, ,    r   c                       e Zd Zy)SingletonPerThreadN)r
   r   r    r   r   r   r      s     	r   r   SingleObjectPerThreadMetaClassN)	threadingr   r   typer   objectr   r   r   r   <module>r!      s0    )
,4 
,	56VY_Xacef 	r   