
    +h                     ,   d Z ddlZddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! ddlm"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddlm0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH 	 dZIdZJdZKdZLd	ZMdZN	 dZOdZPdZQd	ZRdZSd
ZTeQZU	 dZVdZWdZXd	ZY	 dZZdZ[dZ\d	Z]dZ^d Z_ G d d      Z` G d d      ZaddZb ej                  d       ej                  d      fdZdddlemfZfmgZg 	  ef       \  ZhZi eg       \  ZjZk[f[gddlmmnZn [n eo e2j                               D ]:  \  ZqZreqj                  dd      j                  dd      j                         Zqere2eq<   < [q[ry# el$ r Y gw xY w)a  psycopg extensions to the DBAPI-2.0

This module holds all the extensions to the DBAPI-2.0 provided by psycopg.

- `connection` -- the new-type inheritable connection class
- `cursor` -- the new-type inheritable cursor class
- `lobject` -- the new-type inheritable large object class
- `adapt()` -- exposes the PEP-246_ compatible adapting mechanism used
  by psycopg to adapt Python types to PostgreSQL ones

.. _PEP-246: https://www.python.org/dev/peps/pep-0246/
    N)BINARYARRAYBOOLEANBOOLEANARRAYBYTES
BYTESARRAYDATE	DATEARRAYDATETIMEARRAYDECIMALDECIMALARRAYFLOAT
FLOATARRAYINTEGERINTEGERARRAYINTERVALINTERVALARRAYLONGINTEGERLONGINTEGERARRAY
ROWIDARRAYSTRINGARRAYTIME	TIMEARRAYUNICODEUNICODEARRAYAsIsBinaryBooleanFloatIntQuotedString)PYDATE
PYDATETIMEPYDATETIMETZ
PYINTERVALPYTIMEPYDATEARRAYPYDATETIMEARRAYPYDATETIMETZARRAYPYINTERVALARRAYPYTIMEARRAY
DateFromPy
TimeFromPyTimestampFromPyIntervalFromPy)adaptadapters	encodings
connectioncursorlobjectXidlibpq_version	parse_dsnquote_identstring_typesbinary_typesnew_typenew_array_typeregister_type	ISQLQuoteNotifyDiagnosticsColumnConnectionInfoQueryCanceledErrorTransactionRollbackErrorset_wait_callbackget_wait_callbackencrypt_password               c                 "    |t         | t        f<   y)z;Register 'callable' as an ISQLQuote adapter for type 'typ'.N)r0   r>   )typcallables     F/var/www/html/venv/lib/python3.12/site-packages/psycopg2/extensions.pyregister_adapterrQ   _   s    !)Hc9    c                   (    e Zd ZdZd Zd Zd Zd Zy)SQL_INz-Adapt any iterable to an SQL quotable object.c                      || _         d | _        y N)_seq_conn)selfseqs     rP   __init__zSQL_IN.__init__g   s    	
rR   c                     || _         y rV   )rX   )rY   conns     rP   preparezSQL_IN.preparek   s	    
rR   c                 8   | j                   D cg c]  }t        |       }}| j                  /|D ]*  }t        |d      s|j	                  | j                         , |D cg c]  }|j                          }}ddj                  |      z   dz   S c c}w c c}w )Nr^      (s   ,    ))rW   r/   rX   hasattrr^   	getquotedjoin)rY   opobjsobjqobjss        rP   rc   zSQL_IN.getquotedn   s     $(99-aq--::! ,3	*KK

+, )..1..ejj''$.. .
 /s   B"Bc                 4    t        | j                               S rV   )strrc   )rY   s    rP   __str__zSQL_IN.__str__y   s    4>>#$$rR   N)__name__
__module____qualname____doc__r[   r^   rc   rk    rR   rP   rT   rT   e   s    7	/%rR   rT   c                       e Zd ZdZd ZddZy)NoneAdapterzAdapt None to NULL.

    This adapter is not used normally as a fast path in mogrify uses NULL,
    but it makes easier to adapt composite types.
    c                      y rV   rp   )rY   rg   s     rP   r[   zNoneAdapter.__init__   s    rR   c                     |S rV   rp   )rY   _nulls     rP   rc   zNoneAdapter.getquoted   s    rR   N)s   NULL)rl   rm   rn   ro   r[   rc   rp   rR   rP   rr   rr   }   s    
rR   rr   c                    | |sy|st        |        | S d|v r#d|v rt        d      |j                  d      |d<   |j                         D ci c]  \  }}|	|| }}}| t        |       }|j	                  |       |}dj                  |j                         D cg c])  \  }}dj                  |t        t        |                  + c}}      } t        |        | S c c}}w c c}}w )z4Convert a set of keywords into a connection strings. databasedbnamez8you can't specify both 'database' and 'dbname' arguments z{}={})	r7   	TypeErrorpopitemsupdaterd   format_param_escaperj   )dsnkwargskvtmps        rP   make_dsnr      s    
{6 #
 VvJL L!::j1x "(Av11=adAFA
n

6
((lln&Q NN1mCF&;< & 'C cNJ B&s   
C#C# .C)
z([\\'])z\sc                 b    | sy|j                  d|       } |j                  |       rd| z   dz   } | S )z9
    Apply the escaping rule required by PQconnectdb
    z''z\\\1')subsearch)s	re_escapere_spaces      rP   r   r      s8     gq!Aq!GcMHrR   )register_default_jsonregister_default_jsonb)Range_rw   -rV   )uro   re_repsycopg2._psycopgr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   ISOLATION_LEVEL_AUTOCOMMIT ISOLATION_LEVEL_READ_UNCOMMITTEDISOLATION_LEVEL_READ_COMMITTEDISOLATION_LEVEL_REPEATABLE_READISOLATION_LEVEL_SERIALIZABLEISOLATION_LEVEL_DEFAULTSTATUS_SETUPSTATUS_READYSTATUS_BEGINSTATUS_SYNCSTATUS_ASYNCSTATUS_PREPAREDSTATUS_IN_TRANSACTIONPOLL_OK	POLL_READ
POLL_WRITE
POLL_ERRORTRANSACTION_STATUS_IDLETRANSACTION_STATUS_ACTIVETRANSACTION_STATUS_INTRANSTRANSACTION_STATUS_INERRORTRANSACTION_STATUS_UNKNOWNrQ   rT   rr   r   compiler   psycopg2._jsonr   r   JSON	JSONARRAYJSONB
JSONBARRAYImportErrorpsycopg2._ranger   listr}   r   r   replaceupperrp   rR   rP   <module>r      s  F 7 7 7 7 7 7 7 7? ? ? ?
> > > > > > >  #$  !" "#     ( %  5
	

 )     *% %0
 
F #++j)U#" I	+-OD).0E: 1 #	 "# DAq			#r""3+113AIaL q'  		s   F FF