<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Y                 @   s   d Z ddlmZ ddlmZmZ ddlZddlZddlm	Z	 yddl
Z
W n ek
r`   dZ
Y nX ddlZedZdd Zdd	d
Zi Zdd ZdddZdddZG dd deZdd ZdS )z
raven.utils
~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
    )absolute_import)	iteritemsstring_typesN)update_wrapperzraven.errorsc              G   s:   i }x0| D ](}|sq
xt |D ]\}}|||< qW q
W |S )N)r   )Zdictsoutdkv r
   E/opt/alt/python37/lib/python3.7/site-packages/raven/utils/__init__.pymerge_dicts   s    
r   c                s    dkri  t |}| kr&dS d |< t|trVt fddt|D }n0t|ttfr| fdd|D }n
|} |= |S )zx
    Executes ``func(key_name, value)`` on all values
    recurisively discovering dict and list scoped
    values.
    Nz<...>   c             3   s$   | ]\}}|t | |fV  qd S )N)varmap).0r   r	   )contextfuncr
   r   	<genexpr>/   s   zvarmap.<locals>.<genexpr>c                s   g | ]}t | qS r
   )r   )r   f)r   r   namer
   r   
<listcomp>2   s    zvarmap.<locals>.<listcomp>)id
isinstancedictr   listtuple)r   varr   r   objidretr
   )r   r   r   r   r   "   s    


r   c             C   s   d }t d k	r.yt | jS  tk
r,   Y nX t|dr@|j}n4t|drR|j}n"t|drd|j}nt|drt|j}t|r| }t	|t
ttfsd }|d krd S t	|ttfrdtt|}t|S )Nget_version__version__VERSIONversion.)pkg_resourcesget_distributionr!   	Exceptionhasattrr   r   r    callabler   r   r   r   joinmapstr)module_nameappr!   r
   r
   r   get_version_from_app>   s.    



r-   c                s  | si S t  }x<| D ]4}|d | fddtdt d D  qW i }x|D ]}|tkryt| W n tk
r   wVY nX ytj	| }W n t
k
r   wVY nX yt||}W n0 tk
r } zt| d }W d d }~X Y nX |t|< nt| }|d kr
qV|||< qVW |S )Nr"   c             3   s    | ]}d   d| V  qdS )r"   N)r(   )r   idx)partsr
   r   r   i   s   zget_versions.<locals>.<genexpr>r   )setsplitupdaterangelen_VERSION_CACHE
__import__ImportErrorsysmodulesKeyErrorr-   r%   logger	exception)Zmodule_listZext_module_listmZversionsr+   r,   r!   er
   )r/   r   get_versionsb   s:    





r?   c             K   sF   d|fd|fd| fd|fg}|r.| d|f dddd	 |D  S )
NZsentry_timestampZsentry_clientZsentry_versionZ
sentry_keyZsentry_secretz	Sentry %sz, c             s   s   | ]\}}d ||f V  qdS )z%s=%sNr
   )r   r   r	   r
   r
   r   r      s    z"get_auth_header.<locals>.<genexpr>)appendr(   )protocol	timestampZclientZapi_keyZ
api_secretkwargsheaderr
   r
   r   get_auth_header   s    
rE   c               @   s"   e Zd ZdZdd ZdddZdS )memoizez
    Memoize the result of a property call.

    >>> class A(object):
    >>>     @memoize
    >>>     def func(self):
    >>>         return 'foo'
    c             C   s"   |j | _ |j| _|j| _|| _d S )N)__name__
__module____doc__r   )selfr   r
   r
   r   __init__   s    zmemoize.__init__Nc             C   s:   |d kr| S t || j }}||kr2| |||< || S )N)varsrG   r   )rJ   objtyper   nr
   r
   r   __get__   s    zmemoize.__get__)N)rG   rH   __qualname__rI   rK   rP   r
   r
   r
   r   rF      s   rF   c                s,   t   fddt d_S )z Runs a thing once and once only.c           	      s8   j r
d S   j rd S  | |}d_ |S Q R X d S )NT)called)argsrC   rv)r   locknew_funcr
   r   rV      s    
zonce.<locals>.new_funcF)	threadingLockr   rR   )r   r
   )r   rU   rV   r   once   s
    

rY   )NN)N)N)rI   
__future__r   Zraven.utils.compatr   r   loggingrW   	functoolsr   r#   r7   r8   	getLoggerr;   r   r   r5   r-   r?   rE   objectrF   rY   r
   r
   r
   r   <module>   s&   


$
'
