
     i
                        U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZ ddlmZmZmZ eeef         ed<   e j        dk     ree
eeee	eeeeeeiZni Zdeeef         d	ed
efdZd	efdZd	efdZd	efdZd	efdZd	efdZdS )    N)deque)
AnyDictGenericTypeget_type_hintsTupleListSet	FrozenSetDeque   )get_self_type_hints
is_genericis_generic_concreteCOMPAT_ORIGINS)   	   argstype_returnc                 "   |                      ||          }t          |          rig }|j        D ]%}|                    t	          | |                     &t
                               |j        |j                  }|t          |                   }|S N)getr   __args__appendfill_type_argsr   
__origin__tuple)r   r   	type_argsargorigins        b/root/.openclaw/workspace/.venvs/songid/lib/python3.11/site-packages/dataclass_factory/generics.pyr   r      s    HHUE""E5!! )	> 	8 	8C^D#667777##E$4e6FGGuY''(L    c                     t          |           rt          |           S t          |           rt          |           S t	          |           S r   )r   resolve_concrete_hintsr   resolve_generic_hintsr   )r   s    r#   resolve_hintsr(   $   sL    5!! -%e,,,% ,$U+++%   r$   c                    | t           u ri S t          | d          si S i }t          | j                  D ]&}t	          |          }|                    |           't          |           }|                    |           |S )N__orig_bases__)r   hasattrreversedr*   r(   updater   )r   resbase
base_hints
self_hintss        r#   r'   r'   ,   s    	5*++ 	
C-..  "4((


:$U++JJJzJr$   c                     t          | j                  }|si S t          t          | j        j        | j                            fd|                                D             }|S )Nc                 8    i | ]\  }}|t          |          S  r   .0namer   r   s      r#   
<dictcomp>z*resolve_concrete_hints.<locals>.<dictcomp>?   s9       D% 	nT5))  r$   )r'   r   dictzip__parameters__r   items)r   hintsr.   r   s      @r#   r&   r&   :   sv    !%"233E 	E$3U^DDEED    ;;==  C Jr$   c                 (   t          |           st          | j                  S t          | j        j                  }t	          t          | j        j        j        | j        j                            fd|	                                D             S )Nc                 8    i | ]\  }}|t          |          S r4   r5   r6   s      r#   r9   z&resolve_init_hints.<locals>.<dictcomp>K   s9       D% 	nT5))  r$   )
r   r   __init__r   r:   r;   __self__r<   r   r=   )r   r>   r   s     @r#   resolve_init_hintsrC   F   s    u%% .en---5+455EEN-<en>UVVWWD    ;;==   r$   c                    t          |           s| S | j        }t          |          s| S t          t          |j        | j                            t          fd|j        D                       }t          |j        |                   S )z
    This function normalizes generics created via aliases.
    E.g. `List[List[T]][int]` should replaced via `List[List[int]]`

    On each call it normalizes one level, so it is recurrent
    c              3   8   K   | ]}t          |          V  d S r   r5   )r7   ar   s     r#   	<genexpr>z$fix_generic_alias.<locals>.<genexpr>^   s-      IIAtQ//IIIIIIr$   )r   r   r:   r;   r<   r   r   fix_generic_alias)r   r"   origin_argsr   s      @r#   rH   rH   Q   s     u%% Fv&& F)5>::;;DIIIIIIIIIKV.{;<<<r$   ) syscollectionsr   typingr   r   r   r   r   r	   r
   r   r   r   type_detectionr   r   r   __annotations__version_infolistr:   r   set	frozensetr   r   r(   r'   r&   rC   rH   r4   r$   r#   <module>rS      s   




                                      
 S#X   fdduS9uNN NdDj) $ 4    ! ! ! ! !    	$ 	 	 	 	c    =S = = = = = =r$   