U 췀g]@sddlZddlmZddlmZddlmZddlZddl m Z ddl m Z ddl mZerddl mZdd l mZdd l mZdd l mZdd l mZzdd lmZWn ek rddlmZYnXddZddZddZddZddZddZdS)N)TemplateSyntaxError) mark_safe)VERSION)OP)ensure_integration_enabled) TYPE_CHECKING)Any)Dict)Optional)Iterator)Tuple)Origin) LoaderOrigincCsjt|drt|jSt|dr(t|jSt|trft|drf|j}t|tt frft|dt rft|SdS)Ntemplate_debugdjango_template_sourcesourcer) hasattr_get_template_frame_from_debugr_get_template_frame_from_sourcer isinstancerrtuplelistr ) exc_valuerrV/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/integrations/django/templates.py!get_template_frame_from_exceptions   rcCs*t|ttfr"|r&d|dSn|SdS)Nz [{}, ...]r)rrrformat) template_namerrr_get_template_name_description3srcsddlm}ddlm|jttjfdd}||_tdkrNdSddl }|j j t td fdd }||j _ dS) Nr)SimpleTemplateResponse)DjangoIntegrationc sJtjtjt|jjd&}|d|j |W5QRSQRXdS)Nopnameorigincontext) sentry_sdk start_spanrTEMPLATE_RENDERrrr$set_dataZ context_datafget)selfspan)r real_rendered_contentrrrendered_contentCsz)patch_templates..rendered_content)c st|pi}d|kr$tt|d<tjtjt|jd.}| d||||f||W5QRSQRXdS)NZsentry_trace_metar!r%) rr&Zget_current_scopeZtrace_propagation_metar'rr(rr$r))requestrr%argskwargsr,)r real_renderrrrenderWs  zpatch_templates..render)N)Zdjango.template.responserZsentry_sdk.integrations.djangor r.propertyrr*DJANGO_VERSIONZdjango.shortcutsZ shortcutsr5 functoolswraps)rr.djangor5r)r r4r-rpatch_templates<s    r;cCs|dkr dS|d}|d}|dkr(d}g}g}d}|dD]4\}}||krX||q<||krl||q<|}q<|||dd|dd|ddS) Nliner#Z source_linesT)filenamelineno pre_context post_context context_lineZin_app)append)debugrAr@rBrCrDir<rrrrns,    rccs8dV|d}|dkr4|dV|d|d}qdS)Nr r/)find)template_sourceprrr_linebreak_iters   rLcCs|sdS|\}\}}t|dd}|dkr,d}|}d}d}g}g} d} tt|D]P\} } ||| } ||kr|| kr| }| } n|dkr|| n | | | }qT| dks|dkrdS|||dd| dd| dS)NZloadnamer=rr>r?)r@rArBrCrD)getattrreload enumeraterLrE)rr$startendr@rJrAZuptorBrCrDnumnextr<rrrrs:       r)r8Zdjango.templaterZdjango.utils.safestringrr:rr7r&Zsentry_sdk.constsrZsentry_sdk.utilsrtypingrrr r r r Zdjango.template.baser ImportErrorZdjango.template.loaderrrrr;rrLrrrrrs.            2