o
    i}                     @  s   d dl mZ d dlZd dlmZ d dlmZmZ zd dlm	Z	 d dl
mZ W n ey1   edw er@d dlmZ d d	lmZ dddZdddZdS )    )annotationsN)Iterable)TYPE_CHECKINGAny)SQLAlchemyInstrumentor)CommenterOptionsz`logfire.instrument_sqlalchemy()` requires the `opentelemetry-instrumentation-sqlalchemy` package.
You can install this with:
    pip install 'logfire[sqlalchemy]')EngineAsyncEngineengineAsyncEngine | Engine | NonereturnEngine | Nonec                 C  s    ddl m} t| |r| jS | S )Nr   r	   )sqlalchemy.ext.asyncior
   
isinstancesync_engine)r   r
    r   o/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/logfire/_internal/integrations/sqlalchemy.py_convert_to_sync_engine   s   
r   engines%Iterable[AsyncEngine | Engine] | Noneenable_commenterboolcommenter_optionsr   kwargsr   Nonec                 K  sd   t t t| } |durdd |D }W d   n1 sw   Y  t jd| |||d|S )zInstrument the `sqlalchemy` module so that spans are automatically created for each query.

    See the `Logfire.instrument_sqlalchemy` method for details.
    Nc                 S  s   g | ]}t |qS r   )r   ).0engine_entryr   r   r   
<listcomp>.   s    z)instrument_sqlalchemy.<locals>.<listcomp>)r   r   r   r   r   )
contextlibsuppressImportErrorr   r   
instrument)r   r   r   r   r   r   r   r   instrument_sqlalchemy   s   r#   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )
__future__r   r   collections.abcr   typingr   r   (opentelemetry.instrumentation.sqlalchemyr   logfire.integrations.sqlalchemyr   r!   RuntimeError
sqlalchemyr   r   r
   r   r#   r   r   r   r   <module>   s"    
