o
    i                     @   s|   d dl mZ d dlmZ eeZdZdedefddZdede	eef fd	d
Z
e
aeddd Zeddd ZdS )    )
get_logger)ModuleWatchdogzsql.dbvendorreturnc                 C   s,   | sdS d| v r
dS d| v s| dkrdS | S )z/Return a canonical name for a type of database.dbsqlitepostgrespsycopg2 )r   r
   r
   C/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/ext/sql.pynormalize_vendor   s   r   dsnc                 C   sF   t  }zt dd |  D }W |S  ty"   tjddd Y |S w )z
    Return a dictionary of the components of a postgres DSN.
    >>> parse_pg_dsn('user=dog port=1543 dbname=dogdata')
    {'user':'dog', 'port':'1543', 'dbname':'dogdata'}
    c                 s   s    | ]	}| d dV  qdS )=   N)split).0_r
   r
   r   	<genexpr>"   s    z#_dd_parse_pg_dsn.<locals>.<genexpr>z'Failed to parse postgres dsn connectionT)exc_info)dictr   	Exceptionlogdebug)r   dsn_dictr
   r
   r   _dd_parse_pg_dsn   s   r   r	   c                 C   ,   zddl m} |aW dS  ty   Y dS w )zBReplaces parse_pg_dsn with the helper function defined in psycopg2r   )	parse_dsnN)psycopg2.extensionsr   parse_pg_dsnImportError)psycopg_moduler   r
   r
   r   use_psycopg2_parse_dsn.      
r!   psycopgc                 C   r   )zBReplaces parse_pg_dsn with the helper function defined in psycopg3r   )conninfo_to_dictN)psycopg.conninfor$   r   r   )r    r$   r
   r
   r   use_psycopg3_parse_dsn<   r"   r&   N)ddtrace.internal.loggerr   ddtrace.internal.moduler   __name__r   DBstrr   r   r   r   after_module_importedr!   r&   r
   r
   r
   r   <module>   s    
