o
    ×Ügÿ  ã                   @   s,   d dl Z G dd„ deƒZG dd„ deƒZdS )é    Nc                       ó,   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 ƒ j|i |¤Ž d | _d S ©N)ÚsuperÚ__init__Ú_Singleton__instance©ÚselfÚargsÚkw©Ú	__class__© úS/var/www/html/api-tag/env/lib/python3.10/site-packages/openpyxl/compat/singleton.pyr      s   
zSingleton.__init__c                    s$   | j d u rtƒ j|i |¤Ž| _ | j S 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      ó    r   c                       r   )Ú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 ƒ j|i |¤Ž t ¡ | _d S r   )r   r   ÚweakrefÚWeakValueDictionaryÚ_Cached__cacher   r   r   r   r      s   zCached.__init__c                    s.   || j v r
| j | S tƒ j|Ž }|| j |< |S r   )r   r   r   )r	   r
   Úobjr   r   r   r   "   s
   


zCached.__call__r   r   r   r   r   r      r   r   )r   Útyper   r   r   r   r   r   Ú<module>   s   