ó
    Ð]jG  ã                  ó¼  • S r SSKJr  SSKrSSKrSSKrSSKrSSK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  \R*                  " S
5      r\R.                  r " S S\
5      r " S S\
5      r " S S\
5      r\SS j5       r S     SS jjr\R:                  " S\R<                  \R>                  -  5      r SS jr!SS jr"SS jr#SS jr$\S S j5       r%g)!z@
Various functionalities to make easier to work with the libpq.
é    )ÚannotationsN)Ú
NamedTuple)ÚPath)Úcacheé   )Úabc)Ú
ConnStatusÚPipelineStatusÚTransactionStatusz
psycopg.pqc                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg)	ÚPGnotifyé   ÚbytesÚrelnameÚintÚbe_pidÚextra© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/psycopg/pq/misc.pyr   r      s   ‡ ØƒNØƒKØ†Lr   r   c                  ó\   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   Srg)ÚConninfoOptioné    r   Úkeywordzbytes | NoneÚenvvarÚcompiledÚvalÚlabelÚdispcharr   Údispsizer   Nr   r   r   r   r   r       s(   ‡ ØƒNØÓØÓØ	ÓØƒLØƒOØ†Mr   r   c                  ó\   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   Srg)ÚPGresAttDescé*   r   Únamer   ÚtableidÚcolumnidÚformatÚtypidÚtyplenÚ	atttypmodr   Nr   r   r   r   r)   r)   *   s%   ‡ Ø
ƒKØƒLØƒMØƒKØƒJØƒKØ†Nr   r)   c                 óÈ  • [         R                  S:X  aG  [        R                  R	                  S5      =n c  g [        [        U 5      R                  5       5      n U $ [         R                  S:X  a¥  [        R                  R	                  S5      n U (       d|   SS KnUR                  SS/5      R                  5       R                  5       n[        R                  R                  [        R                  R                  US5      =n 5      (       d  S n U $  U $ [        R                  R	                  S	5      n U $ ! [          a!  n["        R%                  SU5         S nAU $ S nAff = f)
NÚwin32z	libpq.dllÚdarwinzlibpq.dylibr   Ú	pg_configz--libdirz(couldn't use pg_config to find libpq: %sÚpq)ÚsysÚplatformÚctypesÚutilÚfind_libraryÚstrr   ÚresolveÚ
subprocessÚcheck_outputÚstripÚdecodeÚosÚpathÚexistsÚjoinÚ	ExceptionÚloggerÚdebug)ÚlibnameÚspÚlibdirÚexs       r   Úfind_libpq_full_pathrM   4   s%  € ä
‡|�|�wÓÜ—{‘{×/Ñ/°Ó<Ð<ˆGÑEØÜ”d˜7“m×+Ñ+Ó-Ó.ˆð& €Nô% 
�‰˜Ó	!Ü—+‘+×*Ñ*¨=Ó9ˆö ðMÛ'àŸ™¨+°zÐ)BÓC×IÑIÓK×RÑRÓT�Ü—w‘w—~‘~´·±·±¸fÀmÓ1TÐ&T g×UÑUØ"�Gð €Nð ð €Nô —+‘+×*Ñ*¨4Ó0ˆà€Nøô ó MÜ—‘ÐGÈ×LÐLð
 €NûðMús   ÂA9D6 Ä6
E!Å EÅE!c                óR   • U(       a  U R                  U5      $ U R                  5       $ )a%  
Return an error message from a `PGconn`, `PGresult`, `PGcancelConn`.

The return value is a `!str` (unlike pq data which is usually `!bytes`):
use the connection encoding if available, otherwise the `!encoding`
parameter as a fallback for decoding. Don't raise exceptions on decoding
errors.
)Úget_error_message)ÚobjÚencodings     r   Úerror_messagerR   O   s%   € ö  /7ˆ3× Ñ  Ó*ÐS¸C×<QÑ<QÓ<SÐSr   u¿  
    ^ (?:
      DEBUG | INFO | HINWEIS | WARNUNG | FEHLER | LOG | FATAL | PANIK  # de
    | DEBUG | INFO | NOTICE | WARNING | ERROR | LOG | FATAL | PANIC  # en
    | DEBUG | INFO | NOTICE | WARNING | ERROR | LOG | FATAL | PANIC  # es
    | DEBUG | INFO | NOTICE | ATTENTION | ERREUR | LOG | FATAL | PANIC  # fr
    | DEBUG | INFO | NOTICE | PERINGATAN | ERROR | LOG | FATAL | PANIK  # id
    | DEBUG | INFO | NOTIFICA | ATTENZIONE | ERRORE | LOG | FATALE | PANICO  # it
    | DEBUG | INFO | NOTICE | WARNING | ERROR | LOG | FATAL | PANIC  # ja
    | ë””ë²„ê·¸ | ì •ë³´ | ì•Œë¦¼ | ê²½ê³  | ì˜¤ë¥˜ | ë¡œê·¸ | ì¹˜ëª…ì �ì˜¤ë¥˜ | ì†�ìƒ�  # ko
    | DEBUG | INFORMACJA | UWAGA | OSTRZEÅ»ENIE | BÅ�Ä„D | DZIENNIK | KATASTROFALNY | PANIKA  # pl
    | DEPURAÃ‡ÃƒO | INFO | NOTA | AVISO | ERRO | LOG | FATAL | PÃ‚NICO  # pt_BR
    | ÐžÐ¢Ð›Ð�Ð”ÐšÐ� | Ð˜Ð�Ð¤ÐžÐ ÐœÐ�Ð¦Ð˜Ð¯ | Ð—Ð�ÐœÐ•Ð§Ð�Ð�Ð˜Ð• | ÐŸÐ Ð•Ð”Ð£ÐŸÐ Ð•Ð–Ð”Ð•Ð�Ð˜Ð• | ÐžÐ¨Ð˜Ð‘ÐšÐ� | Ð¡ÐžÐžÐ‘Ð©Ð•Ð�Ð˜Ð• | Ð’Ð�Ð–Ð�Ðž | ÐŸÐ�Ð�Ð˜ÐšÐ�  # ru
    | DEBUG | INFO | NOTIS | VARNING | FEL | LOGG | FATALT | PANIK  # sv
    | DEBUG | BÄ°LGÄ° | NOT | UYARI | HATA | LOG | Ã–LÃœMCÃœL\ \(FATAL\) | KRÄ°TÄ°K  # tr
    | Ð�Ð�Ð›Ð�Ð“ÐžÐ”Ð–Ð•Ð�Ð�Ð¯ | Ð†Ð�Ð¤ÐžÐ ÐœÐ�Ð¦Ð†Ð¯ | ÐŸÐžÐ’Ð†Ð”ÐžÐœÐ›Ð•Ð�Ð�Ð¯ | ÐŸÐžÐŸÐ•Ð Ð•Ð”Ð–Ð•Ð�Ð�Ð¯ | ÐŸÐžÐœÐ˜Ð›ÐšÐ� | Ð—Ð�ÐŸÐ˜Ð¡Ð£Ð’Ð�Ð�Ð�Ð¯ | Ð¤Ð�Ð¢Ð�Ð›Ð¬Ð�Ðž | ÐŸÐ�Ð�Ð†ÐšÐ�  # uk
    | è°ƒè¯• | ä¿¡æ�¯ | æ³¨æ„� | è­¦å‘Š | é”™è¯¯ | æ—¥å¿— | è‡´å‘½é”™è¯¯ | æ¯”è‡´å‘½é”™è¯¯è¿˜è¿‡åˆ†çš„é”™è¯¯  # zh_CN
    ) : \s+
    c                ó„   • [         R                  U 5      =n(       a  XR                  5       S   S n U R                  5       $ )z2Strip severity and whitespaces from error message.r   N)ÚPREFIXESÚmatchÚspanr@   )ÚmsgÚms     r   Ústrip_severityrY      s6   € ä�N‰N˜3ÓÐ€qÕØ—&‘&“(˜1‘+�-Ð ˆà�9‰9‹;Ðr   c                óL   • U R                  US5      =n(       a  [        U5      $ g)NÚreplacezno error details available)rA   rY   )rW   rQ   Úsmsgs      r   Ú_clean_error_messager]   ‡   s&   € Ø�z‰z˜( IÓ.Ð.€tÕ.Ü˜dÓ#Ð#à+r   c                ó´  • / nU R                   [        :X  GaU  [        U R                  5      R                  nU R
                  (       a%  US[        U R
                  5      R                   3-  nU R                  R                  S5      (       d+  UR                  SU R                  R                  5       45        U R                  R                  5       =(       d
    [        5       =nS:w  a  UR                  SU45        U R                  U R                  :w  a+  UR                  SU R                  R                  5       45        UR                  SU R                  R                  5       45        O  [        U R                   5      R                  nS
R#                  S U 5       5      =n(       a  SU S3nSU SU 3$ ! [          a    SU R                    S	3n NIf = f)zB
Return summary information on a connection.

Useful for __repr__
z, pipeline=ó   /ÚhostÚ5432ÚportÚuserÚdatabasezstatus=z (unkndown)Ú c              3  ó,   #   • U  H
  nS U-  v •  M     g7f)z%s=%sNr   )Ú.0Úparts     r   Ú	<genexpr>Ú%connection_summary.<locals>.<genexpr>¬   s   é € Ð;²U¨T˜' Dž.²Uùs   ‚z (Ú)Ú[Ú])ÚstatusÚOKr   Útransaction_statusr+   Úpipeline_statusr
   r`   Ú
startswithÚappendrA   rb   Úget_compiled_portrc   Údbr	   Ú
ValueErrorrE   )ÚpgconnÚpartsrn   rb   Úspartss        r   Úconnection_summaryrz   Ž   s…  € ð €EØ‡}�}œÔä'¨×(AÑ(AÓB×GÑGˆØ×!×!Ø˜¤N°6×3IÑ3IÓ$J×$OÑ$OÐ#PÐQÑQˆFð �{‰{×%Ñ% d×+Ñ+Ø�L‰L˜& &§+¡+×"4Ñ"4Ó"6Ð7Ô8Ø—K‘K×&Ñ&Ó(×?Ô,=Ó,?Ð?ˆDÀFÓJØ�L‰L˜& $˜Ô(Ø�;‰;˜&Ÿ)™)Ó#Ø�L‰L˜& &§+¡+×"4Ñ"4Ó"6Ð7Ô8Ø�‰�j &§)¡)×"2Ñ"2Ó"4Ð5Õ6ð	:Ü §¡Ó.×3Ñ3ˆFð —‘Ñ;±UÓ;Ó;Ð;€vÕ;Ø�f�X˜Q�ˆØˆvˆh�a˜�xÐ Ð øô ó 	:ð ˜vŸ}™}˜o¨[Ð9ŠFð	:ús   Å.F: Æ:GÇGc                ót   • [        U S5      u  p[        U S5      u  p#US:¼  a  US:X  a  U SU 3$ U SU SU 3$ )zg
Return a pretty representation of a PostgreSQL version

For instance: 140002 -> 14.2, 90610 -> 9.6.10
éd   é
   r   Ú.)Údivmod)ÚversionÚpatchÚmajorÚminors       r   Úversion_prettyr„   ±   sU   € ô ˜G SÓ)�N€GÜ˜' 3Ó'�L€EØ�ƒ{�u “zØ�˜˜%˜Ð!Ð!à�˜˜%˜  % Ð)Ð)r   c                 ój   • SSK Jn   U " S5      nU(       a  UR                  (       a  UR                  $ S$ )z0Return the default port compiled with the libpq.r   )Úget_param_defrb   Ú )Úpsycopg._conninfo_utilsr†   r#   )r†   Úinfos     r   rt   rt   ¿   s(   € õ 6á˜Ó €DÞ  T§]§]ˆ4�=‰=Ð:¸Ð:r   )Úreturnz
str | None)r‡   )rP   z,abc.PGconn | abc.PGresult | abc.PGcancelConnrQ   r<   rŠ   r<   )rW   r<   rŠ   r<   )rW   r   rQ   r<   rŠ   r<   )rw   z
abc.PGconnrŠ   r<   )r€   r   rŠ   r<   )rŠ   r<   )&Ú__doc__Ú
__future__r   rB   Úrer7   ÚloggingÚctypes.utilr9   Útypingr   Úpathlibr   Ú	functoolsr   r‡   r   Ú_enumsr	   r
   r   Ú	getLoggerrG   ro   r   r   r)   rM   rR   ÚcompileÚVERBOSEÚ	MULTILINErT   rY   r]   rz   r„   rt   r   r   r   Ú<module>r˜      sù   ðñõ #ã 	Û 	Û 
Û Û Ý Ý Ý å ß AÑ Aà	×	Ò	˜<Ó	(€à‡]�]€ôˆzô ô�Zô ô�:ô ð óó ðð6 HJðTØ	5ðTØADðTàõTð, �:Š:ðð( ‡J�J�—‘Ñó-€ô4ô,ô !ôF*ð ó;ó ñ;r   