ó
    Ð]jw  ã                  ó  • S r SSKJr  SSK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Jr  \R                  r\R                  rS	rSSS
 jjrSSS jjrSS jr\R(                  " S5      r\R(                  " S5      rSS jrSS jrg)z*
Functions to manipulate conninfo strings
é    )ÚannotationsNé   )Ú_conninfo_attemptsÚ_conninfo_attempts_asyncÚ_conninfo_utils)Úerrors)Úpq)ÚConnDictÚ	ConnParamé‚   c                óh  • U (       d  U(       d  gU(       d  [        U 5        [        U 5      $ UR                  5        VVs0 s H  u  p#Uc  M
  X#_M     nnnU (       a  [        U 5      nUR	                  U5        UnSR                  S UR                  5        5       5      n [        U 5        U $ s  snnf )aÞ  
Merge a string and keyword params into a single conninfo string.

:param conninfo: A `connection string`__ as accepted by PostgreSQL.
:param kwargs: Parameters overriding the ones specified in `!conninfo`.
:return: A connection string valid for PostgreSQL, with the `!kwargs`
    parameters merged.

Raise `~psycopg.ProgrammingError` if the input doesn't make a valid
conninfo string.

.. __: https://www.postgresql.org/docs/current/libpq-connect.html
       #LIBPQ-CONNSTRING
Ú Ú c              3  óX   #   • U  H   u  pU S [        [        U5      5       3v •  M"     g7f)Ú=N)Ú_param_escapeÚstr)Ú.0ÚkÚvs      ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/psycopg/conninfo.pyÚ	<genexpr>Ú make_conninfo.<locals>.<genexpr>;   s'   é € ÐTÂ^¹6¸A˜1˜#˜Qœ}¬S°«VÓ4Ð5Õ6Â^ùs   ‚(*)Ú_parse_conninfor   ÚitemsÚconninfo_to_dictÚupdateÚjoin)ÚconninfoÚkwargsr   r   Útmps        r   Úmake_conninfor"      s”   € ö žFØö Ü˜Ô!Ü�8‹}Ðð "(§¡¤ÔA¢‘v˜°1‹dˆaŠd¡€FÑAæÜ˜xÓ(ˆØ�
‰
�6ÔØˆà�x‰xÑTÀVÇ\Á\Ä^ÓTÓT€Hô �HÔà€Oùó Bs   Á 	B.ÁB.c                ó  • [        U 5      nU Vs0 s HD  o3R                  c  M  UR                  R                  5       UR                  R                  5       _MF     nnUR	                  5        H  u  pVUc  M
  XdU'   M     U$ s  snf )aÓ  
Convert the `!conninfo` string into a dictionary of parameters.

:param conninfo: A `connection string`__ as accepted by PostgreSQL.
:param kwargs: Parameters overriding the ones specified in `!conninfo`.
:return: Dictionary with the parameters parsed from `!conninfo` and
    `!kwargs`.

Raise `~psycopg.ProgrammingError` if `!conninfo` is not a a valid connection
string.

.. __: https://www.postgresql.org/docs/current/libpq-connect.html
       #LIBPQ-CONNSTRING
)r   ÚvalÚkeywordÚdecoder   )r   r    ÚoptsÚoptÚrvr   r   s          r   r   r   C   sz   € ô ˜8Ó$€Dá:>óÚ:>°3Ç'Á'Ó.ˆ�‰×ÑÓ˜cŸg™gŸn™nÓ.Ò.¹$ð ð ð —‘–‰ˆØ‹=Øˆq‹Eñ ð €Iùòs
   �B¤7Bc                óÖ   •  [         R                  R                  U R                  5       5      $ ! [        R
                   a%  n[        R                  " [        U5      5      SeSnAff = f)z¡
Verify that `!conninfo` is a valid connection string.

Raise ProgrammingError if the string is not valid.

Return the result of pq.Conninfo.parse() on success.
N)r	   ÚConninfoÚparseÚencodeÚeÚOperationalErrorÚProgrammingErrorr   )r   Úexs     r   r   r   \   sP   € ð4Ü�{‰{× Ñ  §¡Ó!2Ó3Ð3øÜ×Ñó 4Ü× Ò ¤ R£Ó)¨tÐ3ûð4ús   ‚,/ ¯A(Á A#Á#A(z([\\'])z\sc                ó†   • U (       d  g[         R                  [        R                  SU 5      =n 5      (       a  SU -   S-   n U $ )z1
Apply the escaping rule required by PQconnectdb
z''z\\\1Ú')Úre_spaceÚsearchÚ	re_escapeÚsub)Úss    r   r   r   n   s;   € ö Øä‡�œIŸM™M¨'°1Ó5Ð5�q×6Ñ6Ø�!‰G�c‰Mˆà€Hó    c                óî   • [         R                  " U S5      nUc  [        n [        [	        U5      5      nUS::  a  [        nU$ US:  a  SnU$ ! [
         a    [        R                  " SU< 35      Sef = f)z?
Return the timeout in seconds from the connection parameters.
Úconnect_timeoutNzbad value for connect_timeout: r   é   )r   Ú	get_paramÚ_DEFAULT_CONNECT_TIMEOUTÚintÚfloatÚ
ValueErrorr.   r0   )ÚparamsÚvalueÚtimeouts      r   Útimeout_from_conninforE   {   sŽ   € ô .×7Ò7¸Ð@QÓR€EØ�}Ü(ˆðXÜ”e˜E“lÓ#ˆð �!ƒ|ô +ˆð
 €Nð	 
�1‹àˆà€Nøô ó XÜ× Ò Ð#BÀ5Á)Ð!LÓMÐSWÐWðXús   ¢A Á&A4)r   )r   r   r    r   Úreturnr   )r   r   r    r   rF   r
   )r   r   rF   zlist[pq.ConninfoOption])r8   r   rF   r   )rB   r
   rF   r?   )Ú__doc__Ú
__future__r   Úrer   r   r   r   r   r.   r	   Úabcr
   r   Úconninfo_attemptsÚconninfo_attempts_asyncr>   r"   r   r   Úcompiler6   r4   r   rE   © r9   r   Ú<module>rO      s{   ðñõ #ã 	ç KÑ KÝ Ý ß $ð '×8Ñ8Ð Ø2×JÑJÐ ð
 Ð ö&öRô24ð �JŠJ�zÓ"€	Ø�:Š:�eÓ€ô
õr9   