
     iC8                        d dl Zd dl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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 ddlmZmZ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(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? ddl@mAZA eBeCeDeEfZF eG            ZHdee         dedee         fdZIdee         dededefdZJdedefdZKdeddfdZLdee         dee         fdZMdedee         deNdeee                  fdZOdee         defdZPeQZRdee         deNdee         fdZSdee         de)dee         fd ZTd!ee(e)f         dee         d"ee         d#eee                  dee(ee         f         f
d$ZUd%ee         d&ed'ee          deNd(e+d"e
eeV         ee         f         d#e
eeV         ee         f         dee         fd)ZWd%ed&ed'ee          deNd(eeVe+f         d"e
eeV         ee         f         d#e
eeV         ee         f         defd*ZXdee         deee                  fd+ZYdefd,ZZdefd-Z[d.ee         defd/Z\d%edefd0Z]d1e,deNdedefd2Z^d1e,deNdedefd3Z_dS )4    N)deque)is_dataclass)AnyCallable
CollectionDequeDict	FrozenSetListOptionalSequenceSetTupleTypeUnionIterableMutableSequence
MutableSet
Reversible   )AbstractFactoryParserT)InvalidFieldErrorUnionParseErrorUnknownFieldsError)	FieldInfoget_class_fieldsget_dataclass_fieldsget_typeddict_fieldsget_namedtuple_fields)fix_generic_alias)CleanKey	CleanPath)RuleForUnknownSchemaUnknown)args_unspecifiedhasargsis_anyis_iterableis_dictis_enumis_generic_concrete
is_literalis_literal36
is_newtypeis_noneis_optionalis_tupleis_typeddictis_unionis_namedtuple
is_generic)combine_parser_validatorsparserkeyreturnc                 4     dt           dt          f fd}|S )Ndatar<   c                     	  |           S # t           $ r(}|                    t                                d }~wt          $ r0}t          t          |          t                    g          d }~ww xY wNr   _append_pathstrPARSER_EXCEPTIONS)r>   er;   r:   s     a/root/.openclaw/workspace/.venvs/songid/lib/python3.11/site-packages/dataclass_factory/parsers.pyelement_parserz*get_element_parser.<locals>.element_parser    s    	86$<<  	 	 	NN3s88$$$  	8 	8 	8#CFFSXXJ777	8s   
 
A8#;A8+A33A8)r   r   )r:   r;   rG   s   `` rF   get_element_parserrH      s=    8S 8Q 8 8 8 8 8 8 8     r>   c                     	  | |          S # t           $ r(}|                    t          |                      d }~wt          $ r0}t          t          |          t          |          g          d }~ww xY wr@   rA   )r:   r>   r;   rE   s       rF   dyn_element_parserrK   ,   s    4vd||   	s3xx    4 4 4AS
3334s   
 
A7#:A7+A22A7c                     | S r@    r>   s    rF   
parse_stubrO   6   s    KrI   c                 (    | t          d          d S )NzNone expected)
ValueErrorrN   s    rF   
parse_nonerR   :   s    ))) rI   clsc                       fd}|S )Nc                 L    t          |           r| S t          dz            )Nzdata type is not %s)
isinstancerQ   )r>   rS   s    rF   r:   z%get_parser_with_check.<locals>.parser@   s.    dC   	K.4555rI   rM   )rS   r:   s   ` rF   get_parser_with_checkrW   ?   s#    6 6 6 6 6
 MrI   collection_factoryitem_parser
debug_pathc                 (     |r fd}n fd}|S )Nc                 L     fdt          |           D                       S )Nc              3   @   K   | ]\  }}t          ||          V  d S r@   )rK   ).0ixrY   s      rF   	<genexpr>zCget_collection_parser.<locals>.collection_parser.<locals>.<genexpr>O   sE       & &:>!Q";155& & & & & &rI   	enumerater>   rX   rY   s    rF   collection_parserz0get_collection_parser.<locals>.collection_parserN   sD    %% & & & &BKD//& & &   rI   c                 2     fd| D                       S )Nc              3   .   K   | ]} |          V  d S r@   rM   )r^   r`   rY   s     rF   ra   zCget_collection_parser.<locals>.collection_parser.<locals>.<genexpr>T   s<       & &#$A& & & & & &rI   rM   rd   s    rF   re   z0get_collection_parser.<locals>.collection_parserS   s>    %% & & & &(,& & &   rI   rM   )rX   rY   rZ   re   s   ``  rF   get_collection_parserrh   H   sW    
  		 	 	 	 	 	 	
	 	 	 	 	 	 rI   parsersc                       fd}|S )Nc                     g }D ]B}	  ||           c S # t           $ r&}|                    |j        |f           Y d }~;d }~ww xY wt          d| z  |          )Nz+No suitable parsers in union found for `%s`)rD   append__qualname__r   )r>   errorsprE   ri   s       rF   union_parserz&get_union_parser.<locals>.union_parser[   s     	 	Aqww$   q~q1222 KdRTZ[[[s   

AAArM   )ri   rp   s   ` rF   get_union_parserrq   Z   s)    \ \ \ \ \ rI   c                 H     |rd t                     D               fd}|S )Nc                 4    g | ]\  }}t          ||          S rM   rH   )r^   r_   r:   s      rF   
<listcomp>z$get_tuple_parser.<locals>.<listcomp>m   s'    UUUYQ%fa00UUUrI   c                     t          |           t                    k    r/t          dt                    dt          |                     t          d t          |           D                       S )Nz#Incorrect length of data, expected z, got c              3   2   K   | ]\  }} ||          V  d S r@   rM   )r^   r`   r:   s      rF   ra   z9get_tuple_parser.<locals>.tuple_parser.<locals>.<genexpr>r   s.      CC91fVVAYYCCCCCCrI   )lenrQ   tuplezip)r>   ri   s    rF   tuple_parserz&get_tuple_parser.<locals>.tuple_parsero   ss    t99G$$*PST[P\P\P\P\^abf^g^g^ghiiiCCD'0B0BCCCCCCrI   rb   )ri   rZ   r{   s   `  rF   get_tuple_parserr|   k   sM     VUU)GBTBTUUUD D D D D
 rI   pathc                       fd}|S )Nc                     |  |           S 	 D ]}| |         } |  nn# t           t          f$ r
 t          cY S w xY w |           S r@   )KeyError
IndexErrorMISSED)r>   r`   r:   r}   s     rF   path_parserz$get_path_parser.<locals>.path_parserx   sz    <6$<<	  Aw<E  *% 	 	 	MMM	vd||s   " ==rM   )r:   r}   r   s   `` rF   get_path_parserr   w   s*    
 
 
 
 
 
 rI   itempre_validatorspost_validatorsc                     t          |||          }t          | t                    r=t          |           dk    r
| d         |fS | d         t	          || dd                    fS | |fS )Nr   r   )r9   rV   ry   rx   r   r   r:   r   r   s       rF   get_field_parserr      so     '~vOOF$ t99>>7F?"AwQRR9999V|rI   class_factoryfieldsunknownc                    	
 t          fd|D                       	t          d 	D                       }|rt          d 	D                       	|r't          j        k    rt	          d           	fd}nkd
ddt          j        u rd
n=t          j        u rdn,t          j        u rnt          t                    rdgndd |D              	
fd	}|S )
Nc              3   J  K   | ]}|j         gt          |j                            |j                                      |j         g                               d g           z                       |j         g                               d g           z             R V  d S )Nr   )
field_namer   	data_namer:   typeget)r^   fr   r   r   s     rF   ra   z%get_complex_parser.<locals>.<genexpr>   s          L	
[~~af---11!,CCnFXFXY]_aFbFbb / 3 3AL" E EH[H[\`bdHeHe e	  	
 	
     rI   c              3   H   K   | ]\  }}}t          |t                    V  d S r@   )rV   int)r^   _names      rF   ra   z%get_complex_parser.<locals>.<genexpr>   s2      GGjaqJtS))GGGGGGrI   c              3   D   K   | ]\  }}}||t          ||          fV  d S r@   rt   )r^   r   r   r:   s       rF   ra   z%get_complex_parser.<locals>.<genexpr>   sN       
 
-
Iv $6vz$J$JK
 
 
 
 
 
rI   z)Cannot use unknown=`%s` when parsing listc                 P     t                      di  fdD             S )Nc                 H    i | ]\  }}}|k     | ||                   S rM   rM   )r^   r   item_idxr:   countr>   s       rF   
<dictcomp>z>get_complex_parser.<locals>.complex_parser.<locals>.<dictcomp>   sD       0J&e## FF4>22###rI   rM   )rx   )r>   r   r   
field_infos   `@rF   complex_parserz*get_complex_parser.<locals>.complex_parser   sY    IIE6       4>     rI   FTc                     h | ]	}|j         
S rM   )r   r^   r   s     rF   	<setcomp>z%get_complex_parser.<locals>.<setcomp>   s    444444rI   c                    r:                     |           s%t          |           z
  }t          d
 |          r-fd|                                 D             }D ]}|| |<   i }n%r!fd|                                 D             }ni }i }D ])\  }}}|| v r || |                   }	|	t          ur|	||<   * 
di ||S )NzCannot parse c                 $    i | ]\  }}|v	||S rM   rM   r^   kvknown_fieldss      rF   r   z>get_complex_parser.<locals>.complex_parser.<locals>.<dictcomp>   s)    QQQ41a1L;P;P!Q;P;P;PrI   c                 $    i | ]\  }}|v	||S rM   rM   r   s      rF   r   z>get_complex_parser.<locals>.complex_parser.<locals>.<dictcomp>   s)    !Y!Y!Y41a1LCXCX!QCXCXCXrI   rM   )
issupersetsetr   itemsr   )r>   unknown_field_namesextrasfieldunknown_fieldsr   r   	item_namer:   resultr   r   forbid_unknownr   store_unknownstore_unknown_separater   s             rF   r   z*get_complex_parser.<locals>.complex_parser   s=    $l&=&=d&C&C $&)$ii,&>#()A)A)ACVWWW' $QQQQ4::<<QQQ$ ) )E"(DKK!# $!Y!Y!Y!Y4::<<!Y!Y!Y!#F1; 4 4-
Iv$$#VDO44FV++-3z*6     rI   )	ry   anyr'   SKIPrQ   FORBIDSTORErV   rC   )r   r   r   rZ   r   r   r   	list_moder   r   r   r   r   r   s   ``  ```  @@@@@rF   get_complex_parserr      s               J GGJGGGGGI 
 
 
1;
 
 
 
 

  4gl""H'RRR	 	 	 	 	 	 	 !&gn$$!NN%% MM$$%% 	*%)"iGG%)"44V444	 	 	 	 	 	 	 	 	 	 	2 rI   c           	      n    	 t           ||||||          d |D             	 j        r	 	fd}|S S )Nc                     h | ]	}|j         
S rM   )r   r   s     rF   r   z(get_typed_dict_parser.<locals>.<setcomp>   s    444q|444rI   c                 h     |           }t          |          k    st          dz            |S )NzNot all fields provided for %s)r   rQ   )r>   resr   r   requires_fieldss     rF   total_parserz+get_typed_dict_parser.<locals>.total_parser   s<     .&&Cs88.. !AF!JKKKJrI   )r   	__total__)
r   r   r   rZ   r   r   r   r   r   r   s
   `       @@rF   get_typed_dict_parserr      sq     (WVdfuvvN44V444O 		 	 	 	 	 	 	 rI   c                       fd}|S )Nc                 "    |  |           nd S r@   rM   )r>   r:   s    rF   optional_parserz,get_optional_parser.<locals>.optional_parser  s    #/vvd|||T9rI   rM   )r:   r   s   ` rF   get_optional_parserr     s$    : : : : : rI   c           	      8   t          |           r
| j        p| }n| }i t          t          t          t          t          t
          t          t
          t
          t
          t          t          t          t          t          t          t          t          t          t          t          t          t          t          t          t          t          t          t           j        j        t          t           j        j        t          t           j        j        t          t           j        j        t          t           j        j        t          t           j        j        t
          t           j        j        t
          i                    |          }|st'          d| z            |S )NzClass %s not supported)r.   
__origin__r   listr   r   r   r
   	frozensetr   r   r   r   r   r   r   collectionsabcr   NotImplementedError)rS   originr   s      rF   get_collection_factoryr   	  sk   3 &3dd 	S 	C	
 	S 	9 	9 	u 	u 	D 	$ 	$ 	 	D 	"D  	 $!" 	 $#$ 	'"DS"C+ , 
c&kk- .  B!":S"@AAAJrI   c                       fdS )Nc                 F    fd|                                  D             S )Nc                 @    i | ]\  }} |           |          S rM   rM   )r^   r   r   
key_parservalue_parsers      rF   r   z5get_dict_parser.<locals>.<lambda>.<locals>.<dictcomp>+  s/    QQQDAqAQQQQrI   )r   )r>   r   r   s    rF   <lambda>z!get_dict_parser.<locals>.<lambda>+  s'    QQQQQDJJLLQQQ rI   rM   )r   r   s   ``rF   get_dict_parserr   *  s    QQQQQQrI   valuesc                 "    dt           ffd}|S )Nr>   c                     D ]*}t          |          |ft          |           | fk    r| c S +t          dt          |           z            )NzInvalid literal %s)r   rQ   repr)r>   r   r   s     rF   literal_parserz*get_literal_parser.<locals>.literal_parser/  sZ     	 	AQ|T

D111 2-T

:;;;rI   )r   )r   r   r   s    ` rF   get_literal_parserr   .  s0    <S < < < < < < rI   c                       fd}|S )Nc                 0                         |           S r@   )load)r>   r   r   s    rF   lazy_parserz$get_lazy_parser.<locals>.lazy_parser9  s    ||D&)))rI   rM   )r   r   r   s   `` rF   get_lazy_parserr   8  s*    * * * * * * rI   schemac                 f    t          | |||          |j        |j        sr	fd}|S S )Nc                 R    r |           }  |           } r |           S | S r@   rM   )r>   r:   postpres    rF   parser_with_stepsz(create_parser.<locals>.parser_with_stepsD  s@     !s4yy6$<<D "tDzz!KrI   )create_parser_impl	pre_parse
post_parse)r   r   rZ   rS   r   r:   r   r   s        @@@rF   create_parserr   ?  sg    SAAF

CD
 	!d 	!	 	 	 	 	 	 	 ! MrI   c           	      	    t          |          }t          |          rt          S t          |          rt          S t          |          rt           |j                  S t          |          rt           |j	                  S t          |          r-t                               |j        d                             S |t          t          t          fv rt!          |          S |t"          t$          t&          t(          fv r|S t+          |          rt-           |||j                  S t1          |          r|S t3          |          r3t5          | t7          ||          ||j        |j        |j                  S t?          |          rtA          |          stB          S tE          |j                  dk    rJ|j        d         tF          u r6                     |j        d                   }tI          tJ          ||          S tM          tK           fd|j        D                       |          S tO          |          rntQ          |          rtR          }tR          }n|j        d         }|j        d         }tU                               |                               |                    S tW          |          s#tY          |          rGtW          |j-                  r3t]          | t_          ||          ||j        |j        |j                  S ta          |          s#tY          |          rGta          |j-                  r3t5          | tc          ||          ||j        |j        |j                  S te          |          rYtQ          |          rtR          }n|j        d         }tg          |          }                     |          }tI          |||          S ti          |          rtK           fd|j        D                       }tE          |          dk    rt          S tE          |          dk    r	|d         }	ntk          |          }	tE          |          tE          |j                  k     rt          |	          S |	S 	 t5          | tm          ||          ||j        |j        |j                  S # tn          $ r  tq          dts          |          z            w xY w)	Nr   )r   r   r   rZ   r   r   r      r   c              3   B   K   | ]}                     |          V  d S r@   )r:   r^   r`   r   s     rF   ra   z%create_parser_impl.<locals>.<genexpr>u  s/      )R)R'..*;*;)R)R)R)R)R)RrI   )r   r   r   c              3   `   K   | ](}t          |                              |          V  )d S r@   )r2   r:   r   s     rF   ra   z%create_parser_impl.<locals>.<genexpr>  s:      RRawqzzRq))RRRRRRrI   zCannot find parser for `%s`):r"   r*   rO   r2   rR   r/   r   __args__r0   
__values__r3   r   r:   rC   	bytearraybytesrW   r   floatcomplexboolr1   r   __supertype__r-   r7   r   r!   r   r   r   r4   r)   tuple_any_parserrx   Ellipsisrh   ry   r|   r,   r(   r   r   r5   r.   r   r   r    r   r   r+   r   r6   rq   r   rD   rQ   r   )
r   r   rZ   rS   rY   key_type_argvalue_type_argrX   ri   r:   s
   `         rF   r   r   P  s   
C
 
 Cc{{ s|| # 9!'3<888C ;!'3>:::3 D"7>>#,q/#B#BCCC
sIu%%%$S)))
sE7D)))
# R!'6:s?PQQQs|| 
S 	
!(55!N!0"2
 
 
 	
 }} `s|| 	`##!##Q8(C(C!..a99K(ZHHH#E)R)R)R)RS\)R)R)R$R$RT^___s|| ]C   	-L NN<?L \!_Nw~~l;;W^^N=[=[\\\C 	
055 	
,s~:V:V 	
$ --N!0"2
 
 
 	
 C 	
055 	
,s~:V:V 	
!'44!N!0"2
 
 
 	
 3 RC   	- NN \!_N3C88nn^44$%7jQQQ}} RRRR3<RRRRRw<<1w<<1QZFF%g..Fw<<#cl++++&v...D!#FC00!N!0"2
 
 
 	
  D D D6cBCCCDs   2R? ?*S))`collections.abcr   r   dataclassesr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   commonr   r   r   
exceptionsr   r   r   r   r   r   r   r    r!   genericsr"   
path_utilsr#   r$   r   r%   r&   r'   type_detectionr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   
validatorsr9   rQ   	TypeErrorAttributeErrorLookupErrorrD   objectr   rH   rK   rO   rR   rW   r   rh   rq   ry   r   r|   r   r   rC   r   r   r   r   r   r   r   r   r   rM   rI   rF   <module>r     s"             $ $ $ $ $ $                                      / . . . . . . . . . N N N N N N N N N N              ( ' ' ' ' ' + + + + + + + + 3 3 3 3 3 3 3 3 3 3                                      2 1 1 1 1 1NKH 	
vay 
s 
vay 
 
 
 
4vay 4 4# 4! 4 4 4 4Q 1    *S *T * * * *
tAw 6!9       JqM	   $j2 v      	j2 	 	PU 	 	 	 	F1I Y 6!9     
)#
$1I L &)_	
 8VAY   QtAw Q /Q'	2Q $(Q !/	Q
 (,HSM4<,G'HQ )-Xc]DL-H(IQ #1IQ Q Q Qh Y 	
 3&' #V45 (3-f56    0q	 fXa[.A    4    BR R R R R &    T f    6 t $ 6    "aD aDD aDt aDPV aD aD aD aD aD aDrI   