
    Ii@                         S SK r S SKrS SKrS SKJr  S SKJrJrJr  S SKJ	r	  S SK
Jr  S SKrS SKJrJr  \ R                   " S5      rS rS	 rS
 rS rS rS rS rS rS\4S jr " S S\5      rS rg)    N)defaultdict)datedatetimetimezone)Decimal)UUID)tzlocaltzutcposthogc                 f    U R                   SL =(       d    U R                   R                  U 5      SL $ )z1Determines if a given datetime.datetime is naive.N)tzinfo	utcoffset)dts    3/venv/lib/python3.13/site-packages/posthog/utils.pyis_naiver      s*    99?		 3 3B 74 ??    c                 f    U R                   U R                  U R                  S-  S-  -   S-  -   S-  $ )z2Determines total seconds with python < 2.7 compat.   i  g    .A)microsecondssecondsdays)deltas    r   total_secondsr      s6     %--%**r/D2H"HC!OOSVVVr   c                     [        U 5      (       aU  [        R                  " 5       U -
  n[        U5      S:  a  U R	                  [        5       S9$ U R	                  [        5       S9$ U $ )z:Attempts to convert a naive datetime to an aware datetime.   r   )r   r   nowr   replacer	   r
   )r   r   s     r   guess_timezoner      sY    || #!# ::WY:// ::UW:--Ir   c                 <    U R                  S5      (       a  U S S $ U $ )N/)endswith)hosts    r   remove_trailing_slashr%   +   s"    }}SCRyKr   c                    [        U [        5      (       a  [        U 5      $ [        U [        5      (       a  [	        U 5      $ [        U [
        R                  [        [        R                  [        [        [        S 5      45      (       a  U $ [        U [        [        [        45      (       a  [!        U 5      $ [        U ["        5      (       a  [%        U 5      $ ['        U 5      $ N)
isinstancer   floatr   strsixstring_typesboolnumbersNumberr   r   typesetlisttuple_clean_listdict_clean_dict_coerce_unicode)items    r   cleanr9   1   s    $  T{$4y	D3++T7>>8TSWX\S]^	_	_	D3e,	-	-4  	D$		4  t$$r   c                 D    U  Vs/ s H  n[        U5      PM     sn$ s  snf r'   )r9   )list_r8   s     r   r4   r4   @   s    $)*EDE$KE***s   c           
          0 n[         R                  " U 5       H  u  p# [        U5      X'   M     U$ ! [         a%    [        R                  SUU[        U5      5         MG  f = f)NzXDictionary values must be serializeable to JSON "%s" value %s of type %s is unsupported.)r+   	iteritemsr9   	TypeErrorlogwarningr0   )dict_datakvs       r   r6   r6   D   s`    De$	AhDG % K  	KKjQ		s   2+A! A!c                      U R                  SS5      nU$ ! [         aC  nSR                  U5      nUR                  SS5        [        R	                  SU5         S nAg S nAff = f)Nzutf-8strict:zError decoding: %s)decodeAttributeErrorjoinr?   r@   )cmplxr8   	exceptions      r   r7   r7   S   s^    ||GX. K  xx	"GX&($/	s    
A#9AA#returnc                 f     [         R                  " U 5        g! [         R                   a     gf = f)NTF)recompileerror)values    r   is_valid_regexrS   ^   s,    


588 s    00c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )SizeLimitedDictf   c                 2   > [         TU ]  " U0 UD6  Xl        g r'   )super__init__max_size)selfrZ   argskwargs	__class__s       r   rY   SizeLimitedDict.__init__g   s    $)&) r   c                 v   > [        U 5      U R                  :  a  U R                  5         [        TU ]  X5        g r'   )lenrZ   clearrX   __setitem__)r[   keyrR   r^   s      r   rc   SizeLimitedDict.__setitem__k   s)    t9%JJLC'r   )rZ   )__name__
__module____qualname____firstlineno__rY   rc   __static_attributes____classcell__)r^   s   @r   rU   rU   f   s    !( (r   rU   c                 Z    U R                   c  U R                  [        R                  S9n U $ )Nr   )r   r   r   utc)date_objs    r   convert_to_datetime_awarero   r   s(    ##8<<#8Or   )loggingr.   rO   collectionsr   r   r   r   decimalr   uuidr   r+   dateutil.tzr	   r
   	getLoggerr?   r   r   r   r%   r9   r4   r6   r7   r-   rS   rU   ro    r   r   <module>rw      sz      	 # - -   
 &	"@
W"%+T 	(k 	(r   