§
    YŠtj.  ã                  óˆ  — U d Z ddlmZ ddlmZmZmZm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 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mZ ddlmZ erddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ dZ%de&d<   e'e(ej)        f         Z*de&d<   e'e(ej+        f         Z,de&d<   ej-        j.        Z.ej.        Z/ G d„ de¦  «        Z0dS )a7  
Helper object to transform values between Python and PostgreSQL

Python implementation of the object. Use the `_transformer module to import
the right implementation (Python or C). The public place where the object
is exported is `psycopg.adapt` (which we may not use to avoid circular
dependencies problems).
é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚDefaultDictÚ	TypeAlias)Údefaultdict)ÚSequenceé   )Úabc)Úerrors)Úpq)ÚAdaptContextÚBufferÚLoadFuncÚNoneTypeÚPyFormat)ÚRowÚRowMaker)ÚINVALID_OIDÚTEXT_OID)Úconn_encoding)Ú	DumperKey)ÚAdaptersMap)ÚPGresult)ÚBaseConnectionzdict[DumperKey, abc.Dumper]r   ÚDumperCacheÚOidDumperCacheÚLoaderCachec                  ó\  — e Zd ZU dZdZd                     ¦   «         Zded<   ded<   ded	<   d
ed<   ded<   dDdEd„ZedFd„¦   «         Z	e
dGd„¦   «         Ze
dHd„¦   «         Ze
dId„¦   «         Ze
dJd„¦   «         ZdddœdKd"„ZdLd%„ZdLd&„ZdMd+„ZdNd/„ZdOd2„ZdPd3„ZdQd5„ZdRd;„ZdSd>„ZdTdA„ZdUdC„ZdS )VÚTransformeraJ  
    An object that can adapt efficiently between Python and PostgreSQL.

    The life cycle of the object is the query, so it is assumed that attributes
    such as the server version or the connection encoding will not change. The
    object have its state so adapting several values of the same type can be
    optimised.

    zpsycopg.adaptz¡
        types formats
        _conn _adapters _pgresult _dumpers _loaders _encoding _none_oid
        _oid_dumpers _oid_types _row_dumpers _row_loaders
        ztuple[int, ...] | NoneÚtypeszlist[pq.Format] | NoneÚformatsr   Ú	_adaptersúPGresult | NoneÚ	_pgresultÚintÚ	_none_oidNÚcontextúAdaptContext | Nonec                ó*  — d x| _         x| _        | _        |r|j        | _        |j        | _        nddlm} |j        | _        d | _        |  t          t          ¦  «        | _        |  d | _        i i f| _        d | _        g | _        i | _        d| _        d S )Nr
   )ÚpostgresÚ )r%   r!   r"   Úadaptersr#   Ú
connectionÚ_connr,   r+   r   ÚdictÚ_dumpersÚ_oid_dumpersÚ_loadersÚ_row_dumpersÚ_row_loadersÚ
_oid_typesÚ	_encoding)Úselfr(   r+   s      úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/psycopg/_py_transformer.pyÚ__init__zTransformer.__init__B   s´   € Ø59Ð9ˆŒÐ9˜œ d¤lð ð 	Ø$Ô-ˆDŒNØ Ô+ˆDŒJˆJà"Ð"Ð"Ð"Ð"Ð"à%Ô.ˆDŒNØˆDŒJð 	Ð9Ý#¥DÑ)Ô)ˆŒð 	ÐGØ ˆÔð ;=¸b¸ˆŒà59ˆÔð -/ˆÔð -/ˆŒàˆŒˆˆó    Úreturnc                óF   — t          |t          ¦  «        r|S  | |¦  «        S )z
        Return a Transformer from an AdaptContext.

        If the context is a Transformer instance, just return it.
        )Ú
isinstancer    )Úclsr(   s     r9   Úfrom_contextzTransformer.from_contextf   s)   € õ �g�{Ñ+Ô+ð 	 ØˆNà�3�w‘<”<Ðr;   úBaseConnection[Any] | Nonec                ó   — | j         S ©N)r/   ©r8   s    r9   r.   zTransformer.connectionr   s
   € àŒzÐr;   Ústrc                óP   — | j         st          | j        ¦  «        | _         | j         S rC   )r7   r   r.   rD   s    r9   ÚencodingzTransformer.encodingv   s%   € àŒ~ð 	<Ý*¨4¬?Ñ;Ô;ˆDŒNØŒ~Ðr;   c                ó   — | j         S rC   )r#   rD   s    r9   r-   zTransformer.adapters|   ó
   € àŒ~Ðr;   c                ó   — | j         S rC   )r%   rD   s    r9   ÚpgresultzTransformer.pgresult€   rI   r;   T)Úset_loadersÚformatÚresultrL   ÚboolrM   úpq.Format | NoneÚNonec               ó  ‡ ‡‡— ‰‰ _         ‰sdx‰ _        ‰ _        |rg ‰ _        d S ‰j        ‰ _        ‰j        x}‰ _        |sd S |s	g ‰ _        d S |€‰                     d¦  «        n|Šˆˆˆ fd„t          |¦  «        D ¦   «         ‰ _        d S )Nr   c                ól   •— g | ]0}‰                      ‰                     |¦  «        ‰¦  «        j        ‘Œ1S © )Ú
get_loaderÚftypeÚload)Ú.0ÚiÚfmtrN   r8   s     €€€r9   ú
<listcomp>z,Transformer.set_pgresult.<locals>.<listcomp>Ÿ   sA   ø€ ð 
ð 
ð 
Ø;<ˆD�OŠO˜FŸLšL¨™OœO¨SÑ1Ô1Ô6ð
ð 
ð 
r;   )r%   Ú_nfieldsÚ_ntuplesr5   ÚntuplesÚnfieldsÚfformatÚrange)r8   rN   rL   rM   ÚnfrZ   s   ``   @r9   Úset_pgresultzTransformer.set_pgresult„   sÏ   øøø€ ð  ˆŒàð 	Ø,-Ð-ˆDŒM˜DœMØð 'Ø$&�Ô!ØˆFàœˆŒØ#œ^Ð+ˆˆTŒ]àð 	ØˆFàð 	Ø "ˆDÔØˆFð $* >ˆf�nŠn˜QÑÔÐ°vˆð
ð 
ð 
ð 
ð 
ð 
Ý@EÀbÁ	Ä	ð
ñ 
ô 
ˆÔÐÐr;   úSequence[int]ú	pq.Formatc                óŠ   ‡ ‡— ˆˆ fd„|D ¦   «         ‰ _         t          |¦  «        ‰ _        ‰gt          |¦  «        z  ‰ _        d S )Nc                ó<   •— g | ]}‰                      |‰¦  «        ‘ŒS rT   )Úget_dumper_by_oid©rX   ÚoidrM   r8   s     €€r9   r[   z0Transformer.set_dumper_types.<locals>.<listcomp>¤   s)   ø€ ÐRÐRÐRÀS˜T×3Ò3°C¸Ñ@Ô@ÐRÐRÐRr;   )r4   Útupler!   Úlenr"   ©r8   r!   rM   s   ` `r9   Úset_dumper_typeszTransformer.set_dumper_types£   sH   øø€ ØRÐRÐRÐRÐRÈEÐRÑRÔRˆÔÝ˜5‘\”\ˆŒ
Ø�x¥# e¡*¤*Ñ,ˆŒˆˆr;   c                ó2   ‡ ‡— ˆˆ fd„|D ¦   «         ‰ _         d S )Nc                óF   •— g | ]}‰                      |‰¦  «        j        ‘ŒS rT   )rU   rW   ri   s     €€r9   r[   z0Transformer.set_loader_types.<locals>.<listcomp>©   s*   ø€ ÐPÐPÐPÀ3˜TŸ_š_¨S°&Ñ9Ô9Ô>ÐPÐPÐPr;   ©r5   rm   s   ` `r9   Úset_loader_typeszTransformer.set_loader_types¨   s)   øø€ ØPÐPÐPÐPÐPÈ%ÐPÑPÔPˆÔÐÐr;   ÚparamsúSequence[Any]úSequence[PyFormat]úSequence[Buffer | None]c                óŽ  — t          |¦  «        }d g|z  }| j        r…t          | j        ¦  «        |k    r,t          j        dt          | j        ¦  «        › d|› �¦  «        ‚t	          |¦  «        D ]/}||         x}�#| j        |                              |¦  «        ||<   Œ0|S |                      ¦   «         g|z  }t          g|z  }t	          |¦  «        D ]U}||         x}€Œ|                      |||         ¦  «        }	|	                     |¦  «        ||<   |	j	        ||<   |	j
        ||<   ŒVt          |¦  «        | _        || _        |S )Nz	expected z values in row, got )rl   r4   ÚeÚ	DataErrorra   ÚdumpÚ_get_none_oidÚTEXTÚ
get_dumperrj   rM   rk   r!   r"   )
r8   rs   r"   ÚnparamsÚoutrY   Úparamr!   Ú	pqformatsÚdumpers
             r9   Údump_sequencezTransformer.dump_sequence«   sd  € õ �f‘+”+ˆØ$( 6¨GÑ#3ˆð
 Ôð 	Ý�4Ô$Ñ%Ô%¨Ò0Ð0Ý”kØU¥ DÔ$5Ñ 6Ô 6ÐUÐUÈGÐUÐUñô ð õ ˜7‘^”^ð >ð >�Ø# AœYÐ&�EÐ3Ø!Ô.¨qÔ1×6Ò6°uÑ=Ô=�C˜‘FøØˆJà×#Ò#Ñ%Ô%Ð&¨Ñ0ˆÝ�F˜WÑ$ˆ	å�w‘”ð 	)ð 	)ˆAØ œÐ"�Ð+ØØ—_’_ U¨G°A¬JÑ7Ô7ˆFØ—[’[ Ñ'Ô'ˆC�‰FØ”zˆE�!‰HØ!œ=ˆI�a‰LˆLå˜5‘\”\ˆŒ
Ø ˆŒàˆ
r;   Úobjr   Úbytesc                óH  — |                       |t          ¦  «        }|                     |¦  «        }|j        }|rÄ|rÂ|d         dk    r¶|t          k    r«	 | j        |         }n“# t          $ r† | j        j         	                    |¦  «        x}rV|dk     r |j
                             | j        ¦  «        }n|j                             | j        ¦  «        }||j        k    r|dz  }nd}|| j        |<   Y nw xY w|rd||fz  }t          |t           ¦  «        st!          |¦  «        }|S )Néÿÿÿÿé'   i    s   []r;   s   %s::%s)r}   ÚPY_TEXTÚquoterj   r   r6   ÚKeyErrorr-   r!   ÚgetÚnameÚencoderG   ÚregtypeÚ	array_oidr>   r…   )r8   r„   r‚   Úrvrj   Útype_sqlÚtis          r9   Ú
as_literalzTransformer.as_literalÎ   sB  € Ø—’ ¥gÑ.Ô.ˆØ�\Š\˜#ÑÔˆð ŒjˆØð 	0�2ð 	0˜"˜Rœ& GÒ+Ð+°µx²°ð0Øœ?¨3Ô/��øÝð 0ð 0ð 0ØœÔ,×0Ò0°Ñ5Ô5Ð5�2ð 	#Ø˜T’z�zà#%¤7§>¢>°$´-Ñ#@Ô#@˜˜à#%¤:×#4Ò#4°T´]Ñ#CÔ#C˜Ø˜bœlÒ*Ð*Ø  EÑ)˜øà"�HØ'/�” Ñ$Ð$Ð$ð0øøøð ð 0Ø " h Ñ/�å˜"�eÑ$Ô$ð 	Ý�r‘”ˆBØˆ	s   ÁA" Á"BC2Ã1C2r   ú
abc.Dumperc                ó¢  — t          |¦  «        }| j        |         }	 ||         }nX# t          $ rK 	 | j                             ||¦  «        } ||| ¦  «        x||<   }n# t
          j        $ r}|d‚d}~ww xY wY nw xY w|                     ||¦  «        x}|u r|S 	 ||         S # t          $ r  |                     ||¦  «        x}||<   |cY S w xY w)z:
        Return a Dumper instance to dump `!obj`.
        N)	Útyper1   r‹   r-   r}   rx   ÚProgrammingErrorÚget_keyÚupgrade)	r8   r„   rM   ÚkeyÚcacher‚   ÚdclsÚexÚkey1s	            r9   r}   zTransformer.get_dumperì   s'  € õ
 �3‰iŒiˆð ”˜fÔ%ˆð
	6Ø˜3”ZˆFˆFøÝð 	6ð 	6ð 	6ð6Ø”}×/Ò/°°VÑ<Ô<�ð '+ d¨3°¡o¤oÐ5��c‘
˜V˜Vøõ Ô%ð #ð #ð #Ø˜dÐ"øøøøð#øøøð $˜Vð	6øøøð —N’N 3¨Ñ/Ô/Ð/ˆD°CÐ7Ð7ØˆMð	Ø˜”;ÐøÝð 	ð 	ð 	Ø#)§>¢>°#°vÑ#>Ô#>Ð>ˆF�U˜4‘[ØˆMˆMˆMð	øøøsD   ž' §
A<²AÁA<ÁA6Á.A1Á1A6Á6A<Á;A<ÂB$ Â$'CÃCc                óà   — 	 | j         S # t          $ r Y nw xY w	 | j                             t          t
          ¦  «        j        x}| _         n"# t          $ r t          j	        d¦  «        ‚w xY w|S )NzNone dumper not found)
r'   ÚAttributeErrorr#   r}   r   r‰   rj   r‹   rx   ÚInterfaceError)r8   r‘   s     r9   r{   zTransformer._get_none_oid  s‹   € ð	Ø”>Ð!øÝð 	ð 	ð 	ØˆDð	øøøð	<Ø"&¤.×";Ò";½HÅgÑ"NÔ"NÔ"RÐRˆB�”�øÝð 	<ð 	<ð 	<ÝÔ"Ð#:Ñ;Ô;Ð;ð	<øøøð ˆ	s   ‚	 ‰
•š1A ÁA+rj   c                óÔ   — | j         s	i i f| _         | j         |         }	 ||         S # t          $ r4 | j                             ||¦  «        } |t          | ¦  «        x||<   }Y nw xY w|S )zO
        Return a Dumper to dump an object to the type with given oid.
        )r2   r‹   r-   rh   r   )r8   rj   rM   rœ   r�   r‚   s         r9   rh   zTransformer.get_dumper_by_oid  s’   € ð Ô ð 	)Ø!# R ˆDÔð Ô! &Ô)ˆð	7Ø˜”:ÐøÝð 	7ð 	7ð 	7ð ”=×2Ò2°3¸Ñ?Ô?ˆDØ"& $¥x°Ñ"6Ô"6Ð6ˆE�#‰J˜˜˜ð		7øøøð ˆs   Ÿ' §;A%Á$A%Úrow0Úrow1Úmake_rowúRowMaker[Row]ú	list[Row]c                óÖ  — | j         x}st          j        d¦  «        ‚d|cxk    r| j        k    rn nd|cxk    r| j        k    sn t          j        d| j        › �¦  «        ‚g }t	          ||¦  «        D ]s}d g| j        z  }t	          | j        ¦  «        D ]3}|                     ||¦  «        x}	� | j        |         |	¦  «        ||<   Œ4|                      ||¦  «        ¦  «         Œt|S )Núresult not setr   z$rows must be included between 0 and )	r%   rx   r¢   r]   ra   r\   Ú	get_valuer5   Úappend)
r8   r¤   r¥   r¦   ÚresÚrecordsÚrowÚrecordÚcolÚvals
             r9   Ú	load_rowszTransformer.load_rows,  s)  € Ø”~Ð%�ð 	5ÝÔ"Ð#3Ñ4Ô4Ð4à�TÐ*Ð*Ò*Ð*˜Tœ]Ò*Ð*Ð*Ð*Ð*¨q°DÐ/IÐ/IÒ/IÐ/I¸D¼MÒ/IÐ/IÐ/IÐ/IÝÔ"ØF°t´}ÐFÐFñô ð ð ˆÝ˜˜tÑ$Ô$ð 	-ð 	-ˆCØ!% ¨¬Ñ 6ˆFÝ˜Tœ]Ñ+Ô+ð >ð >�ØŸ=š=¨¨cÑ2Ô2Ð2�CÐ?Ø"8 $Ô"3°CÔ"8¸Ñ"=Ô"=�F˜3‘KøØ�NŠN˜8˜8 FÑ+Ô+Ñ,Ô,Ð,Ð,àˆr;   r¯   r   c                óX  — | j         x}st          j        d¦  «        ‚d|cxk    r| j        k    sn t          j        d| j        › �¦  «        ‚d g| j        z  }t          | j        ¦  «        D ]3}|                     ||¦  «        x}� | j        |         |¦  «        ||<   Œ4 ||¦  «        S )Nrª   r   z#row must be included between 0 and )r%   rx   r¢   r]   r\   ra   r«   r5   )r8   r¯   r¦   r­   r°   r±   r²   s          r9   Úload_rowzTransformer.load_row?  sÔ   € Ø”~Ð%�ð 	5ÝÔ"Ð#3Ñ4Ô4Ð4à�CÐ(Ð(Ò(Ð(˜4œ=Ò(Ð(Ð(Ð(ÝÔ"ØE°d´mÐEÐEñô ð ð "˜F T¤]Ñ2ˆÝ˜œÑ'Ô'ð 	:ð 	:ˆCØ—}’} S¨#Ñ.Ô.Ð.�Ð;Ø4˜dÔ/°Ô4°SÑ9Ô9��s‘øàˆx˜ÑÔÐr;   r°   útuple[Any, ...]c                ó  ‡ — t          ‰ j        ¦  «        t          |¦  «        k    r:t          j        dt          |¦  «        › dt          ‰ j        ¦  «        › d�¦  «        ‚t	          ˆ fd„t          |¦  «        D ¦   «         ¦  «        S )Nzcannot load sequence of z items: z loaders registeredc              3  óR   •K  — | ]!\  }}|� ‰j         |         |¦  «        nd V — Œ"d S rC   rq   )rX   rY   r²   r8   s      €r9   ú	<genexpr>z,Transformer.load_sequence.<locals>.<genexpr>V  sW   øè è € ð 
ð 
á��3ð +.¨/Ð!ˆTÔ˜qÔ! #Ñ&Ô&Ð&¸tð
ð 
ð 
ð 
ð 
ð 
r;   )rl   r5   rx   r˜   rk   Ú	enumerate)r8   r°   s   ` r9   Úload_sequencezTransformer.load_sequenceO  s°   ø€ ÝˆtÔ Ñ!Ô!¥S¨¡[¤[Ò0Ð0ÝÔ$ð@­3¨v©;¬;ð @ð @Ý˜Ô)Ñ*Ô*ð@ð @ð @ñô ð õ
 ð 
ð 
ð 
ð 
å# FÑ+Ô+ð
ñ 
ô 
ñ 
ô 
ð 	
r;   ú
abc.Loaderc                ó,  — 	 | j         |         |         S # t          $ r Y nw xY w| j                             ||¦  «        x}s6| j                             t          |¦  «        x}st          j        d¦  «        ‚ ||| ¦  «        x}| j         |         |<   |S )Nzunknown oid loader not found)r3   r‹   r#   rU   r   rx   r¢   )r8   rj   rM   Ú
loader_clsÚloaders        r9   rU   zTransformer.get_loader[  s´   € ð	Ø”= Ô(¨Ô-Ð-øÝð 	ð 	ð 	ØˆDð	øøøð #œn×7Ò7¸¸VÑDÔDÐD�
ð 	GØ"&¤.×";Ò";½KÈÑ"PÔ"PÐP�Jð GÝÔ&Ð'EÑFÔFÐFØ.8¨j¸¸dÑ.CÔ.CÐCˆ�”˜vÔ& sÑ+Øˆs   ‚ •
"¡"rC   )r(   r)   )r(   r)   r<   r    )r<   rA   )r<   rE   )r<   r   )r<   r$   )rN   r$   rL   rO   rM   rP   r<   rQ   )r!   rd   rM   re   r<   rQ   )rs   rt   r"   ru   r<   rv   )r„   r   r<   r…   )r„   r   rM   r   r<   r•   )r<   r&   )rj   r&   rM   re   r<   r•   )r¤   r&   r¥   r&   r¦   r§   r<   r¨   )r¯   r&   r¦   r§   r<   r   )r°   rv   r<   r¶   )rj   r&   rM   re   r<   r¼   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚsplitÚ	__slots__Ú__annotations__r:   Úclassmethodr@   Úpropertyr.   rG   r-   rK   rc   rn   rr   rƒ   r”   r}   r{   rh   r³   rµ   r»   rU   rT   r;   r9   r    r    (   s9  € € € € € € ðð ð !€Jð÷ ŠE‰GŒGð	 ð "Ð!Ð!Ñ!Ø#Ð#Ð#Ñ#àÐÐÑØÐÐÑØ€N€N�Nð"ð "ð "ð "ð "ðH ð	 ð 	 ð 	 ñ „[ð	 ð ðð ð ñ „Xðð ðð ð ñ „Xðð
 ðð ð ñ „Xðð ðð ð ñ „Xðð !Ø#'ð
ð 
ð 
ð 
ð 
ð 
ð>-ð -ð -ð -ð
Qð Qð Qð Qð!ð !ð !ð !ðFð ð ð ð<ð ð ð ð@ð ð ð ðð ð ð ð&ð ð ð ð& ð  ð  ð  ð 

ð 

ð 

ð 

ð
ð 
ð 
ð 
ð 
ð 
r;   r    N)1rÃ   Ú
__future__r   Útypingr   r   r   r   Úcollectionsr   Úcollections.abcr	   r,   r   r   rx   r   r   r   r   r   r   Úrowsr   r   Ú_oidsr   r   Ú
_encodingsr   r   Úadaptr   Úpq.abcr   Ú_connection_baser   r   rÆ   r0   r&   ÚDumperr   ÚLoaderr   ÚFormatr|   r‰   r    rT   r;   r9   ú<module>rÖ      sù  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ Ð Ð Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø %Ð %Ð %Ð %Ð %Ð %àð 1ØÐÐÐÐÐØ"Ð"Ð"Ð"Ð"Ð"Ø Ð Ð Ð Ð Ð Ø0Ð0Ð0Ð0Ð0Ð0à6€Ð 6Ð 6Ð 6Ñ 6Ø   c¤j Ô1€Ð 1Ð 1Ð 1Ñ 1Ø˜c 3¤:˜oÔ.€Ð .Ð .Ð .Ñ .à	„y„~€Ø
Œ-€ð}ð }ð }ð }ð }�,ñ }ô }ð }ð }ð }r;   