
    Ki+                         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
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  S S
KJr  SrSr " S S\ R0                  5      rg)    N)	dataclass)datedatetime	timedelta)Decimal)Optional)UUID)tzutc)parameterized)	BaseModel)utils+kOOlRy2QlMY9jHZQv0bKz0FZyazBUoY8Arj0lFVNjs4
random_keyc                       \ rS rSr\R
                  " SS/5      S\S\4S j5       rS r	S r
S	 rS
 rS r\R
                  " / SQ5      S 5       rS rSS jrS rSrg)	TestUtils   )znaive datetime should be naiveT)z+timezone-aware datetime should not be naiveF_nameexpected_naivec                     U(       a  [         R                  " 5       nO[         R                  " [        5       S9n[        R                  " U5      UL d   eg )Ntz)r   nowr
   r   is_naive)selfr   r   dts       Y/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/posthog/test/test_utils.pytest_is_naiveTestUtils.test_is_naive   s9     B)B~~b!^333    c                    [         R                  " 5       n[         R                  " [        5       S9n[        R                  " U5      n[        R
                  " U5      SL d   e[        R                  " U5      nX$:X  d   eg )Nr   F)r   r   r
   r   guess_timezoner   )r   r   utcnowfixedshouldnt_be_editeds        r   test_timezone_utilsTestUtils.test_timezone_utils#   sa    lln)$$S)~~e$---"11&9+++r   c           
         [        S5      [        R                  " S5      [        R                  " 5       SSSSSS S.	n[        S5      [        S	S
9/ SQS.n[        UR                  5       5      nUR                  UR                  5       5        UR                  5       n[        R                  " U5        UR                  5       U:X  d   e[        R                  " [        S5      5      S:X  d   eg )Nz0.142857wooi    g       @T)	decimalunicoder   longintegerfloatboolstrnonezThis should show upr   )microseconds)r)         )	exceptionr   list 12345678123456781234567812345678$12345678-1234-5678-1234-567812345678)r   sixur   r   	Exceptionr   dictitemsupdatekeysr   cleanr	   )r   simplecomplicatedcombinedpre_clean_keyss        r   
test_cleanTestUtils.test_clean-   s    z*uuU|LLN

 ##89"3
 '))+,!H}}.000 KK?@A56	
6r   c                     [        SSS5      [        R                  " [        5       S9S.nU[        R
                  " U5      :X  d   eg )Ni  r)   r   )	birthdateregistration)r   r   r   r
   r   r@   )r   dict_with_datess     r   test_clean_with_datesTestUtils.test_clean_with_datesN   s<    dAq)$LLEG4
 %++o">>>>r   c                 ~    [        S5      n[        R                  " U5        [        R                  " U5      S:X  d   eg )N
   z
          )bytesr   r@   )r   items     r   
test_bytesTestUtils.test_bytesU   s/    RyD{{4 $NNNNr   c                 N    [         R                  " S SS.5      nUS SS.:X  d   eg )Nc                     U $ N )xs    r   <lambda>)TestUtils.test_clean_fn.<locals>.<lambda>[   s    qr      )fnnumberr   r@   )r   cleaneds     r   test_clean_fnTestUtils.test_clean_fnZ   s(    ++[A>?3333r   ))zhttp://posthog.io/http://posthog.io)ra   ra   )zhttps://example.com/path/https://example.com/path)rb   rb   c                 <    U[         R                  " U5      :X  d   eg rU   )r   remove_trailing_slash)r   	input_urlexpected_urls      r   test_remove_slashTestUtils.test_remove_slash^   s     u::9EEEEr   c           
      P  ^  " S S[         5      m " S S[        5      n " U4S jS[         5      n[        R                  " T" SSS	95      SSS S
.:X  d   e[        R                  " U" SSS	95      SSS	.:X  d   e[        R                  " U" T" SSSS
9S95      SSSSS
.0:X  d   eg )Nc                   >    \ rS rSr% \\S'   \\S'   Sr\\   \S'   Sr	g).TestUtils.test_clean_pydantic.<locals>.ModelV2j   foobarNbazrV   )
__name__
__module____qualname____firstlineno__r0   __annotations__intro   r   __static_attributes__rV   r   r   ModelV2rk   j   s    HH!%C#%r   rw   c                   *    \ rS rSr% \\S'   \\S'   Srg).TestUtils.test_clean_pydantic.<locals>.ModelV1o   rm   rn   rV   N)rp   rq   rr   rs   ru   rt   r0   rv   rV   r   r   ModelV1ry   o   s    HHr   r{   c                   $   > \ rS rSr%  Y \S'   Srg)2TestUtils.test_clean_pydantic.<locals>.NestedModels   rm   rV   N)rp   rq   rr   rs   rt   rv   )rw   s   r   NestedModelr}   s   s    Lr   r   1r3   )rm   rn   )rm   rn   ro   r)   23)rm   rm   )r   BaseModelV1r   r@   )r   r{   r   rw   s      @r   test_clean_pydanticTestUtils.test_clean_pydantici   s    	&i 	&
	k 		) 	 {{7s238
 
 	
 

 {{7qc23q7MMMM{{;7ss+KLM3q5R
 
 	
 
r   Nc                 b     " S S5      n[         R                  " SU" 5       05      SS 0:X  d   eg )Nc                   &    \ rS rSrS\S\4S jrSrg)7TestUtils.test_clean_pydantic_like_class.<locals>.Dummy   required_paramreturnc                     0 $ rU   rV   )r   r   s     r   
model_dumpBTestUtils.test_clean_pydantic_like_class.<locals>.Dummy.model_dump   s    	r   rV   N)rp   rq   rr   rs   r0   r<   r   rv   rV   r   r   Dummyr      s      r   r   testr]   )r   r   s     r   test_clean_pydantic_like_class(TestUtils.test_clean_pydantic_like_class   s0    	 	 {{FEG,-&$???r   c                    ^ [          " S S5      5       m[          " U4S jS5      5       n[        R                  " U" SST" SS[        S	5      [	        S
SS5      S9S95      SSSSS[	        S
SS5      S S.S.:X  d   eg )Nc                   R    \ rS rSr% \\S'   \\S'   \\S'   \\S'   Sr	\
\   \S'   Srg)	6TestUtils.test_clean_dataclass.<locals>.InnerDataClass   	inner_foo	inner_bar
inner_uuid
inner_dateNinner_optionalrV   )rp   rq   rr   rs   r0   rt   ru   r	   r   r   r   rv   rV   r   r   InnerDataClassr      s&    NN  ,0NHSM0r   r   c                   8   > \ rS rSr% \\S'   \\S'    Y \S'   Srg)5TestUtils.test_clean_dataclass.<locals>.TestDataClass   rm   rn   nestedrV   N)rp   rq   rr   rs   r0   rt   ru   rv   )r   s   r   TestDataClassr      s    HH""r   r   r   r3   r   rZ   r7   i  r)   )r   r   r   r   )rm   rn   r   r8   )r   r   r   r   r   )r   r   r@   r	   r   )r   r   r   s     @r   test_clean_dataclassTestUtils.test_clean_dataclass   s    		1 	1 
	1 
	# 	# 
	#
 {{%!#$FG'a3		
  D&tQ2"&


 	
 
r   rV   )r   N)rp   rq   rr   rs   r   expandr0   r/   r   r%   rE   rK   rQ   r_   rg   r   r   r   rv   rV   r   r   r   r      s    4B	
43 4 44,
B?O
4 	
FF
.	@$
r   r   )unittestdataclassesr   r   r   r   r*   r   typingr   uuidr	   r9   dateutil.tzr
   r   pydanticr   pydantic.v1r   posthogr   TEST_API_KEYFAKE_TEST_API_KEYTestCaser   rV   r   r   <module>r      sK     ! . .    
  '  0 <  [
!! [
r   