o
    "i                     @   s   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
mZmZmZ d dlmZ d dlmZmZmZ d dlZedZd	Zd
ZG dd deZG dd dZedddee dejfddZdS )    )EnumMeta)	lru_cache)AnyListTypeTypeVar)	Attributehasibfields)override)make_dict_structure_fnmake_dict_unstructure_fnr   NTcorrespondingFieldNametypeOfFieldc                   @   s8   e Zd Zdd ZdedefddZdedefdd	Zd
S )AppStoreServerLibraryEnumMetac                 C   s$   z| | W dS  t y   Y dS w )NFT)
ValueError)cval r   k/var/www/html/premium_crap/venv/lib/python3.10/site-packages/appstoreserverlibrary/models/LibraryUtility.py__contains__   s   
z*AppStoreServerLibraryEnumMeta.__contains__raw_field_namereturnc                    s,   dt d| f fdd}td |t tdidS )N_valuec                    s2   |d ur|j nd }|t|  krt|  | |S N)r   getattrobject__setattr__selfr   r   newValuer   r   r   	value_set   s   zAAppStoreServerLibraryEnumMeta.create_main_attr.<locals>.value_setmain)default
on_setattrmetadata)r   r
   metadata_keymetadata_type_key)r   r   r%   r   r$   r   create_main_attr   s   z.AppStoreServerLibraryEnumMeta.create_main_attr
field_namec                    s0   dt dtf fdd}td d|ttdidS )Nr   r   c                    s4   | v r |nd }|t | krt| | |S r   )r   r   r    r!   r   r-   r   r   r%   "   s   z@AppStoreServerLibraryEnumMeta.create_raw_attr.<locals>.value_setTraw)r'   kw_onlyr(   r)   )r   strr
   r*   r+   )r   r-   r%   r   r.   r   create_raw_attr!   s   z-AppStoreServerLibraryEnumMeta.create_raw_attrN)__name__
__module____qualname__r   r1   r   r,   r2   r   r   r   r   r      s    r   c                   @   s   e Zd Zdd ZdS )AttrsRawValueAwarec                 C   s   t t| }|D ]B}t|jvs|jt dkrq|jt}d|d   |dd   }t| |}t| |}|d ur@t| || q|d urJt| || qd S )Nr/   r      )	r   typer+   r)   getr*   upperr   setattr)r"   attr_fields	attributefieldrawFieldrawValuer   r   r   r   __attrs_post_init__*   s   

z&AttrsRawValueAware.__attrs_post_init__N)r3   r4   r5   rA   r   r   r   r   r6   )   s    r6   )maxsizedestination_classr   c                    s   t   t| }i |D ]/}t|jv r;|jt }|jt dkr;tdd|< d|d   |dd   }t|d|< q t	 fdd  
t	 fd	d  S )
Nr/   T)omitr   r7   )renamec                       t |  fi S r   )r   clr   cattrs_overridesr   r   <lambda>E       z'_get_cattrs_converter.<locals>.<lambda>c                    rF   r   )r   rG   rI   r   r   rK   F   rL   )cattrs	Converterr   r+   r)   r*   r   r:   register_structure_hook_factoryr	   !register_unstructure_hook_factory)rC   
attributesr=   matching_name	raw_fieldr   rI   r   _get_cattrs_converter9   s   

rT   )enumr   	functoolsr   typingr   r   r   r   attrr   r	   r
   r   cattrr   
cattrs.genr   r   rM   r   r*   r+   r   r6   rN   rT   r   r   r   r   <module>   s   