o a@spdZddlZddlmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!ddlm"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/ddlm0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH dZIdZJdZKdZLd ZMdZN dZOdZPdZQd ZRdZSd ZTeQZU dZVdZWdZXd ZY dZZdZ[dZ\d Z]dZ^d d Z_Gd ddZ`GdddZadddZbecdecdfddZdddlemfZfmgZgz ef\ZhZieg\ZjZkWn elyYnw[f[gddlmmnZn[neoe2pD]\ZqZreqsddsddtZqere2eq<q[q[rdS)apsycopg 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) BINARYARRAYBOOLEAN BOOLEANARRAYBYTES BYTESARRAYDATE DATEARRAY DATETIMEARRAYDECIMAL DECIMALARRAYFLOAT FLOATARRAYINTEGER INTEGERARRAYINTERVAL INTERVALARRAY LONGINTEGERLONGINTEGERARRAY ROWIDARRAY STRINGARRAYTIME TIMEARRAYUNICODE UNICODEARRAYAsIsBinaryBooleanFloatInt QuotedString)PYDATE PYDATETIME PYDATETIMETZ PYINTERVALPYTIME PYDATEARRAYPYDATETIMEARRAYPYDATETIMETZARRAYPYINTERVALARRAY PYTIMEARRAY DateFromPy TimeFromPyTimestampFromPyIntervalFromPy)adaptadapters encodings connectioncursorlobjectXid libpq_version parse_dsn quote_ident string_types binary_typesnew_typenew_array_type register_type ISQLQuoteNotify DiagnosticsColumnConnectionInfoQueryCanceledErrorTransactionRollbackErrorset_wait_callbackget_wait_callbackencrypt_passwordcCs|t|tf<dS)z;Register 'callable' as an ISQLQuote adapter for type 'typ'.N)r/r=)typcallablerN5/usr/lib/python3/dist-packages/psycopg2/extensions.pyregister_adapter_srPc@s0eZdZdZddZddZddZdd Zd S) SQL_INz-Adapt any iterable to an SQL quotable object.cCs||_d|_dSN)_seq_conn)selfseqrNrNrO__init__gs zSQL_IN.__init__cCs ||_dSrR)rT)rUconnrNrNrOprepareks zSQL_IN.preparecCsZdd|jD}|jdur|D] }t|dr||jqdd|D}dd|dS)NcSsg|]}t|qSrN)r..0orNrNrO qz$SQL_IN.getquoted..rYcSsg|]}|qSrN) getquotedrZrNrNrOr]vr^(s, ))rSrThasattrrYjoin)rUpobjsobjqobjsrNrNrOr_ns   zSQL_IN.getquotedcCs t|SrR)strr_)rUrNrNrO__str__ys zSQL_IN.__str__N)__name__ __module__ __qualname____doc__rWrYr_rhrNrNrNrOrQes  rQc@s"eZdZdZddZdddZdS) 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. cCsdSrRrN)rUrerNrNrOrWzNoneAdapter.__init__NULLcCs|SrRrN)rU_nullrNrNrOr_rnzNoneAdapter.getquotedN)ro)rirjrkrlrWr_rNrNrNrOrm}srmcKs|dur|sdS|st||Sd|vr#d|vrtd|d|d<dd|D}|dur;t|}|||}dd d |D}t||S) z4Convert a set of keywords into a connection strings.Ndatabasedbnamez8you can't specify both 'database' and 'dbname' argumentscSsi|] \}}|dur||qSrRrNr[kvrNrNrO szmake_dsn.. cSs$g|]\}}d|tt|qS)z{}={})format _param_escapergrtrNrNrOr]szmake_dsn..)r6 TypeErrorpopitemsupdaterc)dsnkwargstmprNrNrOmake_dsns*   rz([\\'])z\scCs.|sdS|d|}||rd|d}|S)z9 Apply the escaping rule required by PQconnectdb z''z\\\1')subsearch)s re_escapere_spacerNrNrOrzs    rz)register_default_jsonregister_default_jsonb)Range_rq-rR)urlre_repsycopg2._psycopgrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFISOLATION_LEVEL_AUTOCOMMIT ISOLATION_LEVEL_READ_UNCOMMITTEDISOLATION_LEVEL_READ_COMMITTEDISOLATION_LEVEL_REPEATABLE_READISOLATION_LEVEL_SERIALIZABLEISOLATION_LEVEL_DEFAULT STATUS_SETUP STATUS_READY STATUS_BEGIN STATUS_SYNC STATUS_ASYNCSTATUS_PREPAREDSTATUS_IN_TRANSACTIONPOLL_OK POLL_READ POLL_WRITE POLL_ERRORTRANSACTION_STATUS_IDLETRANSACTION_STATUS_ACTIVETRANSACTION_STATUS_INTRANSTRANSACTION_STATUS_INERRORTRANSACTION_STATUS_UNKNOWNrPrQrmrcompilerzpsycopg2._jsonrrJSON JSONARRAYJSONB JSONBARRAY ImportErrorpsycopg2._rangerlistr}rurvreplaceupperrNrNrNrOsh#@l  #