
    x
h`!                     \   d Z ddlmZmZ ddlZddlmZ dZerddl	Z	 G d de
      Zer& e	j                  de	      Z e	j                  d
      Z G d de
      Z e       Z e
       Z G d de
      Z G d de
      Z G d de
      Z G d de
      Zej,                  Zd Zd Zd Zd Zy)z6
Helpers for representing Stone data types in Python.
    )absolute_importunicode_literalsN)stone_validatorsFc                       e Zd Zy)AnnotationTypeN)__name__
__module____qualname__     j/var/www/html/lionshead-backend/venv/lib/python3.12/site-packages/stone/backends/python_rsrc/stone_base.pyr   r      s    r   r   T)boundUc                   "    e Zd ZdZd Zd Zd Zy)NotSetr   c                     | S Nr   selfs    r   __copy__zNotSet.__copy__   	     r   c                     | S r   r   )r   memos     r   __deepcopy__zNotSet.__deepcopy__    r   r   c                      y)NNOT_SETr   r   s    r   __repr__zNotSet.__repr__%   s    r   N)r   r	   r
   	__slots__r   r   r   r   r   r   r   r      s    I

r   r   c                   *    e Zd ZdZddZd Zd Zd Zy)	Attribute)namedefaultnullableuser_defined	validatorc                 p    dj                  |      | _        || _        || _        d | _        t
        | _        y )N	_{}_value)formatr"   r$   r%   r&   
NO_DEFAULTr#   )r   r"   r$   r%   s       r   __init__zAttribute.__init__1   s3      &&t,	 (!r   c                     || S t        || j                        }|t        ur|S | j                  ry | j                  t
        ur| j                  S t        dj                  t        | j                                    )Nzmissing required field '{}')	getattrr"   r   r$   r#   r*   AttributeErrorr)   public_name)r   instanceownervalues       r   __get__zAttribute.__get__;   sj    K$)),L==<<z)<<:AA+diiBXYZZr   c                    | j                   r|t        || j                  t               y | j                  r| j
                  j                  |       n| j
                  j                  |      }t        || j                  |       y r   )r$   setattrr"   r   r%   r&   validate_type_onlyvalidate)r   r0   r2   s      r   __set__zAttribute.__set__I   s_    ==U]Hdii1NN--e4NN++E2E$))U+r   c                 :    t        || j                  t               y r   )r5   r"   r   )r   r0   s     r   
__delete__zAttribute.__delete__T   s    $))W-r   N)FF)r   r	   r
   r   r+   r3   r8   r:   r   r   r   r!   r!   .   s    LI"[	,.r   r!   c                   6    e Zd ZdZ e       Zd Zd Zd Zd Z	y)Structr   c                    t        |t              sy| j                  |j                  k7  ryt        || j                        st        | |j                        sy| j                  D ]  }t	        | |      t	        ||      k7  s y y)NFT)
isinstancer<   _all_field_names_	__class__r-   )r   other
field_names      r   __eq__zStruct.__eq__b   sr    %(!!U%<%<<%0D%//9Z00JtZ(GE:,FF 1 r   c                     | |k(   S r   r   r   rA   s     r   __ne__zStruct.__ne__s   s    5=  r   c                 
   t        | j                        D cg c]-  }dj                  |t        | dj                  |                  / }}dj                  t	        |       j
                  dj                  |            S c c}w )Nz{}={!r}r(   z{}({})z, )sortedr?   r)   r-   typer   join)r   r"   argss      r   r   zStruct.__repr__w   st    "4#9#9:<:D   wt[5G5G5M'NO: 	 <tDz22DIIdODD<s   2B c                      y r   r   r   annotation_type
field_path	processors       r   _process_custom_annotationsz"Struct._process_custom_annotations|       r   N)
r   r	   r
   r   setr?   rC   rF   r   rQ   r   r   r   r<   r<   Y   s&    
 I"!E
r   r<   c                   l    e Zd ZddgZi Z e       ZddZd Zd Z	d Z
d Zd	 Zed
        Zed        Zy)Union_tag_valueNc                    d }| j                   D cg c]  }dj                  |       }}dg|z   D ]   }|t        | |      v st        | |      |   }" |
J d|z         t        |t        j
                        r	|TJ d       t        |t        j                  t        j                  f      r|j                  |       n|j                  |       || _
        || _        y c c}w )N
_{}_tagmap_tagmapzInvalid tag %r.z,Void type union member must have None value.)_permissioned_tagmapsr)   r-   r>   bvVoidr<   rU   r6   r7   rV   rW   )r   tagr2   r&   map_nametagmap_namestagmap_names          r   r+   zUnion.__init__   s    	FJF`F`aF`(++H5F`a%;5KgdK00#D+6s;	 6 $=&7#&==$i)=P"PP=	BIIrxx#89((/u%	 bs   Cc                     t        |t              xrd t        | |j                        xs t        || j                        xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )r>   rU   r@   rV   rW   rE   s     r   rC   zUnion.__eq__   sc     ue$ Deoo.S*UDNN2SDII#D(,u||(C	
r   c                     | |k(   S r   r   rE   s     r   rF   zUnion.__ne__   s    5=  r   c                 D    t        | j                  | j                  f      S r   )hashrV   rW   r   s    r   __hash__zUnion.__hash__   s    TYY,--r   c                 v    dj                  t        |       j                  | j                  | j                        S )Nz{}({!r}, {!r}))r)   rI   r   rV   rW   r   s    r   r   zUnion.__repr__   s)    &&tDz':':DIIt{{SSr   c                      y r   r   rM   s       r   rQ   z!Union._process_custom_annotations   rR   r   c                     |J d       || j                   v ry|j                  D ]0  }dj                  |      }t        | |      s!|t	        | |      v s0 y y)Ntag value should not be NoneTrY   F)rZ   permissionsr)   hasattrr-   clsr^   caller_permissionsextra_permissionra   s        r   _is_tag_presentzUnion._is_tag_present   sc    > >>#++ 2 > >&--.>?KsK(SGC4M-M !?
 r   c                     |J d       |j                   D ]?  }dj                  |      }t        | |      s!|t        | |      v s0t        | |      |   c S  | j                  |   S )Nrj   rY   )rk   r)   rl   r-   rZ   rm   s        r   _get_val_data_typezUnion._get_val_data_type   so    > >> 2 > >&--.>?KsK(SGC4M-MsK055 !?
 {{3r   r   )r   r	   r
   r   rZ   rS   r[   r+   rC   rF   rf   r   rQ   classmethodrq   rs   r   r   r   rU   rU      sb     "IGE 
!.T      r   rU   c                       e Zd ZdZd Zd Zy)Route)r"   version
deprecatedarg_typeresult_type
error_typeattrsc                     || _         || _        || _        || _        || _        || _        t        |t              s
J d|z         || _        y )NzExpected dict, got %r)	r"   rw   rx   ry   rz   r{   r>   dictr|   )r   r"   rw   rx   ry   rz   r{   r|   s           r   r+   zRoute.__init__   sO    	$ &$%&G(?%(GG&
r   c           	          dj                  | j                  | j                  | j                  | j                  | j
                  | j                  | j                        S )Nz/Route({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}))r)   r"   rw   rx   ry   rz   r{   r|   r   s    r   r   zRoute.__repr__   sH    @GGIILLOOMMOOJJ 	r   N)r   r	   r
   r   r+   r   r   r   r   rv   rv      s    cIr   rv   c                       fd}|S )Nc                 6    ||S |j                  |        |S r   )rQ   )rO   structrN   rP   s     r   gz+make_struct_annotation_processor.<locals>.g   s$    >M**?J	Rr   r   )rN   rP   r   s   `` r    make_struct_annotation_processorr      s    
 Hr   c                       fd}|S )Nc           
          ||S t        |      D cg c]  \  }} dj                  | |      |        c}}S c c}}w Nz{}[{}])	enumerater)   )rO   list_idxxrP   s       r   r   z)make_list_annotation_processor.<locals>.g   sC    =LMVW\M]^M]63	(//*c:A>M]^^^s   #;r   rP   r   s   ` r   make_list_annotation_processorr      s    _ Hr   c                       fd}|S )Nc                     ||S |j                         D ci c](  \  }}| dj                  | t        |            |      * c}}S c c}}w r   )itemsr)   repr)rO   map_kvrP   s       r   r   z.make_map_value_annotation_processor.<locals>.g   sO    <KRVR\R\R^_R^$!Q9X__ZaA1EER^___s   -A
r   r   s   ` r   #make_map_value_annotation_processorr      s    ` Hr   c                 H    dj                  | j                  d      dd       S )N_   )rJ   split)r"   s    r   r/   r/      s     88DJJsOAb)**r   )__doc__
__future__r   r   	functoolsstone.backends.python_rsrcr   r\   _MYPYtypingobjectr   TypeVarr   r   r   r   r*   r!   r<   rU   rv   partialpartially_applyr   r   r   r/   r   r   r   <module>r      s    9  =	V 	 	s.1AsAV " (X
(. (.V%V %ND F D LF 4 ##+r   