o
    
h	                     @   sT   d dl mZ d dlmZ d dlmZ G dd dZG dd deZ	G dd	 d	Z
d
S )    )Local)settings)cached_propertyc                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )ConnectionProxyz5Proxy for accessing a connection object's attributes.c                 C   s   || j d< || j d< d S )N_connections_alias)__dict__)selfconnectionsalias r   Y/var/www/html/optinet_system/venv/lib/python3.10/site-packages/django/utils/connection.py__init__
   s   
zConnectionProxy.__init__c                 C      t | j| j |S N)getattrr   r   )r	   itemr   r   r   __getattr__      zConnectionProxy.__getattr__c                 C   s   t | j| j ||S r   )setattrr   r   )r	   namevaluer   r   r   __setattr__   s   zConnectionProxy.__setattr__c                 C   r   r   )delattrr   r   )r	   r   r   r   r   __delattr__   r   zConnectionProxy.__delattr__c                 C   s   || j | j v S r   r   r   r	   keyr   r   r   __contains__      zConnectionProxy.__contains__c                 C   s   | j | j |kS r   r   )r	   otherr   r   r   __eq__   r   zConnectionProxy.__eq__N)
__name__
__module____qualname____doc__r   r   r   r   r   r!   r   r   r   r   r      s    r   c                   @   s   e Zd ZdS )ConnectionDoesNotExistN)r"   r#   r$   r   r   r   r   r&      s    r&   c                   @   sp   e Zd ZdZeZdZdddZedd Z	dd Z
d	d
 Zdd Zdd Zdd Zdd ZdddZdd ZdS )BaseConnectionHandlerNFc                 C   s   || _ t| j| _d S r   )	_settingsr   thread_criticalr   r	   r   r   r   r   r   '   s   zBaseConnectionHandler.__init__c                 C   s   |  | j| _| jS r   )configure_settingsr(   r	   r   r   r   r   +   s   zBaseConnectionHandler.settingsc                 C   s   |d u r
t t| j}|S r   )r   django_settingssettings_namer*   r   r   r   r+   0   s   z(BaseConnectionHandler.configure_settingsc                 C   s   t d)Nz.Subclasses must implement create_connection().)NotImplementedError)r	   r   r   r   r   create_connection5   s   z'BaseConnectionHandler.create_connectionc                 C   sZ   zt | j|W S  ty   || jvr| d| dY nw | |}t| j|| |S )NzThe connection 'z' doesn't exist.)r   r   AttributeErrorr   exception_classr0   r   )r	   r   connr   r   r   __getitem__8   s   

z!BaseConnectionHandler.__getitem__c                 C   s   t | j|| d S r   )r   r   )r	   r   r   r   r   r   __setitem__B   r   z!BaseConnectionHandler.__setitem__c                 C   s   t | j| d S r   )r   r   r   r   r   r   __delitem__E   r   z!BaseConnectionHandler.__delitem__c                 C   s
   t | jS r   )iterr   r,   r   r   r   __iter__H   s   
zBaseConnectionHandler.__iter__c                    s    fddD S )Nc                    s$   g | ]} rt j|r| qS r   )hasattrr   ).0r   initialized_onlyr	   r   r   
<listcomp>L   s    
z-BaseConnectionHandler.all.<locals>.<listcomp>r   )r	   r<   r   r;   r   allK   s   zBaseConnectionHandler.allc                 C   s   | j ddD ]}|  qd S )NT)r<   )r>   close)r	   r3   r   r   r   	close_allS   s   
zBaseConnectionHandler.close_allr   )F)r"   r#   r$   r.   r&   r2   r)   r   r   r   r+   r0   r4   r5   r6   r8   r>   r@   r   r   r   r   r'   "   s    



r'   N)asgiref.localr   django.confr   r-   django.utils.functionalr   r   	Exceptionr&   r'   r   r   r   r   <module>   s    