📁 File Manager Pro
v10.0.2 | PHP: 8.1.34
Server: LiteSpeed
2026-06-27 13:32:37
📂
/
/
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
integrations
/
__pycache__
✏️
Editing: asgi.cpython-312.pyc
� Yr*j>P � �� � d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl Z ddl mZ ddlm Z mZ ddlmZmZmZmZmZ dd lmZmZ dd lmZmZ ddlmZ ddlmZ dd lm Z m!Z! ddl"mZm#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 er ddlm2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z:m;Z; ddl"m<Z< e*d� Z=dZ>dZ?ej� dk\ rddlmAZA nddlBmAZA d"dddeCddfd�ZDdddeEfd�ZF G d � d!� ZGy)#ze An ASGI middleware. Based on Tom Christie's `sentry-asgi <https://github.com/encode/sentry-asgi>`. � N)�deepcopy)�partial)� TYPE_CHECKING)�continue_trace)�OP�SPANDATA)�_get_headers�_get_ip�_get_request_attributes�_get_request_data�_get_url)�DEFAULT_HTTP_METHODS_TO_CAPTURE�nullcontext)�Scope�should_send_default_pii)� track_session)�SOURCE_FOR_STYLE)� SegmentSource�StreamedSpan)r �Transaction�TransactionSource)�has_span_streaming_enabled) �CONTEXTVARS_ERROR_MESSAGE�HAS_REAL_CONTEXTVARS� ContextVar�_get_installed_modules�capture_internal_exceptions�event_from_exception�logger�qualname_from_function�reraise�transaction_from_function)�Any�ContextManager�Dict�Optional�Tuple�Union)� Attributes�Event�Hint)�Span�sentry_asgi_middleware_appliedzgeneric ASGI request)�endpoint�url)� � )�iscoroutinefunction�excr# �mechanism_type�returnc � � t | t j � j |dd��� \ }}t j ||�� y )NF)�type�handled)�client_options� mechanism)�hint)r � sentry_sdk� get_client�options� capture_event)r3 r4 �eventr; s �K/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations/asgi.py�_capture_exceptionrB L s? � �&��!�,�,�.�6�6�)�e�<��K�E�4� ���U��.� �appc � � t j | � rt | d� S t j | � rt | � S t | dd� }t |� S )z� Try to figure out if an application object supports ASGI3. This is how uvicorn figures out the application version as well. � __await__�__call__N)�inspect�isclass�hasattr� isfunctionr2 �getattr)rD �calls rA �_looks_like_asgi3rN U sO � � ���s���s�K�(�(� � � �C� �"�3�'�'��s�J��-��"�4�(�(rC c �� � e Zd ZdZddddedfddd ed ededed dddddfd�Zdeddfd�Z deddfd�Z d#d�Zd$d�Zddddddde ddf d�Z d%d�Zdd d eddddfd �Zdd d!eddddfd"�Zy)&�SentryAsgiMiddleware)rD rG �transaction_styler4 �span_origin�http_methods_to_captureFr. �asgi�manualNrD r# �unsafe_context_datarQ r4 rR rS zTuple[str, ...]�asgi_versionz Optional[int]r5 c � � |st st dt z � �|t vrt d|�dt �d�� �|dk( xr dt � v }|rt j d� || _ || _ || _ || _ || _ |�t |� rd }nd }|d k( r| j | _ y|d k( r| j | _ yy)ab Instrument an ASGI application with Sentry. Provides HTTP/websocket data to sent events and basic handling for exceptions bubbling up through the middleware. :param unsafe_context_data: Disable errors when a proper contextvars installation could not be found. We do not recommend changing this from the default. zRThe ASGI middleware for Sentry requires Python 3.7+ or the aiocontextvars package.z%Invalid value for transaction_style: z (must be in �)rT � starlettez�The Sentry Python SDK can now automatically support ASGI frameworks like Starlette and FastAPI. Please remove 'SentryAsgiMiddleware' from your project. See https://docs.sentry.io/platforms/python/guides/asgi/ for more information.Nr0 � )r �RuntimeErrorr �TRANSACTION_STYLE_VALUES� ValueErrorr r �warningrQ r4 rR rD rS rN � _run_asgi3rG � _run_asgi2) �selfrD rV rQ r4 rR rS rW �0asgi_middleware_while_using_starlette_or_fastapis rA �__init__zSentryAsgiMiddleware.__init__n s� � �"