
    >|h(                     F   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 j2                        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 y)    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y)	_UndefinedParameterActionkvsreturnc                      y)zE
        Return the parameters to initialize the class with.
        N clsr   s     Y/var/www/html/test/engine/venv/lib/python3.12/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 cg c]  }|j                   }}|j                         D ci c]  \  }}||vr|| }}}|j                         D ci c]  \  }}||v r|| }}}||fS c c}w c c}}w c c}}w )zL
        Returns a 2 dictionaries: defined and undefined parameters
        )r   nameitems)	r   r   class_fieldsfieldfield_nameskvunknown_given_parametersknown_given_parameterss	            r   _separate_defined_undefined_kvsz9_UndefinedParameterAction._separate_defined_undefined_kvs-   s     c{/;<euzz<<58YY[ $:TQ$%[$8 %&qD $:  $:3699; "441a"#{"2 #$Q$ "4 "4%'??? =$:"4s   A7A<BN)__name__
__module____qualname__staticmethodabcabstractmethodr   r   strr   r   r    r   r$   r	   KnownParametersUnknownParametersr/   r   r   r   r   r      s    4S> d38n    c3h DcN   DcN   H   @$ @/#445@ @r   r   c                   4    e Zd ZdZededeeef   fd       Zy)_RaiseUndefinedParameterszw
    This action raises UndefinedParameterError if it encounters an undefined
    parameter during initialization.
    r   r   c                 r    t         j                  | |      \  }}t        |      dkD  rt        d|       |S )Nr   r   z,Received undefined initialization arguments )r   r/   lenUndefinedParameterError)r   r   knownunknowns       r   r   z*_RaiseUndefinedParameters.handle_from_dictB   sR     &EES F " 	w w<!)>wiHJ Jr   N)	r0   r1   r2   __doc__r3   r   r6   r   r   r   r   r   r:   r:   <   s1    
 4 DcN  r   r:   c                   J    e Zd ZdZededeeef   fd       Zede	fd       Z
y)_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                 :    t         j                  | |      \  }}|S )Nr   )r   r/   )r   r   r.   _s       r   r   z+_IgnoreUndefinedParameters.handle_from_dictW   s/     &EES F " 	" &%r   c                       j                   t        j                        t        j                   j                          fd       }|S )Nc                 T   t         j                  |      \  }}t        
j                        dz
  }|t        |      z
  }|d | } 
j                  | g|i |}|j                          |j                  }|j                  dd        t        j                  |      }	 | fi |	 y )N   self)
_CatchAllUndefinedParametersr/   r<   
parametersbind_partialapply_defaults	argumentspoprB   r   )rH   argskwargsknown_kwargsrD   num_params_takeablenum_args_takeablebound_parametersrM   final_parametersinit_signaturer   original_inits             r   _ignore_initz<_IgnoreUndefinedParameters.create_init.<locals>._ignore_initc   s     -LL! L! #&))#+-.#/ 3c,6G G**+D:~::4  K$  K=I K++-(22IMM&$'*;;CK $3"23r   r#   inspect	signature	functoolswraps)r   rX   rV   rW   s   ` @@r   r$   z&_IgnoreUndefinedParameters.create_init^   sC     **=9		&	4 
'	4& r   N)r0   r1   r2   r@   r3   r   r6   r   r   r   r$   r   r   r   rB   rB   P   sL     &4 &DcN & & H  r   rB   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y)rI   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y)/_CatchAllUndefinedParameters._SentinelNoDefaultN)r0   r1   r2   r   r   r   _SentinelNoDefaultr`      s    r   ra   r   r   c                 2   t         j                  | |      \  }}t        j                  |       }|j                  |v rt        ||j                     t              }t        j                  |      }|||j                     k(  }|rt        |      dk(  r|}nq|rt        |      dkD  r|}n^|r/||j                     }t        |      dkD  r?|j                  |       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   r/   rI   _get_catch_all_fieldr&   
isinstancedict_get_defaultr<   updater=   )
r   r   r>   r?   rd   already_parseddefault_valuereceived_defaultvalue_to_writeerror_messages
             r   r   z-_CatchAllUndefinedParameters.handle_from_dict   s:   2,,#,> 	w6KK L  5('o.B.B(CTJN8EE / F 1M,o6J6J0KK  CLA$5!.!c'lQ&6!(!&';';!<w<!#"))'2#$$3$8$8#9 :$$)/*>*>$?#@!C .m<<$N&4o""#r   rd   c                     t        | j                  t        j                         }t        | j                  t        j                         }t
        j                  }|r| j                  }|S |r| j	                         }|S r"   )rg   defaultdataclasses_MISSING_TYPEdefault_factoryrI   ra   )rd   has_defaulthas_default_factoryrl   s       r   ri   z)_CatchAllUndefinedParameters._get_default   s     %_%<%<%0%>%>@ @ #-_-L-L-8-F-F#H H
 Kg 	 +33M  ! ,;;=Mr   c                     t         j                  | j                        }|j                  |j                        }t        |t              r|j                  |       |S r"   )rI   rf   	__class__rN   r&   rg   rh   rj   )r   r   rd   undefined_parameterss       r   r   z+_CatchAllUndefinedParameters.handle_to_dict   sO     )==cmmL 	"ww';';<*D1JJ$&
r   c                 Z    t         j                  |       }t        | |j                        S )Nrc   )rI   rf   getattrr&   )r   rd   s     r   r    z(_CatchAllUndefinedParameters.handle_dump   s.    6KK L sO0011r   c                       j                   t        j                        t        j                   j                          fd       }|S )Nc                    t         j                  |      \  }}t        j                        dz
  }t         j	                        j
                  |vr|dz  }|t        |      z
  }|d | ||d  }} j                  | g|i |}t        |      D 	
ci c]  \  }	}
d|	 |
 }}	}
|j                  }|j                  |       |j                  |       |j                  dd        t         j                  |      } | fi | y c c}
}	w )NrG   _UNKNOWNrH   )rI   r/   r<   rJ   rf   r&   rK   	enumeraterM   rj   rN   r   )rH   rO   rP   rQ   unknown_kwargsrR   rS   unknown_argsrT   ir,   rM   rU   rV   r   rW   s                r   _catch_all_initzA_CatchAllUndefinedParameters.create_init.<locals>._catch_all_init   sI    -LL! )L. #&))#+-.#/+@@\2#q(# 3c,6G G!%&8'8!94;L;M<O,D:~::4  K$  K=I K &l35$!QhqcNA- 5L 5(22I\*^,MM&$';LLY  $3"235s   DrY   )r   r   rV   rW   s   ` @@r   r$   z(_CatchAllUndefinedParameters.create_init   sC     **=9		&	4 
'	44 r   c                    t        t        j                  | j                           }t	        | |      t        t        fdt        |                   }t        |      }|dk(  rt        d      |dkD  rt        d| d      |d   S )N)globalnsc                 >    | j                      t        t           k(  S r"   )r&   r   r   )ftypess    r   <lambda>zC_CatchAllUndefinedParameters._get_catch_all_field.<locals>.<lambda>   s    U166]h{.CC r   r   z2No field of type dataclasses_json.CatchAll definedrG   z$Multiple catch-all fields supplied: .)
varssysmodulesr1   r   listfilterr   r<   r=   )r   cls_globalscatch_all_fieldsnumber_of_catch_all_fieldsr   s       @r   rf   z1_CatchAllUndefinedParameters._get_catch_all_field   s    3;;s~~67s[9CVC[QS%()9%:"%*)DF F'!+)6-.a12 2 $A&&r   N)r0   r1   r2   r@   ra   r3   r   r6   r   r   r   ri   r   r    r   r$   rf   r   r   r   rI   rI   z   s      !4 !DcN ! !F e   6 c3h DcN   2DcN 2 2
 H  B 'U ' 'r   rI   c                       e Zd ZdZeZeZeZ	y)	Undefinedzv
    Choose the behavior what happens when an undefined parameter is encountered
    during class initialization.
    N)
r0   r1   r2   r@   rI   INCLUDEr:   RAISErB   EXCLUDEr   r   r   r   r   
  s     +G%E(Gr   r   c                       e Zd ZdZy)r=   zM
    Raised when something has gone wrong handling undefined parameters.
    N)r0   r1   r2   r@   r   r   r   r=   r=     s     	r   r=   )!r4   rr   r\   rZ   r   r   r   typingr   r   r   r   r	   r
   r   r   enumr   marshmallow.exceptionsr   dataclasses_json.utilsr   r6   r7   r8   ABCr   r:   CatchAllrB   rI   r   r=   r   r   r   <module>r      s    
    
 % T T T  2 .sCx.cN '@ '@T 9 " K '!: 'TM'#< M'`) )	o 	r   