
    Ki                     F   S SK r S SKrS SKJrJr  S SKJr  S SKJr  S SKJ	r	J
r
Jr  S SKrS SKJr  S SKJr  S SKJr  S S	KJr  \R*                  R-                  \" S
S
S
S9S9r\R0                  R3                  5       r\R7                  S\5        SrSr\rS\-   rS\
\    S\ 4S jr!    S,S\ S\
\    S\"S\#S\RH                  4
S jjr%SS.S\RH                  S\ S\"S\\RH                  \	4   4S jjr&   S-S\ S\
\    S\"S\#S\	4
S jjr'   S-S\ S\
\    S\"S\#S\	4
S jjr( S.S \ S\
\    S!\ S\#S\	4
S" jjr)   S-S\ S\
\    S\"S\#S\RH                  4
S# jjr* S/S\ S$\ S\
\    S\
\#   S\RH                  4
S% jjr+ " S& S'\,5      r- " S( S)\-5      r. " S* S+\ R^                  5      r0g)0    N)datedatetime)GzipFile)BytesIO)AnyOptionalUnion)tzutc)Retry)remove_trailing_slash)VERSION   )totalconnectread)max_retrieszhttps://zhttps://us.i.posthog.comzhttps://eu.i.posthog.comzposthog-python/hostreturnc                 j    U =(       d    [         n[        U5      nUS;   a  [        $ US:X  a  [        $ U$ )z"Determines the server host to use.)zhttps://app.posthog.comzhttps://us.posthog.comzhttps://eu.posthog.com)DEFAULT_HOSTr   US_INGESTION_ENDPOINTEU_INGESTION_ENDPOINT)r   host_or_defaulttrimmed_hosts      Q/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/posthog/request.pydetermine_server_hostr   !   s:    *lO(9LLL$$	1	1$$    api_keygziptimeoutc                 t   [         R                  " S5      nUn[        R                  " [	        5       S9R                  5       US'   [        U=(       d    [        5      U-   nXS'   [        R                  " U[        S9n	UR                  SX5        S[        S.n
U(       aR  S	U
S
'   [        5       n[        USS9 nUR                  U	R!                  S5      5        SSS5        UR#                  5       n	[$        R'                  XXS9nUR(                  S:X  a  UR                  S5        U$ ! , (       d  f       NU= f)zPost the `kwargs` to the APIposthog)tzsentAtr   )clszmaking request: %s to url: %szapplication/json)zContent-Type
User-Agentr   zContent-Encodingw)fileobjmodezutf-8N)dataheadersr       data uploaded successfully)logging	getLoggerr   nowr
   	isoformatr   r   jsondumpsDatetimeSerializerdebug
USER_AGENTr   r   writeencodegetvalue_sessionpoststatus_code)r   r   pathr   r    kwargslogbodyurlr*   r+   bufgzress                 r   r;   r;   -   s     

I
&CD\\UW-779DN
 4
5
<CO::d 23DII-t91LG&,"#ic, HHT[[)* - ||~
---
IC
#		./J -,s   9!D))
D7T)return_jsonrD   success_messagerE   c                L   [         R                  " S5      nU R                  S:X  a  UR                  U5        U(       a  U R	                  5       OU n[        U[        5      (       aN  SU;   aH  [        US   [        5      (       a0  SUS   ;   a'  UR                  S5        [        U R                  S5      eU$  U R	                  5       nUR                  SU5        [        U R                  US   5      e! [        [        4 a!    [        U R                  U R                  5      ef = f)	Nr"   r,   quotaLimitedfeature_flagsz[FEATURE FLAGS] PostHog feature flags quota limited, resetting feature flag data.  Learn more about billing limits at https://posthog.com/docs/billing/limits-alertszFeature flags quota limitedzreceived response: %sdetail)r.   r/   r<   r5   r2   
isinstancedictlistwarningQuotaLimitErrorAPIErrorKeyError
ValueErrortext)rD   rF   rE   r?   responsepayloads         r   _process_responserV   O   s     

I
&C
#		/"!,388:#
 x&&(*8N3T::8N#;;KK w "#//3PQQ2((*		)73s(9::j! 2s112s   7;C2 21D#c                 2    [        XSX#40 UD6n[        USS9$ )z+Post the `kwargs to the decide API endpointz/decide/?v=4z"Feature flags decided successfullyrF   r;   rV   r   r   r   r    r>   rD   s         r   decider[   l   s%     wnd
Fv
FCS2VWWr   c                 2    [        XSX#40 UD6n[        USS9$ )z*Post the `kwargs to the flags API endpointz/flags/?v=2z$Feature flags evaluated successfullyrX   rY   rZ   s         r   flagsr]   x   s*     wmT
Ef
ECC r   personal_api_keykeyc                 &    [        U SU S3UU5      $ )z<Get remote config flag value from remote_config API endpointz%/api/projects/@current/feature_flags/z/remote_config/)get)r^   r   r_   r    s       r   remote_configrb      s&     
/uOD	 r   c                 4    [        XSX#40 UD6n[        USSS9$ )z6Post the `kwargs` to the batch API endpoint for eventsz/batch/r-   F)rF   rE   rY   rZ   s         r   
batch_postrd      s,     wi
A&
AC9u r   rA   c                     [        U=(       d    [        5      U-   n[        R                  " USU -  [        S.US9n[        USU S3S9$ )Nz	Bearer %s)Authorizationr&   )r+   r    zGET z completed successfullyrX   )r   r   requestsra   r6   rV   )r   rA   r   r    rD   s        r   ra   ra      sR       4
5
;C
,,"-"7zRC
 SD=T2UVVr   c                   6    \ rS rSrS\\\4   S\4S jrS rSr	g)rP      statusmessagec                     X l         Xl        g Nrk   rj   )selfrj   rk   s      r   __init__APIError.__init__   s    r   c                 R    SnUR                  U R                  U R                  5      $ )Nz[PostHog] {0} ({1}))formatrk   rj   )ro   msgs     r   __str__APIError.__str__   s     #zz$,,44r   rn   N)
__name__
__module____qualname____firstlineno__r	   intstrrp   ru   __static_attributes__ r   r   rP   rP      s"    uS#X  5r   rP   c                       \ rS rSrSrg)rO      r~   N)rw   rx   ry   rz   r}   r~   r   r   rO   rO      s    r   rO   c                   "    \ rS rSrS\4S jrSrg)r4      objc                     [        U[        [        45      (       a  UR                  5       $ [        R
                  R                  X5      $ rm   )rK   r   r   r1   r2   JSONEncoderdefault)ro   r   s     r   r   DatetimeSerializer.default   s7    cD(+,,==?"''22r   r~   N)rw   rx   ry   rz   r   r   r}   r~   r   r   r4   r4      s    33 3r   r4   )NNF   )NFr   )N r   )NN)1r2   r.   r   r   r   r   ior   typingr   r   r	   rg   dateutil.tzr
   urllib3.util.retryr   posthog.utilsr   posthog.versionr   adaptersHTTPAdapteradaptersessionsSessionr:   mountr   r   r   r6   r|   r   boolr{   Responser;   rV   r[   r]   rb   rd   ra   	ExceptionrP   rO   r   r4   r~   r   r   <module>r      s     #   ' '   $ / # 


'
' (  $$& z7 #2 2 $(
	 	# 	 	
3- 	
  F JN2			2-02BF2
8c!"2> 		X	X
3-	X 	X 		X 		X 	
3-  	 	 VX		!)#	<?	OR		 	
3-  	  RV	W	W	W"*3-	WAI#	W	W5y 5	h 	3)) 3r   