
    (ph                       S r SSKJ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
  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   )pq)errors)_conninfo_utils)_conninfo_attempts)_conninfo_attempts_async)	ConnParamConnDict   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      C/var/www/html/venv/lib/python3.13/site-packages/psycopg/conninfo.py	<genexpr> make_conninfo.<locals>.<genexpr>=   s'     T^6A1#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1dadFAx(

6xxTV\\^TTH 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   E   sz     8$D:>:>3''.cggnn..$   =qE  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4s   ,/ A( A##A(z([\\'])z\sc                    U (       d  g[         R                  SU 5      n [        R                  U 5      (       a  SU -   S-   n U $ )z1
Apply the escaping rule required by PQconnectdb
z''z\\\1')	re_escapesubre_spacesearch)ss    r   r   r   p   s;     gq!Aq!GcM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RE}(XeEl# !| +
 N	 
1N  X  #B5)!LMSW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   compiler4   r6   r   rE    r9   r   <module>rO      s~    # 	      & $ '88 2JJ 
  &R24 JJz"	::er9   