
    Zi+                         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
m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 d d
lmZ dZdZ G d de j                  ZdS )    N)	dataclass)datedatetime	timedelta)Decimal)Optional)UUID)tzutc)parameterized)	BaseModel)utils+kOOlRy2QlMY9jHZQv0bKz0FZyazBUoY8Arj0lFVNjs4
random_keyc                       e Zd Z ej        ddg          dedefd            Zd Zd Z	d Z
d	 Zd
 Z ej        g d          d             Zd ZddZd ZdS )	TestUtils)znaive datetime should be naiveT)z+timezone-aware datetime should not be naiveF_nameexpected_naivec                     |rt          j                    }n!t          j        t                                }t          j        |          |u sJ d S )Ntz)r   nowr
   r   is_naive)selfr   r   dts       R/root/projects/butler/venv/lib/python3.11/site-packages/posthog/test/test_utils.pytest_is_naivezTestUtils.test_is_naive   sP      	*BB)))B~b!!^333333    c                     t          j                    }t          j        t                                }t          j        |          }t          j        |          du sJ t          j        |          }||k    sJ d S )Nr   F)r   r   r
   r   guess_timezoner   )r   r   utcnowfixedshouldnt_be_editeds        r   test_timezone_utilszTestUtils.test_timezone_utils#   sw    lnn)))$S))~e$$----"1&99+++++++r   c           
      &   t          d          t          j        d          t          j                    dddddd d	}t          d          t          d	
          g dd}t          |                                          }|	                    |                                           |
                                }t          j        |           |
                                |k    sJ t          j        t          d                    dk    sJ d S )Nz0.142857wooi    g       @T)	decimalunicoder   longintegerfloatboolstrnonezThis should show up   )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_cleanzTestUtils.test_clean-   s   z**uU||LNN

 

 ##899"333II
 
 ''))++,,,!H}}.0000 K?@@AA56 6 6 6 6 6r   c                     t          ddd          t          j        t                                d}|t	          j        |          k    sJ d S )Ni  r&   r   )	birthdateregistration)r   r   r   r
   r   r>   )r   dict_with_datess     r   test_clean_with_dateszTestUtils.test_clean_with_datesN   sT    dAq))$LEGG444
 
 %+o">">>>>>>>r   c                     t          d          }t          j        |           t          j        |          dk    sJ d S )N
   z
          )bytesr   r>   )r   items     r   
test_byteszTestUtils.test_bytesU   s?    RyyD{4  $NNNNNNNr   c                 L    t          j        d dd          }|d ddk    sJ d S )Nc                     | S N )xs    r   <lambda>z)TestUtils.test_clean_fn.<locals>.<lambda>[   s    q r      )fnnumberr   r>   )r   cleaneds     r   test_clean_fnzTestUtils.test_clean_fnZ   s:    +[[A>>??33333333r   ))zhttp://posthog.io/http://posthog.io)rZ   rZ   )zhttps://example.com/path/https://example.com/path)r[   r[   c                 :    |t          j        |          k    sJ d S rP   )r   remove_trailing_slash)r   	input_urlexpected_urls      r   test_remove_slashzTestUtils.test_remove_slash^   s&     u:9EEEEEEEEr   c           	          G d dt                      G d dt                    } G fddt                     }t          j         dd	                    ddd d
k    sJ t          j         |dd	                    ddd	k    sJ t          j         | ddd
                              ddddd
ik    sJ d S )Nc                   >    e Zd ZU eed<   eed<   dZee         ed<   dS ).TestUtils.test_clean_pydantic.<locals>.ModelV2foobarNbaz)__name__
__module____qualname__r-   __annotations__intrf   r   rQ   r   r   ModelV2rc   j   s8         HHHHHH!%C#%%%%%r   rl   c                   $    e Zd ZU eed<   eed<   dS ).TestUtils.test_clean_pydantic.<locals>.ModelV1rd   re   N)rg   rh   ri   rk   rj   r-   rQ   r   r   ModelV1rn   o   s"         HHHHHHHHr   ro   c                       e Zd ZU  ed<   dS )2TestUtils.test_clean_pydantic.<locals>.NestedModelrd   N)rg   rh   ri   rj   )rl   s   r   NestedModelrq   s   s         LLLLLr   rr   1r1   )rd   re   )rd   re   rf   r&   23)rd   rd   )r   BaseModelV1r   r>   )r   ro   rr   rl   s      @r   test_clean_pydanticzTestUtils.test_clean_pydantici   sb   	& 	& 	& 	& 	&i 	& 	& 	&
	 	 	 	 	k 	 	 		 	 	 	 	 	 	) 	 	 	 {77s222338
 8
 
 
 
 

 {77qc22233q7M7MMMMM{;;77ss+K+K+KLLLMM3q55R
 
 
 
 
 
 
r   returnNc                 l     G d d          }t          j        d |            i          dd ik    sJ d S )Nc                       e Zd ZdedefdZdS )7TestUtils.test_clean_pydantic_like_class.<locals>.Dummyrequired_paramrx   c                     i S rP   rQ   )r   r|   s     r   
model_dumpzBTestUtils.test_clean_pydantic_like_class.<locals>.Dummy.model_dump   s    	r   N)rg   rh   ri   r-   r:   r~   rQ   r   r   Dummyr{      s6               r   r   testrW   )r   r   s     r   test_clean_pydantic_like_classz(TestUtils.test_clean_pydantic_like_class   s\    	 	 	 	 	 	 	 	 {FEEGG,--&$??????r   c                 D   t            G d d                      t            G fdd                      }t          j         |dd ddt          d	          t	          d
dd                                        dddddt	          d
dd          d ddk    sJ d S )Nc                   R    e Zd ZU eed<   eed<   eed<   eed<   dZe	e         ed<   dS )6TestUtils.test_clean_dataclass.<locals>.InnerDataClass	inner_foo	inner_bar
inner_uuid
inner_dateNinner_optional)
rg   rh   ri   r-   rj   rk   r	   r   r   r   rQ   r   r   InnerDataClassr      sP         NNNNNN    ,0NHSM00000r   r   c                   0    e Zd ZU eed<   eed<    ed<   dS )5TestUtils.test_clean_dataclass.<locals>.TestDataClassrd   re   nestedN)rg   rh   ri   r-   rj   rk   )r   s   r   TestDataClassr      s1         HHHHHH""""""r   r   rs   r1   ru   rT   r5   i  r&   )r   r   r   r   )rd   re   r   r6   )r   r   r   r   r   )r   r   r>   r	   r   )r   r   r   s     @r   test_clean_dataclasszTestUtils.test_clean_dataclass   s(   		1 	1 	1 	1 	1 	1 	1 
	1 
	# 	# 	# 	# 	# 	# 	# 	# 	# 
	#
 {M%~!#$FGG'a33	  	 	 	
 
  D&tQ22"& 

 


 
 
 
 
 
r   )rx   N)rg   rh   ri   r   expandr-   r,   r   r#   rC   rH   rM   rY   r`   rw   r   r   rQ   r   r   r   r      s!       ]4B	
 43 4 4 4 4 4, , ,
 
 
B? ? ?O O O
4 4 4 ]	
 	
 	
 F F F
 
 
.	@ 	@ 	@ 	@$
 $
 $
 $
 $
r   r   )unittestdataclassesr   r   r   r   r'   r   typingr   uuidr	   r7   dateutil.tzr
   r   pydanticr   pydantic.v1rv   posthogr   TEST_API_KEYFAKE_TEST_API_KEYTestCaser   rQ   r   r   <module>r      s#    ! ! ! ! ! ! . . . . . . . . . .                   



       ' ' ' ' ' '       0 0 0 0 0 0      <  [
 [
 [
 [
 [
! [
 [
 [
 [
 [
r   