o
    [i                     @   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__ Q/home/air/sos/back/venv/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   