
     i              	       .   d dl Z d dlmZmZmZm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 ddlmZmZ ddlmZ ddlmZmZmZmZmZ dd	lmZ dd
lm Z   ed          Z!e G d d                      Z"e G d de"                      Z#dede	fdZ$de j%        de	fdZ&dee"         fdZ'dee"         fdZ(dee"         fdZ)dee"         fdZ*dede+fdZ,e
e	gee"         f         Z-de-dee!         dee!         dee#         fdZ.dee+eeef         f         d ee"         fd!Z/dee!         dee!         dee#         fd"Z0dee!         dee!         dee#         fd#Z1dee!         dee!         dee#         fd$Z2dee!         dee!         dee#         fd%Z3dS )&    N)	dataclassFieldfieldsMISSING)partial)	AnyCallablecastDictListSequenceTypeTypeVarUnion   )resolve_hintsresolve_init_hints)convert_name)CleanKey	CleanPathKeyPathreplace_ellipsis)Schema)is_generic_concreteTc                   .    e Zd ZU eed<   eed<   eed<   dS )BaseFieldInfo
field_nametypedefaultN)__name__
__module____qualname__str__annotations__r        `/root/.openclaw/workspace/.venvs/songid/lib/python3.11/site-packages/dataclass_factory/fields.pyr   r      s+         OOO
IIILLLLLr(   r   c                   *    e Zd ZU eeef         ed<   dS )	FieldInfo	data_nameN)r"   r#   r$   r   r   r   r&   r'   r(   r)   r+   r+      s(         Xy())))))r(   r+   fieldreturnc                 X    | j         t          k    r|                                  S | j        S N)default_factoryr   r!   )r-   s    r)   get_dataclass_defaultr2      s*    ''$$&&&=r(   	parameterc                 N    | j         t          j        j        u rt          S | j         S r0   )r!   inspect	Parameteremptyr   )r3   s    r)   get_func_defaultr8   "   s$    G-333r(   c                     t          |           rt          | j                  }nt          |           }t          |           fd|D             S )Nc           	      |    g | ]8}|j         	t          |j        |j                 t          |                     9S )r   r    r!   )initr   namer2   .0fhintss     r)   
<listcomp>z(all_dataclass_fields.<locals>.<listcomp>0   sZ        qvvqv)!,,	
 	
 	
  r(   )r   r   
__origin__r   cls
all_fieldsrA   s     @r)   all_dataclass_fieldsrG   )   si    3 !CN++

C[[
#E       r(   c                     t          j        | j                  j        }t	          |           fd|                                D             S )Nc           	          g | ]D}t          |j                            |j        t                    t	          |                     ES r;   )r   r=   getr   r8   r>   s     r)   rB   z$all_class_fields.<locals>.<listcomp>=   s]         	v163''$Q''	
 	
 	
  r(   )r5   	signature__init__
parametersr   valuesrD   s     @r)   all_class_fieldsrO   :   s^    "3<00;Js##E    ""$$   r(   c                 n    t          |           t          | di           fd| j        D             S )N_field_defaultsc           
          g | ]F}t          |                    |t                                        |t                               GS r;   )r   rJ   r   r   )r?   	fieldnamedefaultsrA   s     r)   rB   z)all_namedtuple_fields.<locals>.<listcomp>K   s_         	 9c**LLG44	
 	
 	
  r(   )r   getattr_fields)rE   rT   rA   s    @@r)   all_namedtuple_fieldsrW   G   sW    #Es-r22H        r(   c                 \    t          |           }d |                                D             S )Nc                 B    g | ]\  }}t          ||t                     S r;   )r   r   )r?   r@   ts      r)   rB   z(all_typeddict_fields.<locals>.<listcomp>W   s;       Aq 	G<<<  r(   )r   items)rE   rF   s     r)   all_typeddict_fieldsr\   U   s<    s##J $$&&   r(   schemar=   c                 J    | j         du s	|| j         v o| j        du p|| j        vS )zyCheck if field is allowed by a schema.

    * field is in `only` list (if provided some)
    * field is not excluded
    N)onlyexclude)r]   r=   s     r)   schema_fields_filterra   ]   s:     
		3 3 	?	4		=4v~#=r(   all_fields_getterclass_c                    fd | |          D             }j         rJj        Cj        t          d          dj        v rt          d          t	          j        |          S j        r;t          j        pg           t          j        pg           z  fd|D             }t          t          j	        j        j
                  t          fd|D                       S )Nc                 >    g | ]}t          |j                  |S r'   )ra   r   )r?   r-   r]   s     r)   rB   zget_fields.<locals>.<listcomp>q   s<       (899  r(   z1`name_mapping` is None, and `only_mapped` is True.z8`name_mapping` contains `...`, and `only_mapped` is Truec                 Z    g | ]'}|j         v s|j                             d           %|(S )_)r   
startswith)r?   r@   whitelisted_fieldss     r)   rB   zget_fields.<locals>.<listcomp>   sG     
 
 
|1119P9PQT9U9U1 111r(   )
name_stylename_mappingtrim_trailing_underscorec              3   x   K   | ]4}t          |j         |j                  |j        |j                   V  5dS )r   r,   r    r!   N)r+   r   r    r!   )r?   r@   convert_name_funcs     r)   	<genexpr>zget_fields.<locals>.<genexpr>   sg          	|''55I		
 	
 	
     r(   )only_mappedr_   rk   
ValueErrorget_only_mapped_fieldsskip_internalsetr   r   rj   rl   tuple)rb   r]   rc   rF   ro   ri   s    `  @@r)   
get_fieldsrw   l   sd   
   ,,V44  J
  	
fk1&PQQQ&%%%WXXX%
 
 	

  
 !233c&:M:SQS6T6TT
 
 
 
!
 
 

  $(!'!@	             r(   rk   rF   c                 v    d |D             t          fd|                                 D                       S )Nc                     i | ]
}|j         |S r'   )r   )r?   r@   s     r)   
<dictcomp>z*get_only_mapped_fields.<locals>.<dictcomp>   s    ,Q,Q,QQ\1,Q,Q,Qr(   c              3      K   | ]U\  }}|v 	t          t          t          |          t          ||          |         j        |         j                   V  VdS rn   )r+   r
   r%   r   r    r!   )r?   r   r,   fields_dicts      r)   rp   z)get_only_mapped_fields.<locals>.<genexpr>   s       	 	 "J	$$ 	C,,&z9==Z(-
+3		
 	
 	
 %$$$	 	r(   )rv   r[   )rk   rF   r|   s     @r)   rs   rs      s_     -R,Qj,Q,Q,QK 	 	 	 	 &2%7%7%9%9	 	 	 	 	 	r(   c                 .    t          t          | |          S r0   )rw   rG   r]   rc   s     r)   get_dataclass_fieldsr          *FF;;;r(   c                 .    t          t          | |          S r0   )rw   rW   r~   s     r)   get_namedtuple_fieldsr      s    +VV<<<r(   c                 .    t          t          | |          S r0   )rw   r\   r~   s     r)   get_typeddict_fieldsr      r   r(   c                 .    t          t          | |          S r0   )rw   rO   r~   s     r)   get_class_fieldsr      s    &777r(   )4r5   dataclassesr   r   r   r   	functoolsr   typingr   r	   r
   r   r   r   r   r   r   genericsr   r   namingr   
path_utilsr   r   r   r   r   r]   r   type_detectionr   r   r   r+   r2   r6   r8   rG   rO   rW   r\   r%   ra   AllFieldsGetterrw   rs   r   r   r   r   r'   r(   r)   <module>r      s    9 9 9 9 9 9 9 9 9 9 9 9       R R R R R R R R R R R R R R R R R R R R R R 7 7 7 7 7 7 7 7             H H H H H H H H H H H H H H       / / / / / /GCLL         * * * * * * * * 3     1 c    m!4    "
T-0 
 
 
 
$}"5    m!4    	 	s 	 	 	 	 C5$}"556)&)1I) G) i	) ) ) )XsE#t),,-]#   &< <DG <@S < < < <=&) =T!W =)AT = = = =< <DG <@S < < < <8VAY 8Q 8HY<O 8 8 8 8 8 8r(   