
    ԟfX#                        d dl Z d dlZd dlZ	 d dlmZ 	 d dlmZ 	 d dlmZm	Z	 e	eeZnd Z	  ej                  dd       d	 Zd Zd Zd Zi eeeeeeeeeeej*                  eej,                  eej.                  eej0                  eej2                  eej4                  eej6                  eej8                  eej:                  eej<                  eej>                  eej@                  ee jB                  j4                  ee jB                  j6                  ee jB                  j8                  ee jB                  j>                  ee jB                  j.                  ee jB                  j:                  ee jB                  j<                  eiZ"d Z#d Z$d Z%d Z&y# e$ r 	 d dlmZ n# e$ r dZY nw xY wY w xY w# e$ r
 d dlmZ Y w xY w# e$ r 	 d dlmZm	Z	 n# e$ r dxZ	ZY nw xY wY w xY w# e$ r d
 ZY w xY w)    N)_AnnotatedAlias)get_type_hints)NotRequiredRequiredc                     t        | d      S )NT)include_extras)_get_type_hints)objs    I/var/www/cvtools/html/venv/lib/python3.12/site-packages/msgspec/_utils.pyr   r   !   s    s488    FooT)is_classc                 2    t        j                  | dd      S )NFT)is_argumentr   typing
ForwardRefvalues    r   _forward_refr   2   s      EDIIr   c                 0    t        j                  | d      S )NF)r   r   r   s    r   r   r   -   s      E::r   c                     t        | dd       x}rt        fd|D              }| |   S t        | t        j                        rj                  | |       S | S )N__parameters__c              3   B   K   | ]  }j                  ||        y wN)get).0pmappings     r   	<genexpr>z _apply_params.<locals>.<genexpr>8   s     71W[[A&7s   )getattrtuple
isinstancer   TypeVarr   )r
   r   paramsargss    `  r   _apply_paramsr'   6   sV    .55v57774y	C	({{3$$Jr   c                     i t        | t              r| }n| j                  }fd | i        |j                  fS )Nc                    t        | t              r| }i }nt        | dd       }|d t        t        j
                  fv s|	v ry |j                  }t        fd| j                  D              }t        |      t        |      k(  sJ t        t        ||            x	|<   }t        |t        j
                        r(t        |d|j                        }|D ]  } ||        y y )N
__origin__c              3   6   K   | ]  }t        |        y wr   )r'   )r   ascopes     r   r    zE_get_class_mro_and_typevar_mappings.<locals>.inner.<locals>.<genexpr>P   s     EQq%0Es   __orig_bases__)r#   typer!   objectr   Genericr   r"   __args__lendictzip
issubclass	__bases__)
cr-   cls	new_scoper%   r&   basesbinnerr   s
    `      r   r=   z2_get_class_mro_and_typevar_mappings.<locals>.innerG   s    aCI!\40CtVV^^44w''FE!**EEDv;#d)+++'+C,='>>GCL9c6>>*C!13==AE $a#$ +r   )r#   r/   r*   __mro__)r
   r9   r=   r   s     @@r   #_get_class_mro_and_typevar_mappingsr?   ?   s?    G#tnn$$ 
#rN;;r   c                 6   i }t        |       \  }}|D ]  }|t        j                  t        fv r|j	                  |      }t        t        |            }t        t        j                  j	                  |j                  d      di       }|j                  j	                  di       }|j                         D ]]  \  }	}
|	|v r|
t        d      }
nt        |
t              rt!        |
      }
t        j"                  |
||      }
|t%        |
|      }
|
||	<   _  |S )a  Get the annotations for a class.

    This is similar to ``typing.get_type_hints``, except:

    - We maintain it
    - It leaves extras like ``Annotated``/``ClassVar`` alone
    - It resolves any parametrized generics in the class mro. The returned
      mapping may still include ``TypeVar`` values, but those should be treated
      as their unparametrized variants (i.e. equal to ``Any`` for the common case).

    Note that this function doesn't check that Generic types are being used
    properly - invalid uses of `Generic` may slip through without complaint.

    The assumption here is that the user is making use of a static analysis
    tool like ``mypy``/``pyright`` already, which would catch misuse of these
    APIs.
    N__dict____annotations__)r?   r   r1   r0   r   r4   varsr!   sysmodules
__module__rA   itemsr/   r#   strr   
_eval_typer'   )r
   hintsmrotypevar_mappingsr9   r   
cls_localscls_globalsannnamer   s              r   get_class_annotationsrQ   ]   s   $ E?DC	  6>>6**"&&s+$s)_
ckkoocnndCZQSTll0"599; 
	 KD%u}}T
E3'$U+%%eZEE"%eW5E$K
	  ( Lr   c                    t        | t              r| }n| j                  }t        |       }t	        |d      rt        |j                        }n"|j                  rt        |      }n
t               }i }|j                         D ]o  \  }}t        |dd      }|t        u r$|j                  |       |j                  d   ||<   ?|t        u r$|j                  |       |j                  d   ||<   k|||<   q ||fS )N__required_keys__r*   Fr   )r#   r/   r*   rQ   hasattrsetrS   	__total__rG   r!   r   addr2   r   discard)r
   r9   	raw_hintsrequiredrJ   kvorigins           r   get_typeddict_infor^      s    #tnn%c*Is'(s,,-	y>5 E! 	1L%0XLLOzz!}E!H{"Qzz!}E!HE!H	 (?r   c                    t        | t              r| }n| j                  }t        |       }g }g }g }t	        |d      rddlm}m}m} |j                  j                         D ]  }	|	j                  |ur|	j                  |u rt        d      +|	j                  }
||
   }|	j                  |ur0|j                  |	j                         |j                  |
|df       z|	j                   |ur0|j                  |	j                          |j                  |
|df       |j                  |
|df        |j#                  |       d }t%        |dd       }n ddlm}m} g }|j,                  D ]  }	|	j                  }
||
   }|	j                  }||uryt        ||      rG|j.                  rt1        d	      |j                  |j2                         |j                  |
|df       n:|j                  |       |j                  |
|df       n|j                  |
|df       |	j4                  |j                  |	        |j#                  |       t%        |d
d       }t%        |dd       }|rt7        ||      }|t9        |      t9        |      ||fS )N__dataclass_fields__r   )_FIELD_FIELD_INITVARMISSINGz3dataclasses with `InitVar` fields are not supportedFT__post_init__)NOTHINGFactoryzvSupport for default factories with `takes_self=True` is not implemented. File a GitHub issue if you need this feature!__attrs_pre_init____attrs_post_init__)r#   r/   r*   rQ   rT   dataclassesra   rb   rc   r`   values_field_type	TypeErrorrP   defaultappenddefault_factoryextendr!   attrsre   rf   __attrs_attrs__
takes_selfNotImplementedErrorfactory	validator_wrap_attrs_validatorsr"   )r
   r9   rJ   rZ   optionaldefaultsra   rb   rc   fieldrP   typpre_init	post_initre   rf   fields_with_validatorsrm   s                     r   get_dataclass_infor      se   #tnn!#&EHHHs*+??--446 	4E  .$$6#M  ::D+C}}G+.sE 23&&g5 5 56sD 12sE 23!	4$ 	!C$7	*!#(( 	5E::D+CmmGg%gw/))1, 
 OOGOO4OOT3$56OOG,OOT3$67sE 23*&--e4+	5. 	!3 4d;C!6=	!./EyQIhx(IEEr   c                       fd}|S )Nc           	      x    D ])  }|j                  | |t        | |j                               + 	 |        y y r   )rv   r!   rP   )r
   rz   fieldsr}   s     r   r=   z%_wrap_attrs_validators.<locals>.inner  sA     	BEOOCUZZ(@A	B cN !r    )r   r}   r=   s   `` r   rw   rw     s     Lr   c                      | di |S )z1Used to unpickle Structs with keyword-only fieldsr   r   )r9   kwargss     r   rebuildr     s    ==r   )'collectionsrD   r   typing_extensionsr   	Exceptionr   r	   r   r   r   r   rl   r'   r?   rQ   listr"   rU   	frozensetr4   ListTupleSet	FrozenSetDict
CollectionMutableSequenceSequenceMutableMappingMapping
MutableSetAbstractSetabc_CONCRETE_TYPESr^   r   rw   r   r   r   r   <module>r      s    
 19C&7 /$N9
JFed+J <)^$	5  y	
 	$ KK LL% JJ i KK t D OOT 4 NND  s!" #$ OOOO##TOOdOOOOOO""DOOT18 FGFTo  *   9889
  &&00 &!%%;&&,  ;;;s   F% G G G= %G+F21G2F<9G;F<<GGGGG:G'&G:'	G30G:2G33G:9G:=H	H	