
    ,hw                       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                f   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  V   #    U H   u  pU S [        [        U5      5       3v   M"     g7f)=N)_param_escapestr).0kvs      K/var/www/html/Ai_home/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   C   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                  [        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;     IMM'155q66!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   compiler6   r4   r   rE    r9   r   <module>rO      s{    # 	 K K   $ '88 2JJ 
  &R24 JJz"	::e
r9   