
    Ng(                     t   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ e
eef         Ze
eef         Z G d de j                  Z G d	 d
e          Zee         Z G d de          Z G d de          Z G d de          Z G d de          Z dS )    N)Fieldfields)AnyCallableDictOptionalTupleUnionTypeget_type_hints)Enum)ValidationError)CatchAllVarc                       e Zd Zeej        deeef         deeef         fd                        Z	edeeef         deeef         fd            Z
edeeef         fd            Zedefd            Zededeeef         fd            ZdS )	_UndefinedParameterActionkvsreturnc                     dS )zE
        Return the parameters to initialize the class with.
        N clsr   s     V/var/www/html/ai-engine/env/lib/python3.11/site-packages/dataclasses_json/undefined.pyhandle_from_dictz*_UndefinedParameterAction.handle_from_dict   s	     	    c                     |S )zO
        Return the parameters that will be written to the output dict
        r   )objr   s     r   handle_to_dictz(_UndefinedParameterAction.handle_to_dict   s	    
 
r   c                     i S )zN
        Return the parameters that will be added to the schema dump.
        r   r   s    r   handle_dumpz%_UndefinedParameterAction.handle_dump"   s	    
 	r   c                     | j         S N)__init__r   s    r   create_initz%_UndefinedParameterAction.create_init)   s
    |r   c                     t          |           }d |D             fd|                                D             }fd|                                D             }||fS )zL
        Returns a 2 dictionaries: defined and undefined parameters
        c                     g | ]	}|j         
S r   )name).0fields     r   
<listcomp>zM_UndefinedParameterAction._separate_defined_undefined_kvs.<locals>.<listcomp>4   s    <<<euz<<<r   c                 $    i | ]\  }}|v	||S r   r   r(   kvfield_namess      r   
<dictcomp>zM_UndefinedParameterAction._separate_defined_undefined_kvs.<locals>.<dictcomp>5   s3     $: $: $:TQ$%[$8$8 %&q$8$8$8r   c                 $    i | ]\  }}|v 	||S r   r   r,   s      r   r0   zM_UndefinedParameterAction._separate_defined_undefined_kvs.<locals>.<dictcomp>7   s3     "4 "4 "441a"#{"2"2 #$Q"2"2"2r   )r   items)r   r   class_fieldsunknown_given_parametersknown_given_parametersr/   s        @r   _separate_defined_undefined_kvsz9_UndefinedParameterAction._separate_defined_undefined_kvs-   s     c{{<<|<<<$: $: $: $:SYY[[ $: $: $: "4 "4 "4 "4399;; "4 "4 "4%'???r   N)__name__
__module____qualname__staticmethodabcabstractmethodr   r   strr   r   r    r   r$   r	   KnownParametersUnknownParametersr6   r   r   r   r   r      s4       4S> d38n     \ c3h DcN    \ DcN    \ H    \ @$ @/#445@ @ @ \@ @ @r   r   c                   B    e Zd ZdZededeeef         fd            ZdS )_RaiseUndefinedParameterszw
    This action raises UndefinedParameterError if it encounters an undefined
    parameter during initialization.
    r   r   c                     t                               | |          \  }}t          |          dk    rt          d|           |S )Nr   r   z,Received undefined initialization arguments )r   r6   lenUndefinedParameterError)r   r   knownunknowns       r   r   z*_RaiseUndefinedParameters.handle_from_dictB   sc     &EES F " " 	w w<<!)HwHHJ J Jr   N)	r7   r8   r9   __doc__r:   r   r=   r   r   r   r   r   rA   rA   <   sT         
 4 DcN    \  r   rA   c                   ^    e Zd ZdZededeeef         fd            Zede	fd            Z
dS )_IgnoreUndefinedParametersz
    This action does nothing when it encounters undefined parameters.
    The undefined parameters can not be retrieved after the class has been
    created.
    r   r   c                 D    t                               | |          \  }}|S )Nr   )r   r6   )r   r   r5   _s       r   r   z+_IgnoreUndefinedParameters.handle_from_dictW   s4     &EES F " " 	" &%r   c                       j         t          j                  t          j         j                    fd            }|S )Nc                 v   t                               |          \  }}t          
j                  dz
  }|t          |          z
  }|d |         } 
j        | g|R i |}|                                 |j        }|                    dd            t          	                    |          }	 | fi |	 d S )N   self)
_CatchAllUndefinedParametersr6   rC   
parametersbind_partialapply_defaults	argumentspoprI   r   )rO   argskwargsknown_kwargsrK   num_params_takeablenum_args_takeablebound_parametersrT   final_parametersinit_signaturer   original_inits             r   _ignore_initz<_IgnoreUndefinedParameters.create_init.<locals>._ignore_initc   s    -LL! ! L! #&)#+ #+-.#/ 3c,6G6G G***+D:~:4  K$  K  K  K=I K  K++---(2IMM&$'''*;;CKK M$33"233333r   r#   inspect	signature	functoolswraps)r   r_   r]   r^   s   ` @@r   r$   z&_IgnoreUndefinedParameters.create_init^   s^     *=99		&	&	4 	4 	4 	4 	4 	4 
'	&	4& r   N)r7   r8   r9   rG   r:   r   r=   r   r   r   r$   r   r   r   rI   rI   P   s{          &4 &DcN & & & \& H    \  r   rI   c                       e Zd ZdZ G d d          Zededeeef         fd            Z	ede
defd            Zedeeef         deeef         fd	            Zedeeef         fd
            Zedefd            Zede
fd            ZdS )rP   a  
    This class allows to add a field of type utils.CatchAll which acts as a
    dictionary into which all
    undefined parameters will be written.
    These parameters are not affected by LetterCase.
    If no undefined parameters are given, this dictionary will be empty.
    c                       e Zd ZdS )/_CatchAllUndefinedParameters._SentinelNoDefaultN)r7   r8   r9   r   r   r   _SentinelNoDefaultrg      s        r   rh   r   r   c                 \   t                               | |          \  }}t                              |           }|j        |v rt          ||j                 t                    }t                              |          }|||j                 k    }|rt          |          dk    r|}nz|rt          |          dk    r|}nb|r6||j                 }t          |          dk    r|	                    |           n*d|j         d||j                  d}	t          |	          |}|||j        <   |S )Nr   r   )catch_all_fieldr   z9Received input field with same name as catch-all field: 'z': '')r   r6   rP   _get_catch_all_fieldr'   
isinstancedict_get_defaultrC   updaterD   )
r   r   rE   rF   rk   already_parseddefault_valuereceived_defaultvalue_to_writeerror_messages
             r   r   z-_CatchAllUndefinedParameters.handle_from_dict   sr   2,,#,>> 	w6KK L   5(('o.B(CTJJN8EE / F 1 1M,o6J0KK   =CLLA$5$5!.! =c'llQ&6&6!( 
=!&';!<w<<!##"))'222!C$3$8!C !C %*/*>$?!C !C !C .m<<<$N&4o"#r   rk   c                     t          | j        t          j                   }t          | j        t          j                   }t
          j        }|r| j        }n|r|                                 }|S r"   )rn   defaultdataclasses_MISSING_TYPEdefault_factoryrP   rh   )rk   has_defaulthas_default_factoryrs   s       r   rp   z)_CatchAllUndefinedParameters._get_default   s     %_%<%0%>@ @ @ #-_-L-8-F#H #H H
 Kg 	  	>+3MM  	> ,;;==Mr   c                     t                               | j                  }|                    |j                  }t          |t                    r|                    |           |S r"   )rP   rm   	__class__rU   r'   rn   ro   rq   )r   r   rk   undefined_parameterss       r   r   z+_CatchAllUndefinedParameters.handle_to_dict   sb     )==cmLL 	"ww';<<*D11 	&JJ$& & &
r   c                 b    t                               |           }t          | |j                  S )Nrj   )rP   rm   getattrr'   )r   rk   s     r   r    z(_CatchAllUndefinedParameters.handle_dump   s3    6KK L  sO0111r   c                       j         t          j                  t          j         j                    fd            }|S )Nc                 4   t                               |          \  }}t          j                  dz
  }t                                         j        |vr|dz  }|t          |          z
  }|d |         ||d          }} j        | g|R i |}d t          |          D             }|j        }	|		                    |           |		                    |           |	
                    dd            t                               |	          }
 | fi |
 d S )NrN   c                      i | ]\  }}d | |S )_UNKNOWNr   )r(   ir.   s      r   r0   zU_CatchAllUndefinedParameters.create_init.<locals>._catch_all_init.<locals>.<dictcomp>   s0     5 5 5$!QNqNNA 5 5 5r   rO   )rP   r6   rC   rQ   rm   r'   rR   	enumeraterT   rq   rU   r   )rO   rV   rW   rX   unknown_kwargsrY   rZ   unknown_argsr[   rT   r\   r]   r   r^   s              r   _catch_all_initzA_CatchAllUndefinedParameters.create_init.<locals>._catch_all_init   s    -LL! ! )L. #&)#+ #+-.#/+@@ \2 2#q(# 3c,6G6G G!%&8'8&8!94;L;M;M<O,D:~:4  K$  K  K  K=I K  K5 5%l335 5 5L(2I\***^,,,MM&$''';LLY     M$33"233333r   r`   )r   r   r]   r^   s   ` @@r   r$   z(_CatchAllUndefinedParameters.create_init   s^     *=99		&	&	4 	4 	4 	4 	4 	4 
'	&	44 r   c                 R   t          t          j        | j                           }t	          | |          t          t          fdt          |                               }t          |          }|dk    rt          d          |dk    rt          d| d          |d         S )N)globalnsc                 F    | j                  t          t                   k    S r"   )r'   r   r   )ftypess    r   <lambda>zC_CatchAllUndefinedParameters._get_catch_all_field.<locals>.<lambda>   s    U16]h{.CC r   r   z2No field of type dataclasses_json.CatchAll definedrN   z$Multiple catch-all fields supplied: .)
varssysmodulesr8   r   listfilterr   rC   rD   )r   cls_globalscatch_all_fieldsnumber_of_catch_all_fieldsr   s       @r   rm   z1_CatchAllUndefinedParameters._get_catch_all_field   s    3;s~677s[999CCCCVC[[QQS S%()9%:%:"%**)DF F F'!++)1-1 1 12 2 2 $A&&r   N)r7   r8   r9   rG   rh   r:   r   r=   r   r   r   rp   r   r    r   r$   rm   r   r   r   rP   rP   z   sg                !4 !DcN ! ! ! \!F e     \6 c3h DcN    \ 2DcN 2 2 2 \2
 H    \B 'U ' ' ' \' ' 'r   rP   c                       e Zd ZdZeZeZeZ	dS )	Undefinedzv
    Choose the behavior what happens when an undefined parameter is encountered
    during class initialization.
    N)
r7   r8   r9   rG   rP   INCLUDErA   RAISErI   EXCLUDEr   r   r   r   r   
  s)          +G%E(GGGr   r   c                       e Zd ZdZdS )rD   zM
    Raised when something has gone wrong handling undefined parameters.
    N)r7   r8   r9   rG   r   r   r   rD   rD     s          	Dr   rD   )!r;   ry   rc   ra   r   r   r   typingr   r   r   r   r	   r
   r   r   enumr   marshmallow.exceptionsr   dataclasses_json.utilsr   r=   r>   r?   ABCr   rA   CatchAllrI   rP   r   rD   r   r   r   <module>r      s   



          



 % % % % % % % % T T T T T T T T T T T T T T T T T T T T       2 2 2 2 2 2 . . . . . .sCx.cN '@ '@ '@ '@ '@ '@ '@ '@T     9   " K ' ' ' ' '!: ' ' 'TM' M' M' M' M'#< M' M' M'`) ) ) ) ) ) ) )	 	 	 	 	o 	 	 	 	 	r   