U CB`vi@sddlZddlZddlZddlmZmZddlmZddlm Z ddl m Z ddl m Z ddlmZddlZddlmZmZmZmZmZdd lmZmZd d Zed \ZZed \ZZed\ZZed\Z Z!ed\Z"Z#ed\Z$Z%ed\Z&Z'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4d Z5d!Z6d"Z7d#Z8d$Z9d%Z:d&Z;d'Zd*Z?d+Z@d,ZAdZBd(ZCdZDd-ZEdZFd.ZGdZHdCd0d1ZIeIeCZJeIeDZKeIeGZLeIe:ZMeIeBe)edZNdZOd+ZPd2ZQd3ZQd4ZRd5ZSd6ZTd7ZUd8ZVd9ZWd:ZXd;ZYdZ\d)Z]dZ^dZ_Gd?d@d@Z`GdAdBdBZadS)DN) defaultdictdeque) LooseVersion)md5) TextIOBase)count)Struct)PG_PY_ENCODINGSPG_TYPESPY_TYPES make_params string_in) DatabaseErrorInterfaceErrorcCstd|}|j|jfS)N!)rpack unpack_from)fmtZstrucrZC:\Users\shjeevan\PycharmProjects\Verisk-XactWare\venv3.8\Lib\site-packages\pg8000/core.py pack_funcssrihiiZihihihciZbhZcccczMathieu FenniakNRSKZTEDC123sntAcdGHIBPQpXcCs|tt|d|S)N)i_packlen)codedatarrr_create_messagejsr<SVCMDHPpqWFLRc @s@eZdZddZddZdRd d Zd d Zd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZdSd8d9Zd:d;Zdd?Zd@dAZ dBdCZ!dDdEZ"dFdGZ#dHdIZ$dJdKZ%dLdMZ&dNdOZ'dPdQZ(dS)TCoreConnectioncCs|SNrselfrrr __enter__szCoreConnection.__enter__cCs |dSrK)close)rMexc_type exc_value tracebackrrr__exit__szCoreConnection.__exit__ localhostN8Tc *sd_d_tdd_tdd_tdd_|dkr@td||| | d} t| D]Z\}}t |t r|| d| |<qZ|dkr| |=qZt |t t fsZtd|dt|d qZ| d _t |t r| d_n|_d _d_t_i_|dkrr|dk rrzt||f| |_WnJtjk rn}z(td |d |d| d|d |W5d}~XYnXn|dk rzBttdstdttjtj_j| j|WnFtjk r}z$jdk rjtd|W5d}~XYnXntd| r*j tj!tj"dd_#|dk rzddl$}|dkrV|%}t&|dd}|rj't(ddj)d}|dkrtd|j*j|d_|rt+,dj_#Wnt-k rtdYnXjj.d d!_/fd"d#}|_0fd$d%}|_1fd&d'}|_2d_3t4d(d)t5_6t7t8_9t:j;t<j=t>j?t@jAtBjCtDjEtFjGtHjItJjKtLjMtNjOtPjQtRjStTjUtVjWtXjYtZj[t\j]t^j_t`jatbjci_dd*}t te|}| D]&\}}|f| d+tg|tgq|hd2teti|d,2|0d}_|tBtFfkrtj1d-\}}jd|1|d,dqHjdk rjd _kdS).Nutf8)INSERTDELETEUPDATEMOVEFETCHCOPYsSELECTd)maxlenz.The 'user' connection parameter cannot be None)userdatabaseapplication_name replicationzThe parameter z can't be of type .r_Fz"Can't create a connection to host z and port z (timeout is z and source_address is z).AF_UNIXz9attempt to connect to unix socket on unsupported platformzcommunication errorz)one of host or unix_sock must be providedrT request_ssli/rzServer refuses SSL)server_hostnameztls-server-end-pointzFSSL required but ssl module not available in this python installation.rwb)modec s@zjWn,tk r:}ztd|W5d}~XYnXdS)Nznetwork error on flush)_sockflushOSErrorr)erLrr sock_flushsz+CoreConnection.__init__..sock_flushc s@zj|WStk r:}ztd|W5d}~XYnXdS)Nnetwork error on read)rkreadrmr)brnrLrr sock_readsz*CoreConnection.__init__..sock_readc sBzj|Wn,tk r<}ztd|W5d}~XYnXdS)Nznetwork error on write)rkwritermr)drnrLrr sock_writesz+CoreConnection.__init__..sock_writecSstSrK)r rrrr(r6z)CoreConnection.__init__..iasciir7)l_client_encoding_commands_with_countr notificationsnoticesparameter_statusesrtupleitems isinstancestrencodebytes bytearraytyper_passwordZ autocommitZ_xidset_statement_numsZ_cachessocketcreate_connection_usockerrorhasattrrd SOCK_STREAM settimeoutconnectrO setsockopt SOL_SOCKET SO_KEEPALIVEchannel_bindingsslcreate_default_contextgetattrsendallii_packrecv wrap_socketscrampZmake_channel_binding ImportErrormakefilerk_flush_read_write_backend_key_datarr pg_typesdictr py_typesNOTICE_RESPONSEhandle_NOTICE_RESPONSEAUTHENTICATION_REQUESThandle_AUTHENTICATION_REQUESTPARAMETER_STATUShandle_PARAMETER_STATUSBACKEND_KEY_DATAhandle_BACKEND_KEY_DATAREADY_FOR_QUERYhandle_READY_FOR_QUERYROW_DESCRIPTIONhandle_ROW_DESCRIPTIONERROR_RESPONSEhandle_ERROR_RESPONSEEMPTY_QUERY_RESPONSEhandle_EMPTY_QUERY_RESPONSEDATA_ROWhandle_DATA_ROWCOMMAND_COMPLETEhandle_COMMAND_COMPLETEPARSE_COMPLETEhandle_PARSE_COMPLETE BIND_COMPLETEhandle_BIND_COMPLETECLOSE_COMPLETEhandle_CLOSE_COMPLETEPORTAL_SUSPENDEDhandle_PORTAL_SUSPENDEDNO_DATAhandle_NO_DATAPARAMETER_DESCRIPTIONhandle_PARAMETER_DESCRIPTIONNOTIFICATION_RESPONSEhandle_NOTIFICATION_RESPONSE COPY_DONEhandle_COPY_DONE COPY_DATAhandle_COPY_DATACOPY_IN_RESPONSEhandle_COPY_IN_RESPONSECOPY_OUT_RESPONSEhandle_COPY_OUT_RESPONSE message_typesr8extend NULL_BYTEappendr9 ci_unpackin_transaction)rMr_hostr`portrsource_addressZ unix_sock ssl_contexttimeoutZ tcp_keepaliverarbZ init_paramskvrnrrfresprorsrvprotocolvalr:data_lenrrLr__init__s$                             zCoreConnection.__init__cCs||f|j|<dSrK)r)rMtypoidZout_funcrrrregister_out_adapter[sz#CoreConnection.register_out_adaptercCs||j|<dSrK)r)rMrZin_funcrrrregister_in_adapter^sz"CoreConnection.register_in_adaptercs*tfdd|tD}t|_dS)Nc3s@|]8}|dkr|ddd|ddjjddfVqdS)r6Nrerxreplace)errors)decoderz.0srLrr bs z7CoreConnection.handle_ERROR_RESPONSE..)rsplitrrr)rMr;contextmsgrrLrras  z$CoreConnection.handle_ERROR_RESPONSEcCstd|_dS)Nzquery was empty)rrrMr;rrrrrmsz*CoreConnection.handle_EMPTY_QUERY_RESPONSEcCsdSrKrrrrrrpsz$CoreConnection.handle_CLOSE_COMPLETEcCsdSrKrrrrrrssz$CoreConnection.handle_PARSE_COMPLETEcCsdSrKrrrrrrxsz#CoreConnection.handle_BIND_COMPLETEcCsdSrKrrrrrr{sz&CoreConnection.handle_PORTAL_SUSPENDEDcCsdSEhttps://www.postgresql.org/docs/current/protocol-message-formats.htmlNrrrrrr~sz+CoreConnection.handle_PARAMETER_DESCRIPTIONcCsdSrKrrrrrrszCoreConnection.handle_COPY_DONEcsjt|\}}jdkr tdnFtjtr\|r:tdqft|jfdd}|_n jj _dS)rNz7An output stream is required for the COPY OUT response.z@The COPY OUT stream is binary, but the stream parameter is text.csj|ddS)Nr)streamrt)r;rrrrwsz2CoreConnection.handle_COPY_OUT_RESPONSE..w) bh_unpackrrrrcodecs getdecoderrz stream_writert)rMr;r is_binarynum_colsrrrrrs    z'CoreConnection.handle_COPY_OUT_RESPONSEcCs||dSrK)rrrrrrszCoreConnection.handle_COPY_DATAc st|\}}jdkr tdn6tjtrN|r:tdqVfdd}|}njj}td}||}|dkrpqtt |d|d| q^t t  dS) rNz5An input stream is required for the COPY IN response.z?The COPY IN stream is binary, but the stream parameter is text.cs*||jdjt|S)Ni)clearrrrqrrzr9)bffrrrMrrrisz2CoreConnection.handle_COPY_IN_RESPONSE..rii rr7) rrrrrreadintorrrr8r COPY_DONE_MSGSYNC_MSG) rMr;rrrrrr bytes_readrrrrs0       z&CoreConnection.handle_COPY_IN_RESPONSEcCsZt|d}d}|t|}|||d}||ddd}|j|||fdS)rrr7rxreN)i_unpackfindrrr|r)rMr;rZ backend_pididxZnull_idxZchannelpayloadrrrrs   z+CoreConnection.handle_NOTIFICATION_RESPONSEcCszpz |t||jWnJtk r>tdYn0tk rXtdYnt j k rlYnXW5|jd|_XdS)zCloses the database connection. This function is part of the `DBAPI 2.0 specification `_. Nconnection is closed) rrOrkr TERMINATE_MSGrAttributeErrorr ValueErrorrrrLrrrrOs     zCoreConnection.closec Cst|d}|dkrn|dkrP|jdkr2td|t|jt|n|dkrdt|d}|jdkrztdd t t |j|j  d | d }|t|t|n0|d krZd d |dd tD}tj||j d|jd|jd|_|j d}|jj d t}|t|tt|||n|dkr|j|ddd|j d} |t| |nR|dkr|j|dddn,|dkrtd|dntd|ddS)rrNzGserver requesting password authentication, but no password was providedryr6r7zKserver requesting MD5 password authentication, but no password was providedsmd5rx cSsg|]}|dqS)rx)r)rmrrr sz@CoreConnection.handle_AUTHENTICATION_REQUEST..rV)r )r7rg zAuthentication method z not supported by pg8000.z not recognized by pg8000.)rrr _send_messagePASSWORDrrjoin cccc_unpackrr_ hexdigestrrrZ ScramClientrrauthZget_client_firstZmechanism_namer8r9Zset_server_firstZget_client_finalZset_server_final) rMr;rZ auth_codeZsaltpwdZ mechanismsinitZmechrrrrrsb                z,CoreConnection.handle_AUTHENTICATION_REQUESTcCs|tk|_dSrK)IDLErrrrrr1sz%CoreConnection.handle_READY_FOR_QUERYcCs ||_dSrK)rrrrrr4sz&CoreConnection.handle_BACKEND_KEY_DATAc Cst|d}d}g}g}t|D]r}|||t|}|t|d7}ttdt||} ||j | d<|d7}| | | |j | dq ||_ ||_ dS)Nrrre)Z table_oidZcolumn_attrnumtype_oidZ type_sizeZ type_modifierformatnamer")h_unpackrangerrr9rzip ihihih_unpackrrzrrcolumns input_funcs) rMr;rrrr*r+rr$fieldrrrr7s&    z%CoreConnection.handle_ROW_DESCRIPTIONcCsnt|}|||jt|tt||D]}|t|dkrJdn|q4|t || t dS)Nrr) rrrrzrh_packr9r8rPARSEr FLUSH_MSG)rMstatement_name_bin statementoidsrrrrr send_PARSETs zCoreConnection.send_PARSEcCs|tt||tdSrK)rDESCRIBE STATEMENTrr/)rMr0rrrsend_DESCRIBE_STATEMENT_sz&CoreConnection.send_DESCRIBE_STATEMENTcCs|t||jtdSrK)rQUERYrrzr)rMZsqlrrr send_QUERYcszCoreConnection.send_QUERYrc Cs2t|d}t|dkr<|dkr<|||||nt|j|\}}|dkrZ|}nddt||D}|t ||| t |||| t | t z |Wn:t k r} z|jdkrtdn| W5d} ~ XYnX|t ||||| t ||||S)N)rrcSs g|]\}}|dkr|n|qSrKr)rrDrrrrrrsz2CoreConnection.execute_unnamed..r )Contextr9r8rhandle_messagesr rr(r3rrrr6r rkr send_BIND send_EXECUTE) rMr1valsZ input_oidsrrZ param_oidsparamsr2rnrrrexecute_unnamedfs8              zCoreConnection.execute_unnamedc CstD]@}dddt|f}|dt}||jkr|j|qHq||||||| t z | Wn:t k r}z|j dkrtdn|W5d}~XYnXt}||||j|jfS)N_Zpg8000r1rxr )rrrrrraddr3r6rrrr rkrr9r:r*r+)rMr1r2rZstatement_namer0rnrrrrprepare_statements$         z CoreConnection.prepare_statementcCs@t||d}|||||t||||S)N)r*r+)r9r;r<rrrr:)rMr0r>r*r+rrrr execute_nameds    zCoreConnection.execute_namedc Csz.|||tt|d||WnVtk rj}zt|dkrVtdn|W5d}~XYntk rtdYnXdS)Nr7zwrite to closed filer )rr8r9r rrr )rMr:r;rnrrrrs   zCoreConnection._send_messagecCstt|tdtt|}|D]D}|dkr@|tdq$||j}|tt|||q$|td|t || t dS)rrNr) rrr-r9rr8rrzrBINDrr/)rMr0r>retvalvaluerrrrr;s   zCoreConnection.send_BINDcCs|t|tdSr)r EXECUTE_MSGr/rLrrrr<s zCoreConnection.send_EXECUTEcCs g|_dSrK)r*)rMrrrrrrszCoreConnection.handle_NO_DATAcCsT|ddd}|d}||jkrPt|d}|jdkrB||_n|j|7_dS)Nr r)rr{int row_count)rMr;rvaluescommandrJrrrrs   z&CoreConnection.handle_COMMAND_COMPLETEcCsxd}g}|jD]X}t||d}|d7}|dkr6d}n&|t|||||jd}||7}||q|j|dS)Nrrr7r)encoding)r+rrrzrrows)rMr;rrrowfuncZvlenrrrrrs  zCoreConnection.handle_DATA_ROWc Csd}|_|tkrtzt|d\}}Wn.tjk rV}ztd|W5d}~XYnX|j|||d|q |jdk r|jdS)Nryrpr7)rrrrstructrr)rMrr:rrnrrrr:s  zCoreConnection.handle_messagescCsL|tt||t|t|t}|||j |dSr) rCLOSEr5rr/rrr9r:rremove)rMr0rrrrclose_prepared_statements   z'CoreConnection.close_prepared_statementcCs$|jtdd|tDdS)rcss&|]}|dd|ddfVqdS)rreNrrrrrr sz8CoreConnection.handle_NOTICE_RESPONSE..N)r}rrrrrrrrr sz%CoreConnection.handle_NOTICE_RESPONSEcCs|t}|d|||dd}}|j||f|dkr^|d}t|||_nV|dkrr|dkrqnB|dkrt |d|_ |j t dkrd |_ n|j t d krd |_ dS) Nrersclient_encodingrxsinteger_datetimessonsserver_versionz8.2.0)rWrXrYrZz9.0.0)rWrXrYrZr[r\) rrr~rrlowerr getrzrZ_server_versionr{)rMr;rposkeyrFrMrrrrs  z&CoreConnection.handle_PARAMETER_STATUS) rTNrUNNNNNTNN)rNN))__name__ __module__ __qualname__rNrSrrrrrrrrrrrrrrrrOrrrrr3r6r8r?rBrCrr;r<rrrr:rTrrrrrrrJsd I * D  (    rJc@seZdZdddZdS)r9NcCs:g|_d|_|dkrgn||_||_|dkr0gn||_dS)Nr)rNrJr*rr+)rMrr*r+rrrr.s zContext.__init__)NNN)rYrZr[rrrrrr9-sr9)r6)brrrQ collectionsrrZdistutils.versionrhashlibrior itertoolsrrrZpg8000.convertersr r r r r Zpg8000.exceptionsrrrr8rr-r&rZ ii_unpackZ ihihih_packr)Zci_packrZbh_packrZ cccc_packr __author__rrrrrrrrrrrrrrrrrrrrrrrDr.r7ZEXECUTEZFLUSHZSYNCrr4Z TERMINATErRr<r/rr rrGr5ZPORTALZRESPONSE_SEVERITYZ RESPONSE_CODEZ RESPONSE_MSGZRESPONSE_DETAILZ RESPONSE_HINTZRESPONSE_POSITIONZRESPONSE__POSITIONZRESPONSE__QUERYZRESPONSE_WHEREZ RESPONSE_FILEZ RESPONSE_LINEZRESPONSE_ROUTINEr!ZIDLE_IN_TRANSACTIONZIDLE_IN_FAILED_TRANSACTIONrJr9rrrrs             &