ó
    Ð]jÉ  ã                  óœ   • S r SSKJr  SSKrSSKrSSKJrJr  SSK	J
r
Jr  \R                  " S5      r\
" SS9 " S	 S
5      5       rS\l        g)z"
psycopg two-phase commit support
é    )ÚannotationsN)Ú	b64decodeÚ	b64encode)Ú	dataclassÚreplacez^(\d+)_([^_]*)_([^_]*)$T)Úfrozenc                  ó  • \ rS rSr% SrS\S'   S\S'   S\S'   S	rS
\S'   S	rS\S'   S	rS\S'   \	SS j5       r
SS jrSS jrSS jr\	SS j5       r\	SS j5       rSS jr\	SS j5       r\	          SS j5       rSrg	)ÚXidé   z€A two-phase commit transaction identifier.

The object can also be unpacked as a 3-item tuple (`format_id`, `gtrid`,
`bqual`).

ú
int | NoneÚ	format_idÚstrÚgtridú
str | NoneÚbqualNzdt.datetime | NoneÚpreparedÚownerÚdatabasec                ó`   •  U R                  U5      $ ! [         a    [        SUS5      s $ f = f)ztTry to parse an XA triple from the string.

This may fail for several reasons. In such case return an unparsed Xid.
N)Ú_parse_stringÚ	Exceptionr
   )ÚclsÚss     ÚI/home/mande/repo/quber/.venv/lib/python3.13/site-packages/psycopg/_tpc.pyÚfrom_stringÚXid.from_string!   s6   € ð	&Ø×$Ñ$ QÓ'Ð'øÜó 	&Ü�t˜Q Ó%Ò%ð	&ús   ‚ “-¬-c                ó"   • U R                  5       $ ©N)Ú_as_tid©Úselfs    r   Ú__str__ÚXid.__str__,   s   € Ø�|‰|‹~Ðó    c                ó   • g)Né   © r    s    r   Ú__len__ÚXid.__len__/   s   € Ør$   c                óN   • U R                   U R                  U R                  4U   $ r   )r   r   r   )r!   Úindexs     r   Ú__getitem__ÚXid.__getitem__2   s    € Ø—‘ §
¡
¨D¯J©JÐ7¸Ñ>Ð>r$   c                óH  • [         R                  U5      =n(       d  [        S5      e[        UR	                  S5      5      n[        UR	                  S5      5      R                  5       n[        UR	                  S5      5      R                  5       nU R                  X4U5      $ )Nzbad Xid formaté   é   r&   )Ú_re_xidÚmatchÚ
ValueErrorÚintÚgroupr   ÚdecodeÚ
from_parts)r   r   Úmr   r   r   s         r   r   ÚXid._parse_string5   sz   € ä—]‘] 1Ó%Ð%�Õ%ÜÐ-Ó.Ð.ä˜Ÿ™ ›
“Oˆ	Ü˜!Ÿ'™' !›*Ó%×,Ñ,Ó.ˆÜ˜!Ÿ'™' !›*Ó%×,Ñ,Ó.ˆØ�~‰~˜i°Ó6Ð6r$   c                óö   • Ub]  Uc  [        S5      eSUs=::  a  S:  d  O  [        S5      e[        U5      S:”  a  [        S5      e[        U5      S:”  a  [        S5      eOUc  [        S5      e[        XU5      $ )	Nz,if format_id is specified, bqual must be toor   l        z/format_id must be a non-negative 32-bit integeré@   z&bqual must be not longer than 64 charsz&gtrid must be not longer than 64 charsz,if format_id is None, bqual must be None too)Ú	TypeErrorr3   Úlenr
   )r   r   r   r   s       r   r7   ÚXid.from_parts?   s…   € àÑ Ø‰}ÜÐ NÓOÐOØ˜	Õ. JÕ.Ü Ð!RÓSÐSÜ�5‹z˜B‹Ü Ð!IÓJÐJÜ�5‹z˜B‹Ü Ð!IÓJÐJð ð ‰]ÜÐJÓKÐKä�9 UÓ+Ð+r$   c                ó:  • U R                   b  U R                  c  U R                  $ [        U R                  R	                  5       5      R                  5       n[        U R                  R	                  5       5      R                  5       nU R                    SU SU 3$ )aŒ  
Return the PostgreSQL transaction_id for this XA xid.

PostgreSQL wants just a string, while the DBAPI supports the XA
standard and thus a triple. We use the same conversion algorithm
implemented by JDBC in order to allow some form of interoperation.

see also: the pgjdbc implementation
  http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/jdbc/pgjdbc/org/
    postgresql/xa/RecoveredXid.java?rev=1.2
Ú_)r   r   r   r   Úencoder6   )r!   ÚegtridÚebquals      r   r   ÚXid._as_tidP   s   € ð �>‰>Ñ! T§Z¡ZÑ%7à—:‘:Ðô ˜4Ÿ:™:×,Ñ,Ó.Ó/×6Ñ6Ó8ˆÜ˜4Ÿ:™:×,Ñ,Ó.Ó/×6Ñ6Ó8ˆà—.‘.Ð!  6 (¨!¨F¨8Ð4Ð4r$   c                ó   • g)Nz<SELECT gid, prepared, owner, database FROM pg_prepared_xactsr'   )r   s    r   Ú_get_recover_queryÚXid._get_recover_queryf   s   € àMr$   c                ó@   • [         R                  U5      n[        XRX4S9$ )N)r   r   r   )r
   r   r   )r   Úgidr   r   r   Úxids         r   Ú_from_recordÚXid._from_recordj   s   € ô �o‰o˜cÓ"ˆÜ�s°UÑNÐNr$   r'   )r   r   Úreturnr
   )rM   r   )rM   r4   )r+   r4   rM   zint | str | None)r   r   r   r   r   r   rM   r
   )
rI   r   r   zdt.datetimer   r   r   r   rM   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   r   r   Úclassmethodr   r"   r(   r,   r   r7   r   rF   rK   Ú__static_attributes__r'   r$   r   r
   r
      sà   ‡ ñð ÓØƒJØÓØ#'€HÐ Ó'Ø€Eˆ:ÓØ€HˆjÓàó&ó ð&ôôô?ð ó7ó ð7ð ó,ó ð,ô 5ð, óNó ðNð ðOØðOØ!,ðOØ58ðOØDGðOà	óOó óOr$   r
   Úpsycopg)rR   Ú
__future__r   ÚreÚdatetimeÚdtÚbase64r   r   Údataclassesr   r   Úcompiler1   r
   rO   r'   r$   r   Ú<module>r^      sX   ðñõ #ã 	Û ß 'ß *à
�*Š*Ð/Ó
0€ñ �$Ñ÷]Oð ]Oó ð]Oð@ €…r$   