
    jKj                     j    d dl Z d dlZd dlmZ d dlmZ d dlZd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zy)    N)dedent)	MagicMockc                 N    	 | # t         $ r t        j                         cY S w xY wNBaseExceptionsysexc_info)errors    t/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/posthog/test/test_exception_capture.py	_exc_infor   	   s'     ||~s    $$c                 P    	 || # t         $ r t        j                         cY S w xY wr   r   )causewrappers     r   _chained_exc_infor      s*    5  ||~s    %%c                  :   ddl m}  t               } | |      }	 |j                  J t	        d      D ]%  }|j                  t        t        d                   ' |j
                  j                  dk(  sJ 	 |j                          y # |j                          w xY w)Nr   ExceptionCaptured   boom)
posthog.exception_capturer   r   _rate_limiterrangecapture_exceptionr   
ValueError
call_countcloser   clientcapture_s       r   )test_rate_limiting_is_disabled_by_defaultr"      s    :[Fv&G$$,,,sA%%i
60B&CD ''22c999s   AB Bc                  $   ddl m}   | t               d      }	 |j                  j                  dk(  sJ |j                  j
                  dk(  sJ |j                  j                  dk(  sJ 	 |j                          y # |j                          w xY w)Nr   r   T)rate_limiting_enabled2   
   r   r   r   r   _bucket_size_refill_rate_refill_intervalr   r   r    s     r   5test_rate_limiting_default_configuration_when_enabledr,   &   sy    :y{$GG$$11R777$$11R777$$55;;;s   AA= =Bc                  *   ddl m}   | t               dddd      }	 |j                  j                  dk(  sJ |j                  j
                  dk(  sJ |j                  j                  dk(  sJ 	 |j                          y # |j                          w xY w)Nr   r   T         )r$   bucket_sizerefill_raterefill_interval_secondsr'   r+   s     r   "test_rate_limiting_is_configurabler4   2   s    :" !G$$11Q666$$11Q666$$55:::s   AB   Bc            
         ddl m}   | dddddddd      }	 |j                  j                  }|j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ 	 |j                          y # |j                          w xY w)	Nr   )Clientphc_testTr.   r/   r0   )	sync_modedisabledenable_exception_autocapture*enable_exception_autocapture_rate_limiting!exception_autocapture_bucket_size!exception_autocapture_refill_rate-exception_autocapture_refill_interval_seconds)posthog.clientr6   exception_capturer   r(   r)   r*   shutdown)r6   r   limiters      r   5test_client_passes_rate_limiter_configuration_throughrC   D   s    %%)37*+*+67	F**88##q(((##q(((''1,,,s   A	A3 3Bc                     ddl m}  t               } | |dd      }	 t        d      D ]%  }|j	                  t        t        d                   ' |j                  j                  dk(  sJ |j	                  t        t        d	                   |j                  j                  dk(  sJ 	 |j                          y # |j                          w xY w)
Nr   r   Tr&   r$   r1      r   	   zero)
r   r   r   r   r   r   r   r   ZeroDivisionErrorr   r   s       r   #test_rate_limits_per_exception_typerJ   Z   s    :[FvTrRGrA%%i
60B&CD  ''22a777 	!!),=f,E"FG''22b888s   BB; ;Cc                  n   ddl m}  t               } | |dd      }	 |j                  t	        t               t        d                   |j                  t	        t               t        d                   |j                  j                  dk(  sJ 	 |j                          y # |j                          w xY w)Nr   r   Tr/   rE   wrapped)
r   r   r   r   r   rI   RuntimeErrorKeyErrorr   r   )r   r   r    s      r   8test_rate_limit_keys_on_root_cause_of_chained_exceptionsrO   m   s    :
 [FvTqQG
!!/1<	3JK	
 	!!hj,y*AB	
 ''22a777s   A3B" "B4c                    | j                  d      }|j                  t        d             t        j                  t
        j                        5 }t        j                  t        j                  t        |      gt
        j                         d d d        j                  j                  }d|v sJ d|v sJ d|v sJ d|v sJ y # 1 sw Y   8xY w)Nzapp.pyz
    from posthog import Posthog
    posthog = Posthog('phc_x', host='https://eu.i.posthog.com', enable_exception_autocapture=True, debug=True, on_error=lambda e, batch: print('error handling batch: ', e, batch))

    # frame_value = "LOL"

    1/0
    )stderrs   ZeroDivisionErrors   LOLs2   DEBUG:posthog:[PostHog] data uploaded successfullys   "$exception_list": [{"mechanism": {"type": "generic", "handled": true}, "module": null, "type": "ZeroDivisionError", "value": "division by zero", "stacktrace": {"frames": [{"platform": "python", "filename": "app.py", "abs_path")joinwriter   pytestraises
subprocessCalledProcessErrorcheck_outputr	   
executablestrSTDOUTvalueoutput)tmpdirappexcinfor]   s       r   test_excepthookra      s    
++h
CII		
 
z44	5S ::CTCTU 
6 ]]!!F6)))V@FJJJ 	o		 
6	5s   ?CC)rV   r	   textwrapr   unittest.mockr   rT   r   r   r"   r,   r4   rC   rJ   rO   ra        r   <module>rf      sA     
  # 	$,&*re   