
    gK                         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
 erd dlmZmZ d dlmZ  G d	 d
      Z G d d      Zy# e$ r	  ed      w xY w)    N)TYPE_CHECKING)IntegrationEnablingError)VERSION)signalszDjango not installed)AnyDict)WSGIRequestc                   "    e Zd ZdZdZddZd Zy)DjangoIntegrationz7
    Autocapture errors from a Django application.
    djangoNc                      t         dk  rt        d      | _        d fd	}t        j                  j                  |       y )N)      z Django 4.2 or newer is required.c                     i }| t        |       j                         }j                  t        j                         |       y N)DjangoRequestExtractorextract_person_datacapture_exception_fnsysexc_info)requestkwargsextra_propsselfs      Z/var/www/openai/venv/lib/python3.12/site-packages/posthog/exception_integrations/django.py_got_request_exceptionz:DjangoIntegration.__init__.<locals>._got_request_exception)   s9     K"4W=QQS%%cllnkB    r   )DJANGO_VERSIONr   r   r   got_request_exceptionconnect)r   r   r   s   `  r   __init__zDjangoIntegration.__init__   s>    F"*+MNN %9!	C 	%%--.DEr   c                      y r    r   s    r   	uninstallzDjangoIntegration.uninstall5   s    r   r   )__name__
__module____qualname____doc__
identifierr!   r%   r#   r   r   r   r      s     JF0r   r   c                       e Zd Zd Zd Zd Zy)r   c                     || _         y r   )r   )r   r   s     r   r!   zDjangoRequestExtractor.__init__;   s	    r   c                 
   | j                         }|j                  d      }|j                  d      }d }|r)t        j                  d|      }|r|j	                  d      }||j                  d      |j                  d      |dS )Ntraceparent
tracestatezposthog-distinct-id=([^,]+)   zX-Forwarded-Forz
User-Agent)distinct_idip
user_agentr.   )headersgetresearchgroup)r   r4   r.   r/   r1   matchs         r   r   z*DjangoRequestExtractor.extract_person_data?   s    ,,. kk-0[[.
  II<jIE#kk!n '++/0!++l3&	
 	
r   c                 @    t        | j                  j                        S r   )dictr   r4   r$   s    r   r4   zDjangoRequestExtractor.headersV   s    DLL(())r   N)r&   r'   r(   r!   r   r4   r#   r   r   r   r   9   s    
.*r   r   )r6   r   typingr   posthog.exception_integrationsr   r   r   r   django.corer   ImportErrorr   r   django.core.handlers.wsgir	   r   r   r#   r   r   <module>rA      sZ    	 
   C;0#  5! !H* *]  ;
"#9
::;s   A A