
    ceB	                        U d Z ddlmZ ddgZddlZddlZ ej        d          Zg Zde	d<   ddZ
 G d dej        e         ej                  Z G d dee         ej        e                   ZdS )z,A simple base to create singleton instances.    )annotations	SingletonSingleInstanceOfNTz$typing.Final[typing.List[Singleton]]__singletons__returnNonec                 B    t           D ]} |                                  dS )z,Reset all singletons in application at once.N)r   reset)	singletons    Clib/python3.11/site-packages/anaconda_navigator/utils/singletons.py	reset_allr      s0     $  	     c                  h    e Zd ZdZdZddZedd            ZddZe	j
        dd	            Zdd
ZdS )r   z
    Container for a singleton instance of some type.

    Supports lazy initialization as soon as the instance might be required.
    )
__instancer   r	   c                H    d| _         t                              |            dS )z,Initialize new :class:`~Singleton` instance.N)_Singleton__instancer   appendselfs    r   __init__zSingleton.__init__#   s#    .2d#####r   r   c                P    | j         |                                 | _         | j         S )zSingleton instance.)r   _preparer   s    r   instancezSingleton.instance(   s#     ?""mmooDOr   c                N    | j         dS |                                  d| _         dS )z
        Reset singleton value.

        This will trigger repeated initialization of an instance on next :attr:`~Singleton.instance` call.
        N)r   _releaser   s    r   r   zSingleton.reset/   s)     ?"Fr   c                    dS )Initialize singleton instance.N r   s    r   r   zSingleton._prepare;         r   c                    dS )zCDestroy singleton instance when :meth:`~Singleton.reset` is called.Nr   r   s    r   r   zSingleton._release?   r    r   Nr   r	   r   r   )__name__
__module____qualname____doc__	__slots__r   propertyr   r   abcabstractmethodr   r   r   r   r   r   r      s           I$ $ $ $
    X
 
 
 
 	- - - -R R R R R Rr   )	metaclassc                  0     e Zd ZdZdZd fd
ZddZ xZS )r   zUShortcut for singletons constructed from external functions or instance constructors.)__constructor__args__kwargs_constructortyping.Callable[..., T]args
typing.Anykwargsr   r	   c                r    t                                                       || _        || _        || _        dS )z3Initialize new :class:`~SingleInstanceOf` instance.N)superr   _SingleInstanceOf__args_SingleInstanceOf__constructor_SingleInstanceOf__kwargs)r   r1   r3   r5   	__class__s       r   r   zSingleInstanceOf.__init__H   s3    CGDPGMr   r   c                0     | j         | j        i | j        S )r   )r9   r8   r:   r   s    r   r   zSingleInstanceOf._prepareO   s    !t!4;@$-@@@r   )r1   r2   r3   r4   r5   r4   r   r	   r#   )r$   r%   r&   r'   r(   r   r   __classcell__)r;   s   @r   r   r   C   sj        __7IN N N N N NA A A A A A A Ar   r"   )r'   
__future__r   __all__r*   typingTypeVarr   r   __annotations__r   GenericABCMetar   r   r   r   r   <module>rE      s   3 2 2 " " " " " "*
+ 



  FN3 8: 9 9 9 9   &R &R &R &R &Rq!S[ &R &R &R &RRA A A A Ay|V^A%6 A A A A Ar   