
    \jo6              $          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 dlmZmZ d Zd	ed
edeegef   fdZe j$                  j'                  d e j(                  i d d       e j(                  i d d       e j(                  i d d       e j(                  ddid d       e j(                  i d d       e j(                  dddiid d       e j(                  ddd iid  d!       e j(                  g d"dd#id$d% d&       e j(                  d'd id( d)       e j(                  g d"d#d*d+ d,       e j(                  d d-d.gd/gd0d g d1d2d d3d4gd1d2dd5d6gd1gd7d8 d9       e j(                  d:d;gd d-d.gd/gd0d g d1d2d d3d4gd1d2dd5d6gd1gd<d= d>       e j(                  d?d2d d-d.gd1d2dd3gd1gid@ dA       e j(                  d:d;gd2dd-gd1gdBdC dD       e j(                  d d-gd/gd0d g d1gd7dE dF       e j(                  i dG dH       e j(                  dIddJd2dKdLd:d;gddMgdNgidO dP       e j(                  dIddJd2dKdLd:d;gdQdMgdNgidR dS       e j(                  dIddJd0dKdLd:d;gddMgdNgidT dU       e j(                  dIddJd0dKdLd:d;gdQdMgdNgidV dW       e j(                  dIddJd2dKdLd:d;gddMd2dXdLdYdZgddMgdNgid[ d\       e j(                  dIddJd2dKdLd:d;gddMd2dXdLdYdZgdQdMgdNgid] d^       e j(                  i d_ d`      g      d
edeegef   fda       Zdb Zdc Zdd Zde Zdf Zdg Zy)h    N)Callable)LDClient)Config)InMemoryFeatureStore)FEATURES)TestDataFlagBuilderc            	          t        j                         } t               }t        t	        d| dd|            }|j                  t        d       i k(  sJ y )NSDK_KEYFTupdate_processor_classsend_eventsofflinefeature_storeconfigc                     | S N )xs    T/root/env/lib/python3.12/site-packages/testing/integrations/test_test_data_source.py<lambda>z-test_makes_valid_datasource.<locals>.<lambda>   s         )r   data_sourcer   r   r   allr   tdstoreclients      r   test_makes_valid_datasourcer       sU    				B "EVIZ_ko  BG  H  IF99X{+r111r   descexpected_propsbuilder_actionsc                     dddg g g g dddgdddid}|j                  |       t        j                         } ||j                  d	            }|j	                  d      }||k(  s
J d
| z         y )N	test-flag   T F	variationr   )keyversiononprerequisitestargetscontextTargetsrulessalt
variationsoffVariationfallthroughr)   z2did not get expected flag properties for '%s' test)updater   r   flag_build)r!   r"   r#   all_expected_propsr   flag_builder
built_flags          r   verify_flag_builderr;      s    Um#Q' n-				B"277{7#;<L$$Q'J++h-adh-hh+r   zexpected_props,builder_actionsc                     | S r   r   fs    r   r   r   0   s    ! r   defaults)idc                 "    | j                         S r   )boolean_flagr=   s    r   r   r   5   s    !.." r   z3changing default flag to boolean flag has no effectc                 B    | j                  dd      j                         S )Nab)r1   rB   r=   s    r   r   r   :   s    !,,sC(557 r   z/non-boolean flag can be changed to boolean flagr+   Fc                 $    | j                  d      S NFr+   r=   s    r   r   r   ?   s    !$$u+ r   zflag can be turned offc                 B    | j                  d      j                  d      S )NFTrH   r=   s    r   r   r   D   s    !$$u+..& r   zflag can be turned onr3   r(   r&   c                 $    | j                  d      S rG   variation_for_allr=   s    r   r   r   I   s    !%%e, r   zset false variation for allc                 $    | j                  d      S NTrK   r=   s    r   r   r   N   s    !%%d+ r   zset true variation for all)rD   rE   c   )r1   r3   c                 F    | j                  ddd      j                  d      S NrD   rE   rO   rP   )r1   rL   r=   s    r   r   r   S   s    !,,sC-??B r   zset variation index for allr2   c                 $    | j                  d      S rN   )off_variationr=   s    r   r   r   X   s    !//$' r   zset off variation boolean)r1   r2   c                 F    | j                  ddd      j                  d      S rR   )r1   rT   r=   s    r   r   r   ]   s    !,,sC-;;A> r   zset off variation indexkey1key2)r(   valuesuser)contextKindr(   rX   kind1key3key4key5key6)r-   r.   c                     | j                  ddd      j                  ddd      j                  ddd      j                  ddd      j                  dd	d      j                  dd
d      S )NrY   rV   TrW   r[   r\   r^   Fr]   r_   variation_for_keyr=   s    r   r   r   k   sc    !%%ffd;vvt4w5w6w5w6 r   zset context targets as booleanrD   rE   )r1   r-   r.   c                     | j                  dd      j                  ddd      j                  ddd      j                  ddd      j                  dd	d
      j                  ddd      j                  ddd
      S )NrD   rE   rY   rV   r   rW   r[   r\   r^   r&   r]   r_   r1   rb   r=   s    r   r   r      sn    !,,sC(vvq1vvq1w2w2w2w2 r   z&set context targets as variation indexr.   c                     | j                  ddd      j                  ddd      j                  ddd      j                  ddd      S )Nr[   rV   r   rW   r&   r\   ra   r=   s    r   r   r      sE    !%%gvq9w2w2w2 r   z#replace existing context target key)r1   r.   c                 j    | j                  dd      j                  ddd      j                  ddd      S )NrD   rE   r[   rV   r&   rW      rd   r=   s    r   r   r      s2    !,,sC(w2w2 r   z'ignore target for nonexistent variationc                 &    | j                  dd      S )NrV   T)variation_for_userr=   s    r   r   r      s    !&&vt4 r   z4variation_for_user is shortcut for variation_for_keyc                 D    | j                  ddd      j                         S )Nr[   rV   r   )rb   clear_targetsr=   s    r   r   r      s    !%%gvq9]_ r   zclear targetsr/   rule0attr1in)rZ   	attributeoprX   negate)r(   r@   clausesc                 H    | j                  dddd      j                  d      S Nr[   rm   rD   rE   r&   )if_match_contextthen_returnr=   s    r   r   r      s"    !$$WgsC@LLQO r   ru   Tc                 H    | j                  dddd      j                  d      S rt   )if_not_match_contextrv   r=   s    r   r   r      s#    !(('3DPPQRS r   rx   c                 F    | j                  ddd      j                  d      S Nrm   rD   rE   r&   )if_matchrv   r=   s    r   r   r      s    !**Wc3/;;A> r   z)if_match is shortcut for if_match_contextc                 F    | j                  ddd      j                  d      S rz   )if_not_matchrv   r=   s    r   r   r      s    !..#s3??B r   z1if_not_match is shortcut for if_not_match_contextattr2rO   dc                 l    | j                  dddd      j                  dddd      j                  d      S 	Nr[   rm   rD   rE   r~   rO   r   r&   )ru   and_match_contextrv   r=   s    r   r   r      s3    !$$WgsC@wc:;;q> r   r   c                 l    | j                  dddd      j                  dddd      j                  d      S r   )ru   and_not_match_contextrv   r=   s    r   r   r     s3    !$$WgsC@""7GS#>{{1~ r   r   c                 b    | j                  ddd      j                  d      j                         S )Nr[   rm   rD   r&   )ru   rv   clear_rulesr=   s    r   r   r     s)    !$$Wgs;GGJVVX r   zclear rulesc                     t        d| |       y )Nr   )r;   )r"   r#   s     r   test_flag_configs_parameterizedr   -   s    V ^_=r   c            	      l   t        j                         } | j                  | j                  d             t	               }t        t        d| dd|            }|j                  t        d      t        j                  | j                  d      j                  d            k(  sJ |j                          y )N	some-flagr   FTr   r   r&   )r   r   r5   r6   r   r   r   getr   decoder7   closer   s      r   !test_can_retrieve_flag_from_storer     s    				BIIbggk"# "EVIZ_ko  BG  H  IF99X{+xrww{?S?Z?Z[\?]/^^^^
LLNr   c            	      l   t        j                         } t               }t        t	        d| dd|            }| j                  | j                  d             |j                  t        d      t        j                  | j                  d      j                  d            k(  sJ |j                          y )Nr   FTr   r   r   r&   )r   r   r   r   r   r5   r6   r   r   r   r7   r   r   s      r   ,test_updates_to_flags_are_reflected_in_storer   '  s    				B "EVIZ_ko  BG  H  IFIIbggk"#99X{+xrww{?S?Z?Z[\?]/^^^^
LLNr   c            	      
   t        j                         } t               }t        t	        d| dd|            }|j                          | j                  | j                  d             |j                  t        d      d k(  sJ y )Nr   FTr   r   r   )
r   r   r   r   r   r   r5   r6   r   r   r   s      r   .test_updates_after_client_close_have_no_affectr   4  ss    				B "EVIZ_ko  BG  H  IF
LLNIIbggk"#99X{+t333r   c                  ^   t        j                         } | j                  d      }|j                  d      }| j	                  |       t               }t               }t        d| dd|      }t        |      }t        d| dd|      }t        |      }|j                  t        d      t        j                  |      k(  sJ |j                  t        d      t        j                  |      k(  sJ | j                  d      j                  d      }	| j	                  |	       |	j                  d      }
|j                  t        d      t        j                  |
      k(  sJ |j                  t        d      t        j                  |
      k(  sJ |j                          |j                          y )	Nr6   r&   r   FTr   r   rP   )r   r   r6   r7   r5   r   r   r   r   r   r   variation_for_all_usersr   )r   r9   r:   r   store2r   r   config2client2flag_builder_v2built_flag_v2s              r    test_can_handle_multiple_clientsr   A  sS   				B776?L$$Q'JIIl "E!#FI%[_qvwFV$FY5\`rxyGg&G99Xv&(//**EEEE::h'8??:+FFFFggfo==eDOIIo#**1-M99Xv&(//-*HHHH::h'8??=+IIII
LLNMMOr   c                  p   t        j                         } t               }t        t	        d| d|            }| j                  | j                  d      j                  d      j                  dd      j                  d	d
      j                  d             dddd}|j                  d|d      }|j                  dk(  sJ |j                  dk(  sJ |j                  d   dk(  sJ dddd}|j                  d|d      }|j                  dk(  sJ |j                  dk(  sJ |j                  d   dk(  sJ y )Nr   Fr   r   r   r   r%   r4   	firstNameMikecountrygbTuser1usr)   r   r   default)r   r   kind
RULE_MATCHuser2Joer&   FALLTHROUGH)r   r   r   r   r   r5   r6   fallthrough_variationr{   and_not_matchrv   variation_detailvaluevariation_indexreason)r   r   r   r   eval1r   eval2s          r    test_flag_evaluation_with_clientr   `  s@   				B "EVI/1$)&+- .F
 IIbgg+g&&&u-+v.y$/T"	$ 6dDE##K	#JE;;$  A%%%<<</// 5TCE##K	#JE;;%  A%%%<<=000r   c                     t        j                         } t               }t        t	        d| d|            }| j                  | j                  d      j                  d      j                  dd      j                  d	d
      j                  d             dddd}|j                  |d      }|j                  sJ |j                  d      }|j                  d      xs i }|dk(  sJ |j                  dd       dk(  sJ y )Nr   Fr   r   r%   r4   r   r   r   r   Tr   r   r   )with_reasonsr   r   )r   r   r   r   r   r5   r6   r   r{   r   rv   all_flags_statevalidget_flag_valueget_flag_reasonr   )r   r   r   r   flags_stater   r   s          r    test_flag_can_evaluate_all_flagsr     s    				B "EVI/1$)&+- .F
 IIbgg+g&&&u-+v.y$/T"	$ 6dDE((T(BK&&{3E((5;FD==::fd#|333r   )pytesttypingr   ldclient.clientr   ldclient.configr   ldclient.feature_storer   ldclient.versioned_data_kindr   ldclient.integrations.test_datar   r	   r    strdictr;   markparametrizeparamr   r   r   r   r   r   r   r   r   r   <module>r      s     $ " 7 1 A
2ic i4 i(T_S`bmSmJn i, 9FLL

 FLL
"@
 FLL
7<
 FLL	u#
 FLL
&"
 FLL	a(),(
 FLL	a()+'
 FLL&Q7GHB(
 FLL	'&
 FLL&:>$
 FLL  FF+;< !'Q"E 'aFFCST 'aFFCST			
	7 ,#& FLL*FF+;< !'Q"E 'aFFCST 'aFFCST
	
	3 4'* FLL 'aFFCST 'aF8L	
	3 1 FLL* 'aF8L	
	3 5 FLL  F84 !'Q"E		
 	5A FLL
		 FLL!"!(/gT^acf]gsxy 
	
 	P FLL!"!(/gT^acf]gswx 
	
 	T! FLL!"!(.WD]`be\frwx 
	
 	?6 FLL!"!(.WD]`be\frvw 
	
 	C> FLL!"!(/gT^acf]gsxy(/gT^acf]gsxy 		
	J" FLL!"!(/gT^acf]gsxy(/gT^acf]gswx 		
	N"" FLL
XIi< iT>D >8U`TacnTnKo >UiT>
4>1>4r   