o
    6d`!                     @   s   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 de
Zer2e	jded	Ze	d
ZG dd de
Ze Ze
 ZG dd de
ZG dd de
ZG dd de
ZG dd de
ZejZdd Zdd Zdd Zdd ZdS )z6
Helpers for representing Stone data types in Python.
    )absolute_importunicode_literalsN)stone_validatorsFc                   @   s   e Zd ZdS )AnnotationTypeN)__name__
__module____qualname__ r	   r	   |C:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\stone/backends/python_rsrc/stone_base.pyr      s    r   T)boundUc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	NotSetr	   c                 C      | S Nr	   selfr	   r	   r
   __copy__      zNotSet.__copy__c                 C   r   r   r	   )r   memor	   r	   r
   __deepcopy__    r   zNotSet.__deepcopy__c                 C   s   dS )NNOT_SETr	   r   r	   r	   r
   __repr__%   s   zNotSet.__repr__N)r   r   r   	__slots__r   r   r   r	   r	   r	   r
   r      s
    r   c                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )	Attribute)namedefaultnullableuser_defined	validatorFc                 C   s(   d || _|| _|| _d | _t| _d S )N	_{}_value)formatr   r   r   r   
NO_DEFAULTr   )r   r   r   r   r	   r	   r
   __init__1   s
   
zAttribute.__init__c                 C   sR   |d u r| S t || j}|tur|S | jrd S | jtur| jS tdt| j)Nzmissing required field '{}')	getattrr   r   r   r   r"   AttributeErrorr!   public_name)r   instanceownervaluer	   r	   r
   __get__;   s   
zAttribute.__get__c                 C   sR   | j r|d u rt|| jt d S | jr| j| n| j|}t|| j| d S r   )r   setattrr   r   r   r   validate_type_onlyvalidate)r   r'   r)   r	   r	   r
   __set__I   s   zAttribute.__set__c                 C   s   t || jt d S r   )r+   r   r   )r   r'   r	   r	   r
   
__delete__T   s   zAttribute.__delete__N)FF)r   r   r   r   r#   r*   r.   r/   r	   r	   r	   r
   r   .   s    

r   c                   @   s6   e Zd ZdZe Zdd Zdd Zdd Zdd	 Z	d
S )Structr	   c                 C   sd   t |tsdS | j|jkrdS t || jst | |jsdS | jD ]}t| |t||kr/ dS q dS )NFT)
isinstancer0   _all_field_names_	__class__r$   )r   other
field_namer	   r	   r
   __eq__b   s   

zStruct.__eq__c                 C   
   | |k S r   r	   r   r4   r	   r	   r
   __ne__s   s   
zStruct.__ne__c                    s0    fddt  jD }dt jd|S )Nc              
      s$   g | ]}d  |t d |qS )z{}={!r}r    )r!   r$   ).0r   r   r	   r
   
<listcomp>x   s    z#Struct.__repr__.<locals>.<listcomp>z{}({})z, )sortedr2   r!   typer   join)r   argsr	   r   r
   r   w   s   
zStruct.__repr__c                 C      d S r   r	   r   annotation_type
field_path	processorr	   r	   r
   _process_custom_annotations|      z"Struct._process_custom_annotationsN)
r   r   r   r   setr2   r6   r9   r   rE   r	   r	   r	   r
   r0   Y   s    r0   c                   @   sh   e Zd ZddgZi Ze ZdddZdd Zdd	 Z	d
d Z
dd Zdd Zedd Zedd ZdS )Union_tag_valueNc                 C   s   d }dd | j D }dg| D ]}|t| |v rt| || }q|d us*J d| t|tjr9|d u s8J dnt|tjtjfrH|| n|| || _	|| _
d S )Nc                 S   s   g | ]}d  |qS )
_{}_tagmapr!   )r:   Zmap_namer	   r	   r
   r;      s    z"Union.__init__.<locals>.<listcomp>_tagmapzInvalid tag %r.z,Void type union member must have None value.)_permissioned_tagmapsr$   r1   bvZVoidr0   rH   r,   r-   rI   rJ   )r   tagr)   r   Ztagmap_namestagmap_namer	   r	   r
   r#      s   

zUnion.__init__c                 C   s:   t |tot | |jpt || jo| j|jko| j|jkS r   )r1   rH   r3   rI   rJ   r8   r	   r	   r
   r6      s   


zUnion.__eq__c                 C   r7   r   r	   r8   r	   r	   r
   r9      s   
zUnion.__ne__c                 C   s   t | j| jfS r   )hashrI   rJ   r   r	   r	   r
   __hash__   s   zUnion.__hash__c                 C   s   d t| j| j| jS )Nz{}({!r}, {!r}))r!   r=   r   rI   rJ   r   r	   r	   r
   r      s   zUnion.__repr__c                 C   r@   r   r	   rA   r	   r	   r
   rE      rF   z!Union._process_custom_annotationsc                 C   sV   |d usJ d|| j v rdS |jD ]}d|}t| |r(|t| |v r( dS qdS )Ntag value should not be NoneTrK   F)rM   permissionsr!   hasattrr$   clsrP   Zcaller_permissionsZextra_permissionrQ   r	   r	   r
   _is_tag_present   s   


zUnion._is_tag_presentc                 C   sZ   |d usJ d|j D ]}d|}t| |r'|t| |v r't| ||   S q| j| S )NrT   rK   )rU   r!   rV   r$   rM   rW   r	   r	   r
   _get_val_data_type   s   


zUnion._get_val_data_typer   )r   r   r   r   rM   rG   rN   r#   r6   r9   rS   r   rE   classmethodrY   rZ   r	   r	   r	   r
   rH      s    
	
rH   c                   @   s    e Zd ZdZdd Zdd ZdS )Route)r   version
deprecatedarg_typeresult_type
error_typeattrsc                 C   sD   || _ || _|| _|| _|| _|| _t|tsJ d| || _d S )NzExpected dict, got %r)	r   r]   r^   r_   r`   ra   r1   dictrb   )r   r   r]   r^   r_   r`   ra   rb   r	   r	   r
   r#      s   
zRoute.__init__c              	   C   s$   d | j| j| j| j| j| j| jS )Nz/Route({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}))r!   r   r]   r^   r_   r`   ra   rb   r   r	   r	   r
   r      s   zRoute.__repr__N)r   r   r   r   r#   r   r	   r	   r	   r
   r\      s    
r\   c                    s    fdd}|S )Nc                    s   |d u r|S |  |  |S r   )rE   )rC   structrB   rD   r	   r
   g   s   z+make_struct_annotation_processor.<locals>.gr	   )rB   rD   rf   r	   re   r
    make_struct_annotation_processor   s   rg   c                        fdd}|S )Nc                    s$   |d u r|S  fddt |D S )Nc                    s"   g | ]\}}d   ||qS z{}[{}]rL   )r:   idxxrC   rD   r	   r
   r;      s   " z=make_list_annotation_processor.<locals>.g.<locals>.<listcomp>)	enumerate)rC   list_rD   rC   r
   rf         z)make_list_annotation_processor.<locals>.gr	   rD   rf   r	   ro   r
   make_list_annotation_processor      rs   c                    rh   )Nc                    s$   |d u r|S  fdd|  D S )Nc              	      s(   i | ]\}}|d   t||qS ri   )r!   repr)r:   kvrl   r	   r
   
<dictcomp>   s   ( zBmake_map_value_annotation_processor.<locals>.g.<locals>.<dictcomp>)items)rC   Zmap_ro   rp   r
   rf      rq   z.make_map_value_annotation_processor.<locals>.gr	   rr   r	   ro   r
   #make_map_value_annotation_processor   rt   rz   c                 C   s   d | ddd S )N_   )r>   split)r   r	   r	   r
   r&      s   r&   )__doc__
__future__r   r   	functoolsZstone.backends.python_rsrcr   rO   Z_MYPYtypingobjectr   TypeVarr   r   r   r   r"   r   r0   rH   r\   partialZpartially_applyrg   rs   rz   r&   r	   r	   r	   r
   <module>   s.    
+'F