a
    xdp                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m	Z	 d dl
Z
d dlmZmZmZmZ d dlmZ er2d 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 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 d dlmZ d dlm Z  d dlm!Z!m"Z" e	dddZ#e$dZ%dZ&e'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dd  Z0d!d" Z1d#d$ Z2G d%d& d&e3Z4e4 Z5d'd( Z6d)d* Z7d+d, Z8d-d. Z9dd/d0Z:G d1d2 d2e;Z<eG d3d4 d4e3Z=G d5d6 d6e3Z>G d7d8 d8e3Z?er4d d9lm@Z@ e@d:ZAee?eAf ZBd;d< ZCd=d> ZDd?d@ ZEdAdB ZFddCdDZGdEdF ZHdGdH ZIer~dIdJ ZJndKdJ ZJdLdM ZKddOdPZLddQdRZMdSdT ZNddUdVZOePeQdWZReRrdXdY ZSndZdY ZSdd[d\ZTd]d^ ZUd_d` ZVdadb ZWddcddZXdedf ZYdgdh ZZddidjZ[dkdl Z\ddmdnZ]dodp Z^dqdr Z_dsdt Z`e` \ZaZbduZcdvdw ZdebdxZeG dydz dzeQZfG d{d| d|ejgZhd}d~ Zidd ZjdS )    N)datetime)urlparse	text_typeimplements_strPY2)MYPY)	FrameType)TracebackType)Any)Callable)Dict)ContextManager)Iterator)List)Optional)Set)Tuple)Union)Type)ExcInfoEndpointTypei     zsentry_sdk.errorsi   z^[a-zA-Z0-9/+=]*$ZcustomurlZrouteview	componentZtaskunknownc                 C   s   t j| ddddS )zCSerialize data into a compact JSON representation encoded as UTF-8.F),:)	allow_nan
separatorsutf-8)jsondumpsencode)data r%   H/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/utils.py
json_dumps8   s    r'   c                   C   s   d S Nr%   r%   r%   r%   r&   _get_debug_hub>   s    r)   c               
   C   s   t jd} | r| S tt jjdl}z.tjg dtj||d	 d 
 d} W n ttfyh   Y n0 | r| W  d   S W d   n1 s0    Y  dD ]}t j|} | r|   S qdS )	zTry to guess a default release.ZSENTRY_RELEASEzw+)gitz	rev-parseHEAD)stdoutstderrstdinr   r    N)ZHEROKU_SLUG_COMMITZSOURCE_VERSIONZ!CODEBUILD_RESOLVED_SOURCE_VERSIONZCIRCLE_SHA1ZGAE_DEPLOYMENT_ID)osenvirongetopenpathdevnull
subprocessPopenPIPEcommunicatestripdecodeOSErrorIOError)releasenullvarr%   r%   r&   get_default_releaseD   s2    0
r@   c                   @   s    e Zd ZdZdd Zdd ZdS )CaptureInternalExceptionr%   c                 C   s   | S r(   r%   selfr%   r%   r&   	__enter__n   s    z"CaptureInternalException.__enter__c                 C   s"   |d ur|d urt |||f dS )NT)capture_internal_exception)rC   tyvaluetbr%   r%   r&   __exit__r   s    z!CaptureInternalException.__exit__N)__name__
__module____qualname__	__slots__rD   rI   r%   r%   r%   r&   rA   k   s   rA   c                   C   s   t S r(   )_CAPTURE_INTERNAL_EXCEPTIONr%   r%   r%   r&   capture_internal_exceptions}   s    rO   c                 C   s   t  }|d ur||  d S r(   )r)   Z_capture_internal_exception)exc_infoZhubr%   r%   r&   rE      s    rE   c                 C   s   | t   S r(   )epochtotal_secondsrG   r%   r%   r&   to_timestamp   s    rT   c                 C   s
   |  dS )Nz%Y-%m-%dT%H:%M:%S.%fZ)strftimerS   r%   r%   r&   format_timestamp   s    rV   c                 C   s2   | du rt  } nt| } | d du r*d} d| iS )z+Creates a hint with the exc info filled in.Nr   rP   )sysrP   exc_info_from_errorrP   r%   r%   r&   event_hint_with_exc_info   s    
rZ   c                   @   s   e Zd ZdZdS )BadDsnzRaised on invalid DSNs.NrJ   rK   rL   __doc__r%   r%   r%   r&   r[      s   r[   c                   @   s6   e Zd ZdZdd Zedd ZdddZd	d
 ZdS )DsnzRepresents a DSN.c              	   C   s  t |trt|j| _d S tt|}|jdvr@td|j |j| _|j	d u rZtd|j	| _
|jd u r| jdkrzdp|d| _n|j| _|jstd|j| _|j| _|jdd	}ztt| | _W n0 ttfy   td
|jpdd	d   Y n0 d|d | _d S )N)httphttpszUnsupported scheme %rzMissing hostnamer`     P   zMissing public key/r   zInvalid project in DSN (%r) )
isinstancer^   dict__dict__r   urlsplitr   schemer[   hostnamehostportusername
public_keypassword
secret_keyr3   rsplitintpop
project_id
ValueError	TypeErrorjoin)rC   rG   partsr3   r%   r%   r&   __init__   s.    



 zDsn.__init__c                 C   s(   | j }| j| jfdvr$d|| jf }|S )zThe netloc part of a DSN.))r_   rb   )r`   ra   z%s:%s)rk   ri   rl   rC   rvr%   r%   r&   netloc   s    z
Dsn.netlocNc              	   C   s"   t | j| j| j| j| j| j|dS )z*Returns the auth info object for this dsn.)ri   rk   r3   rt   rn   rp   client)Authri   r|   r3   rt   rn   rp   )rC   r}   r%   r%   r&   to_auth   s    zDsn.to_authc                 C   s.   d| j | j| jrd| j pd| j| j| jf S )Nz%s://%s%s@%s%s%s@rd   )ri   rn   rp   r|   r3   rt   rB   r%   r%   r&   __str__   s    zDsn.__str__)N)	rJ   rK   rL   r]   ry   propertyr|   r   r   r%   r%   r%   r&   r^      s   $

r^   c                   @   s8   e Zd ZdZdddZedd Zdd
dZdd ZdS )r~   z,Helper object that represents the auth info.N   rc   c	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S r(   )ri   rk   r3   rt   rn   rp   versionr}   )	rC   ri   rk   rt   rn   rp   r   r}   r3   r%   r%   r&   ry      s    zAuth.__init__c                 C   s   | j ddS )z^Returns the API url for storing events.

        Deprecated: use get_api_url instead.
        store)type)get_api_urlrB   r%   r%   r&   store_api_url  s    zAuth.store_api_urlr   c                 C   s   d| j | j| j| j|f S )z'Returns the API url for storing events.z%s://%s%sapi/%s/%s/)ri   rk   r3   rt   )rC   r   r%   r%   r&   r     s    zAuth.get_api_urlc                 C   s`   d| j fd| jfg}| jdur.|d| jf | jdurH|d| jf dddd	 |D  S )
z!Returns the auth header a string.Z
sentry_keyZsentry_versionNZsentry_clientZsentry_secretzSentry z, c                 s   s   | ]\}}d ||f V  qdS )z%s=%sNr%   ).0keyrG   r%   r%   r&   	<genexpr>#      z!Auth.to_header.<locals>.<genexpr>)rn   r   r}   appendrp   rw   rz   r%   r%   r&   	to_header  s    

zAuth.to_header)Nr   Nrc   )r   )	rJ   rK   rL   r]   ry   r   r   r   r   r%   r%   r%   r&   r~      s       

	 
r~   c                   @   s   e Zd ZdZdd ZdS )AnnotatedValuerG   metadatac                 C   s   || _ || _d S r(   r   )rC   rG   r   r%   r%   r&   ry   )  s    zAnnotatedValue.__init__N)rJ   rK   rL   rM   ry   r%   r%   r%   r&   r   &  s   r   )TypeVarTc                 C   s   t | dd pt | dd S )NrL   rJ   getattr)clsr%   r%   r&   get_type_name6  s    r   c                 C   s   t | dd }|dvr|S d S )NrK   )Nbuiltins__builtins__r   )r   modr%   r%   r&   get_type_module;  s    r   c              	   C   sn   z| j d }|drW dS W n ttfy4   Y n0 dD ].}z| j| rRW  dS W q: tyf   Y q:0 q:dS )NrJ   zsentry_sdk.T)Z__traceback_hide____tracebackhide__F)	f_globals
startswithAttributeErrorKeyErrorf_locals	Exception)framer   Z	flag_namer%   r%   r&   should_hide_frameC  s    



r   c                 c   s(   | }|d ur$t |js|V  |j}qd S r(   )r   tb_frametb_next)rH   Ztb_r%   r%   r&   iter_stacksV  s
    
r   c              	   C   s0  d}d }|d urTt |drTz||}W n ttfyB   d }Y n0 |d urT| }|d u rzt| }W n  ttfy   g d g f Y S 0 |sg d g fS td|| }t	|d | t
|}zNdd ||| D }	t|| d}
dd ||d | D }|	|
|fW S  ty*   g d g f Y S 0 d S )	N   
get_sourcer   r   c                 S   s   g | ]}t |d qS 
strip_stringr9   r   liner%   r%   r&   
<listcomp>}  s   z'get_lines_from_file.<locals>.<listcomp>r   c                 S   s   g | ]}t |d qS r   r   r   r%   r%   r&   r     s   )hasattrr   ImportErrorr<   
splitlines	linecachegetlinesr;   maxminlenr   r9   
IndexError)filenamelinenoloadermoduleZcontext_linessourceZ
source_strZlower_boundZupper_boundpre_contextcontext_linepost_contextr%   r%   r&   get_lines_from_file_  s:    


r   c                 C   s   z| j j}W n ty"   d }Y n0 z| jd }W n tyN   g d g f Y S 0 z| jd }W n tyt   d }Y n0 |d }|d ur|rt||||S g d g fS )NrJ   
__loader__r   )f_codeco_filenamer   r   r   )r   	tb_linenoabs_pathr   r   r   r%   r%   r&   get_source_context  s     

r   c                 C   s*   z
t | W S  ty$   t|  Y S 0 d S r(   )r   r   	safe_reprrS   r%   r%   r&   safe_str  s    
r   c                 C   s\   zBt | dd}z|ddW W S  ty>   | Y W S 0 W n tyV   Y dS 0 d S )Nr    replacelatin1zunicode-escape<broken repr>)reprr:   r#   r   )rG   r{   r%   r%   r&   r     s    
r   c                 C   s$   z
t | W S  ty   Y dS 0 d S )Nr   )r   r   rS   r%   r%   r&   r     s    
c                 C   s   |r| s|S zz| dr$|d d }| ddd }|| krJtj|W S tj| j}|s`|W S ||tj	dd dd 
tj	W S  ty   | Y S 0 d S )Nz.pyc.r   r      )endswithsplitr/   r3   basenamerW   modules__file__rq   seplstripr   )r   r   base_moduleZbase_module_pathr%   r%   r&   filename_for_module  s     
r   Tc              	   C   s   t | dd }|sd }d }n| jj}| jj}z| jd }W n tyN   d }Y n0 |d u r^| j}t| |\}}}	t||pzd |rt	j
|nd |pd|||||	d}
|r| j|
d< |
S )Nr   rJ   z	<unknown>)r   r   functionr   r   r   r   r   vars)r   r   r   co_namer   r   f_linenor   r   r/   r3   abspathr   )r   r   with_localsr   r   r   r   r   r   r   r{   r%   r%   r&   serialize_frame  s2    


r   c                 C   sJ   d}g }t  }|d ur:t|s2|t|| d |j}q|  d|iS )NTr   frames)rW   	_getframer   r   r   f_backreverse)r   r   r   fr%   r%   r&   current_stacktrace
  s    r   c                 C   s   t | dd S )Nerrnor   )	exc_valuer%   r%   r&   	get_errno  s    r   c                    s   |d urt |}nd }|d urF|p(ddi}|di di d| |d u rTd n|d   fdd	t|D }t| t| t||d
}|rd|i|d< |S )Nr   Zgenericmetar   numberTr   c                    s   g | ]}t |j|j d qS ))r   r   )r   r   r   )r   rH   r   r%   r&   r   7  s   z5single_exception_from_error_tuple.<locals>.<listcomp>)r   r   rG   	mechanismr   
stacktrace)r   
setdefaultr   r   r   r   )exc_typer   rH   client_optionsr   r   r   r{   r%   r   r&   !single_exception_from_error_tuple  s,    

r   __suppress_context__c                 c   s   | \}}}g }t  }|d ur|d urt||vr|||fV  || |t| |jrb|j}n|j}|d u rrqt|}|}t|dd }qd S )N__traceback__)	setidr   addr   	__cause____context__r   r   )rP   r   r   rH   Zseen_exceptionsZseen_exception_idscauser%   r%   r&   walk_exception_chainM  s(    


r   c                 c   s
   | V  d S r(   r%   rY   r%   r%   r&   r   m  s    c              	   C   sD   | \}}}g }t | D ] \}}}|t||||| q|  |S r(   )r   r   r   r   )rP   r   r   r   r   rH   r{   r%   r%   r&   exceptions_from_error_tupler  s    

r   c                 C   s2   z
t | W S  ty,   t| dd  Y S 0 d S )Nr   r   )r   UnicodeDecodeErrorr   rS   r%   r%   r&   	to_string  s    
r   c                 c   sz   d| v r| d V  d| v rD| d  dp*dD ]}d|v r,|d V  q,d| v rv| d  dp\dD ]}d|v r^|d V  q^d S )Nr   threadsvaluesr%   	exception)r1   )eventthreadr  r%   r%   r&   iter_event_stacktraces  s    
r  c                 c   s,   t | D ]}|dpdD ]
}|V  qqd S )Nr   r%   )r  r1   )r  r   r   r%   r%   r&   iter_event_frames  s    r  c                 C   s&   t | D ]}t|d||d q| S )Nr   )in_app_excludein_app_include)r  handle_in_app_implr1   )r  r  r  r   r%   r%   r&   handle_in_app  s    r
  c                 C   s   | sd S d}| D ]\}| d}|d ur0|rd}q| d}|sBqqt||rZd|d< d}qt||rd|d< q|s| D ]}| dd u rvd|d< qv| S )NFin_appTr   )r1   _module_in_set)r   r  r  Z
any_in_appr   r  r   r%   r%   r&   r	    s,    





r	  c                 C   s   t | tr"t| dkr"| \}}}ndt | trvt| dd }|d urNt| }| }qt \}}}|| urd }| }t| }ntdt|  |||fS )N   r   z,Expected Exception object to report, got %s!)	re   tupler   BaseExceptionr   r   rW   rP   ru   )errorr   r   rH   r%   r%   r&   rX     s    

rX   c                 C   s*   t | } t| }ddt| ||id|fS )Nr  r  )levelr  )rX   rZ   r   )rP   r   r   hintr%   r%   r&   event_from_exception  s    r  c                 C   s6   |sdS |pdD ] }|| ks*|  |d r dS qdS )NFr%   r   T)r   )namer   itemr%   r%   r&   r    s    r  c                 C   sX   | s| S |d u rt }t| }||krTt| d |d  d |dd|d |ggddS | S )Nr  z...z!limitx)r   remr   )MAX_STRING_LENGTHr   r   )rG   
max_lengthlengthr%   r%   r&   r     s    r   c                  C   s   znddl } ddlm} tdd td| jdd D }|dd	rltjd
krV|dks`|ddrfW dS W dS W n t	y   Y n0 zddl
m} |drW dS W n t	y   Y n0 dS )z
    Returns whether gevent/eventlet have patched the stdlib in a way where thread locals are now more "correct" than contextvars.
    r   N)is_object_patchedc                 S   s   g | ]}t |qS r%   )rr   )r   partr%   r%   r&   r   $  r   z*_is_contextvars_broken.<locals>.<listcomp>z	a|b|rc|\.r   	threadinglocalr  r   )   	   contextvars
ContextVarFT)is_monkey_patchedr  )geventZgevent.monkeyr  r  rer   __version__rW   version_infor   Zeventlet.patcherr$  )r%  r  Zversion_tupler$  r%   r%   r&   _is_contextvars_broken  s0    
	

r)  c                    s   G  fdddt }|S )Nc                       s(   e Zd Z fddZdd Zdd ZdS )z1_make_threadlocal_contextvars.<locals>.ContextVarc                    s   || _   | _d S r(   )_name_local)rC   r  r  r%   r&   ry   I  s    z:_make_threadlocal_contextvars.<locals>.ContextVar.__init__c                 S   s   t | jd|S )NrG   )r   r+  )rC   defaultr%   r%   r&   r1   N  s    z5_make_threadlocal_contextvars.<locals>.ContextVar.getc                 S   s   || j _d S r(   )r+  rG   )rC   rG   r%   r%   r&   r   R  s    z5_make_threadlocal_contextvars.<locals>.ContextVar.setN)rJ   rK   rL   ry   r1   r   r%   r,  r%   r&   r#  F  s   r#  )object)r  r#  r%   r,  r&   _make_threadlocal_contextvarsD  s    r/  c                  C   s~   t  sftjdk r<zddlm}  d| fW S  ty8   Y qf0 n*zddlm}  d| fW S  tyd   Y n0 ddlm} dt	|fS )z
    Figure out the "right" contextvars installation to use. Returns a
    `contextvars.ContextVar`-like class with a limited API.

    See https://docs.sentry.io/platforms/python/contextvars/ for more information.
    r  r   )r#  Tr,  F)
r)  rW   r(  Zaiocontextvarsr#  r   r"  r  r  r/  )r#  r  r%   r%   r&   _get_contextvarsY  s    


r0  z

With asyncio/ASGI applications, the Sentry SDK requires a functional
installation of `contextvars` to avoid leaking scope/context data across
requests.

Please refer to https://docs.sentry.io/platforms/python/contextvars/ for more information.
c                 C   sz   zd| j j| j j| jf W S  ty,   Y n0 t| dd pHt| dd pHd }|sRd S zd| j|f W S  tyt   Y n0 |S )Nz%s.%s.%srL   rJ   z%s.%s)Zim_classrK   rJ   r   r   )funcZfunc_qualnamer%   r%   r&   transaction_from_function  s"    r2  disable_capture_eventc                   @   s   e Zd ZdZdS )ServerlessTimeoutWarningz>Raised when a serverless method is about to reach its timeout.Nr\   r%   r%   r%   r&   r4    s   r4  c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TimeoutThreadzCreates a Thread which runs (sleeps) for a time duration equal to
    waiting_time and raises a custom ServerlessTimeout exception.
    c                 C   s&   t j|  || _|| _t  | _d S r(   )r  Threadry   waiting_timeconfigured_timeoutEvent_stop_event)rC   r7  r8  r%   r%   r&   ry     s    zTimeoutThread.__init__c                 C   s   | j   d S r(   )r:  r   rB   r%   r%   r&   stop  s    zTimeoutThread.stopc                 C   sJ   | j | j | j  rd S t| j}|| jk r8|d }td|d S )Nr   zZWARNING : Function is expected to get timed out. Configured timeout duration = {} seconds.)r:  waitr7  is_setrr   r8  r4  format)rC   Zinteger_configured_timeoutr%   r%   r&   run  s    


zTimeoutThread.runN)rJ   rK   rL   r]   ry   r;  r?  r%   r%   r%   r&   r5    s   r5  c              
   C   sd   d}z"|  d}t|}|d}W n8 ty^ } z tdj| d| W Y d}~n
d}~0 0 |S )zO
    Convert a string to base64, via UTF-8. Returns None on invalid input.
    NUTF-8z"Unable to encode {orig} to base64:)orig)r#   base64	b64encoder:   r   loggerwarningr>  )originalbase64_string
utf8_bytesbase64_byteserrr%   r%   r&   	to_base64  s    

*rK  c              
   C   sv   d}z4t | }|sJ | d}t|}|d}W n8 typ } z tdj	| d| W Y d}~n
d}~0 0 |S )zQ
    Convert a string from base64, via UTF-8. Returns None on invalid input.
    Nr@  z#Unable to decode {b64} from base64:)Zb64)
BASE64_ALPHABETmatchr#   rB  	b64decoder:   r   rD  rE  r>  )rG  Zutf8_stringZonly_valid_charsrI  rH  rJ  r%   r%   r&   from_base64  s    


rO  )N)NN)NT)T)NN)NN)NN)NN)N)krB  r!   r   loggingr/   rW   r  r5   r&  r   Z
sentry_sdkZsentry_sdk._compatr   r   r   r   Zsentry_sdk._typesr   typesr   r	   typingr
   r   r   r   r   r   r   r   r   r   r   r   r   rQ   	getLoggerrD  r  compilerL  ZTRANSACTION_SOURCE_CUSTOMZTRANSACTION_SOURCE_URLZTRANSACTION_SOURCE_ROUTEZTRANSACTION_SOURCE_VIEWZTRANSACTION_SOURCE_COMPONENTZTRANSACTION_SOURCE_TASKZTRANSACTION_SOURCE_UNKNOWNr'   r)   r@   r.  rA   rN   rO   rE   rT   rV   rZ   ru   r[   r^   r~   r   r   r   	Annotatedr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZHAS_CHAINED_EXCEPTIONSr   r   r   r  r  r
  r	  rX   r  r  r   r)  r/  r0  ZHAS_REAL_CONTEXTVARSr#  ZCONTEXTVARS_ERROR_MESSAGEr2  r3  r4  r6  r5  rK  rO  r%   r%   r%   r&   <module>   s   

'
I9	  
,

#
	  
*

   

  


+&

 &