
    \j5                     D    d dl mZmZmZ d dlmZ d dlmZ  G d d      Zy)    )AnyListOptional)Context)AttributeRefc                       e Zd Z eg d      Z eg d      Zdedee   fdZ	de
defdZde
d	edefd
Zdedee   dee   defdZdeee      dededee   dee   defdZy)EventContextFormatter)keycustom	anonymous)r
   	secondaryipcountryemail	firstNamelastNameavatarnamer   r   all_attributes_privateprivate_attributesc                     || _         g | _        |D ]?  }t        j                  |      }|j                  s%| j                  j                  |       A y )N)_all_attributes_private_private_attributesr   	from_pathvalidappend)selfr   r   pars        V/root/env/lib/python3.12/site-packages/ldclient/impl/events/event_context_formatter.py__init__zEventContextFormatter.__init__   sL    '=$#% # 	4A''*Bxx((//3	4    contextreturnc                     |j                   rSddi}t        |j                        D ]5  }|j                  |      }|| j	                  |d      ||j
                  <   7 |S | j	                  |d      S )NkindmultiFT)multiplerangeindividual_context_countget_individual_context_format_context_singler&   )r   r#   outics        r    format_contextz$EventContextFormatter.format_context   sz    7#C7;;< H2215="&"="=a"GCKH J..w==r"   include_kindc                 h   d|j                   i}|r|j                  |d<   |j                  rd|d<   g }| j                  }|j                  D ]S  }|| j                  u r|j                         }t        j                  |      }|j                  sC|j                  |       U |j                  "| j                  d||      s|j                  |d<   |j                  D ]?  }| j                  |||      r|j                  |      }	| j                  d ||	||      ||<   A t        |      dk7  rd|i|d<   |S )	Nr
   r&   Tr   r   r   redactedAttributes_meta)r
   r&   r   r   r   copyr   r   r   r   r   _check_whole_attr_privatecustom_attributesget_redact_json_valuelen)
r   r#   r1   r-   redactedall_privater   r   attrvalues
             r    r,   z,EventContextFormatter._format_context_single   s:   gkk"!,,CK#C..++ 	'Ad666)..0''*Bxx""2&	' <<#D,J,J6S^`h,i!,,CK-- 	^D11$XND) 33D${T\]D		^
 x=A0(;CL
r"   r=   r<   r;   c                     | j                   r|j                  |       y|D ]-  }|j                  dk(  s|d   |k(  s|j                  |        y y)NT   r   F)r   r   depth)r   r=   r<   r;   r   s        r    r6   z/EventContextFormatter._check_whole_attr_private<   sR    ''OOD! 	Aww!|!%	 r"   parent_pathr   r>   c                    t        |t              rt        |      dk(  r|S i }|r|j                         ng }|j	                  |       |j                         D ]  \  }}	d}
|D ]r  }|j                  t        |      dz   k7  r|t        |         |k7  r1d}t        |      D ]  \  }}||   |k7  sd} n |sU|j	                  |j                         d}
 n |
r| j                  |||	||      ||<    |S )Nr   Fr@   T)

isinstancedictr:   r5   r   itemsrA   	enumeratepathr9   )r   rB   r   r>   r<   r;   retcurrent_pathkvwas_redactedr   matchr.   	components                  r    r9   z(EventContextFormatter._redact_json_valueF   s   %&#e*/L-8{'')bD!KKM 	\DAq L  77c,/!33S&'1,$-l$; LAyty( % OOAFF+#'L  00q![RZ[A#	\$ 
r"   N)__name__
__module____qualname__	frozensetIGNORE_ATTRSALLOWED_TOP_LEVEL_ATTRSboolr   strr!   r   rE   r0   r,   r   r6   r   r   r9    r"   r    r	   r	      s    ;<L' )J K4t 4c 4	>g 	>$ 	>g T d :c \@R ^bcf^g lp htCy.A  UX gklxgy %)#Y36r"   r	   N)	typingr   r   r   ldclient.contextr   ldclient.impl.modelr   r	   rX   r"   r    <module>r\      s    & & $ ,X Xr"   