
    \j                        d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	 d dl
 d dlmZmZmZmZ  ej                   d      Zd Z edd	       Z G d
 d      Z e       j+                         Zd ZdedededefdZdeeef   defdZy)    )Context)BigSegmentsStatus)	Evaluator_make_big_segment_ref)EventFactory)*)AnyOptionalTupleUnionzuser-keyFc                      t         S N)fake_timestamp     E/root/env/lib/python3.12/site-packages/testing/impl/evaluator_util.py<lambda>r      s    N r   c                       e Zd Zd ZdefdZdedd fdZddZde	dd fdZ
dd	Zd
ede	dedd fdZd
edd fdZdedd fdZd
edee   fdZd
edee	   fdZd
edeee   ef   fdZy)EvaluatorBuilderc                 X    i | _         i | _        i | _        t        j                  | _        y r   )_EvaluatorBuilder__flags_EvaluatorBuilder__segments_EvaluatorBuilder__big_segmentsr   HEALTHY&_EvaluatorBuilder__big_segments_statusselfs    r   __init__zEvaluatorBuilder.__init__   s&     %6%>%>"r   returnc                 X    t        | j                  | j                  | j                        S r   )r   	_get_flag_get_segment_get_big_segments_membershipr   s    r   buildzEvaluatorBuilder.build   s(    NN--
 	
r   flagc                 8    || j                   |j                  <   | S r   )r   key)r   r%   s     r   	with_flagzEvaluatorBuilder.with_flag   s    !%TXXr   c                 $    d | j                   |<   | S r   )r   r   r'   s     r   with_unknown_flagz"EvaluatorBuilder.with_unknown_flag!   s     Sr   segmentc                 8    || j                   |j                  <   | S r   )r   r'   )r   r,   s     r   with_segmentzEvaluatorBuilder.with_segment%   s    '.$r   c                 $    d | j                   |<   | S r   )r   r*   s     r   with_unknown_segmentz%EvaluatorBuilder.with_unknown_segment)   s    #r   r'   includedc                 v    || j                   vri | j                   |<   || j                   |   t        |      <   | S r   )r   r   )r   r'   r,   r1   s       r   with_big_segment_for_keyz)EvaluatorBuilder.with_big_segment_for_key-   s@    d)))')D$CKC !6w!?@r   c                 $    i | j                   |<   | S r   )r   r*   s     r   with_no_big_segments_for_keyz-EvaluatorBuilder.with_no_big_segments_for_key3   s    #%C r   statusc                     || _         | S r   )r   )r   r6   s     r   with_big_segments_statusz)EvaluatorBuilder.with_big_segments_status7   s    %+"r   c                 X    || j                   vrt        d|z        | j                   |   S )Nz*test made unexpected request for flag '%s')r   	Exceptionr*   s     r   r!   zEvaluatorBuilder._get_flag;   s.    dll"H3NOO||C  r   c                 X    || j                   vrt        d|z        | j                   |   S )Nz-test made unexpected request for segment '%s')r   r:   r*   s     r   r"   zEvaluatorBuilder._get_segment@   s.    doo%KcQRRs##r   c                 p    || j                   vrt        d|z        | j                   |   | j                  fS )NzBtest made unexpected request for big segments for context key '%s')r   r:   r   r*   s     r   r#   z-EvaluatorBuilder._get_big_segments_membershipE   s>    d)))`cffgg##C($*D*DEEr   N)r   r   )__name__
__module____qualname__r   r   r$   FeatureFlagr(   r+   Segmentr.   r0   strboolr3   r5   r8   r
   r!   r"   r   dictr#   r   r   r   r   r      s    ?
y 
k .@ G 0B C ' T Vh  8J s 7I !S !Xk%: !
$ $(9 $
F Fhtnc>Q8R Fr   r   c                 H    | j                   |k(  sJ | j                  |k(  sJ y r   )detailevents)resultexpected_detailexpected_eventss      r   assert_eval_resultrK   M   s&    ==O+++==O+++r   	evaluatorr%   contextexpect_valuec                 h    | j                  ||t              }|j                  j                  |k(  sJ y r   )evaluateevent_factoryrF   value)rL   r%   rM   rN   rH   s        r   assert_matchrS   R   s.    g}=F==,...r   userr   c                 R    t        | t              r| j                  n| d   }dd|gdS )Nr'   in)	attributeopvalues)
isinstancer   r'   )rT   r'   s     r   make_clause_matching_userr[   W   s)     w/$((T%[Ctw@@r   N)ldclientr   ldclient.evaluationr   ldclient.impl.evaluatorr   r   ldclient.impl.events.typesr   ldclient.impl.modeltesting.builderstypingr	   r
   r   r   create
basic_userr   rQ   r   r$   basic_evaluatorrK   r@   rS   rD   r[   r   r   r   <module>rf      s     1 D 3 !  . .W^^J'
U$:;9F 9Fv #$**,,
/I /[ /7 /Z] /
AE'4-$8 AT Ar   