§
    YŠtjq  ã                  óV  — d Z ddl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mZ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Ze
j        j        Ze
j        j        Ze
j        j        Ze
j        j         Z e
j!        j"        Z"e
j!        j#        Z# G d„ deeef         ¦  «        Z$dS )z*
psycopg server-side cursor base objects.
é    )Úannotations)ÚAny)Úwarné   )Úerrors)ÚpqÚsql)ÚConnectionTypeÚParamsÚPQGenÚQuery)ÚRow)ÚInterpolationÚTemplate)Úexecute)Ú
BaseCursoréd   c                  óô   ‡ — e Zd ZdZd                     ¦   «         Zd'd	„Zefd(d„Zd)ˆ fd„Z	e
d)d„¦   «         Ze
d*d„¦   «         Ze
d+d„¦   «         Ze
d,d„¦   «         Z	 d-d.d„Zd/d„Zd/d„Zd0d!„Zd1d%„Zd2d&„Zˆ xZS )3ÚServerCursorMixinzDMixin to add ServerCursor behaviour and implementation a BaseCursor.zY_name _scrollable _withhold _described itersize _format
        _iter_rows _page_pos
    ÚnameÚstrÚ
scrollableúbool | NoneÚwithholdÚboolc                óŠ   — || _         || _        || _        d| _        t          | _        t          | _        d | _        d| _	        d S )NFr   )
Ú_nameÚ_scrollableÚ	_withholdÚ
_describedÚDEFAULT_ITERSIZEÚitersizeÚTEXTÚ_formatÚ
_iter_rowsÚ	_page_pos)Úselfr   r   r   s       úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/psycopg/_server_cursor_base.pyÚ__init__zServerCursorMixin.__init__'   sA   € ØˆŒ
Ø%ˆÔØ!ˆŒØˆŒÝ-ˆŒÝˆŒð -1ˆŒØˆŒˆˆó    Ú_ServerCursorMixin__warnr   ÚreturnÚNonec                óp   — | j         rd S  |t                               | ¦  «        › d�t          ¦  «         d S )Nz[ was deleted while still open. Please use 'with' or '.close()' to close the cursor properly)ÚclosedÚobjectÚ__repr__ÚResourceWarning)r'   r+   s     r(   Ú__del__zServerCursorMixin.__del__3   sS   € ØŒ;ð 	ØˆFàˆÝ�Š˜tÑ$Ô$ð Lð Lð Låñ	
ô 	
ð 	
ð 	
ð 	
r*   c                óÎ   •— t          ¦   «                              ¦   «                              d d¦  «        }|                     d| j        ›¦  «         d                     |¦  «        S )Nr   ú )Úsuperr1   ÚsplitÚinsertr   Újoin)r'   ÚpartsÚ	__class__s     €r(   r1   zServerCursorMixin.__repr__=   sQ   ø€ å‘”× Ò Ñ"Ô"×(Ò(¨¨qÑ1Ô1ˆØ�Š�Q˜4œ:Ð)Ñ*Ô*Ð*Ø�xŠx˜‰ŒÐr*   c                ó   — | j         S )zThe name of the cursor.)r   ©r'   s    r(   r   zServerCursorMixin.nameC   s   € ð ŒzÐr*   c                ó   — | j         S )z¯
        Whether the cursor is scrollable or not.

        If `!None` leave the choice to the server. Use `!True` if you want to
        use `scroll()` on the cursor.
        )r   r=   s    r(   r   zServerCursorMixin.scrollableH   s   € ð ÔÐr*   c                ó   — | j         S )zY
        If the cursor can be used after the creating transaction has committed.
        )r   r=   s    r(   r   zServerCursorMixin.withholdR   s   € ð
 Œ~Ðr*   ú
int | Nonec                ó`   — | j         }|o|j        t          k    p
|j        dk    }|r| j        ndS )zoIndex of the next row to fetch in the current result.

        `!None` if there is no result to fetch.
        r*   N)ÚpgresultÚstatusÚ	TUPLES_OKÚcommand_statusÚ_pos)r'   ÚresÚtupless      r(   Ú	rownumberzServerCursorMixin.rownumberY   s<   € ð Œmˆð ÐO˜#œ*­	Ò1ÐN°SÔ5GÈ3Ò5NˆØ"Ð,ˆtŒyˆy¨Ð,r*   NÚqueryr   ÚparamsúParams | NoneÚbinaryúPQGen[None]c              #  ó>  K  — |                       |¦  «        }| j        r!|                      ¦   «         E d{V —† d| _        d| _        |                      |¦  «        E d{V —† |                      ||¦  «        }|                      |d¬¦  «         t          | j        j	        ¦  «        E d{V —†}|d         j
        t          k    r|                      |d         ¦  «         |€| j        | _        n|rt          nt           | _        |                      ¦   «         E d{V —† dS )z0Generator implementing `ServerCursor.execute()`.NFT)Úforce_extendedéÿÿÿÿ)Ú_make_declare_statementr    Ú
_close_genr%   Ú_start_queryÚ_convert_queryÚ_execute_sendr   Ú_connÚpgconnrC   Ú
COMMAND_OKÚ_raise_for_resultÚformatr$   ÚBINARYr#   Ú_describe_gen)r'   rJ   rK   rM   ÚpgqÚresultss         r(   Ú_declare_genzServerCursorMixin._declare_genf   sG  è è € ð
 ×,Ò,¨UÑ3Ô3ˆð Œ?ð 	$Ø—’Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø#ˆDŒOàˆŒØ×$Ò$ UÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø×!Ò! %¨Ñ0Ô0ˆØ×Ò˜3¨tÐÑ4Ô4Ð4Ý$ T¤ZÔ%6Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7ˆØ�2Œ;Ô¥Ò+Ð+Ø×"Ò" 7¨2¤;Ñ/Ô/Ð/ð ˆ>Øœ;ˆDŒLˆLà%+Ð5�6˜6µˆDŒLð ×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r*   c              #  ó*  K  — | j                              | j                             | j        ¦  «        ¦  «         t          | j         ¦  «        E d {V —†}|                      |¦  «         || _        |                      d| j	        ¬¦  «         d| _
        d S )Nr   )r[   T)Ú_pgconnÚsend_describe_portalr   ÚencodeÚ	_encodingr   Ú_check_resultsÚ_resultsÚ_select_current_resultr$   r    )r'   r_   s     r(   r]   zServerCursorMixin._describe_genƒ   s�   è è € ØŒ×)Ò)¨$¬*×*;Ò*;¸D¼NÑ*KÔ*KÑLÔLÐLÝ$ T¤\Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ˆØ×Ò˜GÑ$Ô$Ð$ØˆŒØ×#Ò# A¨d¬lÐ#Ñ;Ô;Ð;ØˆŒˆˆr*   c              #  ó,  K  — | j         j        j        }|t          k    r|t          k    rd S | j        s|t          k    rd S | j        sot          j        d¦  «         	                    t          j
        | j        ¦  «        ¦  «        }| j                              |¦  «        E d {V —†}|€J ‚|j        dk    rd S t          j        d¦  «         	                    t          j        | j        ¦  «        ¦  «        }| j                              |¦  «        E d {V —† d S )Nz3SELECT 1 FROM pg_catalog.pg_cursors WHERE name = {}r   zCLOSE {})rW   rX   Útransaction_statusÚIDLEÚINTRANSr   r    r	   ÚSQLr[   ÚLiteralr   Ú_exec_commandÚntuplesÚ
Identifier)r'   ÚtsrJ   rG   s       r(   rS   zServerCursorMixin._close_gen‹   s  è è € ØŒZÔÔ1ˆð •Š:ˆ:˜"¥š-˜-ØˆFð Œ~ð 	 "­¢* *ØˆFð Œð 	Ý”GØEñô çŠf•S”[ ¤Ñ,Ô,Ñ-Ô-ð ð "œZ×5Ò5°eÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<ˆCà�?�?�?ØŒ{˜aÒÐØ�å”˜
Ñ#Ô#×*Ò*­3¬>¸$¼*Ñ+EÔ+EÑFÔFˆØ”:×+Ò+¨EÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r*   ÚnumúPQGen[list[Row]]c              #  óh  K  — | j         rt          j        d¦  «        ‚| j        s4|                      ¦   «         E d {V —† |                      ¦   «         E d {V —† t          j        d¦  «                             |€t          j        d¦  «        nt          j	        |¦  «        t          j
        | j        ¦  «        ¦  «        }| j                             || j        ¬¦  «        E d {V —†}|€J ‚|| _        | j                             |d¬¦  «         | j                             d|j        | j        ¦  «        S )Nzthe cursor is closedzFETCH FORWARD {} FROM {}ÚALL)Úresult_formatF)Úset_loadersr   )r/   ÚeÚInterfaceErrorr    rT   r]   r	   rm   r[   rn   rq   r   rW   ro   r$   rB   Ú_txÚset_pgresultÚ	load_rowsrp   Ú	_make_row)r'   rs   rJ   rG   s       r(   Ú
_fetch_genzServerCursorMixin._fetch_gen¥   s9  è è € ØŒ;ð 	;ÝÔ"Ð#9Ñ:Ô:Ð:àŒð 	,Ø×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+å”Ð2Ñ3Ô3×:Ò:Ø!˜k�CŒG�E‰NŒNˆN­s¬{¸3Ñ/?Ô/?ÝŒN˜4œ:Ñ&Ô&ñ
ô 
ˆð œ×1Ò1°%ÀtÄ|Ð1ÑTÔTÐTÐTÐTÐTÐTÐTˆàˆˆˆàˆŒØŒ×Ò˜c¨uÐÑ5Ô5Ð5ØŒx×!Ò! ! S¤[°$´.ÑAÔAÐAr*   ÚvalueÚintÚmodec              #  óP  K  — |dvrt          d|› d�¦  «        ‚t          j        d¦  «                             t          j        |dk    rdnd¦  «        t          j        |¦  «        t          j        | j        ¦  «        ¦  «        }| j                             |¦  «        E d {V —† d S )N)ÚrelativeÚabsolutez
bad mode: z'. It should be 'relative' or 'absolute'zMOVE{} {} FROM {}r…   z	 ABSOLUTEÚ )	Ú
ValueErrorr	   rm   r[   rn   rq   r   rW   ro   )r'   r€   r‚   rJ   s       r(   Ú_scroll_genzServerCursorMixin._scroll_gen¹   s³   è è € ØÐ/Ð/Ð/ÝÐW¨$ÐWÐWÐWÑXÔXÐXÝ”Ð+Ñ,Ô,×3Ò3ÝŒG 4¨:Ò#5Ð#5�K�K¸2Ñ>Ô>ÝŒK˜ÑÔÝŒN˜4œ:Ñ&Ô&ñ
ô 
ˆð
 ”:×+Ò+¨EÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r*   c           	     ó^  — t          j        d¦  «        t          j        | j        ¦  «        g}| j        �0|                     t          j        | j        rdnd¦  «        ¦  «         |                     t          j        d¦  «        ¦  «         | j        r'|                     t          j        d¦  «        ¦  «         |                     t          j        d¦  «        ¦  «         t          j        d¦  «                             |¦  «        }t          |t          ¦  «        r0t          t          |dd d	¦  «        t          |d
d d	¦  «        ¦  «        S t          |t          ¦  «        r|                     | j        ¦  «        }t          |t           j        ¦  «        st          j        |¦  «        }||z   S )NÚDECLAREÚSCROLLz	NO SCROLLÚCURSORz	WITH HOLDzFOR r5   ÚdeclareÚqrJ   )r	   rm   rq   r   r   Úappendr   r9   Ú
isinstancer   r   ÚbytesÚdecodere   Ú
Composable)r'   rJ   r:   r�   s       r(   rR   z)ServerCursorMixin._make_declare_statementÃ   sb  € Ý”˜Ñ#Ô#¥S¤^°D´JÑ%?Ô%?Ð@ˆØÔÐ'Ø�LŠL�œ¨TÔ-=Ð!N  À;ÑOÔOÑPÔPÐPØ�Š•S”W˜XÑ&Ô&Ñ'Ô'Ð'ØŒ>ð 	/Ø�LŠL�œ Ñ-Ô-Ñ.Ô.Ð.Ø�Š•S”W˜V‘_”_Ñ%Ô%Ð%Ý”'˜#‘,”,×#Ò# EÑ*Ô*ˆå�e�XÑ&Ô&ð 	åÝ˜g y°$¸Ñ<Ô<Ý˜e W¨d°CÑ8Ô8ñô ð õ
 �e�UÑ#Ô#ð 	1Ø—L’L ¤Ñ0Ô0ˆEÝ˜%¥¤Ñ0Ô0ð 	#Ý”G˜E‘N”NˆEà˜‰Ðr*   )r   r   r   r   r   r   )r+   r   r,   r-   )r,   r   )r,   r   )r,   r   )r,   r@   )NN)rJ   r   rK   rL   rM   r   r,   rN   )r,   rN   )rs   r@   r,   rt   )r€   r�   r‚   r   r,   rN   )rJ   r   r,   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   Ú	__slots__r)   r   r3   r1   Úpropertyr   r   r   rI   r`   r]   rS   r   rˆ   rR   Ú__classcell__)r;   s   @r(   r   r       s�  ø€ € € € € ØNÐNðçŠ‰Œð ð
ð 
ð 
ð 
ð %)ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ðð ð ñ „Xðð ð ð  ð  ñ „Xð ð ðð ð ñ „Xðð ð
-ð 
-ð 
-ñ „Xð
-ð QUð(ð (ð (ð (ð (ð:ð ð ð ð3ð 3ð 3ð 3ð4Bð Bð Bð Bð(3ð 3ð 3ð 3ðð ð ð ð ð ð ð r*   r   N)%r—   Ú
__future__r   Útypingr   Úwarningsr   r†   r   ry   r   r	   Úabcr
   r   r   r   Úrowsr   Ú_compatr   r   Ú
generatorsr   Ú_cursor_baser   r!   ÚFormatr#   r\   Ú
ExecStatusrY   rD   ÚTransactionStatusrk   rl   r   © r*   r(   ú<module>r§      sn  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $àÐ à	„y„~€Ø	ŒÔ	€àŒ]Ô%€
ØŒMÔ#€	à	ÔÔ €Ø
Ô
Ô
&€ðyð yð yð yð y˜
 >°3Ð#6Ô7ñ yô yð yð yð yr*   