ó
    Ð]j76  ã                  óÒ  • S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSK	J
r
JrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJrJr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@                  RB                  r"\R@                  RF                  r$\RJ                  RB                  r!\RJ                  RF                  r#\RL                  RN                  r'\RL                  RP                  r(Sr)S\)-  r*Sr+\RX                  S:H  r- " S S\\   5      r. " S S\5      r/ " S S\/5      r0 " S S\/5      r1S1S jr2S1S jr3S2S jr4S2S jr5\Rl                  " S 5      Rn                  r8\Rl                  " S!5      Rn                  r9\Rl                  " S 5      Rt                  r;\Rl                  " S!5      Rt                  r<S"r=S#r>S$r?\R€                  " S%5      rAS&S'S(S)S*S+S,S-.rB\B4S3S. jjrC\R€                  " S/5      rD\BR‹                  5        V Vs0 s H  u  pX_M	     snn rF\F4S3S0 jjrG\(       a1  \R�                  rH\R’                  rI\R”                  rJ\R–                  rKg\2rH\3rI\4rJ\5rKgs  snn f )4z
psycopg copy support
é    )ÚannotationsN)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAnyÚGeneric)ÚSequenceé   )Úadapt)Úerrors)Úpq)ÚBufferÚConnectionTypeÚPQGenÚTransformer)Úconnection_summary)Ú_psycopg)Ú	copy_from)Ú
BaseCursori €  é   i   Údarwinc                  óx   • \ rS rSr% SrS\S'   SS.   SS jjrSS jrSS	 jrSS
 jr	SS jr
SS jrSS jrSrg)ÚBaseCopyé;   aÑ  
Base implementation for the copy user interface.

Two subclasses expose real methods with the sync/async differences.

The difference between the text and binary format is managed by two
different `Formatter` subclasses.

Writing (the I/O part) is implemented in the subclasses by a `Writer` or
`AsyncWriter` instance. Normally writing implies sending copy data to a
database, but a different writer might be chosen, e.g. to stream data into
a file for later use.
Ú	FormatterÚ	formatterN)Úbinaryc               ó´  • Xl         UR                  U l        U R                  R                  U l        UR                  =n(       a|  UR
                  U l        U R                  [        :w  aV  U R                  [        :w  aB  [        R                  " S[        R                  " U R                  5      R                   S35      eO[        U l        Uc  [        U=(       a    UR                  5      n[!        USS 5      =(       d    ["        R$                  " U5      nU(       a  ['        U5      U l        O"[+        X@R                  R,                  S9U l        SU l        g )NzAthe cursor should have performed a COPY operation; its status is z insteadÚ_tx)ÚencodingF)ÚcursorÚ
connectionÚpgconnÚ_pgconnÚpgresultÚstatusÚ
_directionÚCOPY_INÚCOPY_OUTÚeÚProgrammingErrorr   Ú
ExecStatusÚnameÚboolÚbinary_tuplesÚgetattrr   r   ÚBinaryFormatterr   ÚTextFormatterÚ	_encodingÚ	_finished)Úselfr!   r   ÚresultÚtxs        ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/psycopg/_copy_base.pyÚ__init__ÚBaseCopy.__init__L   sÿ   € ð ŒØ ×+Ñ+ˆŒØ—‘×-Ñ-ˆŒà—_‘_Ð$ˆ6Õ$Ø$Ÿm™mˆDŒOØ�‰¤'Ó)¨d¯o©oÄÓ.IÜ×(Ò(ð&Ü&(§m¢m°D·O±OÓ&D×&IÑ&IÐ%JÈ(ðTóð øô
 &ˆDŒOà‰>Ü˜&×9 V×%9Ñ%9Ó:ˆFä! &¨%°Ó6×S¼%×:KÒ:KÈFÓ:SˆÞÜ,¨RÓ0ˆD�Nä*¨2¿¹×8NÑ8NÑOˆDŒNàˆ�ó    c                ó¶   • U R                   R                   SU R                   R                   3n[        U R                  5      nSU SU S[        U 5      S S3$ )NÚ.Ú<Ú z at 0xÚxÚ>)Ú	__class__Ú
__module__Ú__qualname__r   r$   Úid)r5   ÚclsÚinfos      r8   Ú__repr__ÚBaseCopy.__repr__h   sW   € Ø—‘×*Ñ*Ð+¨1¨T¯^©^×-HÑ-HÐ,IÐJˆÜ! $§,¡,Ó/ˆØ�3�%�q˜˜˜f¤R¨£X¨a L°Ð2Ð2r;   c                ó<   • U R                   (       a  [        S5      eg )Nz!copy blocks can be used only once)r4   Ú	TypeError©r5   s    r8   Ú_enterÚBaseCopy._enterm   s   € Ø�>�>ÜÐ?Ó@Ð@ð r;   c                óÌ  • U R                   R                  R                  nU Vs/ s H+  n[        U[        5      (       a  UOUR                  U5      PM-     nnU R                  [        :X  a:  U R                  R                  R                  X@R                  R                  5        gU R                  R                  R                  X@R                  R                  5        gs  snf )a�  
Set the types expected in a COPY operation.

The types must be specified as a sequence of oid or PostgreSQL type
names (e.g. ``int4``, ``timestamptz[]``).

This operation overcomes the lack of metadata returned by PostgreSQL
when a COPY operation begins:

- On :sql:`COPY TO`, `!set_types()` allows to specify what types the
  operation returns. If `!set_types()` is not used, the data will be
  returned as unparsed strings or bytes instead of Python objects.

- On :sql:`COPY FROM`, `!set_types()` allows to choose what type the
  database expects. This is especially useful in binary copy, because
  PostgreSQL will apply no cast rule.

N)r!   ÚadaptersÚtypesÚ
isinstanceÚintÚget_oidr'   r(   r   ÚtransformerÚset_dumper_typesÚformatÚset_loader_types)r5   rQ   ÚregistryÚtÚoidss        r8   Ú	set_typesÚBaseCopy.set_typesq   sŸ   € ð& —;‘;×'Ñ'×-Ñ-ˆÙJOÓPÊ%ÀQ”Z ¤3×'Ñ'‘¨X×-=Ñ-=¸aÓ-@Ò@É%ˆÐPà�?‰?œgÓ%Ø�N‰N×&Ñ&×7Ñ7¸¿n¹n×>SÑ>SÕTà�N‰N×&Ñ&×7Ñ7¸¿n¹n×>SÑ>SÕTùò Qs   ¥2C!c              #  ó  #   • U R                   (       a  [        S5      $ [        U R                  5       S h  v•N n[	        U[        5      (       a  U$ SU l         UR
                  nUb  UOSU R                  l        [        S5      $  NO7f)Nr;   Téÿÿÿÿ)r4   Ú
memoryviewr   r$   rR   Úcommand_tuplesr!   Ú	_rowcount)r5   ÚresÚnrowss      r8   Ú	_read_genÚBaseCopy._read_genŽ   sq   é € Ø�>�>Ü˜c“?Ð"ä" 4§<¡<Ó0×0ˆÜ�cœ:×&Ñ&ØˆJð ˆŒð ×"Ñ"ˆØ).Ñ):¡Àˆ�‰ÔÜ˜#‹Ðñ 1ùs   ‚5B	·B¸AB	c              #  óÒ   #   • U R                  5        S h  v•N =n(       d  g U R                  R                  U5      =nc   U R                  5        S h  v•N   SU l        g U$  NL N7f©NT)re   r   Ú	parse_rowr4   )r5   ÚdataÚrows      r8   Ú_read_row_genÚBaseCopy._read_row_gen¡   s`   é € Ø$(§N¡NÓ$4×4Ð5�Õ5Øà—>‘>×+Ñ+¨DÓ1Ð1ˆCÑ:à—~‘~Ó'×'Ð'Ø!ˆDŒNØàˆ
ñ 5ñ
 (ùs!   ‚A'–A#—=A'ÁA%ÁA'Á%A'c              #  óÆ   #   •  U R                  5        S h  v•N (       a!   U R                  5        S h  v•N (       a  M   g g  N+ N! [        R                   a     g f = f7f©N)re   r*   ÚQueryCanceledrL   s    r8   Ú_end_copy_out_genÚBaseCopy._end_copy_out_gen­   sG   é € ð	Ø"Ÿn™nÓ.×.Õ.Øð #Ÿn™nÓ.×.×.Õ.øä�‰ó 	Ùð	üsH   ‚A!„A —A˜A µA¶	A ÁA!ÁA ÁA ÁAÁA!ÁAÁA!)r'   r4   r$   r"   r!   r   )r!   zBaseCursor[ConnectionType, Any]r   zbool | None)ÚreturnÚstr)rs   ÚNone)rQ   zSequence[int | str]rs   ru   )rs   zPQGen[Buffer])rs   zPQGen[tuple[Any, ...] | None])rs   zPQGen[None])Ú__name__rC   rD   Ú__firstlineno__Ú__doc__Ú__annotations__r9   rH   rM   r\   re   rl   rq   Ú__static_attributes__© r;   r8   r   r   ;   sK   ‡ ñð Óð QUñØ5ðØBMõô83ô
AôUô:ô&
÷r;   r   c                  ó~   • \ rS rSr% SrS\S'   SS jr\SS j5       r\SS j5       r	\SS j5       r
\SS	 j5       rS
rg)r   éµ   z8
A class which understand a copy format (text, binary).
z	pq.FormatrW   c                ó<   • Xl         [        5       U l        SU l        g ©NF)rU   Ú	bytearrayÚ_write_bufferÚ	_row_mode)r5   rU   s     r8   r9   ÚFormatter.__init__¼   s   € Ø&ÔÜ&›[ˆÔØˆ�r;   c                ó   • g ro   r{   ©r5   rj   s     r8   ri   ÚFormatter.parse_rowÁ   s   € ØADr;   c                ó   • g ro   r{   ©r5   Úbuffers     r8   ÚwriteÚFormatter.writeÄ   s   € Ø58r;   c                ó   • g ro   r{   )r5   rk   s     r8   Ú	write_rowÚFormatter.write_rowÇ   s   € Ø7:r;   c                ó   • g ro   r{   rL   s    r8   ÚendÚFormatter.endÊ   s   € Ø r;   )r‚   r�   rU   N©rU   r   ©rj   r   rs   ztuple[Any, ...] | None©r‰   úBuffer | strrs   r   ©rk   úSequence[Any]rs   r   ©rs   r   )rv   rC   rD   rw   rx   ry   r9   r   ri   rŠ   r�   r�   rz   r{   r;   r8   r   r   µ   sN   ‡ ñð Óôð
 ÛDó ØDàÛ8ó Ø8àÛ:ó Ø:àÛ ó Û r;   r   c                  óf   ^ • \ rS rSr\rS	S
U 4S jjjrSS jrSS jrSS jr	SS jr
SS jrSrU =r$ )r2   éÎ   c                ó0   >• [         TU ]  U5        X l        g ro   )Úsuperr9   r3   )r5   rU   r    rB   s      €r8   r9   ÚTextFormatter.__init__Ñ   s   ø€ Ü‰Ñ˜Ô%Ø!�r;   c                óB   • S nU(       a  [        XR                  5      nU$ ro   )Úparse_row_textrU   ©r5   rj   Úrvs      r8   ri   ÚTextFormatter.parse_rowÕ   s   € Ø%)ˆÞÜ ×&6Ñ&6Ó7ˆBàˆ	r;   c                ó6   • U R                  U5      nSU l        U$ rh   ©Ú_ensure_bytesÚ_signature_sent©r5   r‰   rj   s      r8   rŠ   ÚTextFormatter.writeÜ   ó   € Ø×!Ñ! &Ó)ˆØ#ˆÔØˆr;   c                óÆ   • SU l         [        XR                  U R                  5        [	        U R                  5      [
        :”  a  U R                  [        5       so l        U$ g©NTr;   )r‚   Úformat_row_textrU   r�   ÚlenÚBUFFER_SIZEr€   ©r5   rk   r‰   s      r8   r�   ÚTextFormatter.write_rowá   sQ   € ð ˆŒä˜×-Ñ-¨t×/AÑ/AÔBÜˆt×!Ñ!Ó"¤[Ó0Ø)-×);Ñ);¼Y»[Ð&ˆFÔ&ØˆMàr;   c                ó<   • U R                   [        5       sol         U$ ro   )r�   r€   rˆ   s     r8   r�   ÚTextFormatter.endí   s   € Ø%)×%7Ñ%7¼»Ð"ˆÔ"Øˆr;   c                óf   • [        U[        5      (       a  UR                  U R                  5      $ U$ ro   )rR   rt   Úencoder3   r…   s     r8   r¥   ÚTextFormatter._ensure_bytesñ   s)   € Ü�dœC× Ñ Ø—;‘;˜tŸ~™~Ó.Ð.ð
 ˆKr;   )r3   r‚   r¦   r�   )zutf-8)rU   r   r    rt   r“   r”   r–   r˜   ©rj   r•   rs   r   )rv   rC   rD   rw   ÚTEXTrW   r9   ri   rŠ   r�   r�   r¥   rz   Ú__classcell__©rB   s   @r8   r2   r2   Î   s0   ø† Ø€F÷"ñ "ôôô

ô÷ò r;   r2   c                  ób   ^ • \ rS rSr\rS	U 4S jjrS
S jrSS jrSS jr	SS jr
SS jrSrU =r$ )r1   éû   c                ó2   >• [         TU ]  U5        SU l        g r   )rœ   r9   r¦   )r5   rU   rB   s     €r8   r9   ÚBinaryFormatter.__init__þ   s   ø€ Ü‰Ñ˜Ô%Ø$ˆÕr;   c                óü   • S nU R                   (       dI  US [        [        5       [        :w  a  [        R                  " S5      eSU l         U[        [        5      S  nU[
        :w  a  [        XR                  5      nU$ )Nz5binary copy doesn't start with the expected signatureT)r¦   r­   Ú_binary_signaturer*   Ú	DataErrorÚ_binary_trailerÚparse_row_binaryrU   r    s      r8   ri   ÚBinaryFormatter.parse_row  su   € Ø%)ˆà×#×#ØÐ,”cÔ+Ó,Ð-Ô1BÓBÜ—k’kØKóð ð $(ˆDÔ ØœÔ-Ó.Ð0Ð1ˆDà”?Ó"Ü! $×(8Ñ(8Ó9ˆBàˆ	r;   c                ó6   • U R                  U5      nSU l        U$ rh   r¤   r§   s      r8   rŠ   ÚBinaryFormatter.write  r©   r;   c                ó(  • SU l         U R                  (       d   U =R                  [        -  sl        SU l        [	        XR
                  U R                  5        [        U R                  5      [        :”  a  U R                  [        5       so l        U$ gr«   )	r‚   r¦   r�   r¿   Úformat_row_binaryrU   r­   r®   r€   r¯   s      r8   r�   ÚBinaryFormatter.write_row  st   € ð ˆŒà×#×#Ø×ÒÔ"3Ñ3ÕØ#'ˆDÔ ä˜#×/Ñ/°×1CÑ1CÔDÜˆt×!Ñ!Ó"¤[Ó0Ø)-×);Ñ);¼Y»[Ð&ˆFÔ&ØˆMàr;   c                ó  • U R                   (       d3  U =R                  [        -  sl        U =R                  [        -  sl        O*U R                  (       a  U =R                  [        -  sl        U R                  [        5       sol        U$ ro   )r¦   r�   r¿   rÁ   r‚   r€   rˆ   s     r8   r�   ÚBinaryFormatter.end'  sd   € ð ×#×#Ø×ÒÔ"3Ñ3ÕØ×Ò¤/Ñ1Öà�^�^ð ×Ò¤/Ñ1Õà%)×%7Ñ%7¼»Ð"ˆÔ"Øˆr;   c                óF   • [        U[        5      (       a  [        S5      eU$ )Nz6cannot copy str data in binary mode: use bytes instead)rR   rt   rK   r…   s     r8   r¥   ÚBinaryFormatter._ensure_bytes:  s"   € Ü�dœC× Ñ ÜÐTÓUÐUð
 ˆKr;   )r‚   r¦   r�   r’   r“   r”   r–   r˜   r¶   )rv   rC   rD   rw   ÚBINARYrW   r9   ri   rŠ   r�   r�   r¥   rz   r¸   r¹   s   @r8   r1   r1   û   s+   ø† Ø€F÷%ôô ô
ô ÷&ò r;   r1   c                óÌ   • U (       d  US-  ngUR                  U [        /[        U 5      -  5      nU H)  nX$b  [        R	                  [
        U5      OS-  nUS-  nM+     SUSS& g)z6Convert a row of objects to the data to send for copy.ó   
Nó   \Nó   	r_   )Údump_sequenceÚPY_TEXTr­   Ú_dump_reÚsubÚ	_dump_sub©rk   r7   ÚoutÚadaptedÚbs        r8   Ú_format_row_textrÛ   D  sg   € æØˆu‰ˆØà×Ñ˜s¤W I´°C³Ñ$8Ó9€GÛˆØ©]Œx�|‰|œI qÔ)ÀÑFˆØˆu‰Šñ ð €Cˆˆ�Hr;   c                óÜ   • UR                  U [        /[        U 5      -  5      nU[        [        U 5      5      -  nU H,  nUb  U[	        [        U5      5      -  nX$-  nM#  U[
        -  nM.     g)z=Convert a row of objects to the data to send for binary copy.N)rÒ   Ú	PY_BINARYr­   Ú
_pack_int2Ú
_pack_int4Ú_binary_nullr×   s        r8   Ú_format_row_binaryrá   R  se   € à×Ñ˜s¤Y K´#°c³(Ñ$:Ó;€GØŒ:”c˜#“hÓÑ€CÛˆØ‰=Ø”:œc !›fÓ%Ñ%ˆCØ‰HŠCà”<ÑŠCò r;   c                ó  • [        U [        5      (       d  [        U 5      n U R                  S5      nUS   S S US'   U Vs/ s H$  o3S:X  a  S O[        R	                  [
        U5      PM&     nnUR                  U5      $ s  snf )NrÑ   r_   rÐ   )rR   ÚbytesÚsplitÚ_load_rerÕ   Ú	_load_subÚload_sequence)rj   r7   ÚfieldsÚfrk   s        r8   Ú_parse_row_textrê   ^  sx   € Ü�dœE×"Ñ"Ü�T‹{ˆØ�Z‰Z˜Ó€FØ˜‘˜C˜R�€Fˆ2�JÙHNÓ
OÊÀ1˜“;‰4¤H§L¡L´¸AÓ$>Ò>É€CÐ
OØ×Ñ˜CÓ Ð ùò Ps   Á+A?c                óø   • / n[        U S5      S   nSn[        U5       HH  n[        X5      S   nUS-  nUS:¼  a  UR                  XXF-    5        XF-  nM7  UR                  S 5        MJ     UR	                  U5      $ )Nr   é   r   )Ú_unpack_int2ÚrangeÚ_unpack_int4Úappendrç   )rj   r7   rk   ÚnfieldsÚposÚiÚlengths          r8   Ú_parse_row_binaryrõ   g  sƒ   € Ø!€CÜ˜4 Ó# AÑ&€GØ
€CÜ�7Ž^ˆÜ˜dÓ(¨Ñ+ˆØˆq‰ˆØ�Q‹;Ø�J‰J�t #¡,Ð/Ô0Ø‰MŠCà�J‰J�tÖñ ð ×Ñ˜CÓ Ð r;   z!hz!is   PGCOPY
ÿ
         s   ÿÿs   ÿÿÿÿs
   [	
\\]s   \bs   \ts   \ns   \vs   \fs   \rs   \\)ó   rÑ   rÏ   ó   ó   ó   ó   \c                ó(   • XR                  S5         $ ©Nr   ©Úgroup©ÚmÚ__maps     r8   rÖ   rÖ   �  ó   € Ø—‘˜“ÑÐr;   s   \\[btnvfr\\]c                ó(   • XR                  S5         $ rü   rý   rÿ   s     r8   ræ   ræ   ˜  r  r;   )rk   r—   r7   r   rØ   r€   rs   ru   )rj   r   r7   r   rs   ztuple[Any, ...])r   zre.Match[bytes]r  zdict[bytes, bytes]rs   rã   )Lrx   Ú
__future__r   ÚreÚsysÚstructÚabcr   r   Útypingr   r   r   Úcollections.abcr	   Ú r   r   r*   r   r   r   r   r   Úpq.miscr   Ú_cmoduler   Ú
generatorsr   Ú_cursor_baser   ÚPyFormatr·   rÓ   rÍ   rÝ   ÚFormatr,   r(   r)   r®   ÚMAX_BUFFER_SIZEÚ
QUEUE_SIZEÚplatformÚPREFER_FLUSHr   r   r2   r1   rÛ   rá   rê   rõ   ÚStructÚpackrÞ   rß   Úunpack_fromrí   rï   r¿   rÁ   rà   ÚcompilerÔ   Ú
_dump_replrÖ   rå   ÚitemsÚ
_load_replræ   r¬   rÇ   rŸ   rÂ   )ÚkÚvs   00r8   Ú<module>r     s@  ðñõ #ã 	Û 
Û ß #ß .Ñ .Ý $å Ý Ý ß ;Ó ;Ý 'Ý Ý !æÝ(à
�.‰.×
Ñ
€Ø�N‰N×!Ñ!€	à	‡y�y‡~�~€Ø	�‰×	Ñ	€à
�-‰-×
Ñ
€Ø�=‰=×!Ñ!€ð
 €ð
 �k‘/€ð €
ð �|‰|˜xÑ'€ôwˆw�~Ñ&ô wôt!�ô !ô2*�Iô *ôZF�iô FôRô	 ô!ô!ð  �]Š]˜4Ó ×%Ñ%€
Ø�]Š]˜4Ó ×%Ñ%€
Ø�}Š}˜TÓ"×.Ñ.€Ø�}Š}˜TÓ"×.Ñ.€ðð ð
 €Ø"€à�:Š:Ð+Ó,€àØØØØØØñ€
ð ?Iö ð �:Š:Ð)Ó*€Ø)×/Ñ/Ô1Ô2Ò1‘t�qˆaŠdÑ1Ò2€
ð ?Iö ö
 Ø×.Ñ.€OØ ×2Ñ2ÐØ×,Ñ,€NØ×0Ñ0Ñð '€OØ*ÐØ$€NØ(Ñùó% 3s   ÈI#