
    gK                    B   d dl Z d dlZd dlZd dlmZmZ d dlm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  G d d	ej$                        Z G d
 dej$                        Z G d dej$                        Z G d dej$                        Z G d dej$                        Zy)    N)parsertz)freeze_time)Client)InconclusiveMatchErrormatch_property-relative_date_parse_for_feature_flag_matching)APIError)FAKE_TEST_API_KEYc                   j   e Zd Zed        Zed        Zd Zd Z ej                  d      d        Z
 ej                  d       ej                  d      d               Z ej                  d       ej                  d      d	               Z ej                  d       ej                  d      d
               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d      d        Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Zej                  j%                  ed       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z d Z! ej                  d       ej                  d      d               Z" ej                  d       ej                  d      d                Z# ej                  d       ej                  d      d!               Z$ ej                  d      d"        Z% ej                  d      d#        Z& ej                  d      d$        Z' ej                  d      d%        Z( ej                  d       ej                  d      d&               Z) ej                  d       ej                  d      d'               Z* ej                  d       ej                  d      d(               Z+ ej                  d      d)        Z, ej                  d      d*        Z- ej                  d      d+        Z. ej                  d      d,        Z/ ej                  d      d-        Z0ej                  j%                  ed       ej                  d      d.               Z1 ej                  d      d/        Z2y0)1TestLocalEvaluationc                     t         j                  j                  t        d      | _        | j                  j                          y Ncapturemockpatchobjectr   capture_patchstartclss    T/var/www/openai/venv/lib/python3.12/site-packages/posthog/test/test_feature_flags.py
setUpClasszTestLocalEvaluation.setUpClass   /     !JJ--fi@!    c                 8    | j                   j                          y Nr   stopr   s    r   tearDownClassz!TestLocalEvaluation.tearDownClass        r   c                 ,    t        d||       d| _        yzMark the failure handlerFAILTNprintfailedselfebatchs      r   set_failzTestLocalEvaluation.set_fail       far   c                 R    d| _         t        t        | j                        | _        y NF)on_errorr(   r   r   r-   clientr*   s    r   setUpzTestLocalEvaluation.setUp       .Gr   posthog.client.getc                    dddddddddgd	d
gddgidg| j                   _        | j                   j                  ddddi      }| j                   j                  ddddi      }| j                  |       | j	                  |       y )N   Beta Featureperson-flagTgroupsregionexactUSApersonkeyoperatorvaluetyped   
propertiesrollout_percentageidnamerB   is_simple_flagactivefilterssome-distinct-idperson_propertiessome-distinct-2Canada)r3   feature_flagsget_feature_flag
assertTrueassertFalse)r*   	patch_getfeature_flag_matchnot_feature_flag_matchs       r   test_flag_person_propertiesz/TestLocalEvaluation.test_flag_person_properties"   s     &$"& ,407.3W,4	!"+ 36
%
!2 "[[99-(EAR : 
 "&!=!=,8@T "> "
 	*+/0r   posthog.client.decidec                    ddddddddddgd	d
gddgddg| j                   _        ddd| j                   _        | j                  | j                   j	                  dddddii             | j                  | j                   j	                  dddddii             | j                  | j                   j	                  ddddidddii             | j                  | j                   j	                  ddddidddii             | j                  | j                   j	                  ddddidddii             | j                  |j                  d       dddii|_        i | j                   _        | j                  | j                   j	                  ddddidddii      d       | j                  |j                  d       y )Nr9   r:   z
group-flagTr   rL   r>   zProject Name 1group)group_type_indexrB   rC   rD   rE   #   rG   )aggregation_group_type_indexr<   rJ   companyproject)01rP   )group_propertiesrS   zProject Name 2amazon_without_rollout)r<   rg   amazonfeatureFlagsdecide-fallback-value)	r3   rU   group_type_mappingrX   rV   rW   assertEqual
call_countreturn_value)r*   rY   patch_decides      r   test_flag_group_propertiesz.TestLocalEvaluation.test_flag_group_propertiesH   sC   
 &#"&45
 9:+107.>-?,3!"+ 35%
!6 09y)I& 	KK((0IPVXhOiCj ) 	
 	KK((/9vWgNhBi ) 	
 	KK(("!#;<"+f6F-G!H	 ) 	
 	KK(("!8,"+f6F-G!H	 ) 	
 	KK((!!#;<"+f6F-G!H	 ) 	
 	00!4 &4lD[5\$]!)+&KK(("!8,"+f6F-G!H	 )  $	
 	00!4r   c                 8   dddii|_         t        t        t              }dddddd	d
ddgdddddgddgddddddgddgddddddgddgddgidg|_        | j	                  |j                  ddddd             | j                  |j                  d       | j	                  |j                  ddddd              | j                  |j                  d       | j                  |j                  dd!ddd       d       | j                  |j                  d       |j                          | j                  |j                  ddddi      d       | j                  |j                  d       |j                          | j                  |j                  ddd
di      d       | j                  |j                  d       |j                          | j                  |j                  dd!ddd"dd#             | j                  |j                  d       y )$Nrj   complex-flagrk   personal_api_keyr9   r:   FTr<   r=   r>   r?   r@   rA   rL   AloharF   rG   emailza@b.comzb@c.com   doesnt_matterrf   2r   rJ   rP   r=   rL   rQ   z some-distinct-id_within_rollout?)r=   rw   z!some-distinct-id_outside_rollout?X)r=   rw   rL   ry   )
ro   r   r   rU   rW   rV   rm   rn   
reset_mockrX   r*   rY   rp   r3   s       r   !test_flag_with_complex_definitionz5TestLocalEvaluation.test_flag_with_complex_definition   s    &4nF]5^$_!)<MN &%"' ,407.3W,4	!" ,207.5Y,4	!"+ 36( ,307.7-C,4	!"+ 35
 ,;07.13Z,4	!"+ 34
;(*13 
j 	## 2QV`gFh $ 	

 	00!4 	##2-2Y"G $ 	
 	00!4 	##3-2Y"G $ 
 $	
 	00!4! 	##N4F[jloZp#q#	
 	00!4! 	##N4F[cejZk#l#	
 	00!4! 	##3-2YPSfi"j $ 	
 	00!4r   c                    ddddi|_         t        t        t              }dddd	d	d
ddd ddgddgidddddd	d
dddgddgddgidg|_        |j	                  dd      }| j                  |d       | j                  |j                  d       |j	                  dd      }| j                  |d       | j                  |j                  d       y )Nrj   alakazam	alakazam2beta-featurebeta-feature2rt   r9   r:   r   Tr<   rK   b   cohortrB   rD   rC   rE   rF   rG   rJ      r   Fr=   r>   r?   r@   rA   rP   )ro   r   r   rU   rV   rm   rn   r*   rY   rp   r3   rZ   s        r   %test_feature_flags_fallback_to_decidez9TestLocalEvaluation.test_feature_flags_fallback_to_decide  s-    &4jcn5o$p!)<MN &%"&37"RV`h+i*j25  &&"' ,407.3W,4	!"+ 36
!& 
R $44^EWX+Z800!4 $44_FXY+[900!4r   c                 ~   ddddi|_         t        t        t              }dddd	d	d
ddd ddgddgidddddd	d
dddgddgddgidg|_        |j	                  ddd	      }| j                  |d        | j                  |j                  d       |j                  ddd	      }| j                  |d        | j                  |j                  d       |j	                  ddd	      }| j                  |d        |j                  ddd	      }| j                  |d        | j                  |j                  d       y )Nrj   r   r   r   rt   r9   r:   r   Tr<   rK   r   r   r   rF   rG   rJ   r   r   Fr=   r>   r?   r@   rA   rP   only_evaluate_locallyr   )ro   r   r   rU   rV   rm   rn   feature_enabledr   s        r   Mtest_feature_flags_dont_fallback_to_decide_when_only_local_evaluation_is_truezaTestLocalEvaluation.test_feature_flags_dont_fallback_to_decide_when_only_local_evaluation_is_trueP  s    &4jcn5o$p!)<MN &%"&37"RV`h+i*j25  &&"' ,407.3W,4	!"+ 36
!& 
T $44^EWos4t+T200!4#33NDVnr3s+T200!4 $44_FXpt4u+T2#33OEWos3t+T200!4r   c           	         di i|_         t        t        t              }ddddddg dd	gid
g|_        | j	                  |j                  dd             | j	                  |j                  dd             | j	                  |j                  dd             | j                  |j                  d       | j	                  |j                  dd             | j                  |j                  d       y )Nrj   rt   r9   r:   r   Tr<   r   rG   rJ   rP   r   r   )	ro   r   r   rU   rX   rV   r   rm   rn   r~   s       r   Ctest_feature_flag_never_returns_undefined_during_regular_evaluationzWTestLocalEvaluation.test_feature_flag_never_returns_undefined_during_regular_evaluation  s     &4R$8!)<MN &%"&*,23 
& 	00ASTU//@RST 	00BTUV00!4//ASTU00!4r   c                 R   t        dd      |_        t        t        t              }g |_        | j                  |j                  dd             | j                  |j                  d       | j                  |j                  dd             | j                  |j                  d       y )Ni  zDecide errorrt   r   rP   r9   r   )
r
   side_effectr   r   rU   assertIsNonerV   rm   rn   r   r~   s       r   4test_feature_flag_return_none_when_decide_errors_outzHTestLocalEvaluation.test_feature_flag_return_none_when_decide_errors_out  s     $,C#@ )<MN! 	&11/CUVW00!4&00BTUV00!4r   c           
          dddii|_         t        t        d      }ddddd	d
dg d
dgid	dg|_        | j	                  |j                  dd      d       | j                  |j                  d       y )Nrj   r   rk   testrt   r9   r:   FTrF   r<   rG   )rK   rL   rB   rM   rN   rI   rO   ensure_experience_continuitydistinct_id)ro   r   r   rU   rW   rV   rm   rn   r*   rp   r3   s      r   5test_experience_continuity_flag_not_evaluated_locallyzITestLocalEvaluation.test_experience_continuity_flag_not_evaluated_locally  s    %3nF]5^$_!)FC &%"'&)*,25 15 
( 	//NPgh00!4r   r   c                 \   dddddi|_         | j                  }ddddd	d
dg d
dgidddddd	dg ddgidddddd	ddddgddgidg|_        | j                  |j	                  d      dddd       | j                  |j
                  d       | j                  |j
                  d       y )Nrj   	variant-1	variant-2F)r   r   disabled-featurer9   r:   r   TrF   r<   rG   rK   rL   rB   rM   rN   rI   rO   r   r   r   rJ      r   countryUSrB   rD   r   ro   r3   rU   rm   get_all_flagsrn   r*   rp   patch_capturer3   s       r    test_get_all_flags_with_fallbackz4TestLocalEvaluation.test_get_all_flags_with_fallback  s    [;lqr%
!  &%"'&)*,25" &)"'*,23  &&"'3<t+L*M23A/ 
b 	  /(;\ab	
 	00!41115r   c           
      x   ddddddd|_         | j                  }ddd	d
ddg ddgddidddddd
dg ddgddidddddd
ddddgddgddiddg|_        | j                  |j	                  d      d   ddd       | j                  |j
                  d       | j                  |j
                  d       y )Nr   r   r   rF   ,  rj   featureFlagPayloadsr9   r:   r   FTrG   truesome-payloadr<   payloadsr   r   r   r   another-payloadrJ   r   r   r   r   r   	payload-3r   r   ro   r3   rU   rm   get_all_flags_and_payloadsrn   r   s       r   -test_get_all_flags_and_payloads_with_fallbackzATestLocalEvaluation.test_get_all_flags_and_payloads_with_fallback  sI    .9;W47##N%
!  &%"'&) +-25 !
( &)"' +-23  1!
& &&"' 4=t+L*M23 !
M8 
t 	--m<=RS #!$	
 	00!41115r   c                     ddddi|_         | j                  }g |_        | j                  |j	                  d      ddd       | j                  |j
                  d       | j                  |j
                  d       y )Nrj   r   r   r   r   r9   r   r   r   s       r   2test_get_all_flags_with_fallback_empty_local_flagszFTestLocalEvaluation.test_get_all_flags_with_fallback_empty_local_flagsi  sz     &4kdo5p$q!!  /+`k1l	
 	00!41115r   c                    ddddddd|_         | j                  }g |_        | j                  |j	                  d      d   ddd       | j                  |j
                  d	       | j                  |j
                  d
       y )Nr   r   r   rF   r   r   r   r   r9   r   r   r   s       r   ?test_get_all_flags_and_payloads_with_fallback_empty_local_flagszSTestLocalEvaluation.test_get_all_flags_and_payloads_with_fallback_empty_local_flagsv  s     .9;W47##N%
! !--m<=RS 37	
 	00!41115r   c           
      4   ddddi|_         | j                  }ddddd	d
dg d
dgidddddd	dg ddgidg|_        | j                  |j	                  d      d	dd       | j                  |j
                  d       | j                  |j
                  d       y )Nrj   r   r   r   r9   r:   r   FTrF   r<   rG   r   r   r   r   rJ   r   r   r   r   r   s       r   #test_get_all_flags_with_no_fallbackz7TestLocalEvaluation.test_get_all_flags_with_no_fallback  s     &4kdo5p$q! &%"'&)*,25" &)"'*,23#  
B 	--m<tin>op00!41115r   c           	      `   ddddi|_         | j                  }ddddd	d
g d
dgddidd}ddddd	g ddgddidd}||g|_        ||d|_        | j	                  |j                  d      d   ddi       | j	                  |j                  d       | j	                  |j                  d       y )Nrj   r   r   r   r9   r:   r   FTrF   rG   r   newr   r   r   r   r   r   rJ   r   r   r   ro   r3   rU   feature_flags_by_keyrm   r   rn   )r*   rp   r   r3   
basic_flagdisabled_flags         r   0test_get_all_flags_and_payloads_with_no_fallbackzDTestLocalEvaluation.test_get_all_flags_and_payloads_with_no_fallback  s    &4kdo5p$q!"!#"% ').1 E


( "%# ')./ N

&  
 8BWd&e#--m<=RSVdfkUl	
 	00!41115r   c                 \   ddddi|_         | j                  }ddddd	d
dg d
dgidddddd	dg ddgidddddd	ddddgddgidg|_        | j                  |j	                  dd	      d	dd       | j                  |j
                  d       | j                  |j
                  d       y )Nrj   r   r   r   r9   r:   r   FTrF   r<   rG   r   r   r   r   rJ   r   r   r   r   r   r   r   r   r   r   s       r   >test_get_all_flags_with_fallback_but_only_local_evaluation_setzRTestLocalEvaluation.test_get_all_flags_with_fallback_but_only_local_evaluation_set  s    &4kdo5p$q! &%"'&)*,25" &)"'*,23  &&"'3<t+L*M23A/ 
b 	  d K!u=	
 	00!41115r   c           	         ddddddd|_         | j                  }ddd	d
ddg ddgddidd}dddd
dg ddgddidd}dddd
ddddgddgddidd}|||g|_        |||d|_        | j	                  |j                  dd      d   d	di       | j	                  |j                  d       | j	                  |j                  d       y ) Nr   r   r   rF   r   r   r9   r:   r   FTrG   r   r   r   r   r   r   r   r   rJ   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r*   rp   r   r3   flag_1flag_2flag_3s          r   Ktest_get_all_flags_and_payloads_with_fallback_but_only_local_evaluation_setz_TestLocalEvaluation.test_get_all_flags_and_payloads_with_fallback_but_only_local_evaluation_set%  sj    .9;W47##N%
! "!#"% ').1 N

( "%# ')./ -

& ""# 094'H&I./ K

&  

 8>SYlr&s#--mSW-XYno^,	
 	00!41115r   c           
         | j                   }dddddddg ddgid	d
dddddg ddgidg|_        | j                  |j                  d      ddd       | j                  |j                  d       | j                  |j                  d       dddddddg ddgid	d
dddddg ddgidg|_        | j                  |j                  d      ddd       | j                  |j                  d       | j                  |j                  d       y )Nr9   r:   r   FTrF   r<   rG   r   r   r   r   rJ   r   r   )r3   rU   rm   r   rn   r   s       r   #test_compute_inactive_flags_locallyz7TestLocalEvaluation.test_compute_inactive_flags_locallyr  s     &%"'&)*,25" &)"'*,23#  
B 	--m<tin>op00!41115
 &%"'&)*,25" &)"'*,25#  
B 	--m<ujn>op00!41115r   c                    t        t        t              }t        dddddddd	dd
dd ddddddddddddddddddddgddgiig|_        |j	                  ddd d d d d      }| j                  |d       | j                  |j                  d       | j                  |j                  d       |j	                  dddd d!d"d      }y )#Nrt   r9   rL   r:   rB   r   rM   TrN   rO   r<   latestBuildVersionr@   z.+regexrB   rE   rD   rC   latestBuildVersionMajor23gtlatestBuildVersionMinor31latestBuildVersionPatchre   rF   )variantrH   rI   rP   )r   r   r   r   rQ   Fr   z24.32..12432rf   )r   r   rK   rU   rV   rm   rn   r   s        r   /test_feature_flags_local_evaluation_None_valueszCTestLocalEvaluation.test_feature_flags_local_evaluation_None_values  s1    )<MN A~ $$'+(<hY]kr s(A8^bpt u(A8^bpt u(A8^aos t	+ 36	 
0 $44&*+/+/+/	 5 	
 	+U300!4--q1#44&0+/+/+.	 5 	
r   c                    t        t        t              }dddddddd	d
gddddd ddgddgidg|_        ddddddd	dgddgdddd	dgddgdd|_        |j	                  ddddi      }| j                  |d       | j                  |j                  d        | j                  |j                  d        |j	                  ddd
dd!      }| j                  |d       | j                  |j                  d        | j                  |j                  d        |j	                  ddd
dd"      }| j                  |d       | j                  |j                  d        | j                  |j                  d        y )#Nrt   r   r:   r   FTr<   r=   r>   r?   r@   rA   rK   r   r   r   rF   rG   rJ   ORr9   rB   rD   rE   nationUKrE   valuesANDotherthing98rf   rP   rQ   r   r=   r   r=   r   )r   r   rU   cohortsrV   rm   rn   r   s        r   /test_feature_flags_local_evaluation_for_cohortszCTestLocalEvaluation.test_feature_flags_local_evaluation_for_cohorts  s    )<MN &%"' ,407.3W,4	!" )-rtU] ^+ 36 
6  1h?'$+"& (	 #*7)]efg
& $44.8TBR 5 
 	+U300!4--q1#44.U^bBc 5 
 	+T200!4--q1#44.U]dBe 5 
 	+T200!4--q1r   c                    t        t        t              }dddddddd	d
gddddd ddgddgidg|_        ddddddd	dgddgdddd	dgdddgdd|_        |j	                  ddddi       }| j                  |d       | j                  |j                  d!       | j                  |j                  d!       |j	                  ddd
dd"       }| j                  |d       | j                  |j                  d!       | j                  |j                  d!       |j	                  ddd
dd#       }| j                  |j                  d       | j                  |j                  d!       |j                          |j	                  ddd
d$d#       }| j                  |d       | j                  |j                  d!       | j                  |j                  d!       y )%Nrt   r   r:   r   FTr<   r=   r>   r?   r@   rA   rK   r   r   r   rF   rG   rJ   r   r9   r   r   r   r   r   r   r   )rB   rC   rD   rE   negationr   rP   rQ   r   r   r   thing2)r   r   rU   r   rV   rm   rn   r}   r   s        r   7test_feature_flags_local_evaluation_for_negated_cohortszKTestLocalEvaluation.test_feature_flags_local_evaluation_for_negated_cohorts@  sP    )<MN &%"' ,407.3W,4	!" )-rtU] ^+ 36 
6  1h?'$+"& (	 #G9V^lpq
* $44.8TBR 5 
 	+U300!4--q1#44.U^bBc 5 
 	+T200!4--q1#44.U]dBe 5 
 	00!4--q1!#44.U]eBf 5 
 	+T200!4--q1r   zposthog.client.Pollerc                    ddddddddd	dgd
did|_         t        t        d      }t        d      5  |j	                          d d d        | j                  t        |j                        d       | j                  |j                  d   d   d       | j                  |j                  d
di       | j                  |j                  j                         d       | j                  |j                  d       y # 1 sw Y   xY w)Nr9   r:   r   T)rK   rL   rB   rN   r   zAlpha Featurezalpha-featureFre   rc   )flagsrl   r   rt   z2020-01-01T12:01:00.0000Zr   rB   z2020-01-01T12:01:00+00:00)ro   r   r   r   load_feature_flagsrm   lenrU   rl   _last_feature_flag_poll	isoformatrn   )r*   rY   
patch_pollr3   s       r   test_load_feature_flagsz+TestLocalEvaluation.test_load_feature_flags  s    
 .SWX//UZ[ $'	"2"
	 )FC45%%' 6V112A6--a07H22S)4DE77AACE`a..2 65s   C::Dc                 *   t        t        t              }| j                  dd      5 }|j                          | j	                  |j
                  d   d       d d d        d|_        | j                  t        |j                         y # 1 sw Y   1xY w)Nrt   posthogERROR)levelr   zERROR:posthog:[FEATURE FLAGS] Error loading feature flags: To use feature flags, please set a valid personal_api_key. More information: https://posthog.com/docs/api/overviewT)	r   r   
assertLogsr   rm   outputdebugassertRaisesr
   )r*   r3   logss      r   !test_load_feature_flags_wrong_keyz5TestLocalEvaluation.test_load_feature_flags_wrong_key  sz    )<MN__Yg_6$%%'A @ 7 (F$=$=> 76s   0B		Bc           
          t        t              }dddddddg ddgidg|_        | j                  |j	                  dd	             | j                  |j                  d
       y )Nr9   r:   r   TrF   r<   rG   r   r   r   r   r   rU   rW   r   rm   rn   r~   s       r   test_feature_enabled_simplez/TestLocalEvaluation.test_feature_enabled_simple  s{     )* &%"&&)*,25 
$ 	..~}MN00!4r   c           
          t        t              }dddddddg ddgidg|_        | j                  |j	                  dd	             | j                  |j                  d       y )
Nr9   r:   r   Tr   r<   rG   r   r   )r   r   rU   rX   r   rm   rn   r~   s       r   $test_feature_enabled_simple_is_falsez8TestLocalEvaluation.test_feature_enabled_simple_is_false  s}     )* &%"&&'*,23 
$ 	//NO00!4r   c           
          t        t              }dddddd dg d dgidg|_        | j                  |j	                  dd             | j                  |j                  d	       y )
Nr9   r:   r   Tr<   rG   r   r   r   r  r~   s       r   =test_feature_enabled_simple_is_true_when_rollout_is_undefinedzQTestLocalEvaluation.test_feature_enabled_simple_is_true_when_rollout_is_undefined  s{     )* &%"&&**,26 
$ 	..~}MN00!4r   c           
          t        t        | j                        }dddddddg ddgid	g|_        | j	                  |j                  dd
             y )N)project_api_keyr1   r9   r:   r   TrF   r<   rG   r   r   )r   r   r-   rU   rW   r   r*   rY   r3   s      r   0test_feature_enabled_simple_with_project_api_keyzDTestLocalEvaluation.test_feature_enabled_simple_with_project_api_key  si    (9DMMR &%"&&)*,25 
$ 	..~}MNr   c           
          dddii|_         t        t        d      }ddddd	d
dg d
dgidg|_        | j	                  |j                  dd             | j                  |j                  d       y )Nrj   r   r   r   rt   r9   r:   FTrF   r<   rG   r   r   r   )ro   r   r   rU   rW   r   rm   rn   r   s      r   *test_feature_enabled_request_multi_variatez>TestLocalEvaluation.test_feature_enabled_request_multi_variate  s    %3nk5R$S!)FC &%"'&)*,25 
$ 	..~}MN00!4r   c                     t        t              }dddddddg igidg|_        | j                  |j	                  dd             y )	Nr9   r:   r   Tr<   rH   rJ   r   )r   r   rU   rW   r   r  s      r   6test_feature_enabled_simple_without_rollout_percentagezJTestLocalEvaluation.test_feature_enabled_simple_without_rollout_percentage-  s_    )* &%"&(" 
  	..~}MNr   c                     dddii|_         t        t        d      }ddddd	d
g d
dgdddddddgiddg|_        | j	                  |j                  dd      d       | j	                  |j                  d       y )Nrj   r   r   r   rt   r9   r:   FTrF   rG   variants2   )rB   rI   r   r<   multivariater   r   r   ro   r   r   rU   rm   rV   rn   r   s      r   test_get_feature_flagz)TestLocalEvaluation.test_get_feature_flagB  s    %3nk5R$S!)FC &%"'&) +-25 #$/rJ$/rJ%% 
0 	00OQ\]00!4r   c                     t        t              }g |_        di i|_        | j	                  |j                  dd             t        dd      |_        | j                  |j                  dd             y )Nrj   doesnt-existr   i  zdecide error)	r   r   rU   ro   rX   r   r
   r   r   r*   rp   r   r3   s       r   !test_feature_enabled_doesnt_existz5TestLocalEvaluation.test_feature_enabled_doesnt_existb  si     )*!%3R$8!//NO#+C#@ &00OPr   c                     t        t        d      }g |_        dddii|_        | j	                  |j                  dd             y )Nr   rt   rj   zfeature-flagTr   )r   r   rU   ro   rW   r   r  s       r   "test_personal_api_key_doesnt_existz6TestLocalEvaluation.test_personal_api_key_doesnt_existn  sD     )FC!%3nd5K$L!..~}MNr   c                     d }||j                   j                  _        t        t        d      }g |_        | j                  |j                  dd             y )Nc                      t        d      )Nzhttp exception)	Exception r   r   raise_effectzGTestLocalEvaluation.test_load_feature_flags_error.<locals>.raise_effect{  s    ,--r   r   rt   r  r   )ro   
raiseErrorr   r   r   rU   rX   r   )r*   rY   r   r#  r3   s        r   test_load_feature_flags_errorz1TestLocalEvaluation.test_load_feature_flags_errorx  sN    	. 9E	))5)FC!//NOr   c                 j   dddii|_         t        t        d      }ddddd	d
dddddgd
dddddgdddddddddddddgiddg|_        | j	                  |j                  ddddi      d       | j	                  |j                  dd       d       | j	                  |j                  d!       y )"Nrj   r   r   r   rt   r9   r:   FTrF   rw   r@   test@posthog.comr>   r   second-variantrH   rI   r   r  first-variantrI   r   r  First VariantrB   rL   rI   Second Variant   third-variantThird Variantr  r   test_idrQ   
example_idr   r  r   s      r   ,test_get_feature_flag_with_variant_overridesz@TestLocalEvaluation.test_get_feature_flag_with_variant_overrides  s   %3nk5R$S!)FC &%"'&)
 )0L^ls t+ 36'7 02oN	 #$3_dfg$4>Nfhi$3_dfg%% 
: 	##NIRY[mQn#o	
 	00NP_`00!4r   c                    dddii|_         t        t        d      }ddddd	d
dddddgd
dddddddgd
dddddgdddddddddddddgiddg|_        | j	                  |j                  ddddi      d       | j	                  |j                  dd ddi      d       | j	                  |j                  d!       y )"Nrj   r   r   r   rt   r9   r:   FTrF   rw   r@   r'  r>   r   r(  r)  r*  r  r+  r  r,  r-  r.  r/  r0  r1  r  r   r2  rQ   r3  r   r  r   s      r   )test_flag_with_clashing_variant_overridesz=TestLocalEvaluation.test_flag_with_clashing_variant_overrides  sD   %3nk5R$S!)FC &%"'&)
 )0L^ls t+ 36'7 )0L^ls t+ 36'6 02oN!& #$3_dfg$4>Nfhi$3_dfg%%'"$ 
J 	##NIRY[mQn#o	
 	##NLU\^pTq#r	

 	00!4r   c                 j   dddii|_         t        t        d      }ddddd	d
dddddgd
dddddgdddddddddddddgiddg|_        | j	                  |j                  dd ddi!      d       | j	                  |j                  dd"      d       | j	                  |j                  d#       y )$Nrj   r   r   r   rt   r9   r:   FTrF   rw   r@   r'  r>   r   	second???r)  r  first??r+  r  r*  r,  r-  r(  r.  r/  r0  r1  r  r   r2  rQ   r3  r   r  r   s      r   (test_flag_with_invalid_variant_overridesz<TestLocalEvaluation.test_flag_with_invalid_variant_overrides  s   %3nk5R$S!)FC &%"'&)
 )0L^ls t+ 36'2 02iH	 #$3_dfg$4>Nfhi$3_dfg%% 
: 	##NIRY[mQn#o	
 	00NP`a00!4r   c                    dddii|_         t        t        d      }ddddd	d
dd
idddddgd
dddddgdddddddddddddgiddg|_        | j	                  |j                  ddddi       d       | j	                  |j                  dd!      d       | j	                  |j                  dd"      d       | j	                  |j                  d#       y )$Nrj   r   r   r   rt   r9   r:   FTrF   rI   rw   r@   r'  r>   r   r(  r)  r  r0  r+  r  r*  r,  r-  r.  r/  r1  r  r   r2  rQ   r3  
another_idr   r  r   s      r   )test_flag_with_multiple_variant_overridesz=TestLocalEvaluation.test_flag_with_multiple_variant_overrides
  s;   %3nk5R$S!)FC &%"'&) 1# )0L^ls t+ 36'7 02oN #$3_dfg$4>Nfhi$3_dfg%%  
B 	##NIRY[mQn#o	
 	00NP_`00NP`a00!4r   c           
      z   ddddddddgdd	gd
dgddidd}|g| j                   _        d|i| j                   _        | j                  | j                   j	                  ddddi      d       | j                  | j                   j	                  dddddi      d       | j                  |j
                  d       y )Nr9   r:   r;   Tr=   r>   r?   r@   rA   rF   rG   r   r   r   rJ   rP   rQ   match_valuerR   r   r3   rU   r   rm   get_feature_flag_payloadrn   )r*   rp   r   s      r   (test_boolean_feature_flag_payloads_localz<TestLocalEvaluation.test_boolean_feature_flag_payloads_local8  s     " " (0,3*/(0	' /2
 $SM

. &0L!,9:+F(KK001hPUEV 1  		
 	KK001tX`bgWh 1  		
 	00!4r   c           	      r   ddiddid|_         | j                  | j                  j                  ddddi      d       | j                  | j                  j                  dddddi	      d       | j                  |j                  d
       | j                  |j                  d       |j                          y )Nr;   Tr   r   rP   r=   r?   rQ   r?  r   r9   )ro   rm   r3   rB  rn   r}   )r*   rp   r   s      r   (test_boolean_feature_flag_payload_decidez<TestLocalEvaluation.test_boolean_feature_flag_payload_decidec  s     7DT5Jdqsvcw$x!KK001hPUEV 1  		
 	KK001tX`bgWh 1  		
 	00!41115  "r   c                    ddddddddd	d
dgddddddgdddddddddddddgidddiddd}|g| j                   _        d|i| j                   _        | j                  | j                   j	                  dd dd	i!      ddi       | j                  | j                   j	                  dd ddd	i"      ddi       | j                  | j                   j	                  dd ddd	i"      d       | j                  |j
                  d#       y )$Nr9   r:   r   FTrF   rw   r@   r'  r>   r   r8  r)  r  r9  r+  r  r*  r,  r-  r(  r.  r/  r0  r1  r   ajson)r*  r0  )r<   r  r   r   r2  rQ   r?  r   rA  )r*   rp   multivariate_flags      r   'test_multivariate_feature_flag_payloadsz;TestLocalEvaluation.test_multivariate_feature_flag_payloadsx  s    "!#"%
 %,XHZhop' /2#. ,.)D	  /`bc 0:Jbde /`bc!! /=PSU[}]%
8 &7$7!,:<M+N(KK00	gGY=Z 1  &M		
 	KK00	[bdvZw 1  &M		
 	KK00	[bdvZw 1  		
 	00!4r   N)3__name__
__module____qualname__classmethodr   r!   r-   r5   r   r   r\   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r  r  r  r  r%  r4  r6  r:  r=  rC  rE  rJ  r"  r   r   r   r      s_   " "
 ! !
H TZZ$%#1 &#1J TZZ'(TZZ$%W5 & )W5r TZZ'(TZZ$%p5 & )p5d TZZ'(TZZ$%55 & )55n TZZ'(TZZ$%?5 & )?5B TZZ'(TZZ$%5 & )5@ TZZ'(TZZ$%
5 & )
5 TZZ'(5 )54 
ZZvy)TZZ'(;6 ) *;6z 
ZZvy)TZZ'(H6 ) *H6T 
ZZvy)TZZ'(	6 ) *	6 
ZZvy)TZZ'(6 ) *6 
ZZvy)TZZ'('6 ) *'6R 
ZZvy)TZZ'(26 ) *26h 
ZZvy)TZZ'(96 ) *96v 
ZZvy)TZZ'(I6 ) *I6V 
ZZvy)TZZ'(M6 ) *M6^ TZZ'(TZZ$%2
 & )2
h TZZ'(TZZ$%C2 & )C2J TZZ'(TZZ$%N2 & )N2` TZZ'(TZZ$%3 & )3"
? TZZ'(TZZ$%5 & )5. TZZ'(TZZ$%5 & )5. TZZ'(TZZ$%5 & )5. TZZ$%O &O, TZZ'(5 )52 TZZ$%O &O( TZZ'(5 )5> TZZ'(TZZ'(Q ) )Q TZZ'(TZZ'(O ) )O TZZ'(TZZ$%P & )P TZZ'(&5 )&5P TZZ'(15 )15f TZZ'(&5 )&5P TZZ'(+5 )+5Z TZZ'((5 )(5T 
ZZvy)TZZ'(# ) *#& TZZ'(45 )45r   r   c                   f    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
 ed
      d        Zd Zd Zy)TestMatchPropertiesNc                 :    ||d}||j                  d|i       |S )Nr   rC   )update)r*   rB   rD   rC   results        r   propertyzTestMatchProperties.property  s(    u-MM:x01r   c                    | j                  dd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |dd i             | j	                  t
              5  t        |ddi       t        |i        d d d        | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  dg d	d      }| j                  t        |dd
i             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j	                  t
              5  t        |ddi       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrB   rD   r   value2 key2r>   rB   rD   rC   value1rV  value3r[  r\  value4rT  rW   r   rX   r   r   )r*   
property_a
property_b
property_cs       r   test_match_properties_exactz/TestMatchProperties.test_match_properties_exact  s   ]]uG]<
zE73CDE
UH4EFG
UBK@A
UDMBC56:'89:r* 7 ]]uGg]N
zE73CDE
UH4EFG]]u4R]d]e
zE83DEFzE83DEFzE83DEF
UH4EFG56:'89 76! 76  76s   G-GGGc                 b   | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |dd i             | j                  dg dd      }| j                  t        |ddi             | j                  t        |dd	i             | j                  t        |dd
i             | j                  t        |ddi             | j                  t        |dd i             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j	                  t
              5  t        |ddi       t        |ddi       d d d        y # 1 sw Y   y xY w)NrB   rD   is_notrY  rV  rW  rZ  r]  value5value6r\  r[  rX  r^  )r*   r_  ra  s      r   test_match_properties_not_inz0TestMatchProperties.test_match_properties_not_in  so   ]]uGh]O
zE83DEFzE2;?@zE4=AB]]u4R]e]f
zE83DEFzE83DEFzE83DEFzE2;?@zE4=AB
UH4EFG
UH4EFG
UH4EFG56:'89:'9: 766s   ?F%%F.c                    | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |dd i             | j	                  t
              5  t        |ddi       t        |i        d d d        y # 1 sw Y   y xY w)NrB   is_setrY  rD   rV  rW  rX  r^  )r*   r_  s     r   test_match_properties_is_setz0TestMatchProperties.test_match_properties_is_set  s    ]]uHx]P
zE73CDEzE83DEFzE2;?@
UDMBC56:'89:r* 766s   CCc                    | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |dd	i             | j                  t        |dd
i             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             y )NrB   valUe	icontainsrY  rD   rV  r\  vaLue4343tfvalue5Alakazam{   3C  val3threerT  rW   r   rX   )r*   r_  r`  s      r   test_match_properties_icontainsz3TestMatchProperties.test_match_properties_icontains  s4   ]]uGk]R
zE73CDEzE83DEFzE83DEFzE83DEFzE=3IJK
UJ4GHI
UCLAB]]uC+]N
zE3<@AzE3<@AzE6?CD
UG4DEFr   c                 D   | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |dd	i             | j                  t        |dd
i             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             y )NrB   z\.com$r   rY  z	value.comz
value2.comz.com343tfvalue5rp  rq  valuecomz	value\comrr  rs  rt  ru  z?*rD   rV     4rv  r*   r_  r`  ra  
property_ds        r   test_match_properties_regexz/TestMatchProperties.test_match_properties_regex  s   ]]uHw]O
zE;3GHIzE<3HIJ
U<M4NOP
UJ4GHI
UCLAB
UJ4GHI
UK4HIJ]]uC']J
zE3<@AzE3<@AzE6?CD
UG4DEF ]]uD7]K

UG4DEF
UH4EFG ]]uA]H
zE3<@AzE1:>?
UG4DEFr   c                 L   | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |dd	i             | j                  ddd
      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  ddd
      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             y )NrB   r9   r   rY  r   r   r   r   ltrf   rr  gte43lte414244,   *   3029100rF   123aloha123z      rv  )r*   r_  r`  ra  r}  
property_e
property_fs          r   $test_match_properties_math_operatorsz8TestMatchProperties.test_match_properties_math_operators$  s   ]]uA]E
zE1:>?zE1:>?
UAJ?@
UBK@AzE4=AB]]uA]E
zE1:>?zE2;?@zE2;?@
UAJ?@
UCLAB
UCLAB]]uA]F
zE1:>?zE1:>?
UAJ?@
UBK@AzE3<@A]]uD5]I
zE4=ABzE4=ABzE4=AB
UDMBC
UBK@AzE2;?@]]uD4]H
zE4=AB 	zE5>BC
UCLAB]]uJ]N

UENCD
UCLAB 	zE3<@Ar   c                    | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |dt        j                  ddd	      i             | j                  t        |dt        j                  ddd	d
dd      i             | j                  t        |dt        j                  ddd	d
ddt        j                  d            i             | j                  t        |dt        j                  d      i             | j                  t        |ddi             | j                  t              5  t        |dd
i       d d d        | j                  t              5  t        |ddi       d d d        | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |dt        j                  ddd	      i             | j                  t        |dt        j                  d      i             | j                  t        |ddi             | j                  t              5  t        |ddi       d d d        | j                  ddd      }| j                  t              5  t        |dd
i       d d d        | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             y # 1 sw Y   OxY w# 1 sw Y   0xY w# 1 sw Y   DxY w# 1 sw Y   xY w)NrB   
2022-05-01is_date_beforerY  
2022-03-01
2022-04-30  rz  rx   r9   r   r   Europe/Madridtzinfo
2022-05-30abcdefis_date_after
2022-05-02     z2022-04-05 12:34:12 +01:00
2022-03-30z2022-04-05 12:34:11 +01:00z2022-04-05 12:34:13 +01:00z2022-04-05 11:34:11 +00:00z2022-04-05 11:34:13 +00:00)rT  rW   r   datetimedater   gettzr   parserX   r   r   r|  s        r   "test_match_property_date_operatorsz6TestMatchProperties.test_match_property_date_operatorsW  s_   ]]uLK[]\
zE<3HIJzE<3HIJzE8==qRT;U3VWXzE8;L;LTSTVXZ[]^`a;b3cdeUH$5$5dAr1aSUS[S[\kSl$mn	

 	zE6<<;U3VWX
UL4IJK 56:qz2 7 56:x'89 7 ]]uL?][
zE<3HIJzE<3HIJzE8;L;LTSTVX;Y3Z[\zE6<<;U3VWX
UL4IJK 56:x'89 7 ]]uDCS]T
56:qz2 7 ]]u4P[k]l

UL4IJKzE<3HIJzE;W3XYZzE;W3XYZ
U<X4YZ[zE;W3XYZ
U<X4YZ[G 76 76 76 76s0   "N>OOO%>OOO"%O/r  c                    | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |dt        j                  ddd	d
dd      i             | j	                  t        |dt        j
                  ddd	      i             | j	                  t        |dt        j                  ddd	ddd      i             | j                  t        |dt        j                  ddd	d
ddt        j                  d            i             | j                  t        |dt        j                  d      i             | j	                  t        |ddi             | j                  t              5  t        |dd
i       d d d        | j                  t              5  t        |ddi       d d d        | j                  ddd      }| j                  t        |ddi             | j                  t        |ddi             | j                  t        |dt        j                  ddd	      i             | j                  t        |dt        j                  d      i             | j	                  t        |ddi             | j                  t              5  | j	                  t        |ddi             d d d        | j                  ddd      }| j                  t              5  | j	                  t        |dd
i             d d d        | j                  t        |ddi             | j                  ddd      }| j	                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j                  t        |ddi             | j	                  t        |ddi             | j                  ddd      }| j	                  t        |ddi             | j                  t        |ddi             | j                  ddd      }| j                  t        |ddi             | j	                  t        |dd i             | j                  dd!d      }| j                  t        |dd"i             | j	                  t        |dd#i             | j	                  t        |dd$i             | j                  dd%d      }| j                  t        |dd&i             | j	                  t        |dd'i             | j                  dd(d      }	| j                  t        |	dd)i             | j	                  t        |	dd*i             | j                  dd+d      }
| j                  t        |
ddi             | j	                  t        |
dd,i             | j                  dd-d      }| j                  t        |ddi             | j                  t        |dd.i             | j	                  t        |dd/i             | j                  dd0d      }| j                  t        |ddi             | j	                  t        |dd1i             | j                  dd%d      }| j                  t        |dd2i             | j	                  t        |dd3i             | j                  dd(d      }| j                  t        |ddi             | j                  t        |dd*i             | j	                  t        |dd4i             | j	                  t        |dd5i             | j	                  t        |dd6i             y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)7NrB   z-6hr  rY  r  r  r  rz  rx   r9   r   r      r  r  r  r  1hr  r  r  r  12dr  z2022-04-05 12:34:11+01:00z2022-04-19 01:34:11+02:00z2022-04-19 02:00:01+02:00z2022-05-01 00:00:00z2022-04-30 22:00:00z-1dz2022-04-29 23:59:00z2022-04-30 00:00:011wz2022-04-23 00:00:00z2022-04-24 00:00:00z2022-04-24 00:00:011mz2022-03-01 00:00:00z2022-04-05 00:00:001yz2021-04-28 00:00:00z2021-05-01 00:00:01122hz2022-04-23 01:00:002dz2022-04-29 00:00:01z2022-04-29 00:00:00z-02wz2022-04-16 00:00:00z2022-04-01 00:00:01z2022-04-01 00:00:00z2021-05-01 00:00:00z2021-04-30 00:00:00z2021-03-01 12:13:00)rT  rW   r   r  rX   r  r   r  r   r  r   r   )r*   r_  r`  ra  r}  r  r  
property_g
property_h
property_i
property_j
property_k
property_l
property_m
property_ns                  r   +test_match_property_relative_date_operatorsz?TestMatchProperties.test_match_property_relative_date_operators  s   ]]uEDT]U
zE<3HIJzE<3HIJzE8;L;LTSTVXZ[]^`a;b3cde
UHMM$PQSU<V4WXY
UH<M<MdTUWY[]_`bc<d4efg))$2q!QrxxP_G`ab	
 	zE6<<;U3VWX
UL4IJK 56:qz2 7 56:x'89 7 ]]uD?]S
zE<3HIJzE<3HIJzE8;L;LTSTVX;Y3Z[\zE6<<;U3VWX
UL4IJK 56^J8IJK 7 ]]uD?]S
56^J
CD 7 	zE<3HIJ ]]uEDT]U

UL4IJKzE<3HIJzE;V3WXYzE;V3WXY
U<W4XYZ ]]uDCS]T

U<Q4RSTzE;P3QRS]]uEDT]U
zE;P3QRS
U<Q4RST]]uDCS]T
zE;P3QRS
U<Q4RST
U<Q4RST]]uDCS]T
zE;P3QRS
U<Q4RST]]uDCS]T
zE;P3QRS
U<Q4RST]]uF_]U
zE;P3QRS
U<Q4RST]]uD?]S
zE;P3QRSzE;P3QRS
U<Q4RST]]uF_]U
zE;P3QRS
U<Q4RST]]uD?]S
zE;P3QRS
U<Q4RST]]uD?]S
zE;P3QRSzE;P3QRS
U<Q4RST
U<Q4RST
U<Q4RSTc 76 76 76 76s0   ^^<^+^8^^(+^58_c                 d   | j                  ddd      }| j                  t        |dd i             | j                  t        |ddi             | j                  dd d      }| j                  t        |dd i             | j                  ddd      }| j                  t        |dd i             | j                  t        |dd	i             | j                  dd
d      }| j                  t        |dd i             | j                  ddd      }| j                  t        |dd i             | j                  ddd      }| j                  t        |dd i             | j                  ddd      }| j                  t        |dd i             | j                  ddd      }| j                  t        |dd i             | j                  ddd      }	| j                  t        |	dd i             | j                  ddd      }
| j                  t        |
dd i             | j                  ddd      }| j                  t        |dd i             | j                  ddd      }| j	                  t
              5  | j                  t        |ddi             d d d        y # 1 sw Y   y xY w)NrB   nonerd  rY  nonri  norm  smhNor   r9   r   r  xyzr  Oor  r  r  r  random)rT  rX   r   rW   r   r   )r*   r_  r`  ra  r}  property_d_lower_caser  r  r  r  r  r  r  s                r   +test_none_property_value_with_all_operatorsz?TestMatchProperties.test_none_property_value_with_all_operators  sn   ]]uFX]N

UDMBCzE5>BC]]uD8]L

UDMBC]]uD;]O

UDMBC
UENCD]]uD7]K

UDMBC $%tg V(=t}MN]]uA]E

UDMBC]]uA]E

UDMBC]]uEE]J

UDMBC]]uD5]I

UDMBC]]uLK[]\

UDMBC]]uL?][

UDMBC]]uLK[]\
56^J8IJK 766s   ?J&&J/c                     | j                  ddd      }| j                  t              5 }t        |ddi       d d d        | j	                  t        j                        d       y # 1 sw Y   /xY w)NrB   r  
is_unknownrY  r  zUnknown operator is_unknown)rT  r   r   r   rm   str	exception)r*   r_  exception_contexts      r   test_unknown_operatorz)TestMatchProperties.test_unknown_operator  sb    ]]uL<]X
56:K:x'89 7.889;XY 76s   A''A0r   )rK  rL  rM  rT  rb  rg  rj  rw  r~  r  r  r   r  r  r  r"  r   r   rP  rP    s[    :8;*	+G$G<1Bf2\h dU dUL&LPZr   rP  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestRelativeDateParsingc                 d   t        d      5  t        d      J t        d      J t        d      J t        d      J t        d      J t        d      J t        d      J t        d	      J t        d
      J t        d      J t        d      J 	 d d d        y # 1 sw Y   y xY w)N2020-01-01T12:01:20.1340Zrf   1xz1.2y1z1sz123344000.134mbazinga000bello000hello000h1000h)r   r	   r4   s    r   test_invalid_inputz*TestRelativeDateParsing.test_invalid_input"  s    45@EMMM@FNNN@HPPP@FNNN@FNNN@AQRZZZ@KSSS@LTTT@LTTT@HTTT@IUUU 655s   BB&&B/c                 8    t        d      J t        d      J y )N1000000h100000000000000000y)r	   r4   s    r   test_overflowz%TestRelativeDateParsing.test_overflow1  s%    <ZHPPP<=RS[[[r   c                    t        d      5  t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d
      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        d      k(  sJ t        d      t        d      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r    r9         p UTCr  2h
   24h        30h   48hrx   1dr  r   r	   r  r   r  r4   s    r   test_hour_parsingz)TestRelativeDateParsing.test_hour_parsing5  s   45@F(J[J[aB2vbhhuoK    AF(J[J[aB2vbhhuoK    AG8K\K\b"b!RL    AG8K\K\b"aBrxxL    AG8K\K\b"b!RL    A>tDE E E A>tDE E E) 655s   E)E??Fc                    t        d      5  t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        d      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r  r  r  r  r9   r  r  r  r  r  rx   7dr/  14d   30dr   r  r  r4   s    r   test_day_parsingz(TestRelativeDateParsing.test_day_parsingN  s   45@F(J[J[b"b!RK    AF(J[J[b"b!RK    AF(J[J[b"b!RK    AG8K\K\b"b!RL    AG8K\K\b!RBrxxL    AFJwK   # 655   EE&&E/c                    t        d      5  t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        j                  dddddddt        j                  d	      
      k(  sJ t        d      t        d      k7  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r  r  r  r/  r9   r  r  r  r  2wr  4wrz  8wr  r  r  r  r4   s    r   test_week_parsingz)TestRelativeDateParsing.test_week_parsingd  s   45@F(J[J[b"b!RK    AF(J[J[b"b!RK    AF(J[J[b!RBrxxK    AF(J[J[b!RBrxxK    AF(J[J[b!RBrxxK    AFJwK   # 655r  c                    t        d      5  t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d
      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        d      k(  sJ 	 d d d        t        d      5  t        d      t        j                  ddddddt        j                  d      	      k(  sJ t        d
      t        j                  ddddddt        j                  d      	      k(  sJ t        d      t        j                  ddddddt        j                  d      	      k(  sJ t        d      t        j                  ddddddt        j                  d      	      k(  sJ t        d      t        j                  ddddddt        j                  d      	      k(  sJ t        d      t        d      k(  sJ 	 d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Nr  r  r  r  r9   r  r  r  r  2mr  4m	   8mr  r  12mz2020-04-03T00:00:00r  r   r   r      rz  r  r4   s    r   test_month_parsingz*TestRelativeDateParsing.test_month_parsingz  s   45@F(J[J[b!RBrxxK    AF(J[J[b!RBrxxK    AF(J[J[aB2vbhhuoK    AF(J[J[aB2vbhhuoK    AF(J[J[aB2vbhhuoK    A>tDE E E# 6* ./@F(J[J[aAq!BHHUOK    AF(J[J[aAq!BHHUOK    AF(J[J[b!Q1RXXe_K    AF(J[J[aAq!BHHUOK    AF(J[J[aAq!BHHUOK    A>tDE E E# 0/+ 65* 0/s   EK0EKKKc                 6   t        d      5  t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d
      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ t        d      t        j                  dddddddt        j                  d      	      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r  r  r9   r  r  r  r  r  2yi  4yi  8yi  r  r4   s    r   test_year_parsingz)TestRelativeDateParsing.test_year_parsing  s   45@F(J[J[aB2vbhhuoK    AF(J[J[aB2vbhhuoK    AF(J[J[aB2vbhhuoK    AF(J[J[aB2vbhhuoK    655s   C9DDN)
rK  rL  rM  r  r  r  r  r  r  r  r"  r   r   r  r  !  s*    V\E2,,)EVr   r  c                      e Zd Zej                  j                  ed       ej                  d      d               Zej                  j                  ed       ej                  d      d               Zej                  j                  ed       ej                  d      d               Z	 ej                  dd      ej                  j                  ed       ej                  d      d                      Z
y	)
TestCaptureCallsr   r]   c           	      r   dddii|_         t        t        t              }ddddd	d
dddgddgidg|_        | j	                  |j                  ddddd             | j                  |j                  d       |j                  dddd	d	d	di d        |j                          | j	                  |j                  ddddd             | j                  |j                  d       |j                          | j	                  |j                  ddddd             | j                  |j                  d       |j                  dddd	d	d	di d        |j                          | j	                  |j                  dddddd             | j                  |j                  d       |j                          | j                  |j                  dddddddi      d       | j                  |j                  d       | j                  |j                  d       |j                  dddddddddid        y ) Nrj   decide-flagdecide-valuert   r9   r:   rs   FTr<   r=   r?   r   rF   rG   rJ   rP   rv   r{   rQ   $feature_flag_called$feature_flag$feature_flag_responselocally_evaluatedz$feature/complex-flagr<   disable_geoipr   some-distinct-id2zsome-distinct-id345)rR   send_feature_flag_eventsorganizationorg1)rR   r<   )r  r  r  z$feature/decide-flag)
ro   r   r   rU   rW   rV   rm   rn   assert_called_withr}   r   s       r   test_capture_is_calledz'TestCaptureCalls.test_capture_is_called  s    &4m^5T$U!)<MN &%"'3;e+L*M25 
$ 	## 2QV`gFh $ 	

 	1115(("!/*.%))-	  	) 	
 	  " 	## 2QV`gFh $ 	

 	1115  " 	## 3RWahGi $ 	

 	1115(("!/*.%))-	  	) 	
 	  " 	##%-2G"D).	 $ 	
 	1115  " 	###-2G"D&/	 $  	
 	00!41115(("!.*8%*(6	 #F+ 	) 	
r   c           
         ddiddid|_         t        t        t              }dddddd	d
ddgddgidg|_        |j	                  ddddd       | j                  |j                  d       |j                  ddddddddi d        |j                          |j                          |j	                  ddddd       | j                  |j                  d       |j                          |j	                  ddddd       | j                  |j                  d       |j                  ddddddddi d        |j                          y )Nr;   Tr   r   )api_keyru   r9   r:   Fr<   r=   r?   r   rF   rG   rJ   rP   rv   r{   )rB   r   rR   r  )r  r  z$feature_flag_payloadr  z$feature/person-flagr  r   r  )	ro   r   r   rU   rB  rm   rn   r  r}   r   s       r   2test_capture_is_called_in_get_feature_flag_payloadzCTestCaptureCalls.test_capture_is_called_in_get_feature_flag_payload$	  s    +D1$13#7%
!  1DUV &$"'3;e+L*M25 
& 	''+=\akrQs 	( 	

 	1115(("!.*.),%*(,  	) 	
 	  "! 	''+=\akrQs 	( 	
 	1115  " 	''+>]blsRt 	( 	
 	1115(("!.*.),%*(,  	) 	
 	  "r   c           	          dddii|_         t        t        t        d      }dddd	dd
dddgddgidg|_        |j	                  dddddd	       |j                  dddddddi d	       y )Nrj   r  r  T)ru   r  r9   r:   rs   Fr<   r=   r?   r   rF   rG   rJ   rP   rv   r{   )rR   r  r  r  r  )ro   r   r   rU   rV   r  r   s       r   (test_disable_geoip_get_flag_capture_callz9TestCaptureCalls.test_disable_geoip_get_flag_capture_callv	  s     &4m^5T$U!)<M]ab &%"'3;e+L*M25 
$ 	).@	 	  	
 	(("!/*.%))-	  	) 	
r   zposthog.client.MAX_DICT_SIZErF   c           
      <   t        t        t              }ddddddg dd	gid
g|_        t        d      D ]d  }d| }|j	                  d|ddd       |j                  |ddddddi d        | j                  t        |j                        |dz  dz          f y )Nrt   r9   r:   rs   FTr<   rF   rG   rJ     rP   r?   rv   r{   rQ   r  r  r  )	r   r   rU   rangerV   r  rm   r   #distinct_ids_feature_flags_reported)r*   rp   r   r3   ir   s         r   0test_capture_multiple_users_doesnt_out_of_memoryzATestCaptureCalls.test_capture_multiple_users_doesnt_out_of_memory	  s     )<MN &%"'*,25 
$ tA,QC0K##NK^cmtSu#v,,&%3.2)--1	 " -  S!K!KLaRUgXYkZ! r   N)rK  rL  rM  r   r   r   r   r  r  r  r%  r"  r   r   r
  r
    s   	ZZvy)TZZ'(j
 ) *j
X 
ZZvy)TZZ'(N# ) *N#` 
ZZvy)TZZ'('
 ) *'
R TZZ.4	ZZvy)TZZ'($[ ) * 5$[r   r
  c                       e Zd Zed        Zed        Zd Zd Z ej                  d      d        Z
 ej                  d      d        Zy)	TestConsistencyc                     t         j                  j                  t        d      | _        | j                  j                          y r   r   r   s    r   r   zTestConsistency.setUpClass	  r   r   c                 8    | j                   j                          y r   r   r   s    r   r!   zTestConsistency.tearDownClass	  r"   r   c                 ,    t        d||       d| _        yr$   r&   r)   s      r   r-   zTestConsistency.set_fail	  r.   r   c                 R    d| _         t        t        | j                        | _        y r0   r2   r4   s    r   r5   zTestConsistency.setUp	  r6   r   r7   c           	          ddddddg ddgidg| j                   _        g d	}t        d
      D ]K  }d| }| j                   j                  d|      }||   r| j	                  |       ;| j                  |       M y )Nr9   r:   zsimple-flagTr<   -   rG   rJ   (  FTTFTFFTFTFTTFTFFFTTFTFFTFTTFFFTTTTFFFFFFTTFTTFFFTTFFFFTFTFTFTTFTFTFTTFFTFFTFTFFTFFFTTFTTFTTTTTFTTFFTTTTFFTFTTTFFFFFTFFTTTFFTFTFFTFFFFFFFFTTFFTFFTTFFTFTFTTTFFFTFFFFTTFTTFTFTTFTFTTTFTFFTTFTFTTFFTTTTFTTFFTFTFFTTFTFTFFFFFFFTFTTFFTFTFFFTFTFFFTFFTFTTFFFFTFFFFFFFFFFFFFTTFTFTTFTFTFFFTTTTFFFFFTTTFFTTFFFFFTFTTTTFTTTFFTFTFFTTTFTFFFTTFTFTFTTTTTFFTFTFTTTFTFTTFTTTTTFFFFFTFTFFTTFFFTFTTTTFFFFTTFFTTFTTTTFTTTFFTTFFTFFTFFFFFFFFFFTTFFTFFTFTFFTFFFFFFTFFFFFFFFFTTTFFFTFTFFFTFFFFFFFTFFFFFFFFTFTFTTTFFFTTTFTFTTFFFTFFFFTFTFTTFTFFFTFFTTFTFFFFFFTTFFTFFTTTFFFTFFFFTFTFFFTFTTFTFTFTFFTFFTFTFTFTFFTTTTFTFFFFFTFFTFFTTFFFFTTTFFTFFTTTTFFFTFFFTFFTTTTFFTTFTFTFFTTFTTTTFFTFFTTFTFTFFTFFFFTTTFTFFTFFTFFFFTFTFTTFFTFTTTFFFFTTFTFFFTFFFFTTTFFFTTTTFTTFTTTFTFFTFTTTTFTFTFTFFTTFFTFTFFFFTFTFFFTTTFFFTFTTFFFFFTFTFFTTFTTTTFFTFFTFTFTTFFFTFTTFFFTFTFTTFTFFTFFFTTTFFFFFTFFTTTTTFFFFFFFFTTTFFTTFTTFTFTFFFTFFTFFTTTTFFTFTTFFTFFTTFTFFTTTFFFFFTFTFFFFFTTFTTTFFFFTTTTFTTFTFTFTFFFFTTTTFFTFTTFFFFFFTFTFTTFFTTTTFFTFTTFFTTTFTFFTTFFFTFFTFFFTTTTFTFTFTFTFFTFFTFTTr!  distinct_id_)r3   rU   r"  r   rW   rX   r*   rY   resultsr$  
distinctIDrZ   s         r   test_simple_flag_consistencyz,TestConsistency.test_simple_flag_consistency	  s     &$"&bKL	%
!i
V tA's+J!%!<!<]J!Wqz 23  !34 r   c                 <   dddddg ddgdd	d
ddddddddddddddddddgiddg| j                   _        g d}t        d      D ]O  }d| }| j                   j                  d|      }||   r| j	                  |||          ?| j                  |       Q y )Nr9   r:   zmultivariate-flagFT7   rG   r  r*  r,  r  r-  r(  r.  r  r0  r1  fourth-variantzFourth Variantr  fifth-variantzFifth Variantr  rJ   (  r(  r(  r*  FFr(  r*  FFFr*  r0  Fr*  r(  r*  FFr5  r*  Fr0  FFFr*  r*  r*  r*  r*  r*  r0  Fr0  r(  r*  Fr0  FFr*  r(  Fr*  r*  r(  Fr*  FFr*  r*  r*  r(  r*  Fr(  r(  r0  r(  r*  Fr*  r(  r5  Fr*  r*  r*  Fr*  r(  Fr0  FFFFFFr*  r6  Fr(  r*  r(  Fr0  r0  FFFFr0  FFr*  r*  Fr0  r0  Fr0  r(  r0  FFr(  r*  FFr*  FFFFr*  r*  r*  FFFr*  r*  Fr*  r*  FFFFFFFFFr*  r*  r*  r*  r(  r*  r*  r*  r(  Fr(  r*  r(  r*  Fr(  r(  Fr*  FFFr0  r*  FFr*  FFFFr*  FFFFFFFr*  r*  r0  r*  r*  FFr*  FFr6  r(  Fr(  Fr*  r0  r*  r6  r0  FFr5  FFFFr0  FFr0  Fr*  r(  r(  r(  Fr*  r0  r*  r*  FFFFFr*  r*  r*  r(  FFFr(  FFr*  Fr*  FFr*  r*  r*  r*  r0  r*  r0  r*  r*  r(  r0  r0  Fr(  r*  Fr(  r*  Fr*  FFr*  r6  r*  FFFFr*  r*  r(  Fr(  r0  r0  Fr*  r0  FFr*  Fr0  r*  Fr0  r*  r*  Fr*  r(  r(  r*  FFFr(  FFr*  r*  Fr0  Fr*  Fr0  Fr0  r(  r*  FFr*  r0  r*  r(  r6  FFr*  FFFr0  Fr(  r*  FFFFr0  FFr0  FFr*  r0  FFr*  FFr5  r5  r0  r(  r*  r0  r6  Fr*  r6  Fr*  r*  r*  FFFr(  r6  r(  r*  r*  r(  FFr0  Fr(  r6  Fr0  r*  FFr5  FFr(  FFr*  r5  r*  r(  FFFr*  r0  r0  Fr*  r*  r*  Fr*  Fr*  r0  r0  FFr*  FFr(  r(  r*  r*  r*  Fr6  r*  FFFr(  r0  r*  r5  r*  r0  Fr*  r*  Fr0  r*  r*  r0  Fr5  r6  r*  r*  FFFr*  r*  r*  Fr*  r*  r(  r*  Fr*  r(  r*  Fr*  r(  Fr*  r*  Fr*  Fr*  Fr*  FFFr0  r0  r*  FFr(  r0  r*  r*  FFFr(  r*  Fr*  r0  Fr*  FFFr*  r0  r0  FFFFr0  r5  r5  r*  r(  Fr*  Fr(  r*  r0  Fr0  Fr*  r*  r0  FFFr5  r(  r*  FFr*  r5  Fr*  r0  r*  FFr0  Fr*  Fr*  r*  r0  r(  r5  Fr*  FFFFr(  r*  r(  Fr*  Fr*  r*  Fr*  r*  r(  r0  r*  r*  r*  FFFr0  Fr*  r*  r*  r0  r*  r*  r(  r*  r6  r5  r*  r(  Fr5  FFFr5  FFr0  FFFr*  r0  r0  r(  r*  r(  r*  Fr*  FFFFFr*  r*  Fr(  FFr*  Fr(  r*  r*  r*  r0  r(  FFr6  r0  FFr*  FFFr*  r(  r0  r0  FFr*  Fr0  r*  FFFFr5  r*  FFFr0  FFr(  r*  FFr(  r0  r*  r*  Fr*  r*  FFr(  r0  r(  r0  FFr*  FFr*  Fr(  FFFFr*  Fr0  Fr*  FFr(  r0  r(  r5  r*  r*  r*  Fr*  Fr(  FFFFFr*  FFFFFr*  Fr(  FFFFr(  Fr*  Fr0  FFr*  r0  Fr0  FFr(  Fr*  r(  r*  FFFFFr(  FFr*  r0  Fr*  FFFFFr*  r(  FFFr*  r*  r6  FFFr*  Fr0  FFr(  FFFFFr5  r(  r*  r(  Fr(  Fr(  Fr*  Fr*  r*  Fr(  Fr*  Fr6  Fr*  r*  FFFr*  Fr*  r0  FFr*  r*  FFr6  FFr0  Fr0  r*  r*  r0  r0  Fr*  FFFFFr*  FFFFr(  r*  r(  r*  Fr6  r*  FFr5  r*  r*  FFr5  r*  Fr(  r0  r0  r*  r*  FFFr*  r*  r*  Fr0  r0  r0  FFr*  r*  Fr(  FFr(  Fr0  r*  r(  r6  r*  r*  Fr*  r6  FFFr0  r*  r*  r(  r5  r*  r(  r*  FFFr(  r0  FFr*  FFFFFFr*  r*  Fr0  Fr*  Fr0  r0  r*  r*  Fr(  Fr(  r*  FFFr(  Fr0  Fr*  r6  r*  r*  FFr*  FFFr*  r5  r*  r*  r*  r6  FFFr(  FFFr*  r*  FFr*  r*  r(  r*  r*  r*  r*  r*  r0  r*  Fr(  FFr0  r(  r0  Fr*  r0  r(  r*  r0  FFr*  r*  FFFr*  r0  r(  r*  r*  r*  Fr0  r(  r0  FFr0  r*  Fr*  r!  r.  )r3   rU   r"  rV   rm   rX   r/  s         r   "test_multivariate_flag_consistencyz2TestConsistency.test_multivariate_flag_consistency  s     &*"'.0KL"$3_dfg$4>Nfhi$3_dfg$4>Nfgh$3_def%%%
!,i
V tA's+J!%!=!=>QS]!^qz  !3WQZ@  !34 r   N)rK  rL  rM  rN  r   r!   r-   r5   r   r   r2  r7  r"  r   r   r'  r'  	  sx    " "
 ! !
H TZZ$%A5 &A5F  TZZ$%I5 &I5r   r'  )r  unittestr   dateutilr   r   	freezegunr   posthog.clientr   posthog.feature_flagsr   r   r	   posthog.requestr
   posthog.test.test_utilsr   TestCaser   rP  r  r
  r'  r"  r   r   <module>r@     s        ! ! w w $ 5_5(++ _5D5nZ(++ nZbQh// QhS[x(( S[lb 5h'' b 5r   