o
    Zh                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 erDd dl
mZ d dl
mZ d dl
mZ d d	l
mZ d d
l
mZ d dl
mZ e Ze Ze Zdd Zg dZg dZeeedZ[	dddZG dd deZG dd deZdS )    )absolute_import)Lock)	iteritems)TYPE_CHECKING)logger)Callable)Dict)Iterator)List)Set)Typec                    s<    fdd}t |jtrD ]}| jd|7  _q|S )Nc                 3   s    ddl m} | r  }n}|D ]/}z|dd\}}t|||V  W q ttfyA } ztd|| W Y d}~qd}~ww dS )z7Returns an iterator of the default integration classes:r   )import_module.   z)Did not import default integration %s: %sN)	importlibr   rsplitgetattrDidNotEnableSyntaxErrorr   debug)with_auto_enabling_integrationsr   Zall_import_stringsimport_stringmoduleclseauto_enabling_integrationsintegrations W/var/www/html/lang_env/lib/python3.10/site-packages/sentry_sdk/integrations/__init__.pyiter_default_integrations!   s    
zJ_generate_default_integrations_iterator.<locals>.iter_default_integrationsz
- `{}`)
isinstance__doc__strformat)r   r   r    r   r   r   r   '_generate_default_integrations_iterator   s
   r%   )z,sentry_sdk.integrations.argv.ArgvIntegrationz0sentry_sdk.integrations.atexit.AtexitIntegrationz0sentry_sdk.integrations.dedupe.DedupeIntegrationz8sentry_sdk.integrations.excepthook.ExcepthookIntegrationz2sentry_sdk.integrations.logging.LoggingIntegrationz2sentry_sdk.integrations.modules.ModulesIntegrationz0sentry_sdk.integrations.stdlib.StdlibIntegrationz6sentry_sdk.integrations.threading.ThreadingIntegration)z2sentry_sdk.integrations.aiohttp.AioHttpIntegrationz.sentry_sdk.integrations.boto3.Boto3Integrationz0sentry_sdk.integrations.bottle.BottleIntegrationz0sentry_sdk.integrations.celery.CeleryIntegrationz0sentry_sdk.integrations.django.DjangoIntegrationz0sentry_sdk.integrations.falcon.FalconIntegrationz2sentry_sdk.integrations.fastapi.FastApiIntegrationz.sentry_sdk.integrations.flask.FlaskIntegrationz.sentry_sdk.integrations.httpx.HttpxIntegrationz0sentry_sdk.integrations.openai.OpenAIIntegrationz2sentry_sdk.integrations.pyramid.PyramidIntegrationz.sentry_sdk.integrations.redis.RedisIntegrationz(sentry_sdk.integrations.rq.RqIntegrationz.sentry_sdk.integrations.sanic.SanicIntegrationz8sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegrationz6sentry_sdk.integrations.starlette.StarletteIntegrationz2sentry_sdk.integrations.tornado.TornadoIntegration)r   r   TFc           	      C   sp  t dd | pdD } td| t }|r0t|D ]}|j| vr/| }|| |j< ||j qt| D ]m\}}t_ |t	vrtd| zt
|  W n: tyj   t|dddurgtd| |  n Y n# ty } z||vrv td	|| W Y d}~n
d}~ww t| t	| W d   n1 sw   Y  q4d
d t| D } | D ]}td| q| S )z
    Given a list of integration instances, this installs them all.

    When `with_defaults` is set to `True` all default integrations are added
    unless they were already provided before.
    c                 s   s    | ]}|j |fV  qd S )N)
identifier).0integrationr   r   r   	<genexpr>n   s    

z%setup_integrations.<locals>.<genexpr>r   z+Setting up integrations (with default = %s)z0Setting up previously not enabled integration %sinstallNzCIntegration %s: The install method is deprecated. Use `setup_once`.z)Did not enable default integration %s: %sc                 S   s   i | ]\}}|t v r||qS r   )_installed_integrations)r'   r&   r(   r   r   r   
<dictcomp>   s
    z&setup_integrations.<locals>.<dictcomp>zEnabling integration %s)dictr   r   setr    r&   addr   _installer_lock_processed_integrationstype
setup_onceNotImplementedErrorr   warningr*   r   r+   )	r   Zwith_defaultsr   Zused_as_default_integrationZintegration_clsinstancer&   r(   r   r   r   r   setup_integrationsd   sd   





r7   c                   @   s   e Zd ZdZdS )r   a  
    The integration could not be enabled due to a trivial user error like
    `flask` not being installed for the `FlaskIntegration`.

    This exception is silently swallowed for default integrations, but reraised
    for explicitly enabled integrations.
    N)__name__
__module____qualname__r"   r   r   r   r   r      s    r   c                   @   s(   e Zd ZdZdZ	 dZ	 edd ZdS )IntegrationzBaseclass for all integrations.

    To accept options for an integration, implement your own constructor that
    saves those options on `self`.
    Nc                   C   s   t  )a`  
        Initialize the integration.

        This function is only called once, ever. Configuration is not available
        at this point, so the only thing to do here is to hook into exception
        handlers, and perhaps do monkeypatches.

        Inside those hooks `Integration.current` can be used to access the
        instance again.
        )r4   r   r   r   r   r3      s   zIntegration.setup_once)r8   r9   r:   r"   r*   r&   staticmethodr3   r   r   r   r   r;      s    r;   N)TF)
__future__r   	threadingr   Zsentry_sdk._compatr   Zsentry_sdk._typesr   Zsentry_sdk.utilsr   typingr   r   r	   r
   r   r   r0   r.   r1   r+   r%   Z_DEFAULT_INTEGRATIONSZ_AUTO_ENABLING_INTEGRATIONSr    r7   	Exceptionr   objectr;   r   r   r   r   <module>   s6     
F
