a
    «Á‚b;  ã                   @   s,   d dl Z G dd„ deƒZG dd„ deƒZdS )é    Nc                       s,   e Zd ZdZ‡ fdd„Z‡ fdd„Z‡  ZS )Ú	Singletonz›
    Singleton metaclass
    Based on Python Cookbook 3rd Edition Recipe 9.13
    Only one instance of a class can exist. Does not work with __slots__
    c                    s    t t| ƒj|i |¤Ž d | _d S ©N)Úsuperr   Ú__init__Ú_Singleton__instance©ÚselfÚargsÚkw©Ú	__class__© úi/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/openpyxl/compat/singleton.pyr      s    zSingleton.__init__c                    s(   | j d u r"tt| ƒj|i |¤Ž| _ | j S r   )r   r   r   Ú__call__r   r   r   r   r      s    
zSingleton.__call__©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__classcell__r   r   r   r   r      s   r   c                       s,   e Zd ZdZ‡ fdd„Z‡ fdd„Z‡  ZS )ÚCachedz™
    Caching metaclass
    Child classes will only create new instances of themselves if
    one doesn't already exist. Does not work with __slots__
    c                    s$   t t| ƒj|i |¤Ž t ¡ | _d S r   )r   r   r   ÚweakrefÚWeakValueDictionaryÚ_Cached__cacher   r   r   r   r      s    zCached.__init__c                    s2   || j v r| j | S tt| ƒj|Ž }|| j |< |S r   )r   r   r   r   )r   r	   Úobjr   r   r   r   "   s
    


zCached.__call__r   r   r   r   r   r      s   r   )r   Útyper   r   r   r   r   r   Ú<module>   s   