��\�2 � @ sj d d l Z d d l Z d d l 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 m Z m Z d d � Z e d � Z d a d d � Z Gd d � d e � Z d d � Z Gd d � d e � Z Gd d � d e � Z Gd d � d e � Z Gd d � d e e � � Z e � Z e j e � d S)� N)�datetime)�contextmanager)�warn)�with_metaclass)�Scope)�Client)�exc_info_from_error�event_from_exception�logger� ContextVarc C s | S)N� )�xr r �/hub.py�overload s r Zsentry_current_hubc C s! t j j } | s d S| j d S)NFZsend_default_pii)�Hub�current�client�options)r r r r �_should_send_default_pii( s r c @ s4 e Z d Z d d � Z d d � Z d d � Z d S)� _InitGuardc C s | | _ d S)N)�_client)�selfr r r r �__init__1 s z_InitGuard.__init__c C s | S)Nr )r r r r � __enter__4 s z_InitGuard.__enter__c C s# | j } | d k r | j � d S)N)r �close)r �exc_type� exc_value�tb�cr r r �__exit__7 s z_InitGuard.__exit__N)�__name__� __module__�__qualname__r r r r r r r r 0 s r c O sJ t | | � } t j j | � t | � } | d k rF t j | � a | S)zsInitializes the SDK and optionally integrations. This takes the same arguments as the client constructor. N)r r r �bind_clientr �weakref�ref�_initial_client)�args�kwargsr �rvr r r �init= s r* c @ s4 e Z d Z e d d � � Z e d d � � Z d S)�HubMetac C s8 t j d � } | d k r4 t t � } t j | � | S)z(Returns the current instance of the hub.N)�_local�getr � GLOBAL_HUB�set)r r) r r r r L s zHubMeta.currentc C s t S)z%Returns the main instance of the hub.)r. )r r r r �mainV s zHubMeta.mainN)r r! r"