U
    (a                     @   s  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! zDd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/ W n e0k
r   Y nX ddlm1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> ddlm?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW dZXdZYdZZd	Z[d
Z\dZ]dZ^dZ_d	Z`d
ZadZbdZce`ZddZedZfd	Zgd
ZhdZidZjd	Zkd
ZldZmdd ZnG dd deoZpG dd deoZqdddZresdesdfddZtddlumvZvmwZw zev \ZxZyew \ZzZ{W n e0k
rt   Y nX [v[wddl|m}Z} [}e~eA D ]*\ZZedddd ZeeAe< q[[dS )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)MXDATE
MXDATETIMEMXDATETIMETZ
MXINTERVALMXTIMEMXDATEARRAYMXDATETIMEARRAYMXDATETIMETZARRAYMXINTERVALARRAYMXTIMEARRAY
DateFromMx
TimeFromMxTimestampFromMxIntervalFromMx)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                 C   s   |t | tf< dS )z;Register 'callable' as an ISQLQuote adapter for type 'typ'.N)r=   rK   )typcallable r\   /home/adriano.carvalho/ftp/files/BrinquedotecaVirtual/brinquedotecavirtual/venv/lib/python3.8/site-packages/psycopg2/extensions.pyregister_adapterg   s    r^   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )SQL_INz-Adapt any iterable to an SQL quotable object.c                 C   s   || _ d | _d S N)_seq_conn)selfseqr\   r\   r]   __init__o   s    zSQL_IN.__init__c                 C   s
   || _ d S r`   )rb   )rc   connr\   r\   r]   prepares   s    zSQL_IN.preparec                 C   sZ   dd | j D }| jd k	r:|D ]}t|dr|| j qdd |D }dd| d S )Nc                 S   s   g | ]}t |qS r\   )r<   .0or\   r\   r]   
<listcomp>y   s     z$SQL_IN.getquoted.<locals>.<listcomp>rg   c                 S   s   g | ]}|  qS r\   )	getquotedrh   r\   r\   r]   rk   ~   s        (s   ,    ))ra   rb   hasattrrg   join)rc   ZpobjsobjZqobjsr\   r\   r]   rl   v   s    

zSQL_IN.getquotedc                 C   s   t |  S r`   )strrl   )rc   r\   r\   r]   __str__   s    zSQL_IN.__str__N)__name__
__module____qualname____doc__re   rg   rl   rs   r\   r\   r\   r]   r_   m   s
   r_   c                   @   s"   e Zd ZdZdd ZdddZdS )	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                 C   s   d S r`   r\   )rc   rq   r\   r\   r]   re      s    zNoneAdapter.__init__   NULLc                 C   s   |S r`   r\   )rc   _nullr\   r\   r]   rl      s    zNoneAdapter.getquotedN)ry   )rt   ru   rv   rw   re   rl   r\   r\   r\   r]   rx      s   rx   c                 K   s   | dkr|sdS |s t |  | S d|krFd|kr8td|d|d< dd | D }| dk	rvt | }|| |}dd	d
 | D } t |  | S )z4Convert a set of keywords into a connection strings.N ZdatabaseZdbnamez8you can't specify both 'database' and 'dbname' argumentsc                 S   s   i | ]\}}|d k	r||qS r`   r\   ri   kvr\   r\   r]   
<dictcomp>   s       zmake_dsn.<locals>.<dictcomp> c                 S   s$   g | ]\}}d |t t|f qS )z%s=%s)_param_escaperr   r|   r\   r\   r]   rk      s   zmake_dsn.<locals>.<listcomp>)rD   	TypeErrorpopitemsupdaterp   )Zdsnkwargstmpr\   r\   r]   make_dsn   s*    

r   z([\\'])z\sc                 C   s.   | sdS | d| } || r*d|  d } | S )z9
    Apply the escaping rule required by PQconnectdb
    z''z\\\1')subsearch)sZ	re_escapeZre_spacer\   r\   r]   r      s    
r   )register_default_jsonregister_default_jsonb)Range_r{   -)N)rw   re_reZ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-   ImportErrorr.   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   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   ZISOLATION_LEVEL_AUTOCOMMITZ ISOLATION_LEVEL_READ_UNCOMMITTEDZISOLATION_LEVEL_READ_COMMITTEDZISOLATION_LEVEL_REPEATABLE_READZISOLATION_LEVEL_SERIALIZABLEZISOLATION_LEVEL_DEFAULTZSTATUS_SETUPZSTATUS_READYZSTATUS_BEGINZSTATUS_SYNCZSTATUS_ASYNCZSTATUS_PREPAREDZSTATUS_IN_TRANSACTIONZPOLL_OKZ	POLL_READZ
POLL_WRITEZ
POLL_ERRORZTRANSACTION_STATUS_IDLEZTRANSACTION_STATUS_ACTIVEZTRANSACTION_STATUS_INTRANSZTRANSACTION_STATUS_INERRORZTRANSACTION_STATUS_UNKNOWNr^   objectr_   rx   r   compiler   Zpsycopg2._jsonr   r   ZJSONZ	JSONARRAYZJSONBZ
JSONBARRAYZpsycopg2._ranger   listr   r}   r~   replaceupperr\   r\   r\   r]   <module>   sd   #D@l

#

