<!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ZddlZddlZejd dkZejd dkZerde	fZ
efZefZe	ZeZn efZ
eefZeejfZeZe	ZyeZW n ek
r   dd ZY nX eZyeZW n ek
r   dd	 ZY nX ereZnG d
d deZerdd Zdd Zdd Zdd Zn dd Zdd Zdd Zdd Zerbdd Z dd Z!ddl"Z"e"j#Z#e"j$Z$n"dd Z dd Z!ddl#Z#e#j# Z#Z$ere%e&ddZ'd3d d!Z(nd4d"d#Z'e'd$ ejdd d%kre'd& n&ejdd d%kre'd' nd(d) Z)erJdd*l*m+Z+ dd+l,m-Z. ddl/m0Z1 dd,l2m3Z3 dd-l4m5Z6 dd.l7m8Z9 n<dd*l1m+Z+ ddl.Z.ddl1Z1dd,l3m3Z3 dd-l7m5Z6 ddl9Z9d/d0 Z:d1d2 Z;dS )5z
raven.utils.compat
~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2016 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.

Utilities for writing code that runs on Python 2 and 3
    )absolute_importN      c             C   s   |   S )N)next)it r   C/opt/alt/python37/lib/python3.7/site-packages/raven/utils/compat.pyadvance_iterator:   s    r	   c             C   s   t dd t| jD S )Nc             s   s   | ]}d |j kV  qdS )__call__N)__dict__).0klassr   r   r   	<genexpr>C   s    zcallable.<locals>.<genexpr>)anytype__mro__)objr   r   r   callableB   s    r   c               @   s   e Zd Zdd ZdS )Iteratorc             C   s   t | | S )N)r   __next__)selfr   r   r   r   J   s    zIterator.nextN)__name__
__module____qualname__r   r   r   r   r   r   H   s   r   c             K   s   t | jf |S )N)iterkeys)dkwr   r   r   iterkeysO   s    r   c             K   s   t | jf |S )N)r   values)r   r   r   r   r   
itervaluesR   s    r    c             K   s   t | jf |S )N)r   items)r   r   r   r   r   	iteritemsU   s    r"   c             K   s   t | jf |S )N)r   Zlists)r   r   r   r   r   	iterlistsX   s    r#   c             K   s   | j f |S )N)r   )r   r   r   r   r   r   [   s    c             K   s   | j f |S )N)r    )r   r   r   r   r   r    ^   s    c             K   s   | j f |S )N)r"   )r   r   r   r   r   r"   a   s    c             K   s   | j f |S )N)r#   )r   r   r   r   r   r#   d   s    c             C   s
   |  dS )Nzlatin-1)encode)sr   r   r   bi   s    r&   c             C   s   | S )Nr   )r%   r   r   r   ul   s    r'   c             C   s   | S )Nr   )r%   r   r   r   r&   r   s    c             C   s   t | dddS )Nz\\z\\\\Zunicode_escape)unicodereplace)r%   r   r   r   r'   v   s    builtinsexecc             C   s:   z*|d kr|  }|j |k	r$|||W d d }d }X d S )N)__traceback__with_traceback)tpvaluetbr   r   r   reraise   s    

r1   c             C   sB   |dkr*t d}|j}|dkr&|j}~n|dkr6|}td dS )zExecute code in a namespace.N   zexec _code_ in _globs_, _locs_)sys	_getframe	f_globalsf_localsr+   )Z_code_Z_globs_Z_locs_framer   r   r   exec_   s    
r8   zedef reraise(tp, value, tb=None):
    try:
        raise tp, value, tb
    finally:
        tb = None
)r   r   zdef raise_from(value, from_value):
    try:
        if from_value is None:
            raise value
        raise value from from_value
    finally:
        value = None
zrdef raise_from(value, from_value):
    try:
        raise value from from_value
    finally:
        value = None
c             C   s   | d S )Nr   )r/   Z
from_valuer   r   r   
raise_from   s    r9   )	HTTPError)client)Queue)quote)parsec             C   s2   t | dt | dd }|d kr.tdt| j |S )N__code__	func_codezCould not get code from %r)getattr	TypeErrorr   r   )funcrvr   r   r   get_code   s    rE   c              C   sf   yddl m}  W n tk
r$   d S X d| kr2d S t| dd dkrbddlm} |td d S )	Nr   )optthreadszenable-threads0)falseoffnorH   )warnzWe detected the use of uwsgi with disabled threads.  This will cause issues with the transport you are trying to use.  Please enable threading for uwsgi.  (Enable the "enable-threads" flag).)	ZuwsgirF   ImportErrorstrgetlowerwarningsrL   Warning)rF   rL   r   r   r   check_threads   s    rS   )N)NN)<__doc__
__future__r   operatorr3   typesversion_infoPY2PY3rN   string_typesintZinteger_typesr   Zclass_typesZ	text_typebytesZbinary_type
basestringlongZ	ClassTyper(   r   r	   	NameErrorr   objectr   r   r    r"   r#   r&   r'   ioStringIOBytesIOrA   
__import__r8   r1   r9   Zurllib.errorr:   httpr;   httplibZurllib.requestZrequesturllib2queuer<   urllib.parser=   Zurllib_quoteurllibr>   urlparserE   rS   r   r   r   r   <module>	   s   



