
    E#ib                        S SK r S SKrS SKJrJrJrJr  S SKrS SKJ	r	J
r
Jr   S SKJr  S\R                  " \R                   5      R"                  ;  a  S\4S jrOS\4S jr " S S	\	R(                  5      rg! \ a    \r NYf = f)
    N)ListTupleAnyOptional)fieldsSchemaValidationError)TypeCheckErrorargnamec                 *    [         R                  " XS9$ )N)valueexpected_type	typeguard
check_typer   r   r   s      t/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/marshmallow_dataclass/union_field.py_check_typer      s    ##%MM    c                 ,    [         R                  " XUS9$ )Nr   r   r   s      r   r   r      s    ##g
 	
r   c                      ^  \ rS rSrSrS\\\\R                  4      4U 4S jjr
S\S\SS4U 4S	 jjrS
\S\\   S\4S jrS
\S\\   S\4S jrSrU =r$ )Union   a  A union field, composed other `Field` classes or instances.
This field serializes elements based on their type, with one of its child fields.

Example: ::

    number_or_string = UnionField([
                (float, fields.Float()),
                (str, fields.Str())
            ])

:param union_fields: A list of types and their associated field instance.
:param kwargs: The same keyword arguments that :class:`Field` receives.
union_fieldsc                 2   > [         TU ]  " S0 UD6  Xl        g )N )super__init__r   )selfr   kwargs	__class__s      r   r   Union.__init__*   s    "6"(r   
field_nameschemareturnNc                    > [         TU ]  X5        / nU R                   H>  u  pE[        R                  " U5      nUR                  X5        UR                  XE45        M@     X0l        g )N)r   _bind_to_schemar   copydeepcopyappend)r   r#   r$   new_union_fieldstypfieldr!   s         r   r'   Union._bind_to_schema.   s\    
3++JCMM%(E!!*3##SL1 ,
 -r   r   attrc                     / nUc  U$ U R                    H-  u  pg [        XU=(       d    SS9  UR                  " XU40 UD6s  $    [        SU 35      e! [         a  nUR	                  U5         S nAM`  S nAff = f)N	anonymousr   z?Unable to serialize value with any of the fields in the union: )r   r   
_serializer
   r*   	TypeError)	r   r   r/   objr    errorsr,   r-   es	            r   r2   Union._serialize8   s    =L++JC!%DDWKX''SCFCC , MfXV
 	
 " !a  !s   &A
A9A44A9c                     / nU R                    H.  u  pg UR                  " U40 UD6n[        XU=(       d    SS9  Us  $    [	        U5      e! [        [        4 a  n	UR                  U	5         S n	A	Md  S n	A	ff = f)Nr1   r   )r   deserializer   r
   r	   r*   )
r   r   r/   datar    r5   r,   r-   resultr6   s
             r   _deserializeUnion._deserializeF   s    ++JC!**5;F; T=P[  , f%% #O4 !a  !s   'AA8A33A8)r   )__name__
__module____qualname____firstlineno____doc__r   r   typer   Fieldr   strr   r'   r   r   r2   r<   __static_attributes____classcell__)r!   s   @r   r   r      s    )T%fll0B*C%D )-# -v -$ -
 
8C= 
C 
&# &Xc] &s & &r   r   )r(   inspecttypingr   r   r   r   r   marshmallowr   r   r	   r
   ImportErrorr3   	signaturer   
parametersrE   r   rD   r   r   r   r   <module>rN      s      - -  7 7(
 G%%i&:&:;FFFN3 N

3 
7&FLL 7&#  Ns   A9 9BB