§
    YŠtj?Z  ã                  óŽ  — d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZmZ ddlmZmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z. erddlm/Z/ ddl0m1Z1m2Z2 ej3        j4        Z4ej3        j5        Z5ej6        j7        Z7ej6        j8        Z8ej6        j9        Z9ej6        j:        Z:ej6        j;        Z;ej6        j<        Z<ej6        j=        Z=ej6        j>        Z>ej6        j?        Z?ej6        j@        Z@ejA        jB        ZB G d„ deeef         ¦  «        ZCdS )z
Psycopg BaseCursor object
é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚGenericÚNoReturn)ÚReferenceTypeÚref)Úpartial)ÚIterableÚSequenceé   )Úadapt)Úerrors)Úpq)ÚConnectionTypeÚLoaderÚParamsÚPQGenÚQuery)ÚRowÚRowMaker©ÚColumn)ÚTemplate)Úconnection_summary)ÚPostgresClientQueryÚPostgresQuery)ÚPrepare)ÚexecuteÚfetchÚsend)Úcapabilities)ÚTransformer)ÚPGconnÚPGresultc                  ó\  — e Zd ZU d                     ¦   «         Zded<   ded<   ded<   eZded	<   djd„Zdkdld„Z	dmd„Z
ednd„¦   «         Zedod„¦   «         Zedpd„¦   «         Zedqd„¦   «         Zedrd„¦   «         Zedsd„¦   «         Zdtd!„Zdudvd&„Zdwd(„Zedxd*„¦   «         Zdyd+„Z	 dud"d"d,œdzd4„Zd{d8„Zd{d9„Zd"d"d,œd|d<„Z	 dud}d>„Z	 dud"d?œd~d@„ZddC„Zdud€dE„Z	 dud�dG„ZdHd"dIœd‚dK„Z 	 dudƒdL„Z!d„dO„Z"d…dS„Z#dud†dW„Z$d„dX„Z%e&d‡d^„¦   «         Z'dˆda„Z(d"d?œd‰db„Z)dŠdc„Z*d‹dd„Z+dŒdg„Z,d�dh„Z-edmdi„¦   «         Z.d"S )ŽÚ
BaseCursorzá
        _conn format _adapters arraysize _closed _results pgresult _pos
        _iresult _rowcount _query _tx _last_query _row_factory _make_row
        _pgconn _execmany_returning _statusmessage
        __weakref__
        r#   Ú_txúRowMaker[Row]Ú	_make_rowr$   Ú_pgconnztype[PostgresQuery]Ú
_query_clsÚ
connectionr   c                ó*  — || _         t          | _        |j        | _        t          j        |j        ¦  «        | _        d| _	        d| _
        d | _        |                      ¦   «          t          | j        t          | ¦  «        ¦  «        | j        _        d S )Nr   F)Ú_connÚTEXTÚformatÚpgconnr+   r   ÚAdaptersMapÚadaptersÚ	_adaptersÚ	arraysizeÚ_closedÚ_last_queryÚ_resetr
   Ú_loaders_changedr	   Ú_register_loader_callback)Úselfr-   s     úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/psycopg/_cursor_base.pyÚ__init__zBaseCursor.__init__=   s|   € ØˆŒ
ÝˆŒØ!Ô(ˆŒÝÔ*¨:Ô+>Ñ?Ô?ˆŒØˆŒØˆŒØ)-ˆÔØ�Š‰Œˆõ 4;ØÔ!¥3 t¡9¤9ñ4
ô 4
ˆŒÔ0Ð0Ð0ó    TÚreset_queryÚboolÚreturnÚNonec                ó‚   — g | _         d | _        d| _        d| _        d| _        d | _        |  d | _        |r	d | _        d S d S ©Nr   éÿÿÿÿ)Ú_resultsÚpgresultÚ_posÚ_iresultÚ	_rowcountÚ_statusmessageÚ_execmany_returningÚ_query)r<   r@   s     r=   r9   zBaseCursor._resetL   sX   € Ø(*ˆŒØ)-ˆŒØˆŒ	ØˆŒØˆŒØ,0ˆÔØÐ)à04ˆÔ Øð 	ØˆDŒKˆKˆKð	ð 	r?   Ústrc           
     ó  — | j         j        › d| j         j        › �}t          | j        ¦  «        }| j        rd}n-| j        r$t          j        | j        j	        ¦  «        j
        }nd}d|› d|› d|› dt          | ¦  «        d›d	�	S )
Nú.Úclosedz	no resultú<z [z] z at 0xÚxú>)Ú	__class__Ú
__module__Ú__qualname__r   r+   r7   rH   r   Ú
ExecStatusÚstatusÚnameÚid)r<   ÚclsÚinforZ   s       r=   Ú__repr__zBaseCursor.__repr__Y   s™   € Ø”Ô*ÐJÐJ¨T¬^Ô-HÐJÐJˆÝ! $¤,Ñ/Ô/ˆØŒ<ð 	!ØˆFˆFØŒ]ð 	!Ý”] 4¤=Ô#7Ñ8Ô8Ô=ˆFˆFà ˆFØ=�3Ð=Ð=˜&Ð=Ð= DÐ=Ð=µ°4±´Ð=Ð=Ð=Ð=Ð=r?   c                ó   — | j         S )z$The connection this cursor is using.)r/   ©r<   s    r=   r-   zBaseCursor.connectiond   s   € ð ŒzÐr?   úadapt.AdaptersMapc                ó   — | j         S ©N)r5   ra   s    r=   r4   zBaseCursor.adaptersi   s
   € àŒ~Ðr?   c                ó   — | j         S )z`True` if the cursor is closed.)r7   ra   s    r=   rR   zBaseCursor.closedm   s   € ð Œ|Ðr?   úlist[Column] | Nonec                óÈ   ‡ — ‰ j         }|rW|j        s0|j        t          k    s |j        t          k    s|j        t
          k    r ˆ fd„t          |j        ¦  «        D ¦   «         S dS )zŽ
        A list of `Column` objects describing the current resultset.

        `!None` if the current resultset didn't return tuples.
        c                ó0   •— g | ]}t          ‰|¦  «        ‘ŒS © r   )Ú.0Úir<   s     €r=   ú
<listcomp>z*BaseCursor.description.<locals>.<listcomp>„   s!   ø€ Ð@Ð@Ð@¨•F˜4 ‘O”OÐ@Ð@Ð@r?   N)rH   ÚnfieldsrZ   Ú	TUPLES_OKÚSINGLE_TUPLEÚTUPLES_CHUNKÚrange)r<   Úress   ` r=   ÚdescriptionzBaseCursor.descriptionr   sp   ø€ ð Œmˆð
 ð 	ØŒKð	àŒz�YÒ&Ð&ØŒz�\Ò)Ð)ØŒz�\Ò)Ð)à@Ð@Ð@Ð@­U°3´;Ñ-?Ô-?Ð@Ñ@Ô@Ð@à�4r?   Úintc                ó   — | j         S )zk
        Number of records affected by the operation that produced
        the current result set.
        )rK   ra   s    r=   ÚrowcountzBaseCursor.rowcountˆ   s   € ð Œ~Ðr?   ú
int | Nonec                óP   — | j         o| j         j        t          k    }|r| j        ndS )zsIndex of the next row to fetch in the current result set.

        `!None` if there is no result to fetch.
        N)rH   rZ   rn   rI   )r<   Útupless     r=   Ú	rownumberzBaseCursor.rownumber�   s+   € ð ”ÐD 4¤=Ô#7½9Ò#DˆØ"Ð,ˆtŒyˆy¨Ð,r?   ÚsizesúSequence[Any]c                ó   — d S rd   ri   )r<   r{   s     r=   ÚsetinputsizeszBaseCursor.setinputsizes™   ó   € àˆr?   NÚsizer   Úcolumnc                ó   — d S rd   ri   )r<   r€   r�   s      r=   ÚsetoutputsizezBaseCursor.setoutputsize�   r   r?   úbool | Nonec                ó„   — | j         t          | j        ¦  «        dz
  k     r|                      | j         dz   ¦  «         dS dS )a  
        Move to the result set of the next query executed through `executemany()`
        or to the next result set if `execute()` returned more than one.

        Return `!True` if a new result is available, which will be the one
        methods `!fetch*()` will operate on.
        r   TN)rJ   ÚlenrG   Ú_select_current_resultra   s    r=   ÚnextsetzBaseCursor.nextset¡   sE   € ð Œ=�3˜tœ}Ñ-Ô-°Ñ1Ò1Ð1Ø×'Ò'¨¬¸Ñ(9Ñ:Ô:Ð:Ø�4à�4r?   ú
str | Nonec                óF   — | j         r| j                              ¦   «         ndS )z{
        The status tag of the current result set.

        `!None` if the cursor doesn't have a result available.
        N)rL   Údecodera   s    r=   ÚstatusmessagezBaseCursor.statusmessage¯   s&   € ð 04Ô/BÐLˆtÔ"×)Ò)Ñ+Ô+Ð+ÈÐLr?   c                ó   — t           ‚rd   )ÚNotImplementedErrorra   s    r=   Ú_make_row_makerzBaseCursor._make_row_maker¸   s   € Ý!Ð!r?   ©ÚprepareÚbinaryÚqueryr   ÚparamsúParams | Noner‘   r’   úPQGen[None]c             #  ój  K  — |                       |¦  «        E d{V —† |                      ||¦  «        }|                      |||¬¦  «        E d{V —† | j        j        r$| j        j                             ¦   «         E d{V —† || _        | j        j                             | j        ¦  «        E d{V —† dS )z*Generator implementing `Cursor.execute()`.Nr�   )	Ú_start_queryÚ_convert_queryÚ_maybe_prepare_genr/   Ú	_pipelineÚ_communicate_genr8   Ú	_preparedÚmaintain_gen)r<   r“   r”   r‘   r’   Úpgqs         r=   Ú_execute_genzBaseCursor._execute_genÃ   sá   è è € ð ×$Ò$ UÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø×!Ò! %¨Ñ0Ô0ˆØ×*Ò*¨3¸ÈÐ*ÑOÔOÐOÐOÐOÐOÐOÐOÐOØŒ:Ôð 	?Ø”zÔ+×<Ò<Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>à ˆÔØ”:Ô'×4Ò4°T´ZÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@r?   Ú
params_seqúIterable[Params]Ú	returningc              #  ó  K  — | j         j        }|sJ ‚|                      |¦  «        E d{V —† |sd| _        | j        �J ‚|| _        d}|D ]p}|r |                      ||¦  «        }|| _        d}n|                     |¦  «         |                      |d¬¦  «        E d{V —† | 	                    ¦   «         E d{V —† Œq|| _
        |r|                     d¬¦  «        E d{V —† | j         j                             | j         ¦  «        E d{V —† dS )zY
        Generator implementing `Cursor.executemany()` with pipelines available.
        Nr   TF©r‘   )Úflush)r/   r›   r˜   rK   rM   r™   rN   Údumprš   rœ   r8   Ú
_fetch_genr�   rž   )r<   r“   r¡   r£   ÚpipelineÚfirstr”   rŸ   s           r=   Ú_executemany_gen_pipelinez$BaseCursor._executemany_gen_pipelineÕ   sv  è è € ð ”:Ô'ˆØˆˆˆxà×$Ò$ UÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Øð 	ØˆDŒNàÔ'Ð/Ð/Ð/Ø#,ˆÔ àˆØ ð 		3ð 		3ˆFØð !Ø×)Ò)¨%°Ñ8Ô8�Ø!�”Ø��à—’˜Ñ Ô Ð à×.Ò.¨s¸DÐ.ÑAÔAÐAÐAÐAÐAÐAÐAÐAØ×0Ò0Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2à ˆÔàð 	7Ø×*Ò*°Ð*Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6à”:Ô'×4Ò4°T´ZÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@r?   c              #  óŠ  K  — |                       |¦  «        E d{V —† |sd| _        | j        �J ‚|| _        d}|D ]V}|r |                      ||¦  «        }|| _        d}n|                     |¦  «         |                      |d¬¦  «        E d{V —† ŒW|| _        | j        j	         
                    | j        ¦  «        E d{V —† dS )z]
        Generator implementing `Cursor.executemany()` with pipelines not available.
        Nr   TFr¥   )r˜   rK   rM   r™   rN   r§   rš   r8   r/   r�   rž   )r<   r“   r¡   r£   rª   r”   rŸ   s          r=   Ú_executemany_gen_no_pipelinez'BaseCursor._executemany_gen_no_pipelineø   s  è è € ð ×$Ò$ UÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Øð 	ØˆDŒNàÔ'Ð/Ð/Ð/Ø#,ˆÔ àˆØ ð 	Bð 	BˆFØð !Ø×)Ò)¨%°Ñ8Ô8�Ø!�”Ø��à—’˜Ñ Ô Ð à×.Ò.¨s¸DÐ.ÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAà ˆÔØ”:Ô'×4Ò4°T´ZÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@r?   rŸ   r   c             #  ó8  K  — |                       ||¦  «        \  }}|t          j        u r|                      ||¬¦  «         n’|t          j        u rl|                      ||¦  «         | j        j        sJt          | j	        ¦  «        E d {V —†}|D ]-}|j
        t          k    rt          j        || j        ¬¦  «        ‚Œ.|                      |||¬¦  «         | j        j                             |||¦  «        }| j        j        r1d }	|�|||f}	| j        j        j                             | |	f¦  «         d S t          | j	        ¦  «        E d {V —†}|�"| j        j                             ||||¦  «         |                      |¦  «         |                      |¦  «         d S )N©r’   ©Úencoding)Ú_get_preparedr   ÚNOÚ_execute_sendÚSHOULDÚ_send_preparer/   r›   r   r+   rZ   ÚFATAL_ERRORÚeÚerror_from_resultÚ	_encodingÚ_send_query_preparedr�   Úmaybe_add_to_cacheÚresult_queueÚappendÚvalidateÚ_check_resultsÚ_set_results)
r<   rŸ   r‘   r’   Úprepr[   ÚresultsÚresultÚkeyÚqueueds
             r=   rš   zBaseCursor._maybe_prepare_gen  sÑ  è è € ð ×'Ò'¨¨WÑ5Ô5‰
ˆˆdØ•7”:ÐÐà×Ò˜s¨6ÐÑ2Ô2Ð2Ð2ð •w”~Ð%Ð%Ø×"Ò" 4¨Ñ-Ô-Ð-Ø”zÔ+ð WÝ)0°´Ñ)>Ô)>Ð>Ð>Ð>Ð>Ð>Ð>�GØ")ð Wð W˜Ø!œ=­KÒ7Ð7Ý"#Ô"5°fÀtÄ~Ð"VÑ"VÔ"VÐVð 8ð ×%Ò% d¨C¸Ð%Ñ?Ô?Ð?ð
 ŒjÔ"×5Ò5°c¸4ÀÑFÔFˆàŒ:Ôð 	ØˆFØˆØ˜t TÐ*�ØŒJÔ Ô-×4Ò4°d¸F°^ÑDÔDÐDØˆFõ % T¤\Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ˆàˆ?ØŒJÔ ×)Ò)¨#¨t°T¸7ÑCÔCÐCà×Ò˜GÑ$Ô$Ð$Ø×Ò˜'Ñ"Ô"Ð"Ð"Ð"r?   útuple[Prepare, bytes]c                óB   — | j         j                             ||¦  «        S rd   )r/   r�   Úget)r<   rŸ   r‘   s      r=   r²   zBaseCursor._get_prepared@  s   € ð ŒzÔ#×'Ò'¨¨WÑ5Ô5Ð5r?   r¯   c             #  ó¦  K  — |                       |¦  «        E d{V —† |                      ||¦  «        }|                      ||d¬¦  «         |dk     rt          d¦  «        ‚|dk    r| j                             ¦   «          n/t          j        d¬¦  «         | j                             |¦  «         || _	        t          | j        ¦  «        E d{V —† dS )z2Generator to send the query for `Cursor.stream()`.NT)r’   Úforce_extendedr   zsize must be >= 1)Úcheck)r˜   r™   r´   Ú
ValueErrorr+   Úset_single_row_moder"   Úhas_stream_chunkedÚset_chunked_rows_moder8   r!   )r<   r“   r”   r’   r€   rŸ   s         r=   Ú_stream_send_genzBaseCursor._stream_send_genE  sð   è è € ð ×$Ò$ UÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø×!Ò! %¨Ñ0Ô0ˆØ×Ò˜3 v¸dÐÑCÔCÐCØ�!Š8ˆ8ÝÐ0Ñ1Ô1Ð1Ø�QŠYˆYØŒL×,Ò,Ñ.Ô.Ð.Ð.åÔ+°$Ð7Ñ7Ô7Ð7ØŒL×.Ò.¨tÑ4Ô4Ð4Ø ˆÔÝ˜œÑ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r?   rª   úPQGen[PGresult | None]c              #  óÐ  K  — t          | j        ¦  «        E d {V —†}|€d S |j        }|t          k    s|t          k    r@|| _        | j                             ||¬¦  «         |r|                      ¦   «         | _	        |S |t          k    s|t          k    r?|rt          | j        ¦  «        E d {V —†}|°|t          k    rt          j        d¦  «        ‚d S |                      |¦  «        S )N)Úset_loadersz1the operation in stream() didn't produce a result)r    r+   rZ   ro   rp   rH   r(   Úset_pgresultr�   r*   rn   Ú
COMMAND_OKr¸   ÚProgrammingErrorÚ_raise_for_result)r<   rª   rr   rZ   s       r=   Ú_stream_fetchone_genzBaseCursor._stream_fetchone_gen[  s  è è € Ý*/°´Ñ*=Ô*=Ð=Ð=Ð=Ð=Ð=Ð=ˆØˆ;Ø�4à”ˆØ•\Ò!Ð! V­|Ò%;Ð%;ØˆDŒMØŒH×!Ò! #°5Ð!Ñ9Ô9Ð9Øð 8Ø!%×!5Ò!5Ñ!7Ô!7�”ØˆJà•yÒ Ð  F­jÒ$8Ð$8àð 5Ý!& t¤|Ñ!4Ô!4Ð4Ð4Ð4Ð4Ð4Ð4�ð ð 5à�Ò"Ð"ÝÔ(ØGñô ð ð �4ð ×)Ò)¨#Ñ.Ô.Ð.r?   úQuery | Nonec              #  ó  K  — | j         rt          j        d¦  «        ‚|                      ¦   «          | j        r	| j        |ur d| _        t          j        | ¦  «        | _        | j         	                    ¦   «         E d{V —† dS )zŸGenerator to start the processing of a query.

        It is implemented as generator because it may send additional queries,
        such as `begin`.
        úthe cursor is closedN)
rR   r¸   ÚInterfaceErrorr9   r8   r   r#   r(   r/   r˜   )r<   r“   s     r=   r˜   zBaseCursor._start_queryv  s�   è è € ð Œ;ð 	;ÝÔ"Ð#9Ñ:Ô:Ð:à�Š‰ŒˆØÔð 	/ DÔ$4¸EÐ$AÐ$AØ#ˆDÔÝÔ(¨Ñ.Ô.ˆDŒHØ”:×*Ò*Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r?   Ú	statementc              #  óH  K  — | j         j        rt          j        d¦  «        ‚|                      ¦   «         E d{V —† |st          |t          ¦  «        r1t          | j        ¦  «        }| 	                    ||¦  «         |j
        }|                      |¦  «        }|                      |d¬¦  «         t          t          | j        ¦  «        E d{V —†x}¦  «        dk    rt          j        d¦  «        ‚|                      |d         ¦  «         |                      |¦  «         dS )z<Generator implementing sending a command for `Cursor.copy().z$COPY cannot be used in pipeline modeNFr¯   r   z*COPY cannot be mixed with other operationsr   )r/   r›   r¸   ÚNotSupportedErrorr˜   Ú
isinstancer   r   r(   Úconvertr“   r™   r´   r†   r   r+   r×   Ú_check_copy_resultrÁ   )r<   rÞ   r”   rŸ   r“   rÃ   s         r=   Ú_start_copy_genzBaseCursor._start_copy_gen…  s5  è è € ð Œ:Ôð 	NÝÔ%Ð&LÑMÔMÐMà×$Ò$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð ð 	"•Z 	­8Ñ4Ô4ð 	"Ý% d¤hÑ/Ô/ˆCØ�KŠK˜	 6Ñ*Ô*Ð*Øœ	ˆIà×#Ò# IÑ.Ô.ˆà×Ò˜5¨ÐÑ/Ô/Ð/Ý¥g¨d¬lÑ&;Ô&;Ð;Ð;Ð;Ð;Ð;Ð;Ð<ˆwÑ=Ô=ÀÒBÐBÝÔ$Ð%QÑRÔRÐRà×Ò ¨¤
Ñ+Ô+Ð+Ø×Ò˜'Ñ"Ô"Ð"Ð"Ð"r?   F)rË   r’   rË   c          
     óÞ  — |€| j         }n|rt          nt          }|| _        | j        j        rW| j        j        j                             t          | j	        j
        |j        |j        |j        |j        |¬¦  «        ¦  «         dS |s|j        s|t          k    r5| j	         
                    |j        |j        |j        |j        |¬¦  «         dS | j	                             |j        ¦  «         dS )zœ
        Implement part of execute() before waiting common to sync and async.

        This is not a generator, but a normal non-blocking function.
        N)Úparam_formatsÚparam_typesÚresult_format)r1   ÚBINARYr0   rN   r/   r›   Úcommand_queuer¾   r
   r+   Úsend_query_paramsr“   r”   ÚformatsÚtypesÚ
send_query)r<   r“   rË   r’   Úfmts        r=   r´   zBaseCursor._execute_send   s  € ð ˆ>Ø”+ˆCˆCà"Ð,•&�&­ˆCàˆŒàŒ:Ôð 	1ð ŒJÔ Ô.×5Ò5ÝØ”LÔ2Ø”KØ”LØ"'¤-Ø %¤Ø"%ðñ ô ñ	ô 	ð 	ð 	ð 	ð ð 	1˜uœ|ð 	1¨sµfª}¨}ØŒL×*Ò*Ø”Ø”Ø#œmØ!œKØ!ð +ñ ô ð ð ð ð ŒL×#Ò# E¤KÑ0Ô0Ð0Ð0Ð0r?   c                óf   — |                       | j        ¦  «        }|                     ||¦  «         |S rd   )r,   r(   râ   )r<   r“   r”   rŸ   s       r=   r™   zBaseCursor._convert_queryÍ  s0   € ð �oŠo˜dœhÑ'Ô'ˆØ�Š�E˜6Ñ"Ô"Ð"Øˆ
r?   rÃ   úlist[PGresult]c                óÌ   — |st          j        d¦  «        ‚|D ]J}|j        x}t          k    r6|t          k    r+|t
          k    r |t          k    r|                      |¦  «         ŒKdS )zÁ
        Verify that the results of a query are valid.

        Verify that the query returned at least one result and that they all
        represent a valid result from the database.
        zgot no result from the queryN)r¸   ÚInternalErrorrZ   rn   rÖ   ÚEMPTY_QUERYÚ	COPY_BOTHrØ   )r<   rÃ   rr   rZ   s       r=   rÀ   zBaseCursor._check_resultsÔ  s   € ð ð 	BÝ”/Ð"@ÑAÔAÐAàð 	,ð 	,ˆCàœ:Ð%�­)Ò3Ð3Ø�jÒ(Ð(Ø�kÒ)Ð)Ø�iÒ'Ð'à×&Ò& sÑ+Ô+Ð+øð	,ð 	,r?   rÄ   r%   r   c                ó`  — |j         x}t          k    rt          j        || j        ¬¦  «        ‚|t
          k    rt          j        d¦  «        ‚|t          k    s|t          k    s|t          k    rt          j
        d¦  «        ‚t          j        dt          j        |¦  «        j        › �¦  «        ‚)zV
        Raise an appropriate error message for an unexpected database result
        r°   úpipeline abortedz8COPY cannot be used with this method; use copy() insteadz%unexpected result status from query: )rZ   r·   r¸   r¹   rº   ÚPIPELINE_ABORTEDÚPipelineAbortedÚCOPY_INÚCOPY_OUTrõ   r×   ró   r   rY   r[   ©r<   rÄ   rZ   s      r=   rØ   zBaseCursor._raise_for_resultç  s±   € ð ”mÐ#ˆF­Ò3Ð3ÝÔ% f°t´~ÐFÑFÔFÐFØÕ'Ò'Ð'ÝÔ#Ð$6Ñ7Ô7Ð7Ø•wÒÐ &­HÒ"4Ð"4¸Å)Ò8KÐ8KÝÔ$ØJñô ð õ ”/ØW½2¼=ÈÑ;PÔ;PÔ;UÐWÐWñô ð r?   rk   r1   úpq.Format | Nonec                ó^  — || _         | j        |         x}| _        | j                             ||¬¦  «         d| _        |j        t          k    r| j        j        | _	        n'|j        t          k    r| j        j        }|�|nd| _	        |j        | _        |                      ¦   «         | _        dS )zL
        Select one of the results in the cursor as the active one.
        )r1   r   NrF   )rJ   rG   rH   r(   rÕ   rI   rZ   rn   ÚntuplesrK   rû   Úcommand_tuplesÚcommand_statusrL   r�   r*   )r<   rk   r1   rr   Únrowss        r=   r‡   z!BaseCursor._select_current_resultø  s¨   € ð ˆŒØ"œm¨AÔ.Ð.ˆˆdŒmð
 	Œ×Ò˜c¨&ÐÑ1Ô1Ð1àˆŒ	àŒ:�Ò"Ð"Ø!œ]Ô2ˆDŒNˆNð
 ŒZ�8Ò#Ð#Ø”MÔ0ˆEØ&+Ð&7˜U˜U¸RˆDŒNà!Ô0ˆÔØ×-Ò-Ñ/Ô/ˆŒˆˆr?   c                óF  — | j         €#|| j        d d …<   |                      d¦  «         d S | j         r=| j         }| j                             |¦  «         |r|                      d¦  «         d S d S |r.|d         j        | _        |D ]}| xj        |j        pdz  c_        Œd S d S rE   )rM   rG   r‡   Úextendr  rL   rK   r   )r<   rÃ   Úfirst_batchrr   s       r=   rÁ   zBaseCursor._set_results  sâ   € ØÔ#Ð+à&ˆDŒM˜!˜!˜!ÑØ×'Ò'¨Ñ*Ô*Ð*Ð*Ð*àÔ%ð 	>Ø"œmÐ+ˆKØŒM× Ò  Ñ)Ô)Ð)Øð /Ø×+Ò+¨AÑ.Ô.Ð.Ð.Ð.ð/ð /ð ð >Ø&-¨b¤kÔ&@�Ô#Ø"ð >ð >�CØ�N”N cÔ&8Ð&=¸AÑ=�N”N�Nð>ð >ð>ð >r?   Úwselfú#ReferenceType[BaseCursor[Any, Any]]ÚoidÚloaderútype[Loader]c                óâ   —  |¦   «         x}sdS t          j        |¦  «        |_        |j        }|j        t          |j        ¦  «        k     r#|                     |j        ¦  «         ||_        dS dS )z•Callback called when self.adapters.set_loaders is called.

        Allow to change the loaders after the results have been returned already.
        N)r   r#   r(   rI   rJ   r†   rG   r‡   )r]   r  r  r	  r<   Úposs         r=   r:   zBaseCursor._loaders_changed'  sv   € ð ˜™œ��ð 	ØˆFõ Ô$ TÑ*Ô*ˆŒØŒiˆØŒ=�3˜tœ}Ñ-Ô-Ò-Ð-Ø×'Ò'¨¬Ñ6Ô6Ð6ØˆDŒIˆIˆIð .Ð-r?   r[   Úbytesc                óJ  — | j         j        ro| j         j        j                             t	          | j        j        ||j        |j        ¬¦  «        ¦  «         | j         j        j	                             d ¦  «         d S | j                             ||j        |j        ¬¦  «         d S )N)rç   )
r/   r›   rê   r¾   r
   r+   Úsend_preparer“   rí   r½   )r<   r[   r“   s      r=   r¶   zBaseCursor._send_prepare9  s¢   € ØŒ:Ôð 	RØŒJÔ Ô.×5Ò5ÝØ”LÔ-ØØ”KØ %¤ð	ñ ô ñô ð ð ŒJÔ Ô-×4Ò4°TÑ:Ô:Ð:Ð:Ð:àŒL×%Ò% d¨E¬KÀUÄ[Ð%ÑQÔQÐQÐQÐQr?   c          	     ó:  — |€| j         }n|rt          nt          }| j        j        rL| j        j        j                             t          | j        j	        ||j
        |j        |¬¦  «        ¦  «         d S | j         	                    ||j
        |j        |¬¦  «         d S )N)ræ   rè   )r1   ré   r0   r/   r›   rê   r¾   r
   r+   Úsend_query_preparedr”   rì   )r<   r[   rŸ   r’   rï   s        r=   r»   zBaseCursor._send_query_preparedG  s¹   € ð ˆ>Ø”+ˆCˆCà"Ð,•&�&­ˆCàŒ:Ôð 	ØŒJÔ Ô.×5Ò5ÝØ”LÔ4ØØ”JØ"%¤+Ø"%ðñ ô ñô ð ð ð ð ŒL×,Ò,Ø�c”j°´È3ð -ñ ô ð ð ð r?   c                ó  — | j         rt          j        d¦  «        ‚| j        x}st          j        d¦  «        ‚|j        x}t          k    r|S |t          k    rt          j        || j	        ¬¦  «        ‚|t          k    rt          j        d¦  «        ‚|j        rd|j                             ¦   «         › d�}n6	 t          j        |¦  «        j        }n# t"          $ r |› d�}Y nw xY wd|› d�}t          j        d	|› �¦  «        ‚)
NrÜ   zno result availabler°   r÷   z (command status: ú)z
 - unknownz (result status: z)the last operation didn't produce records)rR   r¸   rÝ   rH   r×   rZ   rn   r·   r¹   rº   rø   rù   r  r‹   r   rY   r[   rÍ   )r<   rr   rZ   ÚdetailÚstatus_names        r=   Ú_check_result_for_fetchz"BaseCursor._check_result_for_fetch^  s9  € ØŒ;ð 	;ÝÔ"Ð#9Ñ:Ô:Ð:à”}Ð$�ð 	<ÝÔ$Ð%:Ñ;Ô;Ð;à”jÐ ˆF¥YÒ.Ð.ØˆJØ•{Ò"Ð"ÝÔ% c°D´NÐCÑCÔCÐCØÕ'Ò'Ð'ÝÔ#Ð$6Ñ7Ô7Ð7àÔ!ð <ØL¨cÔ.@×.GÒ.GÑ.IÔ.IÐLÐLÐL��ð8Ý"$¤-°Ñ"7Ô"7Ô"<�K�KøÝ!ð 8ð 8ð 8Ø%+Ð"7Ð"7Ð"7�K�K�Kð8øøøà;¨[Ð;Ð;Ð;�ÝÔ$ØD¸FÐDÐDñô ð s   Â8C ÃC$Ã#C$c                óè   — |j         }|t          k    s|t          k    rdS |t          k    rt	          j        || j        ¬¦  «        ‚t	          j        dt          j	        |¦  «        j
        › �¦  «        ‚)zV
        Check that the value returned in a copy() operation is a legit COPY.
        Nr°   zZcopy() should be used only with COPY ... TO STDOUT or COPY ... FROM STDIN statements, got )rZ   rú   rû   r·   r¸   r¹   rº   r×   r   rY   r[   rü   s      r=   rã   zBaseCursor._check_copy_resultx  s   € ð ”ˆØ•WÒÐ ­(Ò 2Ð 2ØˆFØ•{Ò"Ð"ÝÔ% f°t´~ÐFÑFÔFÐFåÔ$ðLÝ/1¬}¸VÑ/DÔ/DÔ/IðLð Lñô ð r?   ÚvalueÚmodec                óÜ   — |                       ¦   «         }|dk    r| j        |z   }n|dk    r|}nt          d|› d�¦  «        ‚d|cxk    r|j        k     sn t	          d¦  «        ‚|| _        d S )NÚrelativeÚabsolutez
bad mode: z'. It should be 'relative' or 'absolute'r   zposition out of bound)r  rI   rÍ   rÿ   Ú
IndexError)r<   r  r  rr   Únewposs        r=   Ú_scrollzBaseCursor._scroll‡  s“   € Ø×*Ò*Ñ,Ô,ˆØ�:ÒÐØ”Y Ñ&ˆFˆFØ�ZÒÐØˆFˆFåÐW¨$ÐWÐWÐWÑXÔXÐXØ�FÐ(Ð(Ò(Ð(˜Sœ[Ò(Ð(Ð(Ð(ÝÐ4Ñ5Ô5Ð5ØˆŒ	ˆ	ˆ	r?   c                ó@   — |                       d¬¦  «         d| _        dS )z3Non-blocking part of closing. Common to sync/async.F)r@   TN)r9   r7   ra   s    r=   Ú_closezBaseCursor._close“  s#   € ð 	�Š ˆÑ&Ô&Ð&ØˆŒˆˆr?   c                ó   — | j         j        S rd   )r+   rº   ra   s    r=   rº   zBaseCursor._encodingš  s   € àŒ|Ô%Ð%r?   )r-   r   )T)r@   rA   rB   rC   )rB   rO   )rB   r   )rB   rb   )rB   rA   )rB   rf   )rB   rt   )rB   rw   )r{   r|   rB   rC   rd   )r€   r   r�   rw   rB   rC   )rB   r„   )rB   r‰   )rB   r)   )
r“   r   r”   r•   r‘   r„   r’   r„   rB   r–   )r“   r   r¡   r¢   r£   rA   rB   r–   )rŸ   r   r‘   r„   r’   r„   rB   r–   )rŸ   r   r‘   r„   rB   rÇ   )
r“   r   r”   r•   r’   r„   r€   rt   rB   r–   )rª   rA   rB   rÒ   )r“   rÚ   rB   r–   )rÞ   r   r”   r•   rB   r–   )r“   r   rË   rA   r’   r„   rB   rC   )r“   r   r”   r•   rB   r   )rÃ   rñ   rB   rC   )rÄ   r%   rB   r   )rk   rt   r1   rý   rB   rC   )r  r  r  rt   r	  r
  rB   rC   )r[   r  r“   r   rB   rC   )r[   r  rŸ   r   r’   r„   rB   rC   )rB   r%   )rÄ   r%   rB   rC   )r  rt   r  rO   rB   rC   )rB   rC   )/Ú__name__rW   rX   ÚsplitÚ	__slots__Ú__annotations__r   r,   r>   r9   r_   Úpropertyr-   r4   rR   rs   rv   rz   r~   rƒ   rˆ   rŒ   r�   r    r«   r­   rš   r²   rÑ   rÙ   r˜   rä   r´   r™   rÀ   rØ   r‡   rÁ   Úclassmethodr:   r¶   r»   r  rã   r  r!  rº   ri   r?   r=   r'   r'   0   se  € € € € € € ð÷
 ŠE‰GŒGð ð ÐÐÑØÐÐÑØ€O€O�OØ&3€JÐ3Ð3Ð3Ñ3ð
ð 
ð 
ð 
ðð ð ð ð ð	>ð 	>ð 	>ð 	>ð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð* ðð ð ñ „Xðð ð-ð -ð -ñ „Xð-ðð ð ð ðð ð ð ð ðð ð ð ð ðMð Mð Mñ „XðMð"ð "ð "ð "ð !%ðAð
  $Ø"ðAð Að Að Að Að Að$!Að !Að !Að !AðFAð Að Að Að>  $Ø"ð+#ð +#ð +#ð +#ð +#ð +#ð\ :>ð6ð 6ð 6ð 6ð 6ð !%ð&ð
 #ð&ð &ð &ð &ð &ð &ð,/ð /ð /ð /ð6-ð -ð -ð -ð -ð  9=ð#ð #ð #ð #ð #ð>  %Ø"ð+1ð +1ð +1ð +1ð +1ð +1ð\ 59ðð ð ð ð ð,ð ,ð ,ð ,ð&ð ð ð ð"0ð 0ð 0ð 0ð 0ð6>ð >ð >ð >ð( ðð ð ñ „[ðð"Rð Rð Rð Rð IMðð ð ð ð ð ð.ð ð ð ð4ð ð ð ð
ð 
ð 
ð 
ðð ð ð ð ð&ð &ð &ñ „Xð&ð &ð &r?   r'   N)DÚ__doc__Ú
__future__r   Útypingr   r   r   r   Úweakrefr   r	   Ú	functoolsr
   Úcollections.abcr   r   Ú r   r   r¸   r   Úabcr   r   r   r   r   Úrowsr   r   Ú_columnr   Ú_compatr   Úpq.miscr   Ú_queriesr   r   Ú
_preparingr   Ú
generatorsr   r    r!   Ú_capabilitiesr"   r#   Úpq.abcr$   r%   ÚFormatr0   ré   rY   rô   rÖ   rn   rû   rú   rõ   r·   ro   rp   rø   ÚTransactionStatusÚACTIVEr'   ri   r?   r=   ú<module>r=     sŽ  ððð ð #Ð "Ð "Ð "Ð "Ð "à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð )Ø Ð Ð Ð Ð Ð Ø(Ð(Ð(Ð(Ð(Ð(Ð(Ð(à	„y„~€Ø	ŒÔ	€àŒmÔ'€ØŒ]Ô%€
ØŒMÔ#€	ØŒ=Ô!€Ø
Œ-Ô
€ØŒMÔ#€	ØŒmÔ'€ØŒ}Ô)€ØŒ}Ô)€Ø”=Ô1Ð à	Ô	Ô	$€ðl	&ð l	&ð l	&ð l	&ð l	&�˜¨Ð,Ô-ñ l	&ô l	&ð l	&ð l	&ð l	&r?   