Ë
    ÛqjÚ-  ã                  ój  — 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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 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<   dZ'de&d<   dZ(de&d<   ejR                  jT                  Z*ejT                  Z+ G d„ de«      Z,y)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)ÚAnyÚSequenceÚDefaultDictÚTYPE_CHECKING)Údefaultdicté   )Úpq)Úabc)Úerrors)ÚBufferÚLoadFuncÚAdaptContextÚPyFormatÚNoneType)ÚRowÚRowMaker)ÚINVALID_OIDÚTEXT_OID)Ú	TypeAlias)Úconn_encoding)Ú	DumperKey)ÚAdaptersMap)ÚPGresult)ÚBaseConnectionzdict[DumperKey, abc.Dumper]r   ÚDumperCachezdict[int, abc.Dumper]ÚOidDumperCachezdict[int, abc.Loader]ÚLoaderCachec                  óN  — e Zd ZU dZdZdj	                  «       Zded<   ded<   ded	<   d
ed<   ded<   d#d$d„Zed%d„«       Z	e
d&d„«       Ze
d'd„«       Ze
d(d„«       Ze
d)d„«       Zdddœ	 	 	 	 	 	 	 d*d„Zd+d„Zd+d„Z	 	 	 	 	 	 d,d„Zd-d„Zd.d„Zd/d„Zd0d„Zd1d„Zd2d „Zd3d!„Zd4d"„Zy)5Ú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_oidNc                ó<  — d x| _         x| _        | _        |r#|j                  | _        |j
                  | _        nddlm} |j                  | _        d | _        |  t        t        «      | _        |  d | _        i i f| _        d | _        g | _        i | _        d| _        y )Nr	   )ÚpostgresÚ )r%   r!   r"   Úadaptersr#   Ú
connectionÚ_connr*   r)   r   ÚdictÚ_dumpersÚ_oid_dumpersÚ_loadersÚ_row_dumpersÚ_row_loadersÚ
_oid_typesÚ	_encoding)ÚselfÚcontextr)   s      úX/var/www/html/kelly-backend/venv/lib/python3.12/site-packages/psycopg/_py_transformer.pyÚ__init__zTransformer.__init__B   sš   € Ø59Ð9ˆŒÐ9˜œ d¤lñ Ø$×-Ñ-ˆDŒNØ ×+Ñ+ˆD�Jå"à%×.Ñ.ˆDŒNØˆDŒJñ 	Ü#¤DÓ)ˆŒñ 	Ø ˆÔð ;=¸b¸ˆŒà59ˆÔð -/ˆÔð -/ˆŒàˆ�ó    c                ó6   — t        |t        «      r|S  | |«      S )z
        Return a Transformer from an AdaptContext.

        If the context is a Transformer instance, just return it.
        )Ú
isinstancer    )Úclsr7   s     r8   Úfrom_contextzTransformer.from_contextf   s   € ô �gœ{Ô+ØˆNá�w“<Ðr:   c                ó   — | j                   S ©N)r-   ©r6   s    r8   r,   zTransformer.connectionr   s   € à�z‰zÐr:   c                óf   — | j                   st        | j                  «      | _         | j                   S r@   )r5   r   r,   rA   s    r8   ÚencodingzTransformer.encodingv   s#   € à�~Š~Ü*¨4¯?©?Ó;ˆDŒNØ�~‰~Ðr:   c                ó   — | j                   S r@   )r#   rA   s    r8   r+   zTransformer.adapters|   ó   € à�~‰~Ðr:   c                ó   — | j                   S r@   )r%   rA   s    r8   ÚpgresultzTransformer.pgresult€   rE   r:   T)Úset_loadersÚformatc               ój  — || _         |sdx| _        | _        |rg | _        y |j                  | _        |j
                  x}| _        |sy |sg | _        y |€|j                  d«      n|}t        |«      D �cg c]-  }| j                  |j                  |«      |«      j                  ‘Œ/ c}| _        y c c}w ©Nr   )r%   Ú_nfieldsÚ_ntuplesr3   ÚntuplesÚnfieldsÚfformatÚrangeÚ
get_loaderÚftypeÚload)r6   ÚresultrH   rI   ÚnfÚfmtÚis          r8   Úset_pgresultzTransformer.set_pgresult„   s­   € ð  ˆŒáØ,-Ð-ˆDŒM˜DœMÙØ$&�Ô!ØàŸ™ˆŒØ#Ÿ^™^Ð+ˆˆTŒ]áØáØ "ˆDÔØð $* >ˆf�n‰n˜QÔ°vˆä@EÀbÄ	ó
Ù@I¸1ˆD�O‰O˜FŸL™L¨›O¨SÓ1×6Ó6À	ñ
ˆÕùò 
s   Á52B0c                ó    — |D �cg c]  }| j                  ||«      ‘Œ c}| _        t        |«      | _        |gt	        |«      z  | _        y c c}w r@   )Úget_dumper_by_oidr2   Útupler!   Úlenr"   ©r6   r!   rI   Úoids       r8   Úset_dumper_typeszTransformer.set_dumper_types£   sI   € ÙLQÓRÉEÀS˜T×3Ñ3°C¸Õ@ÈEÑRˆÔÜ˜5“\ˆŒ
Ø�x¤# e£*Ñ,ˆ�ùò Ss   …Ac                ól   — |D �cg c]  }| j                  ||«      j                  ‘Œ  c}| _        y c c}w r@   )rR   rT   r3   r^   s       r8   Úset_loader_typeszTransformer.set_loader_types¨   s-   € ÙJOÓPÉ%À3˜TŸ_™_¨S°&Ó9×>Ó>È%ÑPˆÕùÒPs   …#1c                óÞ  — t        |«      }d g|z  }| j                  r;t        |«      D ]+  }||   }|€Œ| j                  |   j                  |«      ||<   Œ- |S | j	                  «       g|z  }t
        g|z  }t        |«      D ]Q  }||   }|€Œ| j                  |||   «      }	|	j                  |«      ||<   |	j                  ||<   |	j                  ||<   ŒS t        |«      | _
        || _        |S r@   )r]   r2   rQ   ÚdumpÚ_get_none_oidÚTEXTÚ
get_dumperr_   rI   r\   r!   r"   )
r6   Úparamsr"   ÚnparamsÚoutrX   Úparamr!   Ú	pqformatsÚdumpers
             r8   Údump_sequencezTransformer.dump_sequence«   s  € ô �f“+ˆØ$( 6¨GÑ#3ˆð
 ×ÒÜ˜7–^�Ø˜q™	�ØÑ$Ø!×.Ñ.¨qÑ1×6Ñ6°uÓ=�C˜’Fð $ð ˆJà×#Ñ#Ó%Ð&¨Ñ0ˆÜ�F˜WÑ$ˆ	ä�w–ˆAØ˜1‘IˆEØˆ}ØØ—_‘_ U¨G°A©JÓ7ˆFØ—[‘[ Ó'ˆC�‰FØ—z‘zˆE�!‰HØ!Ÿ=™=ˆI�aŠLð  ô ˜5“\ˆŒ
Ø ˆŒàˆ
r:   c                óV  — | j                  |t        «      }|j                  |«      }|j                  }|r,|r*|d   dk(  r"|t        k7  r	 | j
                  |   }|rd||fz  }t        |t         «      st!        |«      }|S # t        $ r  | j                  j                  j                  |«      }|re|dk  r&|j                  j                  | j                  «      }n%|j                  j                  | j                  «      }||j                  k(  r|dz  }nd}|| j
                  |<   Y ŒÎw xY w)Néÿÿÿÿé'   i    s   []r:   s   %s::%s)rg   ÚPY_TEXTÚquoter_   r   r4   ÚKeyErrorr+   r!   ÚgetÚnameÚencoderC   ÚregtypeÚ	array_oidr<   Úbytes)r6   Úobjrm   Úrvr_   Útype_sqlÚtis          r8   Ú
as_literalzTransformer.as_literalÌ   s  € Ø—‘ ¤gÓ.ˆØ�\‰\˜#Óˆð �j‰jˆÙ‘2˜"˜R™& GÒ+°´x²ð0ØŸ?™?¨3Ñ/�ñ Ø " h Ñ/�ä˜"œeÔ$Ü�r“ˆBØˆ	øô' ò 0Ø—]‘]×(Ñ(×,Ñ,¨SÓ1�ÙØ˜T’zà#%§7¡7§>¡>°$·-±-Ó#@™à#%§:¡:×#4Ñ#4°T·]±]Ó#C˜Ø˜bŸl™lÒ*Ø  EÑ)™à"�HØ'/�—‘ Ó$ð0ús   Á
A? Á?B&D(Ä'D(c                ó€  — t        |«      }| j                  |   }	 ||   }|j                  ||«      }||u r|S 	 ||   S # t        $ rM 	 | j                  j	                  ||«      } ||| «      x||<   }n# t
        j                  $ r}|d‚d}~ww xY wY Œsw xY w# t        $ r |j                  ||«      x}||<   |cY S w xY w)z:
        Return a Dumper instance to dump `!obj`.
        N)	Útyper/   rt   r+   rg   ÚeÚProgrammingErrorÚget_keyÚupgrade)	r6   r{   rI   ÚkeyÚcacherm   ÚdclsÚexÚkey1s	            r8   rg   zTransformer.get_dumperë   sí   € ô
 �3‹iˆð —‘˜fÑ%ˆð
	6Ø˜3‘ZˆFð �~‰~˜c 6Ó*ˆØ�3‰;ØˆMð	Ø˜‘;Ðøô# ò 	6ð6Ø—}‘}×/Ñ/°°VÓ<�ñ '+¨3°£oÐ5��c‘
™Vøô ×%Ñ%ò #Ø˜dÐ"ûð#úñ $ð	6ûô$ ò 	Ø#)§>¡>°#°vÓ#>Ð>ˆF�U˜4‘[ØŠMð	úsD   œ? ºB ¿	BÁ	A4Á%BÁ4BÂB
Â
BÂBÂBÂ"B=Â<B=c                óî   — 	 | j                   S # t        $ r Y nw xY w	 | j                  j                  t        t
        «      j                  x}| _         |S # t        $ r t        j                  d«      ‚w xY w)NzNone dumper not found)
r'   ÚAttributeErrorr#   rg   r   rr   r_   rt   r‚   ÚInterfaceError)r6   r|   s     r8   re   zTransformer._get_none_oid  su   € ð	Ø—>‘>Ð!øÜò 	Ùð	úð	<Ø"&§.¡.×";Ñ";¼HÄgÓ"N×"RÑ"RÐRˆB�”ð ˆ	øô ò 	<Ü×"Ñ"Ð#:Ó;Ð;ð	<ús   ‚ Ž	™ž5A ÁA4c                óÒ   — | j                   s	i i f| _         | j                   |   }	 ||   S # t        $ r2 | j                  j                  ||«      } |t        | «      x||<   }Y |S w xY w)zO
        Return a Dumper to dump an object to the type with given oid.
        )r0   rt   r+   r[   r   )r6   r_   rI   r‡   rˆ   rm   s         r8   r[   zTransformer.get_dumper_by_oid  s{   € ð × Ò Ø!# R ˆDÔð ×!Ñ! &Ñ)ˆð	7Ø˜‘:ÐøÜò 	7ð —=‘=×2Ñ2°3¸Ó?ˆDÙ"&¤x°Ó"6Ð6ˆE�#‰J™àˆð	7ús   ¦+ «7A&Á%A&c                óð  — | j                   }|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 ]p  }d g| j
                  z  }t	        | j
                  «      D ]/  }|j                  ||«      }	|	€Œ | j                  |   |	«      ||<   Œ1 |j                   ||«      «       Œr |S )Nzresult not setr   z$rows must be included between 0 and )	r%   r‚   r�   rM   rQ   rL   Ú	get_valuer3   Úappend)
r6   Úrow0Úrow1Úmake_rowÚresÚrecordsÚrowÚrecordÚcolÚvals
             r8   Ú	load_rowszTransformer.load_rows,  sç   € Ø�n‰nˆÙÜ×"Ñ"Ð#3Ó4Ð4à�TÔ*˜TŸ]™]Õ*¨q°DÔ/I¸D¿M¹MÔ/IÜ×"Ñ"Ø6°t·}±}°oÐFóð ð ˆÜ˜˜tÖ$ˆCØ!% ¨¯©Ñ 6ˆFÜ˜TŸ]™]Ö+�Ø—m‘m C¨Ó-�Ø‘?Ø"8 $×"3Ñ"3°CÑ"8¸Ó"=�F˜3’Kð ,ð �N‰N™8 FÓ+Õ,ð %ð ˆr:   c                ó  — | j                   }|sy d|cxk  r| j                  k  sy  y d g| j                  z  }t        | j                  «      D ]/  }|j	                  ||«      }|€Œ | j
                  |   |«      ||<   Œ1  ||«      S rK   )r%   rM   rL   rQ   r�   r3   )r6   r—   r”   r•   r˜   r™   rš   s          r8   Úload_rowzTransformer.load_rowA  s�   € Ø�n‰nˆÙØà�CÔ'˜$Ÿ-™-Ò'Øð (Øà!˜F T§]¡]Ñ2ˆÜ˜Ÿ™Ö'ˆCØ—-‘-  SÓ)ˆCØ‰Ø4˜d×/Ñ/°Ñ4°SÓ9��s’ð (ñ
 ˜ÓÐr:   c                óð   ‡ — t        ‰ j                  «      t        |«      k7  r8t        j                  dt        |«      › dt        ‰ j                  «      › d�«      ‚t	        ˆ fd„t        |«      D «       «      S )Nzcannot load sequence of z items: z loaders registeredc              3  óV   •K  — | ]   \  }}|� ‰j                   |   |«      nd –— Œ" y ­wr@   )r3   )Ú.0rX   rš   r6   s      €r8   Ú	<genexpr>z,Transformer.load_sequence.<locals>.<genexpr>X  s9   øè ø€ ð 
á+‘��3ð +.¨/Ð!ˆT×Ñ˜qÑ! #Ô&¸tÓCÙ+ùs   ƒ&))r]   r3   r‚   rƒ   r\   Ú	enumerate)r6   r˜   s   ` r8   Úload_sequencezTransformer.load_sequenceQ  sx   ø€ Üˆt× Ñ Ó!¤S¨£[Ò0Ü×$Ñ$Ø*¬3¨v«;¨-ð 8Ü˜×)Ñ)Ó*Ð+Ð+>ð@óð ô
 ó 
ä# FÔ+ó
ó 
ð 	
r:   c                ó*  — 	 | j                   |   |   S # t        $ r Y nw xY w| j                  j                  ||«      }|s7| j                  j                  t        |«      }|st        j                  d«      ‚ ||| «      x}| j                   |   |<   |S )Nzunknown oid loader not found)r1   rt   r#   rR   r   r‚   r�   )r6   r_   rI   Ú
loader_clsÚloaders        r8   rR   zTransformer.get_loader]  s—   € ð	Ø—=‘= Ñ(¨Ñ-Ð-øÜò 	Ùð	úð —^‘^×.Ñ.¨s°FÓ;ˆ
ÙØŸ™×2Ñ2´;ÀÓGˆJÙÜ×&Ñ&Ð'EÓFÐFÙ.8¸¸dÓ.CÐCˆ�—‘˜vÑ& sÑ+Øˆs   ‚ ”	 Ÿ r@   )r7   úAdaptContext | None)r7   r§   Úreturnr    )r¨   zBaseConnection[Any] | None)r¨   Ústr)r¨   r   )r¨   r$   )rU   r$   rH   ÚboolrI   zpq.Format | Noner¨   ÚNone)r!   zSequence[int]rI   ú	pq.Formatr¨   r«   )rh   zSequence[Any]r"   zSequence[PyFormat]r¨   úSequence[Buffer | None])r{   r   r¨   rz   )r{   r   rI   r   r¨   ú
abc.Dumper)r¨   r&   )r_   r&   rI   r¬   r¨   r®   )r’   r&   r“   r&   r”   úRowMaker[Row]r¨   z	list[Row])r—   r&   r”   r¯   r¨   z
Row | None)r˜   r­   r¨   ztuple[Any, ...])r_   r&   rI   r¬   r¨   z
abc.Loader)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚsplitÚ	__slots__Ú__annotations__r9   Úclassmethodr>   Úpropertyr,   rC   r+   rG   rY   r`   rb   rn   r   rg   re   r[   r›   r�   r£   rR   © r:   r8   r    r    (   s/  … ñð !€Jð÷ ‰E‹Gð	 ð "Ó!Ø#Ó#àÓØÓØƒNô"ðH ò	 ó ð	 ð òó ðð òó ðð
 òó ðð òó ðð !Ø#'ñ
àð
ð ð	
ð
 !ð
ð 
ó
ó>-ó
QðØ#ðØ.@ðà	 óóBó>óBóó&ó* ó 

ôr:   r    N)-r³   Ú
__future__r   Útypingr   r   r   r   Úcollectionsr   r*   r
   r   r   r‚   r   r   r   r   r   Úrowsr   r   Ú_oidsr   r   Ú_compatr   Ú
_encodingsr   r   Úadaptr   Úpq.abcr   Ú_connection_baser   r   r¶   r   r   ÚFormatrf   rr   r    r¹   r:   r8   Ú<module>rÅ      s„   ðòõ #ç <Ó <Ý #å Ý Ý ß CÕ Cß ß (Ý Ý %áÝÝ"Ý Ý0à6€ˆYÓ 6Ø3€�	Ó 3Ø0€ˆYÓ 0à	‡y�y‡~�~€Ø
�-‰-€ôA�,õ Ar:   