
    \j              	          d dl Z d dlmZmZmZmZ dededefdZdedede	fdZ
dededee   fdZdededefd	Zdededee   fd
Zdededeeeef      fdZdededefdZdededee   fdZdededee   fdZdededefdZdededefdZdededefdZdededefdZdededefdZdededee   fdZdededefdZ G d d      Zy)    N)AnyListOptionalUniondatanamereturnc           	          | j                  |      }|+t        ||      st        d|d|d|j                  d      |S )N&error in flag/segment data: property "z" should be type z	 but was ")get
isinstance
ValueError	__class__r   r   desired_typevalues       D/root/env/lib/python3.12/site-packages/ldclient/impl/model/entity.pyopt_typer      s@    HHTNEE<!@<2 3 	3L    c                 (    t        | |t              du S )NT)r   boolr   r   s     r   opt_boolr      s    D$%--r   c                 $    t        | |t              S N)r   dictr   s     r   opt_dictr          D$%%r   c                 8    t        t        | |      |t              S r   )validate_list_typeopt_listr   r   s     r   opt_dict_listr#   "       htT2D$??r   c                 $    t        | |t              S r   )r   intr   s     r   opt_intr'   %       D$$$r   c                     | j                  |      }|<t        |t              s,t        |t              st	        d|d|j
                  d      |S )Nr   z" should be a number but was r   )r   r   r&   floatr   r   )r   r   r   s      r   
opt_numberr+   (   sH    HHTNEE3!7
5RW@X5??$ % 	%Lr   c                 ,    t        | |t              xs g S r   )r   listr   s     r   r"   r"   /   s    D$%++r   c                 $    t        | |t              S r   )r   strr   s     r   opt_strr0   2   r(   r   c                 8    t        t        | |      |t              S r   )r!   r"   r/   r   s     r   opt_str_listr2   5       htT2D#>>r   c                 @    t        | ||      }|t        d|z        |S )Nz=error in flag/segment data: required property "%s" is missing)r   r   r   s       r   req_typer5   8   s,    T4.E}X\``aaLr   c                 8    t        t        | |      |t              S r   )r!   req_listr   r   s     r   req_dict_listr8   >   r$   r   c                 $    t        | |t              S r   )r5   r&   r   s     r   req_intr:   A   r(   r   c                 $    t        | |t              S r   )r5   r-   r   s     r   r7   r7   D   r   r   c                 $    t        | |t              S r   )r5   r/   r   s     r   req_strr=   G   r(   r   c                 8    t        t        | |      |t              S r   )r!   r7   r/   r   s     r   req_str_listr?   J   r3   r   itemsc           	      h    | D ],  }t        ||      rt        d|d|d|j                         | S )Nz%error in flag/segment data: property z should be an array of z but an item was )r   r   r   )r@   r   r   items       r   r!   r!   M   s?     6$-|T^^5 6 66 Lr   c                   \    e Zd ZdefdZd ZddefdZdefdZde	fdZ
de	fd	Zdefd
Zy)ModelEntityr   c                     || _         y r   _data)selfr   s     r   __init__zModelEntity.__init__V   s	    
r   c                     | j                   S r   rF   rH   s    r   to_json_dictzModelEntity.to_json_dictY   s    zzr   Nr	   c                 :    | j                   j                  ||      S r   )rG   r   )rH   	attributedefaults      r   r   zModelEntity.get\   s    zz~~i11r   c                      | j                   |   S r   rF   rH   rN   s     r   __getitem__zModelEntity.__getitem___   s    zz)$$r   c                     || j                   v S r   rF   rQ   s     r   __contains__zModelEntity.__contains__b   s    DJJ&&r   c                 j    | j                   |j                   k(  xr | j                  |j                  k(  S r   )r   rG   )rH   others     r   __eq__zModelEntity.__eq__e   s'    ~~0NTZZ5;;5NNr   c                 D    t        j                  | j                  d      S )N),:)
separators)jsondumpsrG   rK   s    r   __repr__zModelEntity.__repr__h   s    zz$**;;r   r   )__name__
__module____qualname__r   rI   rL   r   r   rR   r   rT   rW   r/   r^    r   r   rD   rD   U   sQ    T 2 2% %' 'Ot O<# <r   rD   )r\   typingr   r   r   r   r   r/   r   r   r   r   r-   r#   r&   r'   r*   r+   r"   r0   r2   r5   r8   r:   r7   r=   r?   r!   rD   rb   r   r   <module>rd      s    - -$4 s S .4 .s .t .&4 &s &x~ &@ @C @D @%$ %c %hsm %T  %U
2C)D ,4 ,s ,t ,%$ %c %hsm %?t ?3 ?49 ?4 s S @ @C @D @%$ %c %c %&4 &s &t &%$ %c %c %?t ?3 ?49 ?d #  < <r   