
    +hH                     p    S r SSKJrJrJrJrJrJrJrJ	r	J
r
  S\S\\\\S4   4   S\4S jrS\S\4S jrg	)
zE
Typing utilities: Utilities related to type checking and validation
    )	AnyDictListSetTupleTypeUnionget_args
get_originobjclass_or_tuple.returnc           	        ^  [        U[        5      (       d  U4n/ nU HB  n[        U5      [        L a  UR	                  [        U5      5        M1  UR                  U5        MD     [        U5      n[        U;   a  g[        T 5      nU Vs1 s H*  n[        T [        U5      =(       d    U5      (       d  M(  UiM,     nnU Vs1 s H  n[        U5      iM     nnSU;   a  gU[        [        4;   a  [        U 4S jU 5       5      $ U[        L a  [        U 4S jU 5       5      $ U[        L a  [        U 4S jU 5       5      $ gs  snf s  snf )z
Checks if an object is an instance of any of the provided types. For collections, it checks if every element is of
the correct type as well.
T c              3   P   >^#    U  H  m[        U4S  jT 5       5      v   M     g7f)c              3   <   >#    U  H  n[        UT5      v   M     g 7fN_is_valid_type.0xts     V/home/james-whalen/.local/lib/python3.13/site-packages/diffusers/utils/typing_utils.py	<genexpr>+_is_valid_type.<locals>.<genexpr>.<genexpr>4   s     9S~a++Ss   N)allr   r   r   s    @r   r   !_is_valid_type.<locals>.<genexpr>4   s!     WCVa39S999CVs   "&c              3      >^#    U  H  m[        T5      S :H  =(       a'    TS   [        L =(       a    [        U4S jT 5       5      =(       d:    [        T5      [        T5      :H  =(       a    [        S [        TT5       5       5      v   M     g7f)   c              3   B   >#    U  H  n[        UTS    5      v   M     g7f)r   Nr   r   s     r   r   r   9   s"     6\X[ST~a17N7NX[s   c              3   <   #    U  H  u  p[        X5      v   M     g 7fr   r   )r   r   tts      r   r   r   <   s     'W;%!q(=(=;s   N)lenEllipsisr   zipr   s    @r   r   r   7   sx      
 )	 Vq[\QrUh.\36\X[6\3\ Y XQWC'W3sTU;'W$WY )s   B
Bc              3   v   >^^#    U  H,  u  mm[        UU4S  jTR                  5        5       5      v   M.     g7f)c              3   f   >#    U  H&  u  p[        UT5      =(       a    [        UT5      v   M(     g 7fr   r   )r   kvktvts      r   r   r   B   s)     XKDAq"%?.B*??Ks   .1N)r   items)r   r-   r.   r   s    @@r   r   r   A   s0      
-B XCIIKXXX-s   49F)
isinstancetupler   r	   extendr
   appendr   typelistsetanydict)r   r   unpacked_class_or_tupler   obj_typeelem_class_or_tuples   `     r   r   r      s>   
 ne,,(* !a=E!#**8A;7#**1-	 
 23N
nCyH!/WA:c:a=CUTU3VaNW 1??18A;?	  	dC[	 WCVWWW	U	 
 )
 
 	
 
T	 
-
 
 	
 9 X @s   	'E 4E  Ec           	      6   [        U 5      nU[        [        4;   aE  U[        L a  [        O[        n[
        [        U  Vs1 s H  n[        U5      iM     sn5         nX$   $ U[        L a  [        [        S U  5       5         $ U[        L a~  [
        [        U R                  5        Vs1 s H  n[        U5      iM     sn5         n[
        [        U R                  5        Vs1 s H  n[        U5      iM     sn5         n[        Xg4   $ U$ s  snf s  snf s  snf )zM
Gets a detailed type for an object, including nested types for collections.
c              3   8   #    U  H  n[        U5      v   M     g 7fr   )_get_detailed_type)r   r   s     r   r   %_get_detailed_type.<locals>.<genexpr>U   s     >#Q-a00#s   )r4   r5   r6   r   r   r	   r1   r>   r   r8   keysvaluesr   )r   r:   obj_origin_typer   
elems_typer+   	keys_typevalues_types           r   r>   r>   J   s     CyHD#;"*d"2$5!EA"4Q"7!EFG
**	U	U>#>>??	T	%
 K
1!3A!6
 KLM	E#**,"O,Q#5a#8,"OPQI*++ "F
 !L"Os   D
(D
"D
N)__doc__typingr   r   r   r   r   r   r	   r
   r   boolr   r>   r       r   <module>rJ      sW    R Q Q2 2U4tSy9I3I-J 2t 2jC D rI   