ó
    Ð]jK  ã                  ó.  • S r SSKJr  SSKJrJr  SSKJrJr  SSK	JrJ
r
  SSKJr  SSKJr  SS	KJr  \(       a  SS
KJr  \R&                  r\" S5      r " S S\R,                  \5      r " S S\R.                  \5      r " S S\5      r " S S\5      rg)z)
Entry point into the adaptation system.
é    )Úannotations)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAnyé   )ÚabcÚpq)ÚPyFormat)ÚTransformer)ÚAdaptersMap)ÚBaseConnectionÚ\c                  ó¬   • \ rS rSr% SrSrS\S'    \R                  R                  r
S\S'    SSS	 jjrSS
 jr\SS j5       rSS jrSS jrSS jrSrg)ÚDumperé   zH
Convert Python object of the type `!cls` to PostgreSQL representation.
r   ÚintÚoidú	pq.FormatÚformatNc                óT   • Xl         U   U(       a  UR                  U l        g S U l        g ©N©ÚclsÚ
connection)Úselfr   Úcontexts      ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/psycopg/adapt.pyÚ__init__ÚDumper.__init__&   ó   € ØŒÙÞ07˜'×,Ñ,ˆ�¸Tˆ�ó    c           
     ó”   • S[        U 5      R                   S[        U 5      R                   SU R                   S[	        U 5      S S3	$ )NÚ<Ú.z (oid=z) at 0xÚxÚ>)ÚtypeÚ
__module__Ú__qualname__r   Úid)r   s    r   Ú__repr__ÚDumper.__repr__+   sH   € à”�T“
×%Ñ%Ð& a¬¨T«
×(?Ñ(?Ð'@Ø�T—X‘X�J˜g¤b¨£h¨q \°ð4ð	
r"   c                ó   • g r   © )r   Úobjs     r   ÚdumpÚDumper.dump1   s   € Ø/2r"   c                ó–  • U R                  U5      =nc  gU R                  (       a;  [        R                  " U R                  R                  5      nUR                  U5      $ [        R                  " 5       nUR                  U5      n[        U;  a  SU-   S-   $ SU-   S-   nUR                  S5      S:X  a  UR                  SS5      nU$ )zÓ
By default return the `dump()` value quoted and sanitised, so
that the result can be used to build a SQL string. This works well
for most types and you won't likely have to implement this method in a
subclass.
s   NULLó   's    E'ó   \s   \\)	r1   r   r
   ÚEscapingÚpgconnÚescape_literalÚescape_stringÚORD_BSÚreplace)r   r0   ÚvalueÚescÚoutÚrvs         r   ÚquoteÚDumper.quote4   sº   € ð —Y‘Y˜s“^Ð#ˆEÑ,Øà�?�?Ü—+’+˜dŸo™o×4Ñ4Ó5ˆCà×%Ñ% eÓ,Ð,ô �kŠk‹mˆØ×Ñ Ó&ˆô ˜Óð ˜#‘: Ñ$Ð$ð ˜S‘L 4Ñ'ˆØ×Ñ˜UÓ# uÓ,Ø—‘˜E 7Ó+ˆBØˆ	r"   c                ó   • U R                   $ )ap  
Implementation of the `~psycopg.abc.Dumper.get_key()` member of the
`~psycopg.abc.Dumper` protocol. Look at its definition for details.

This implementation returns the `!cls` passed in the constructor.
Subclasses needing to specialise the PostgreSQL type according to the
*value* of the object dumped (not only according to to its type)
should override this class.

)r   ©r   r0   r   s      r   Úget_keyÚDumper.get_key`   s   € ð �x‰xˆr"   c                ó   • U $ )a  
Implementation of the `~psycopg.abc.Dumper.upgrade()` member of the
`~psycopg.abc.Dumper` protocol. Look at its definition for details.

This implementation just returns `!self`. If a subclass implements
`get_key()` it should probably override `!upgrade()` too.
r/   rC   s      r   ÚupgradeÚDumper.upgradem   s	   € ð ˆr"   r   r   ©r   r(   r   úabc.AdaptContext | None)ÚreturnÚstr)r0   r   rK   zBuffer | None)r0   r   rK   ÚBuffer)r0   r   r   r   rK   zabc.DumperKey)r0   r   r   r   rK   r   )Ú__name__r)   r*   Ú__firstlineno__Ú__doc__r   Ú__annotations__r
   ÚFormatÚTEXTr   r   r,   r   r1   r@   rD   rG   Ú__static_attributes__r/   r"   r   r   r      sU   ‡ ñð €CˆƒLØ2àŸ	™	Ÿ™€FˆIÓ&Ø(öBô

ð Û2ó Ø2ô*ôX÷r"   r   c                  ót   • \ rS rSr% Sr\R                  R                  rS\	S'    S	S
S jjr
\SS j5       rSrg)ÚLoaderéx   zC
Convert PostgreSQL values with type OID `!oid` to Python objects.
r   r   Nc                óT   • Xl         U   U(       a  UR                  U l        g S U l        g r   )r   r   )r   r   r   s      r   r   ÚLoader.__init__€   r!   r"   c                ó   • g)z.Convert a PostgreSQL value to a Python object.Nr/   )r   Údatas     r   ÚloadÚLoader.load…   s   € ð 	r"   )r   r   r   ©r   r   r   rJ   )r[   rM   rK   r   )rN   r)   r*   rO   rP   r
   rR   rS   r   rQ   r   r   r\   rT   r/   r"   r   rV   rV   x   s8   ‡ ñð Ÿ	™	Ÿ™€FˆIÓ&Ø(öBð
 óó ór"   rV   c                  ó4   ^ • \ rS rSrSrSSU 4S jjjrSrU =r$ )ÚRecursiveDumperé‹   z:Dumper with a transformer to help dumping recursive types.c                óZ   >• [         TU ]  X5        [        R                  " U5      U l        g r   ©Úsuperr   r   Úfrom_contextÚ_tx)r   r   r   Ú	__class__s      €r   r   ÚRecursiveDumper.__init__Ž   ó"   ø€ Ü‰Ñ˜Ô&Ü×+Ò+¨GÓ4ˆ�r"   ©rf   r   rI   ©rN   r)   r*   rO   rP   r   rT   Ú__classcell__©rg   s   @r   r`   r`   ‹   ó   ø† ÙD÷5÷ 5r"   r`   c                  ó4   ^ • \ rS rSrSrSSU 4S jjjrSrU =r$ )ÚRecursiveLoaderé“   z:Loader with a transformer to help loading recursive types.c                óZ   >• [         TU ]  X5        [        R                  " U5      U l        g r   rc   )r   r   r   rg   s      €r   r   ÚRecursiveLoader.__init__–   ri   r"   rj   r   r^   rk   rm   s   @r   rp   rp   “   rn   r"   rp   N)rP   Ú
__future__r   r	   r   r   Útypingr   r   Ú r
   Ú_enumsr   Ú_transformerr   Ú_adapters_mapr   Ú_connection_baser   rM   Úordr:   r   rV   r`   rp   r/   r"   r   Ú<module>r|      sz   ðñõ #ç #ß %ç õ )Ý 4Ý 5æÝ0à	�‰€á	ˆT‹€ôZˆS�Z‰Z˜ô ZôzˆS�Z‰Z˜ô ô&5�fô 5ô5�fõ 5r"   