
    uIg@                         d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlZd dlmZmZ  e j                   d      Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZdefdZ G d de      Zd Zy)    N)defaultdict)datedatetimetimezone)Decimal)UUID)tzlocaltzutcposthogc                 \    | j                   du xs | j                   j                  |       du S )z1Determines if a given datetime.datetime is naive.N)tzinfo	utcoffset)dts    J/var/www/html/answerous/venv/lib/python3.12/site-packages/posthog/utils.pyis_naiver      s*    99?		 3 3B 74 ??    c                 f    | j                   | j                  | j                  dz  dz  z   dz  z   dz  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                     t        |       rYt        j                         | z
  }t        |      dk  r| j	                  t                     S | j	                  t                     S | S )z:Attempts to convert a naive datetime to an aware datetime.   r   )r   r   nowr   replacer	   r
   )r   r   s     r   guess_timezoner      sW    | #!# ::WY:// ::UW:--Ir   c                 2    | j                  d      r| d d S | S )N/)endswith)hosts    r   remove_trailing_slashr%   +   s    }}SCRyKr   c                    t        | t              rt        |       S t        | t              rt	        |       S t        | t
        j                  t        t        j                  t        t        t        d       f      r| S t        | t        t        t        f      rt!        |       S t        | t"              rt%        |       S t'        |       S 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 cg c]  }t        |       c}S c c}w r'   )r9   )list_r8   s     r   r4   r4   @   s    $)*DE$K***s   c           
          i }t        j                  |       D ]  \  }}	 t        |      ||<    |S # t        $ r$ t        j                  d||t        |             Y Ew xY w)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   si    De$ 	1	AhDG	 K  	KKjQ		s   1*AAc                     	 | j                  dd      }|S # t        $ rC}dj                  |      }|j                  dd       t        j	                  d|       Y d }~y d }~ww xY w)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                 b    	 t        j                  |        y# t         j                  $ r Y yw xY w)NTF)recompileerror)values    r   is_valid_regexrS   ^   s,    


588 s    ..c                   (     e Zd Z fdZ fdZ xZS )SizeLimitedDictc                 2    t        |   |i | || _        y r'   )super__init__max_size)selfrY   argskwargs	__class__s       r   rX   zSizeLimitedDict.__init__g   s    $)&) r   c                 v    t        |       | j                  k\  r| j                          t        |   ||       y r'   )lenrY   clearrW   __setitem__)rZ   keyrR   r]   s      r   ra   zSizeLimitedDict.__setitem__k   s+    t9%JJLC'r   )__name__
__module____qualname__rX   ra   __classcell__)r]   s   @r   rU   rU   f   s    !( (r   rU   c                 ^    | j                    | j                  t        j                        } | S )Nr   )r   r   r   utc)date_objs    r   convert_to_datetime_awarerj   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   rj    r   r   <module>rr      s|      	 # - -   
 &g	"@
W"%+T 	(k 	(r   